Trang chủ » Blog » Luật, Trạng thái, Hành động: Mô hình hình thức của một trò chơi

Luật, Trạng thái, Hành động: Mô hình hình thức của một trò chơi

| Blog

Cờ vua và một game nhập vai trực tuyến nhiều người chơi gần như không có điểm chung nào nhìn từ bên ngoài. Một bên là ba mươi hai quân gỗ trên sáu mươi tư ô, chơi theo lượt, không có yếu tố may rủi. Bên kia là hàng nghìn người cùng lúc trong một thế giới ba chiều chạy thời gian thực, đầy ngẫu nhiên, không bao giờ kết thúc.

Nhưng cả hai đều mô tả được đầy đủ bằng đúng ba khái niệm, và bộ ba đó là công cụ phân tích bền nhất mà một người làm game có thể học. Nó không lỗi thời khi công nghệ đổi, không phụ thuộc vào engine, và dùng được cho cả game bàn cờ lẫn hệ thống mạng phân tán.

Ba khái niệm đó là trạng thái, hành động và luật.

Khái niệm gốc: hệ hình thức

Hệ hình thức là một cấu trúc toán học gồm một tập các trạng thái có thể có, một tập các hành động có thể thực hiện, và một quy tắc xác định rằng thực hiện hành động nào ở trạng thái nào thì sẽ chuyển sang trạng thái nào.

Nói bằng ngôn ngữ gần với lập trình hơn, một trò chơi là bộ bốn thành phần sau.

Tập trạng thái, tức toàn bộ những tình huống mà trò chơi có thể rơi vào. Tập hành động, tức toàn bộ những việc người chơi có thể làm. Hàm chuyển, tức luật xác định trạng thái mới từ một trạng thái cũ và một hành động. Và điều kiện kết thúc kèm cách đánh giá kết quả, tức thứ cho biết khi nào ván chơi dừng lại và ai được gì.

Cần nói rõ ngay một điều để tránh hiểu nhầm. Mô hình này không tuyên bố rằng trò chơi về bản chất chỉ là toán học. Nó chỉ tuyên bố rằng mọi trò chơi đều có một tầng có thể mô tả chính xác bằng cách này, và mô tả được tầng đó là điều kiện cần để làm việc với nó. Phần cuối bài sẽ nói về những thứ mà mô hình này cố ý không chạm tới.

Trạng thái: mọi thứ hệ thống buộc phải nhớ

Trạng thái là câu trả lời cho câu hỏi: nếu tôi tắt máy ngay bây giờ rồi bật lại, tôi cần lưu lại những gì để ván chơi tiếp tục đúng như cũ.

Với cờ vua, câu trả lời dài hơn nhiều người tưởng. Vị trí của tất cả các quân trên bàn là phần hiển nhiên. Nhưng còn cần biết đến lượt ai đi, hai bên còn quyền nhập thành hay không, có tồn tại nước bắt tốt qua đường hay không, và số nước đi đã trôi qua kể từ lần cuối có quân bị ăn hoặc tốt được đẩy, để áp dụng luật hòa năm mươi nước. Thiếu bất kỳ mục nào trong đó thì ván cờ không khôi phục được chính xác.

Bài tập nhỏ này rất đáng làm với bất kỳ trò chơi nào, vì nó phơi bày ngay những thứ mà người thiết kế không nhận ra là mình đang phụ thuộc vào. Với một game hành động hai chiều, trạng thái gồm vị trí và vận tốc nhân vật, nhân vật có đang chạm đất hay không, còn bao nhiêu máu, đang trong khung hình bất tử sau khi trúng đòn hay không, đã nhặt được vật phẩm nào, và cả bộ đệm lệnh bấm gần đây nếu game có input buffering.

Với một game trực tuyến nhiều người chơi, trạng thái không còn nằm ở một chỗ. Nó phân tán giữa máy chủ và từng máy khách, và toàn bộ độ khó kỹ thuật của thể loại này quy về một câu hỏi duy nhất: làm sao để nhiều bản sao của trạng thái ở nhiều nơi khác nhau vẫn nhất quán với nhau khi đường truyền có độ trễ. Nhìn dưới góc độ hệ hình thức, một game MMO không phải là một trò chơi phức tạp hơn cờ vua về mặt luật, mà là một bài toán đồng bộ trạng thái.

