Có một khoảnh khắc mình đã trải qua vài lần khi chơi Pixels mà mãi sau mới đặt tên được cho nó.

Không phải lúc đang farm. Không phải lúc đang craft hay hoàn thành order. Mà là lúc mình mở game mà không thực sự muốn chơi. Chỉ để check xem có task nào phù hợp không, xem streak còn nguyên không, xem có reward nào sắp hết hạn không. Ngồi nhìn màn hình vài phút rồi đóng lại. Không enjoyable. Không unenjoyable. Chỉ là đã vào.

Mình không biết mình đang phản ứng với cái gì cho đến khi đọc kỹ hơn về cách Stacked hoạt động.

Stacked là reward infrastructure mà @Pixels build trong 4 năm và vừa mở ra cho các game studio khác. Ở tầng kỹ thuật, nó là một AI game economist: nhận gameplay events từ studio, phân tích behavioral pattern của từng player, sau đó deploy reward vào đúng thời điểm để tối đa hóa retention và LTV. Không phải mass campaign, không phải cùng offer cho tất cả. Mỗi player nhận thứ khác nhau vào thời điểm khác nhau dựa trên hành vi của chính họ. Precision là thứ làm Stacked khác với quest board thông thường.

Và chính precision đó là chỗ mình bắt đầu ngồi với câu hỏi khác.

Retention và LTV là metrics của studio. Chúng đo value chảy từ player đến studio. System optimize cho hai thứ đó đang, theo định nghĩa, optimize cho lợi ích của studio. Phần lớn thời gian điều đó align với lợi ích của player, game tốt giữ người chơi vì người chơi muốn ở lại. Hai thứ đó đi cùng chiều.

Cho đến khi chúng không còn đi cùng chiều nữa.

Có một pattern trong game design mà behavioral economics đã document khá kỹ. Streak, time-limited reward, variable reward schedule, near-miss mechanics — những cơ chế này hiệu quả vì chúng khai thác xu hướng tâm lý tồn tại trong toàn bộ dân số người chơi. Với player bình thường chúng tạo ra engagement thật. Với player có compulsive tendencies, cùng những cơ chế đó amplify thứ đã có sẵn. Không phải vì design sai, mà vì cùng một cơ chế tác động khác nhau lên người khác nhau.

Stacked được thiết kế để biết chính xác cơ chế nào work cho player nào, và deploy vào đúng thời điểm.

Vấn đề không nằm ở một lần deploy.

Nó nằm ở vòng lặp phía sau.

System không phân biệt được healthy engagement với harmful engagement vì cả hai trông giống nhau từ phía metrics. Player A login mỗi ngày vì thực sự enjoy game. Player B login mỗi ngày vì compulsive loop đang giữ họ. Retention rate của cả hai là 1.0. LTV của cả hai có thể ngang nhau. System thấy hai signal giống hệt nhau.

Sau đó nó optimize.

Nếu một time-limited reward pull Player B lại vào lúc 11 giờ đêm, system ghi nhận: cơ chế này work cho player này vào thời điểm này. Lần sau nó deploy cơ chế tương tự, có thể mạnh hơn, có thể vào thời điểm system tính toán là effective hơn. Player B tiếp tục login. System tiếp tục học. Một "Blind Optimization Loop" không cần biết welfare để chạy, nó chỉ cần thấy signal, và signal đang xanh.

Đây không phải lỗi của Stacked. Đây là structural property của bất kỳ optimization system nào không có welfare constraint được embed chính thức vào objective function.

Mình để ý trong cách Stacked được mô tả không có mention nào về welfare constraint như một design parameter. System optimize cho retention và LTV. Player welfare được assume là downstream consequence của studio decisions, không phải upstream constraint của optimization. Nếu studio care thì họ design rewards lành mạnh. Nếu không thì Stacked optimize cho bất kỳ thứ gì studio muốn maximize, và khi "Blind Optimization Loop" chạy trên player base của một studio không có welfare constraint, không có signal nào trong system báo hiệu điều đó đang xảy ra.

Pixels có track record là team thật sự care về player welfare. Nhưng khi Stacked mở ra cho external studios, track record đó không đi kèm theo.

Khoảnh khắc mình mở game mà không muốn chơi, ngồi vài phút rồi đóng lại, mình không biết đó là healthy habit hay beginning of something else. System cũng không biết. Nhưng khác với mình, system không cần biết để tiếp tục optimize. Nó chỉ cần thấy mình đã quay lại.

$PIXEL #pixel