Tilt là trò chơi theo lượt đầu tiên trong bộ TwozyGames Originals, và cũng là trò bị đánh giá thấp nhất khi mới nhìn. Nó trông giống Connect Four trên một lưới lớn hơn. Không phải vậy, và khác biệt nằm ở một động từ: đến lượt mình, bạn có thể thả một quân vào một làn, hoặc xoay cả bàn cờ một phần tư vòng và để mọi quân đã nằm trên đó đổ về phía dưới mới. Chúng tôi viết cả phần code lẫn mô phỏng đã chọn ra luật chơi, nên hướng dẫn này có thể đưa cho bạn những con số thật — kể cả độ sâu tìm kiếm chính xác của từng CPU và dạng đe dọa mà nó không thể thấy về mặt cấu trúc.
Một cú xoay tốn đúng một quân
Đó là toàn bộ nền kinh tế của trò chơi. Xoay được đánh thay cho việc thả quân, không bao giờ là cộng thêm, nên mỗi lượt bạn dành để xoay là một quân mà đối thủ nhận miễn phí. Ràng buộc duy nhất đó là thứ ngăn bàn cờ xoay mãi mãi, và là lý do "có nên xoay không?" là một câu hỏi thật chứ không phải phản xạ.
Vậy nên một cú xoay phải mua về nhiều hơn một bàn cờ gọn gàng. Trong thực chiến có ba món đáng giá một quân:
- Phá dỡ. Đối thủ có ba quân liền nhau và một làn để kết thúc ở lượt sau. Một phần tư vòng xoay sắp xếp lại mọi quân cùng lúc, và bộ ba đó thường thôi không còn là bộ ba.
- Giao hàng. Những quân rải rác của chính bạn tình cờ thẳng hàng theo trục mà trọng lực mới sẽ kéo xuống. Đây là nước đi thắng ván, và cũng là nước người mới không bao giờ tìm, vì nó đòi hỏi đọc một hình chưa tồn tại.
- Chặn làn. Một làn chỉ mở khi ô vào của nó còn trống. Xoay bàn làm thay đổi những ô vào nào bị che, nên một cú xoay có thể đóng đúng cái làn mà đối thủ cần — một nước lặng lẽ hơn hai nước trên, và thường là rẻ nhất.
Các bot của chúng tôi, qua hàng nghìn ván đấu với nhau, dành một lượt cho việc xoay ở 21 đến 25 phần trăm số nước đi, tùy bàn cờ. Tức khoảng một nước trong bốn hoặc năm. Nếu bạn xoay nhiều hơn thế đáng kể, bạn đang biếu quân; ít hơn nhiều, bạn đang chơi Connect Four trên một bàn cờ không thưởng cho lối chơi đó.
Đọc mọi hình hai lần
Thói quen duy nhất tách người thắng ở Tilt khỏi người thua: đọc bàn cờ như nó đang là, rồi đọc nó như nó sẽ là sau một phần tư vòng xoay. Bộ ba dọc của bạn hóa thành bộ ba ngang ở một nơi hoàn toàn khác — và đây là chỗ đau — nó có thể rơi vào chỗ mà người có làn trống để kết thúc là đối thủ, chứ không phải bạn.
Phiên bản thực dụng của thói quen ấy là hãy thôi nghĩ quân của mình đang ở một vị trí, mà bắt đầu nghĩ chúng đang ở trong một thứ tự. Trọng lực giữ nguyên thứ tự bên trong một làn; nó chỉ đổi xem chồng quân tựa vào đầu nào của làn. Hai quân của bạn kề nhau trong một cột vẫn kề nhau sau khi xoay. Hai quân cách nhau một khoảng trống sẽ dồn lại sát nhau. Toàn bộ vật lý chỉ có thế, và khi đã nhìn ra được, bạn có thể lên kế hoạch cho một hàng chỉ tự lắp ráp sau khi ai đó xoay.
Xem trước là hai lần nhấn, và đó là giấy phép để so sánh
Nhấn Q hoặc E một lần và không có gì được đánh. Bạn nhận một bàn cờ bóng ma: mỗi quân được vẽ nét đứt đúng chỗ nó sẽ rơi xuống, cùng một thanh nét đứt dọc theo cạnh sẽ trở thành mặt sàn mới. Nhấn lại đúng phím đó để thực hiện. Nhấn phím còn lại và bây giờ bạn đang xem hướng ngược lại. Bất kỳ nước đi nào khác đều hủy bản xem trước.
Đây là chủ ý, và không phải thiết kế ban đầu: bản đầu tiên xem trước trong lúc bạn giữ phím và đánh cú xoay khi bạn thả ra, nghĩa là nhìn tức là làm. Bạn không bao giờ có thể liếc rồi rút lui, và chắc chắn không thể so sánh hai hướng, bởi xem trước một hướng là đã đánh nó rồi. Một bản xem trước không hủy được thì không phải xem trước. Vậy hãy dùng thứ mà bản sửa đã mua cho bạn: nạp hướng ngược chiều kim đồng hồ, nhìn, nạp hướng thuận chiều, nhìn tiếp, rồi mới quyết. Nó chẳng tốn gì, và hai hướng của một cú xoay gần như không bao giờ tốt ngang nhau.
Mỗi CPU thấy gì và không thấy gì
Đối thủ bạn đang chơi cùng chính là đoạn mã đã chạy mô phỏng cân bằng, nên chúng tôi có thể nói thẳng nó làm gì.
- Easy chọn ngẫu nhiên đều trong mọi nước hợp lệ, kể cả xoay. Nó ngẫu nhiên thật sự chứ không phải một bộ tìm kiếm bị làm yếu đi, nên thỉnh thoảng nó vấp phải một cú xoay hay, và thỉnh thoảng nó dâng ván đấu cho bạn.
- Normal nhìn đúng một nước. Nó đánh nước thắng nếu có; nếu không, nó tránh mọi nước cho bạn thắng ngay lập tức rồi chọn ngẫu nhiên trong phần còn lại. Nó sẽ không bao giờ bước vào một thế thua trong một nước, và cũng không bao giờ thấy được xa hơn thế.
- Hard nhìn hai nước. Trong số các nước an toàn, nó ưu tiên những nước mà đáp trả đơn tệ nhất từ bạn không phải là một thất bại.
Dòng cuối cùng ấy là chỗ khai thác được, và đáng nói cho chính xác. Hard là một tìm kiếm hai tầng. Nó thấy "nếu tôi đánh nước này, bạn có thắng ngay được không?" — rồi dừng. Nó không thấy thế cờ mà bạn đi một nước im lặng, nó đáp trả, và sau đó bạn thắng. Vậy cách hạ Hard không phải là tính sâu hơn nó, mà là dựng những đe dọa cần hai nước của bạn để chín. Một cú thả tạo ra hai bộ ba riêng biệt, hoặc một quân đặt sao cho hướng xoay nào cũng cho bạn một hàng — cả hai đều nằm ngoài tầm nhìn của nó: nó đáp kiểu gì cũng thua vì cái còn lại, và lúc chọn thì nó không thể biết điều đó.
Để có khái niệm về quy mô: qua mọi biến thể luật chúng tôi thử, bot hai tầng thắng bot tham lam một tầng khoảng 84 đến 88 phần trăm số lần. Chơi giỏi rất có ý nghĩa trong trò này. Chỉ là để hạ máy thì nó không cần có ý nghĩa xa hơn hai nước một lúc.
Hàng trùng thuộc về người vừa đi
Một dòng trong luật, và nó quyết định một phần thật sự của các ván sát nút. Nếu một nước đi hoàn thành bộ bốn cho cả hai người chơi — điều mà một cú xoay dễ dàng gây ra, vì nó sắp xếp lại cả bàn cùng lúc — thì ván đó thuộc về người đã đi nước ấy.
Hệ quả thực tế: khi bàn cờ dày đặc và cả hai đều có những bộ ba lỏng lẻo nằm rải rác, việc là người bóp cò đáng giá hơn cả thế cờ. Nếu bạn thấy một cú xoay cho cả hai một hàng và đang đến lượt mình, hãy lấy; nếu bạn thấy một cú như vậy mà không phải lượt mình, đừng tạo điều kiện cho đối thủ đánh nó. Mô phỏng của chúng tôi đặt trường hợp này dưới một phần mười của một phần trăm số ván, nên nó được viết thành một câu chứ không dựng thành cơ chế — nhưng khi nó xảy ra thì đó là cả ván.
Năm bàn cờ
Nhấn S ở màn hình tiêu đề để chuyển qua lại. Cột là các khối cố định không bao giờ dịch chuyển và quân không thể chiếm chỗ, và điều quan trọng ở chúng không phải là chiếm chỗ: một làn có chứa cột sẽ dồn thành hai đoạn thay vì một. Quân xếp chồng vào cột y hệt như xếp vào tường, nên một cây cột cho phép bạn đỗ một quân giữa lưới thay vì luôn ở tận cùng.
- Open — không có cột. Phiên bản thuần khiết nhất, và cũng là bàn mà các cú xoay dữ dội nhất, vì chẳng có gì neo giữ thứ gì. Bàn tốt nhất để tập thói quen đọc.
- Pillar — một cột ngay chính giữa. Nó cắt đôi hai làn trung tâm, khiến trung tâm bàn cờ lặng lẽ trở thành mảnh đất tranh chấp nhất, như ở hầu hết trò xếp hàng.
- Pillars — hai cột trên một đường chéo. Tạo ra hai vùng chất quân độc lập trên mỗi trục; những hàng cắt ngang đường chéo rất khó giữ, còn những hàng chạy song song với nó lại ổn định một cách bất ngờ.
- Slash — ba cột trên một đường chéo. Bàn có cấu trúc rõ nhất. Bộ bốn chéo ở đây dễ hơn bạn tưởng nhiều, vì các cột giữ quân ở những độ cao mà một lưới trống trơn không bao giờ giữ được.
- Corners — bốn cột, mỗi cột gần một góc. Đây là bàn các bot của chúng tôi xoay nhiều nhất (khoảng một phần tư tổng số nước), vì những túi ở góc khiến hệ quả của một vòng xoay khó đoán nhất.
Những gì chúng tôi đã đo
Mọi luật trong Tilt đều được chọn từ một mô phỏng không giao diện — bot hai tầng ở cả hai phía, 1.200 ván mỗi bàn — được viết trước khi tồn tại bất kỳ phần nào của trò chơi. Những con số nó cho ra với bộ luật phát hành, trên cả năm bàn:
- Người đi trước thắng 51,4 đến 53,2 phần trăm, người đi sau 45,9 đến 47,8. Các ván luân phiên người khai cuộc, nên phần lợi thế còn lại triệt tiêu qua cả trận.
- Hòa: 0,3 đến 1,0 phần trăm. Lấp đầy bàn 7×7 mà không có nổi một bộ bốn hầu như không bao giờ xảy ra.
- Độ dài ván: 32,7 đến 34,2 nước.
Vài thứ không được phát hành, và lý do. Ý tưởng ban đầu hoàn toàn không có lựa chọn nào: bạn thả quân, và trọng lực tự xoay mỗi lượt. Phiên bản ấy đạt 74 đến 79 phần trăm cho người đi trước, các ván kết thúc trong khoảng mười nước, và không kích thước bàn nào cứu được. Xếp năm quân hòa 26,9 phần trăm số lần; bàn 8×8 kéo dài tới sáu mươi nước. Thời gian chờ giữa hai lần xoay chỉ làm cán cân dịch chưa tới một điểm, nên bị xóa vì là một luật phải giải thích mà chẳng trả lại gì.
Hai người, một điện thoại
Tilt là trò duy nhất trong bộ của chúng tôi không có cần điều khiển ảo trên màn hình, và đó là hệ quả của việc chơi theo lượt chứ không phải một tính năng chúng tôi thêm vào. Tại mỗi thời điểm chỉ một người tới lượt, nên hai người chia sẻ một bộ điều khiển duy nhất và chẳng có gì phải chia. Hai người có thể chuyền một chiếc điện thoại qua bàn: chạm vào một làn để thả, chạm nút xoay để xem trước, chạm lại đúng nút đó để đánh. Nếu đó là cách bạn thường chơi, hướng dẫn các trò hai người trên cùng một bàn phím của chúng tôi bao quát phần còn lại của bộ sưu tập, còn tuyển tập trò giải đố là những hàng xóm gần nhất trong danh mục.
Hãy bắt đầu với Open ở mức Normal cho tới khi việc đọc một bàn cờ đã xoay không còn giống lao động. Rồi chuyển sang Corners ở mức Hard và đi săn mối đe dọa hai nước.