Luật, Trạng thái, Hành động: Mô hình hình thức của một trò chơi 1

Chú thích: Khối lập phương xoay là ví dụ gọn nhất về một hệ hình thức. Trạng thái là cách sắp xếp màu, hành động là các phép xoay hợp lệ, và luật là kết quả của mỗi phép xoay lên trạng thái hiện tại.

Hành động: những gì người chơi được phép làm ngay lúc này

Tập hành động không cố định. Nó thay đổi theo trạng thái, và chính sự thay đổi đó là nơi phần lớn thiết kế nằm.

Trong cờ vua, số nước đi hợp lệ trung bình tại một thế cờ vào khoảng ba mươi lăm. Con số này gọi là hệ số phân nhánh, và nó là chỉ số quan trọng nhất để đánh giá độ rộng của không gian quyết định.

Có ba câu hỏi thiết kế mọc thẳng ra từ khái niệm này.

Câu hỏi thứ nhất: tại mỗi trạng thái, người chơi có bao nhiêu lựa chọn thực sự khác nhau. Nếu con số đó bằng một, người chơi không đang chơi mà đang thực hiện. Nếu con số đó quá lớn mà không có cách nào thu hẹp, người chơi bị tê liệt.

Câu hỏi thứ hai: trong số các lựa chọn đó, có bao nhiêu lựa chọn đáng cân nhắc. Một game có ba mươi hành động hợp lệ nhưng hai mươi chín trong số đó luôn tệ hơn cái còn lại thì thực chất chỉ có một hành động. Đây là hiện tượng chiến lược thống trị, và nó là nguyên nhân số một khiến một hệ thống trông phong phú lại chơi rất nhàm.

Câu hỏi thứ ba: người chơi có nhìn thấy các lựa chọn của mình không. Một hành động tồn tại trong luật nhưng người chơi không biết là có thì về mặt thiết kế nó không tồn tại.

Luật: hàm chuyển trạng thái

Luật là thứ nối hai phần trên lại với nhau. Cho một trạng thái và một hành động, luật trả về trạng thái tiếp theo.

Cách phát biểu này nghe khô khan nhưng nó có một sức mạnh thực dụng đáng kể: nó biến mọi câu hỏi thiết kế mơ hồ thành câu hỏi cụ thể. Câu hỏi “vũ khí này có mạnh quá không” trở thành “hàm chuyển ứng với hành động dùng vũ khí này làm thay đổi biến máu của mục tiêu bao nhiêu, trong bao nhiêu thời gian, và với chi phí là biến nào”. Câu hỏi “màn này có khó quá không” trở thành “từ trạng thái bắt đầu của màn, tồn tại bao nhiêu đường đi tới trạng thái thắng, và đường ngắn nhất đòi hỏi bao nhiêu hành động không sai”.

Đây cũng là định nghĩa chính xác của lỗi phần mềm trong game: lỗi là khi hàm chuyển thực tế khác với hàm chuyển mà nhà thiết kế định nghĩa. Và đây là định nghĩa chính xác của kiểm thử: kiểm thử là việc xác minh các bất biến của trạng thái, tức những mệnh đề phải luôn đúng ở mọi trạng thái hợp lệ, chẳng hạn máu không bao giờ âm, tổng vàng trong nền kinh tế bằng tổng vàng đã phát hành trừ tổng vàng đã tiêu.

Luật, Trạng thái, Hành động: Mô hình hình thức của một trò chơi 2

Chú thích: Vòng lặp cơ bản của mọi trò chơi. Cờ vua chạy vòng lặp này mỗi nước đi, còn một game hành động chạy nó sáu mươi lần mỗi giây.

Ba tầng luật

Mô hình toán học ở trên mô tả được một tầng luật, nhưng trong thực tế mọi trò chơi đều có ba.

Salen và Zimmerman phân biệt luật vận hành, tức những luật mà người chơi đọc được và làm theo; luật cấu thành, tức cấu trúc hình thức bên dưới, thường là toán học; và luật ngầm định, tức những quy ước bất thành văn như đừng suy nghĩ quá lâu trước mỗi lượt.

Sự phân biệt này quan trọng vì hai lý do.

