PlayPendium
Bulwark · Thức ăn cho tư duy

Một lãnh chúa nghĩ như thế nào

Chơi một mình thì ba trong bốn tòa lâu đài do máy phòng thủ. Mỗi lãnh chúa máy tính chạy cùng một vòng lặp ngắn: tìm quả bóng đáng sợ nhất, đoán xem nó sẽ cắt qua bức tường của mình ở đâu, trượt tới đón nó, và khoảng cách giữa một kẻ dễ bắt nạt với một mối đe dọa thật sự rút lại chỉ còn bốn con số.

Dễ · độ rung khi ngắm 0,18 sai số tính theo phần đường ray
so với
Khó · độ rung khi ngắm 0,015 đặt khiên gần như hoàn hảo

Được viết và biên tập bằng tiếng Anh. Bản tiếng Việt này được tạo ra bằng dịch máy; ở những chỗ cần độ chính xác, bản gốc tiếng Anh là bản có thẩm quyền. Đọc bản gốc bằng tiếng Anh →

01 · Chọn thứ để mà sợ

Không phải quả bóng nào cũng là mối đe dọa

Việc đầu tiên của một lãnh chúa, một trăm hai mươi lần mỗi giây, là phân loại ưu tiên. Với tối đa hai quả bóng đang bay trong đấu trường, AI phải quyết định quả nào xứng đáng được khiên của nó chăm sóc. Nó chấm điểm mọi quả bóng đang hoạt động và chưa bị giữ theo khoảng cách tới vua của chính nó, rồi trừ đi một khoản thưởng cố định 250 đơn vị cho bất kỳ quả bóng nào thực sự đang hướng về góc của nó; một quả bóng đang đi ra xa thì bị đối xử như thể nó ở xa hơn thực tế 250 đơn vị. 1 Điểm thấp nhất giành được sự chú ý của khiên.

Kết quả là một hậu vệ không hoảng loạn vì một quả bóng đang bay ngang qua vô hại, nhưng lại chộp ngay lấy quả nào vừa gần hơn vừa đang lao tới. Đó là một mô hình thô sơ của điều mà con người làm mà chẳng cần nghĩ: nhìn thứ đang lao về phía mình, mặc kệ thứ đang rời đi. Cả phán đoán ấy chỉ là một tích vô hướng duy nhất giữa vận tốc của quả bóng và hướng tới vua, dương nghĩa là “nhắm vào ta”, và thế là đủ.

02 · Đoán xem nó sẽ rơi xuống đâu

Đón lõng quả bóng trên đường ray

Sau khi đã chọn được mối đe dọa, lãnh chúa phải quyết định đứng ở chỗ nào trên đường ray chéo của mình. Nó không giải cả đường nảy, không truy vết phản xạ, không dự báo cú dội tường. Nó lấy vị trí của quả bóng, đẩy vị trí ấy tiến lên một bước ngắn theo vận tốc hiện tại (đón trước 0,12 giây), rồi chiếu điểm tương lai đó thẳng xuống đường ray để có một tỉ lệ mục tiêu nằm giữa 0 và 1. 1

Đây là phép dự đoán nông một cách có chủ ý, và đó là lý do AI có thể bị đánh bại. Vì nó chỉ đón trước một phần tám giây và không bao giờ lường trước một cú dội, một quả bóng sẽ đến nơi thông qua một cú nảy tường sẽ đánh lừa được nó; nó cam kết theo hướng mà quả bóng đang chỉ tới lúc này. Một người chơi biết đánh bóng dội vào rìa đấu trường chính là đang khai thác đúng điểm mù ấy. Cỗ máy phản ứng với hiện tại kèm một sợi râu tiên liệu; nó không hoạch định.

Máy tính không tính toán tương lai của quả bóng. Nó nghiêng người tới trước một phần tám giây, chĩa khiên vào nơi quả bóng sẽ ở nếu chẳng có gì xen vào, rồi để mọi thứ xen vào trở thành cơ hội của bạn.

03 · Ba bậc, bốn núm vặn

Độ khó là một bảng tra, không phải một bản viết lại

Ba mức độ khó dùng chung một thân mã nguồn y hệt nhau. Thứ thay đổi giữa dễ, trung bình và khó là một hàng gồm bốn con số tinh chỉnh. 1 Độ rung thêm sai số ngẫu nhiên vào mục tiêu của khiên, nên đường ngắm của một lãnh chúa dễ có thể lệch gần một phần năm đường ray của nó, trong khi một lãnh chúa khó thì gần như chính xác tuyệt đối. Khoảng cách phản ứng ấn định một quả bóng phải tới gần đến đâu thì lãnh chúa mới chịu bám theo nó; một lãnh chúa dễ mặc kệ mọi thứ ở xa vua của nó hơn 420 đơn vị, chỉ kém một nửa chiều rộng của bàn chơi một chút; một lãnh chúa khó thì bám theo khắp cả đấu trường. Cơ hội bắt là xác suất nó sẽ tóm được một quả bóng tới đủ gần khiên để có thể bắt. Còn nhắm vào đối thủ là một công tắc duy nhất quyết định lãnh chúa có chơi tấn công hay không.

Bảng tinh chỉnh AI, toàn bộ khác biệt giữa các bậc
Núm vặnDễTrung bìnhKhó
Độ rung khi ngắm (phần đường ray)0.180.070.015
Khoảng cách phản ứng (đơn vị)4207002,000
Cơ hội bắt0%25%55%
Có nhắm vào đối thủ không?khôngkhông

