- Build trong Mario Kart 8 có hiệu năng khác nhau tùy theo tổ hợp tay đua, thân xe, lốp, tà lượn, nên rất khó chọn ra build tối ưu giữa vô số phương án
- Nếu chỉ nhìn vào tốc độ thì Bowser hoặc Wario có vẻ là lựa chọn tốt, nhưng lựa chọn thực tế trong đua xe gần với bài toán tối ưu đa mục tiêu, nơi phải xét đồng thời tốc độ và gia tốc
- Những lựa chọn như Koopa, chậm hơn ở cùng mức gia tốc hoặc có gia tốc thấp hơn ở cùng tốc độ, có thể bị loại là lựa chọn bị chi phối
- Các lựa chọn còn lại tạo thành Pareto front, nhưng phương án nào là tốt nhất trong đó còn phụ thuộc vào phong cách chơi và trọng số đặt lên từng chỉ số
- Khi sở thích chưa rõ ràng, Pareto front không đưa ra một đáp án duy nhất mà giúp thu hẹp phạm vi thử nghiệm bằng cách loại bỏ các tổ hợp kém rõ ràng
Rút gọn build Mario Kart 8 bằng Pareto front
- Build trong Mario Kart 8 gồm bốn thành phần: tay đua, thân xe, lốp, tà lượn, và mỗi thành phần có các chỉ số hiệu năng như tốc độ và gia tốc
- Mỗi thành phần có hàng chục lựa chọn, một số chỉ khác về phong cách dù có cùng chỉ số, nhưng ngay cả khi loại trùng lặp vẫn còn lại hàng nghìn tổ hợp
- Nếu chỉ xét một chỉ số duy nhất thì việc lựa chọn trở nên đơn giản hơn
- Ví dụ, nếu xếp hạng tay đua chỉ theo tốc độ, Bowser hoặc Wario sẽ trông như những lựa chọn tự nhiên
- Khi xét cả tốc độ lẫn gia tốc, mỗi lựa chọn đều có điểm mạnh và điểm yếu riêng, khiến việc xác định tối ưu chỉ bằng bảng xếp hạng đơn giản trở nên khó khăn
- Nếu một lựa chọn tệ hơn hoặc bằng lựa chọn khác ở mọi chỉ số đang xét thì đó là lựa chọn bị chi phối
- Trong ví dụ, Koopa có tốc độ thấp hơn Cat Peach ở cùng mức gia tốc, và gia tốc thấp hơn Toadette ở cùng mức tốc độ
- Những lựa chọn như vậy có thể bị loại khỏi danh sách ứng viên nếu mục tiêu là chiến thắng
- Các lựa chọn hiệu quả không bị chi phối tạo thành Pareto front hoặc Pareto frontier
- Hiệu quả Pareto là tiêu chí khách quan để loại bỏ các lựa chọn kém hơn rõ ràng, nhưng không có nghĩa mọi lựa chọn trên frontier đều tốt như nhau
- Nếu muốn cân bằng giữa tốc độ và gia tốc, bạn có thể tránh các tay đua nằm ở hai cực của frontier
- Lựa chọn cuối cùng vẫn phụ thuộc vào phong cách chơi, kỹ năng và mức độ ưu tiên dành cho từng chỉ số
Những đánh đổi lặp lại cả ngoài Mario Kart
- Cấu trúc đánh đổi tương tự cũng xuất hiện thường xuyên ngoài game
- Bữa ăn vừa rẻ vừa ngon
- Công việc lương cao, dễ làm và mang lại sự hài lòng
- Danh mục đầu tư rủi ro thấp và lợi nhuận cao
- Vật liệu linh hoạt, bền chắc và dễ sản xuất
- Chính sách thuế công bằng mà vẫn giữ được hiệu quả
- LLM chất lượng cao vừa nhanh vừa hiệu quả về chi phí
- Nếu biết chính xác trọng số gán cho từng chiều, tức là hàm hữu dụng, thì có thể gộp nhiều chiều thành một giá trị duy nhất và biến nó thành bài toán tối ưu một mục tiêu
- Khi hàm hữu dụng chưa biết hoặc còn không chắc chắn, Pareto front hữu ích để loại bỏ những lựa chọn rõ ràng là kém hiệu quả
- Pareto front không cho biết ngay từ đầu đâu là lựa chọn tốt nhất duy nhất; bạn vẫn cần tự thử các lựa chọn hiệu quả còn lại để tìm ra phương án phù hợp với mình
Các giả định đơn giản hóa và nguồn dữ liệu
- Bài viết có đưa vào một số giả định đơn giản hóa khác với cách tính thực tế trong game
- Các chỉ số được chuyển thành chỉ số dẫn xuất trong game và không phải lúc nào cũng có quan hệ tuyến tính với chỉ số gốc
- Ngoài tay đua, trang bị còn có 4 chỉ số tốc độ và 4 chỉ số điều khiển, nhưng bài viết lấy giá trị trung bình đơn giản cho chúng
- Dạng cụ thể của hàm hữu dụng bị ẩn đi và có thể đóng vai trò lớn trong lựa chọn thực tế
- Dữ liệu tham khảo từ Mario Kart 8 Deluxe in-game statistics và Mario Kart and the Pareto Frontier
1 bình luận
Ý kiến trên Hacker News
Phần trực quan hóa/bài viết này cho thấy rất rõ vấn đề lựa chọn chỉ để có lựa chọn mà cá nhân tôi không thích trong thiết kế game ngày nay
Có vẻ các nhà thiết kế dễ rơi vào cái bẫy đánh giá quá cao những câu như “hơn 700.000 cách build!”. Họ đẩy gánh nặng bùng nổ tổ hợp này sang cho người chơi, và nếu những lựa chọn đó không làm trải nghiệm cốt lõi của game tốt hơn đáng kể thì chẳng khác nào làm phí thời gian. Điều này càng đúng nếu người chơi có kinh nghiệm có thể loại bỏ phần lớn không gian lựa chọn một cách an toàn; dù sao cũng có internet, nên kiểu gì cũng sẽ có người tính ra. Tôi không hiểu vì sao lại giấu yếu tố cạnh tranh đằng sau một bài toán tối ưu lồi, và khó mà nói đó là để vui hơn
Cấu hình trang bị trong FPS cũng là một ví dụ của xu hướng này. Một khẩu súng cũng có các đánh đổi giữa ống ngắm, nòng súng, phụ kiện gắn dưới, băng đạn, đạn dược, trong khi trước đó người chơi đã phải chọn lớp nhân vật/vũ khí rồi. Nếu cốt lõi của FPS là chọn vị trí chiến thuật và ngắm bắn, những tùy chọn này giống như một chiêu rẻ tiền để hút thêm chút thời gian chơi. Các thương hiệu như Halo và Battlefield cũng rơi vào cái bẫy này và làm hỏng danh tiếng của mình
Những lựa chọn bổ sung cho lối chơi cốt lõi, như kinh tế theo vòng của Counter-Strike, vẫn hoàn toàn có thể tồn tại. Nếu mọi lựa chọn trao cho người chơi đều chỉ diễn ra trong menu thì đó nên được xem là dấu hiệu cảnh báo. Ngành thiết kế game nên đặt trọng tâm vào lối chơi và tự sự hơn là thống kê/tổ hợp học
Điều quan trọng nhất là không áp đặt cách chơi lên người khác. Trừ khi được hỏi rõ ràng, đừng nói “X là tốt nhất nên phải chọn”, mà hãy để mỗi người chơi theo cách của mình
Nhìn chung tôi đồng ý rằng cách này là chiêu rẻ tiền và quá phổ biến. Dù vậy, nó vẫn có ý nghĩa ở chỗ trao cho người chơi “việc để làm”, chẳng hạn như mở khóa nội dung. Nó cũng thêm vào trải nghiệm cảm giác “đây là lý do tôi vẫn còn chơi game này”
Ai cũng biết có kiểu người chơi cùng mà hút cạn niềm vui của tất cả mọi người. Từ góc nhìn của bên bán game, đây không chỉ là điều xấu mà còn là thiết kế ngu ngốc
Tuy nhiên, chính lượng lựa chọn áp đảo đó tạo ra một tầng lớp chuyên gia và người tạo build để người chơi thông thường dựa vào. Ước gì bản thân game cung cấp thêm công cụ để khám phá chuyện này, chẳng hạn một hệ thống hướng dẫn build ngay trong game
Ngay cả trong tiệc tùng, thuộc tính khác nhau của các nhân vật cũng khiến game năng động hơn và rốt cuộc là vui hơn. Vấn đề là khi có ai đó dành cả tuần trước để nhập mọi chỉ số vào Excel và đến nơi đã biết cách tối ưu để thắng tất cả. Nhưng nên kẻ ranh giới ở đâu? Việc đó có bất công hơn so với tập luyện một đường đua suốt cả tuần không?
Cần chấp nhận rằng game không phải lúc nào cũng công bằng. Thể thao cũng vậy. Nếu chơi tennis với người từng thi đấu giải, người chơi casual có đưa cho dân chuyên một cây vợt tệ hơn rất nhiều thì vẫn khó mà đánh trúng được một quả
Cân bằng để người chơi casual và chuyên nghiệp có thể cạnh tranh trong cùng điều kiện là việc rất khó, và nếu không khéo có thể biến game thành thứ cực kỳ đơn giản, chỉ phụ thuộc vào gieo xúc xắc. Ít nhất, nếu cho thấy rõ đây là game Excel hay game phản xạ thì sẽ công bằng hơn một chút
Tôi luôn biết lốp nhỏ màu đỏ là tốt nhất. Tiếc là phân tích này bỏ sót thứ quan trọng nhất với tôi: phong cách, và tình yêu dành cho Zelda. Vì vậy cá nhân tôi sẽ phải bỏ qua toàn bộ
Để giữ công bằng, tôi sẽ tiếp tục chơi Koopa :)
Một bài trình bày thật sự ấn tượng. Tôi đã biết về hiệu quả Pareto/biên Pareto rồi, nhưng giờ chắc sẽ không bao giờ quên nữa; mỗi lần nhắc đến sẽ nghĩ tới Mario Kart và Koopa đáng thương bị thống trị
Không thể thiết kế nó như một mục tiêu; thường nó sẽ có cảm giác gượng ép và khó chịu. Nhưng thỉnh thoảng có những trường hợp tuyệt vời đến mức như lần này: “Ừ, cứ lấy lượt cuộn của tôi đi”
Về mặt thiết kế thì tôi phản đối. Với tôi, bài trình bày này quá chậm và gây bực bội suốt từ đầu đến cuối, giống như phải xem video để tìm thông tin. Về điểm đó, định dạng notebook ban đầu tốt hơn nhiều
Bố cục bên trong từng phần thì đẹp, nhưng hoạt ảnh và layout phản hồi theo cuộn khiến việc đọc khó chịu hơn so với một tập biểu đồ tĩnh
Nội dung thì xuất sắc, và việc xem sự khác biệt giữa nhân vật với kart được thể hiện ra sao rất thú vị
Thực ra nó không khiến việc hiểu trở nên dễ hơn hay tốt hơn, mà chỉ có cảm giác như thiết kế quá tay vì chính thiết kế
Bài viết hay. Mặt trận Pareto trong kết quả cho thấy rõ thiết kế game khó đến mức nào. Dù có hàng triệu tổ hợp khả dĩ, trong môi trường cạnh tranh thực tế chỉ có một phần cực nhỏ được dùng
Chắc chắn cũng sẽ có một mặt trận Pareto meta trong sự cân bằng giữa tính hữu dụng cạnh tranh của từng tổ hợp và niềm vui mà nó thêm vào game
Trong một game đủ phức tạp, có thể xem mọi build đều nằm trên mặt trận Pareto vì chúng tối ưu một hàm chi phí cụ thể nào đó
Có nói “Một danh mục rủi ro thấp, lợi nhuận cao? [...] tất nhiên là nếu bạn đã biết chính xác các trọng số”, nhưng trong trường hợp này, nhờ cấu trúc của bài toán mà nó được rút gọn thành tối ưu hóa 1 chiều
Trong lựa chọn danh mục đầu tư, thứ được tối ưu không phải là lợi nhuận của một khoản đầu tư đơn lẻ, mà là lợi nhuận đầu tư trong suốt đời người. Nhờ lãi kép, điều này trở thành một hàm của rủi ro và lợi nhuận. Vì vậy có thể tìm phân bổ tối ưu mà không cần bất kỳ sự đánh đổi nào: https://two-wrongs.com/the-misunderstood-kelly-criterion.htm...
Tiêu chuẩn Kelly cấm các khoản cược rất sinh lời nhưng có rủi ro phá sản đáng kể. Vì khi tài sản về 0, bạn mất cơ hội lãi kép trong tương lai. Nhưng nếu còn trẻ và danh mục đầu tư nhỏ so với thu nhập, điều này lại quá thận trọng
Bài viết cũng ám chỉ điều này khi nói tổng chiết khấu của tiền lương tương lai là một phần của tài sản hiện tại. Nói vậy là chính xác, và nếu còn trẻ thì đó cũng là biến quan trọng nhất với chênh lệch nhiều bậc độ lớn. Thú vị là tác giả dường như hiểu điều này nhưng lại không bận tâm
Nghĩ đến việc dùng thứ này như một công cụ thiết kế thấy rất đáng mong đợi. Nó có vẻ hữu ích khi thiết kế một game có mặt trận Pareto rộng hơn gồm các build vừa thú vị vừa khả thi
Bài viết thú vị hơn nhiều so với những gì tiêu đề gợi ý. Làm rất tốt
Một phân tích và trực quan hóa thật sự tuyệt vời. Tuy nhiên, Mario Kart 8 + 200cc có một biến số thú vị. Phần lớn người chơi không muốn tốc độ vượt quá một mức nhất định, vì quá nhanh sẽ khó điều khiển
Vì vậy thay vì tối đa hóa chỉ số tốc độ tuyệt đối, có thể bạn muốn tối thiểu hóa chênh lệch so với chỉ số tốc độ tối ưu phù hợp với mình
Nhiều khi tốc độ tối đa thấp hơn nhưng không cần giảm tốc lại tốt hơn
Tăng tốc quan trọng vì khi bị đánh trúng hoặc va chạm, mà đó không phải là chuyện “nếu” mà là “khi nào”, bạn cần bắt kịp lại thật nhanh
Đây thật sự là một trong những phần trực quan hóa ấn tượng nhất tôi từng thấy. Không biết tác giả dùng công cụ gì để làm?
Svelte có hỗ trợ animation khi cuộn tích hợp khá ổn: https://svelte.dev/repl/051cd352ce284d15b55c91c8b30fa32f?ver...