Lý do thứ nhất là bản sắc hình thức của một trò chơi nằm ở quan hệ giữa luật vận hành và luật cấu thành. Hai trò chơi có thể có cùng cấu trúc toán học nhưng cách trình bày khác nhau và cho cảm giác hoàn toàn khác. Cờ ca rô và một số trò chơi số học có cùng cấu trúc bên dưới, nhưng không ai chơi chúng theo cùng một cách.

Lý do thứ hai là tầng luật ngầm định hoàn toàn nằm ngoài mô hình hình thức, và nó lại là nơi phần lớn xung đột giữa người chơi xảy ra. Hành vi rời trận giữa chừng, chơi tiêu cực, hay khai thác lỗ hổng đều không vi phạm luật vận hành nhưng phá vỡ luật ngầm định. Đây là chỗ mà mô hình hình thức đưa ta tới ranh giới của nó và trao lại việc cho hợp đồng xã hội giữa những người chơi.

Bốn trục để phân loại bất kỳ trò chơi nào

Khi đã có mô hình, việc so sánh các trò chơi trở nên gọn gàng. Bốn trục sau đủ để định vị gần như mọi trò chơi.

Trục Hai đầu Ví dụ mỗi đầu
Thông tin Hoàn hảo hay không hoàn hảo Cờ vua so với poker
Tính xác định Xác định hay có ngẫu nhiên Cờ vua so với cờ tỷ phú
Thời gian Theo lượt hay thời gian thực Cờ vua so với game bắn súng
Số tác nhân Một, hai, hay nhiều Xếp hình so với cờ vua so với MMO

Giá trị của bảng này nằm ở chỗ mỗi trục kéo theo những hệ quả kỹ thuật và thiết kế rất cụ thể. Thông tin không hoàn hảo mở ra khả năng lừa gạt và tạo ra giá trị cho việc suy đoán, nhưng cũng khiến phân tích cân bằng khó hơn hẳn, vì lúc đó phải đo theo tập thông tin chứ không theo trạng thái. Ngẫu nhiên làm giảm khoảng cách giữa người mạnh và người yếu, đó là lý do gần như mọi game nhiều người chơi đại chúng đều có một liều ngẫu nhiên. Thời gian thực biến kỹ năng thực thi thành một phần của trò chơi và kéo theo toàn bộ vấn đề ngân sách khung hình.

Vì sao trò chơi phức tạp dù luật rất ít

Cờ vua có khoảng hai mươi luật. Một người học xong trong nửa tiếng. Nhưng không ai giải được nó.

Lý do nằm ở kích thước không gian trạng thái, và các con số ở đây đáng nhớ vì chúng dạy một bài học sâu hơn về thiết kế.

Năm 1950, Claude Shannon ước tính cận dưới của độ phức tạp cây trò chơi của cờ vua vào khoảng 10 mũ 120, dựa trên khoảng 10 mũ 3 khả năng cho mỗi cặp nước đi của trắng và đen, với một ván điển hình kéo dài khoảng bốn mươi cặp nước. Ông đưa ra con số này trong bài báo về lập trình máy tính chơi cờ, chính là để chứng minh rằng giải cờ vua bằng vét cạn là bất khả thi.

Đặt cạnh nhau thì bậc độ lớn trở nên rõ. Cờ đam trên bàn tám nhân tám có không gian trạng thái khoảng 10 mũ 21. Cờ vua khoảng 10 mũ 46 trạng thái và 10 mũ 123 nhánh cây. Cờ vây có không gian trạng thái khoảng 10 mũ 171. Để so sánh, số nguyên tử trong vũ trụ quan sát được ước tính khoảng 10 mũ 80.

Luật, Trạng thái, Hành động: Mô hình hình thức của một trò chơi 3

Chú thích: Kích thước không gian trạng thái tính theo số mũ của mười. Các con số đều là ước lượng và khác nhau tùy phương pháp, nhưng bậc độ lớn thì ổn định qua mọi nguồn.

Bài học rút ra từ những con số này quan trọng hơn bản thân chúng: độ sâu của một trò chơi không đến từ số lượng luật mà đến từ số tổ hợp mà luật sinh ra. Đây là lý do vì sao thêm cơ chế thường không làm game sâu hơn, chỉ làm nó rối hơn. Cách làm sâu một trò chơi là tăng số cách mà những cơ chế sẵn có tương tác với nhau, chứ không phải tăng số cơ chế.

Năm việc mô hình này giúp làm được