Cả bốn giá trị đều đến từ một bảng tinh chỉnh nhỏ nằm bên trong cỗ máy trò chơi Bulwark, mỗi bậc một hàng. Khoảng cách phản ứng ở mức khó được viết bằng hai lần chiều rộng của đấu trường, mà đấu trường là một hình vuông 1.000 đơn vị, nên 2.000 đơn vị có nghĩa là “luôn luôn bám theo”. 1

04 · Khi cỗ máy tấn công

Công tắc duy nhất khiến một lãnh chúa khó trở nên nguy hiểm

Một lãnh chúa dễ hay trung bình không bao giờ bắt bóng với ý định ra đòn. Lãnh chúa dễ thì không bao giờ bắt bóng, còn lãnh chúa trung bình chỉ thỉnh thoảng mới bắt, mà không hề có kế hoạch nào cho việc phải làm gì với quả bóng một khi đã giữ được nó. Bật công tắc nhắm vào đối thủ, thứ duy nhất mà chỉ bậc khó mới làm, và AI thôi không còn thuần túy phản ứng nữa. Khi đang giữ bóng, nó nhìn khắp bàn chơi, chọn đối thủ bị thương nặng nhất (kẻ còn ít gạch nhất), rồi nhắm vào đó. 1

Nó làm việc này mà chẳng cần tìm đường gì cả. Nó lấy mẫu mười một vị trí ứng viên dọc theo đường ray của chính mình, và với mỗi vị trí nó tái hiện phép tính lúc thả bóng của cỗ máy để xem cú ném ấy sẽ bay theo hướng nào, rồi giữ lại vị trí có vectơ bay ra chĩa thẳng nhất vào nạn nhân đã chọn. 1 Đó là vét cạn trên một nhúm lựa chọn chứ không phải sự khôn ngoan, nhưng nó kiên nhẫn về việc đó: đã chọn được một chỗ rồi, lãnh chúa giữ bóng cho tới khi khiên thực sự trượt tới nơi, và chỉ buông ra khi đã tới nơi hoặc khi đã giữ đủ lâu đến mức chờ thêm sẽ đắt hơn giá trị của cú ném. Ý đồ rõ ràng là có tính chiến lược, đúng như điều một người chơi đang săn một mạng dễ ăn sẽ làm. Việc chọn mục tiêu theo tiêu chí “còn ít gạch nhất” khiến ba hậu vệ độc lập cùng chĩa vào kẻ vốn đã đang thua.

05 · Vẫn là lãnh chúa ấy, mọi lần

Sự ngẫu nhiên mà bạn phát lại được

Mọi thứ “ngẫu nhiên” mà một lãnh chúa làm, độ rung trong đường ngắm, cú tung đồng xu quyết định có bắt hay không, đều được rút ra từ một bộ sinh có gieo hạt giống, một thủ tục gọn gàng tên là mulberry32 vốn biến một con số khởi đầu thành một dòng dài các giá trị giả ngẫu nhiên lặp lại được. 2 Đưa cho nó cùng một hạt giống thì nó sẽ mãi mãi tạo ra cùng một chuỗi. Một trận đấu trực tiếp lấy hạt giống từ đồng hồ, nên không có hai ván nào mở màn giống nhau, nhưng trao lại đúng hạt giống ấy thì trận đấu chạy lại y hệt: cùng những góc phóng bóng, cùng những cú rung tay, cùng những pha bắt bóng.

Tính tất định ấy không phải một chi tiết trang trí. Nó là thứ khiến trò chơi có thể kiểm thử được, bộ kiểm thử của nó chơi trọn những trận máy đấu máy từ một hạt giống cố định và mong đợi cùng một kết quả mỗi lần, và nó cũng là thứ cho phép cả bản mô phỏng, kể cả con trỏ của bộ sinh, được đóng gói vào JSON rồi dựng lại, để khi chơi trực tuyến máy chủ phòng có thể truyền trạng thái của mình đi và mỗi người chơi còn lại dựng lại một bàn chơi y hệt. Các lãnh chúa có vẻ sống động vì những sai sót của chúng trông rất người; bên dưới, “bản năng” của chúng chỉ là một hệ thức truy hồi số học ngắn mà ai cũng có thể tua ngược về điểm khởi đầu. Hóa ra một cỗ máy canh giữ một tòa lâu đài chỉ cần vài con số và một dòng may rủi tái lập được. 2

Sources & notes
  1. Bulwark game engine: the warlord AI. Threat scoring (distance from a ball to the king, minus a 250-unit bonus for inbound balls), the 0.12-second lead used to project the intercept point, the tuning table that holds jitter, react distance, catch chance and the aim-at-rivals switch for each tier, the “most wounded rival” target selection, and the eleven-sample search over release positions. Read from the game's own source.
  2. Bulwark game engine: the deterministic random generator, an implementation of mulberry32, the compact public-domain algorithm by Tommy Ettinger that maps a 32-bit seed to a repeatable stream. Its own comment notes that it seeds ball launches and AI jitter so that games are reproducible and testable, and it can save and restore its cursor so the state round-trips through JSON. Read from the game's own source.
    Algorithm origin: Tommy Ettinger, “Mulberry32 PRNG” (public domain).
Was this worth reading?
Play Bulwark
PlayPendium · About · Contact · Privacy · Terms · Cookies · Accessibility · Copyright · Browse all games · Classic arcade games · © 2026