Tìm ra lỗ hổng thiết kế trước khi người chơi tìm ra. Ba loại trạng thái đáng săn tìm là trạng thái chết, tức trạng thái mà từ đó không còn đường tới thắng nhưng game vẫn bắt người chơi tiếp tục; trạng thái không thể phục hồi, tức nơi một sai lầm nhỏ khóa cứng kết cục nhiều giờ sau; và trạng thái có chiến lược thống trị, tức nơi luôn có đúng một hành động đúng.

Đo không gian quyết định. Nếu vẽ được một vài trạng thái tiêu biểu và liệt kê hành động đáng cân nhắc tại mỗi trạng thái, ta có ngay một chẩn đoán về độ phong phú của game mà không cần chờ chơi thử.

Thiết kế lưu game và mạng. Trạng thái chính là thứ phải tuần tự hóa để lưu, và chính là thứ phải đồng bộ để chơi mạng. Một studio định nghĩa trạng thái rõ ràng từ đầu sẽ tiết kiệm được rất nhiều đau khổ khi thêm hai tính năng này về sau. Ngược lại, một dự án để trạng thái vương vãi khắp nơi trong mã nguồn thường phát hiện ra điều đó quá muộn.

Gỡ lỗi có phương pháp. Khi coi lỗi là sai lệch của hàm chuyển, việc gỡ lỗi trở thành việc xác định trạng thái đầu vào, hành động, và trạng thái đầu ra thực tế so với mong đợi. Đây là lý do vì sao khả năng tái hiện được lỗi quan trọng đến vậy: tái hiện được nghĩa là dựng lại được trạng thái.

Cân bằng. Cân bằng không phải là làm cho mọi thứ ngang nhau, mà là điều chỉnh hàm chuyển sao cho phân bố kết quả đạt mục tiêu thiết kế. Phát biểu như vậy thì cân bằng trở thành một bài toán đo được, và có thể mô phỏng bằng cách cho hai tác nhân tự động chơi với nhau hàng nghìn lượt trước khi động tới người thật.

Giới hạn của mô hình

Đến đây cần một lời cảnh báo, vì mô hình hình thức rất dễ gây nghiện với người có nền kỹ thuật.

Khung MDA do Robin Hunicke, Marc LeBlanc và Robert Zubek trình bày năm 2004 chia trò chơi thành ba tầng nối nhau theo quan hệ nhân quả: cơ chế, tức luật và thành phần mà nhà thiết kế viết ra; động lực, tức hành vi phát sinh khi luật được vận hành với đầu vào của người chơi; và thẩm mỹ, tức phản ứng cảm xúc mà hành vi đó gợi lên.

Điểm cốt lõi của khung này là tính định hướng: nhà thiết kế xây từ cơ chế đi lên, còn người chơi trải nghiệm từ thẩm mỹ đi xuống. Hai bên đọc cùng một trò chơi từ hai đầu ngược nhau. Và điều đáng nhớ nhất là nhà thiết kế chỉ điều khiển trực tiếp được tầng cơ chế. Động lực thì nổi lên, còn thẩm mỹ thì chỉ có thể dẫn dụ. Phần lớn thất bại thiết kế là ai đó đang cố ra lệnh cho một tầng mà họ chỉ có thể tác động gián tiếp.

Đặt hai khung cạnh nhau thì thấy rõ chỗ đứng của mô hình hình thức. Bộ ba trạng thái, hành động, luật mô tả tầng cơ chế một cách chính xác và gần như không nói gì về hai tầng còn lại. Nó không cho biết một cú nhảy có cảm giác đã tay hay không, không cho biết người chơi có thấy vui hay không, không cho biết một câu chuyện có chạm được ai không.

Điều đó không làm nó kém giá trị. Nó chỉ có nghĩa là mô hình này là điều kiện cần chứ không phải điều kiện đủ. Một người nắm chắc mô hình hình thức nhưng không hiểu game feel sẽ làm ra những hệ thống đúng đắn mà không ai muốn chơi. Một người có trực giác tốt về cảm giác nhưng không mô tả được hệ thống của mình sẽ không bao giờ sửa được nó một cách có phương pháp, cũng không giải thích được cho đồng đội tại sao nó hỏng.

Một bài tập nên làm ngay

Cách nhanh nhất để biến bài viết này thành kỹ năng là chọn một trò chơi đang chơi và điền ba cột.

Cột thứ nhất, liệt kê mọi biến cần lưu để khôi phục chính xác một ván. Cột thứ hai, chọn ba trạng thái tiêu biểu ở đầu, giữa và cuối ván, rồi liệt kê các hành động hợp lệ tại mỗi trạng thái, đánh dấu những hành động thực sự đáng cân nhắc. Cột thứ ba, viết ra hàm chuyển cho năm hành động quan trọng nhất, dưới dạng biến nào thay đổi và thay đổi bao nhiêu.

Hầu hết mọi người làm bài tập này lần đầu đều phát hiện ra hai điều. Thứ nhất, trạng thái luôn dài hơn họ tưởng. Thứ hai, số hành động đáng cân nhắc luôn ít hơn số hành động hợp lệ, thường ít hơn rất nhiều, và khoảng chênh đó chính là nơi trò chơi đang lãng phí không gian thiết kế của mình.

Làm bài tập này với năm trò chơi thuộc năm thể loại khác nhau là bài học thiết kế đáng giá hơn phần lớn các khóa học, vì nó xây được thứ duy nhất không thể học bằng cách đọc: khả năng nhìn xuyên qua lớp đồ họa và thấy hệ thống bên dưới.

Tài liệu tham khảo

  1. Salen, Katie và Zimmerman, Eric. Rules of Play: Game Design Fundamentals, MIT Press, 2003. Nguồn của ba tầng luật vận hành, luật cấu thành và luật ngầm định. Tóm lược tại https://dixieching.wordpress.com/2011/10/02/salen-k-zimmerman-e-2004-rules-of-play-ch-3-7-8-9-11-12-13/
  2. Hunicke, Robin; LeBlanc, Marc; Zubek, Robert. MDA: A Formal Approach to Game Design and Game Research, 2004. Bản gốc. https://users.cs.northwestern.edu/~hunicke/MDA.pdf
  3. Wikipedia, MDA framework, kèm danh sách tám dạng thẩm mỹ. https://en.wikipedia.org/wiki/MDA_framework

  4. Yu-kai Chou, MDA Framework: An S-Tier Behavioral Designer’s Guide. Nguồn của luận điểm về tính định hướng và về việc nhà thiết kế chỉ điều khiển trực tiếp được tầng cơ chế. https://yukaichou.com/gamification-analysis/mda-framework-hunicke-leblanc-zubek-mechanics-dynamics-aesthetics/
  5. Shannon, Claude. Programming a Computer for Playing Chess, 1950. Bài báo khai sinh lĩnh vực cờ vua máy tính và đưa ra ước tính 10 mũ 120.
  6. Wikipedia, Shannon number, kèm ước tính của Tromp và Österlund về số thế cờ hợp lệ và ước tính của Allis về độ phức tạp cây. https://en.wikipedia.org/wiki/Shannon_number
  7. Yong, Alexander và Yong, David. An Estimation Method for Game Complexity, arXiv. Nguồn của cách Shannon tính và của phép so sánh với số nguyên tử trong vũ trụ. https://arxiv.org/pdf/1901.11161
  8. Transfinite Game Values in Infinite Games, arXiv. Nguồn của bảng so sánh không gian trạng thái và độ phức tạp cây giữa cờ đam, cờ vua và các trò chơi bàn cờ khác. https://arxiv.org/pdf/2111.01630
  9. Go Game Formal Revealing by Ising Model, arXiv. Nguồn của kích thước không gian trạng thái cờ vây và hệ số phân nhánh so sánh giữa cờ vây, cờ vua và cờ đam. https://arxiv.org/pdf/1710.07360
  10. On the Complexity of Dark Chinese Chess, arXiv. Nguồn của định nghĩa hình thức về độ phức tạp không gian trạng thái, độ phức tạp cây, và lưu ý rằng với trò chơi thông tin không hoàn hảo thì phải đo theo tập thông tin. https://arxiv.org/pdf/2112.02989

Tags:

0 Lời bình

Gửi Lời bình

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

BÀI VIẾT LIÊN QUAN

BẠN MUỐN HỌC LẬP TRÌNH?

GỌI NGAY

098 953 44 58

Đăng ký tư vấn lộ trình học lập trình

Đăng ký tư vấn, định hướng lộ trình học và giải đáp các thắc mắc về ngành nghề – Miễn phí – Online.

9 + 9 =