Thế Giới Trò Chơi Duy Nhất - nói dối e blog

Thế Giới Trò Chơi Duy Nhất

Sau khi đăng bài blog hôm qua, tôi đã có một cuộc trao đổi thú vị với một nhóm đồng nghiệp từ dự án khác. Dự án của họ ban đầu sử dụng kiến trúc nhiều máy chủ, nhưng sau đó đã được tái cấu trúc thành mô hình máy chủ đơn. Cuộc thảo luận của chúng tôi bắt đầu với những tranh luận về độ phức tạp mà thiết kế đa máy chủ có thể gây ra.

Qua một hồi bàn luận, chúng tôi nhận ra rằng sự khác biệt trong quan điểm bắt nguồn từ việc định nghĩa vấn đề không giống nhau. Khi đổi góc nhìn, hóa ra những mâu thuẫn tưởng chừng tồn tại đều tan biến.

Kết thúc cuộc trò chuyện, tôi lướt lại lịch sử chat và cảm thấy cần phải ghi lại một vài suy nghĩ :)

Ba năm trước, tôi từng tranh cãi gay gắt với các đồng nghiệp thiết kế trong công ty suốt nhiều ngày liền: Liệu người chơi có thực sự cần một thế giới ảo rộng lớn? Nếu xây dựng thế giới đó, giá trị của nó nằm ở đâu? Làm sao duy trì sự ổn định của thế giới lớn khi gặp phải những lỗi thiết kế tạm thời nhưng có thể gây sụp đổ?

Cuộc tranh luận ấy chính là một trong những lý do thúc đẩy tôi thành lập nhóm độc lập để thực hiện dự án hiện tại. Bởi thời điểm đó, tôi gần như không nhận được sự ủng hộ từ bất kỳ ai – cả về mặt thiết kế, lập trình lẫn mỹ thuật.

Lúc ấy, tôi cũng chưa tìm được bằng chứng thuyết phục để chứng minh quan điểm của mình. Nhưng đến nay, mọi thứ đã rõ ràng hơn nhiều.

Đầu tiên, việc tăng số lượng người chơi đồng thời trên một máy chủ không thực sự mang lại trải nghiệm thú vị vượt trội. Đây là quan điểm tôi luôn giữ vững. Vì vậy, tôi không đánh giá cao việc công ty đã mua giấy phép sử dụng động cơ Bigworld. Dù động cơ này có ưu điểm vượt trội về cân bằng tải giữa các máy chủ, cho phép nhiều người chơi tương tác cùng lúc, nhưng về mặt trải nghiệm, nó không giải quyết được cốt lõi vấn đề.

Tương tự như xã hội thực, con người không cần tương tác với quá nhiều người cùng lúc, cũng không muốn cô độc một mình. Sự thoải mái nhất đến khi họ sống trong một cộng đồng có quy mô phù hợp. Việc tăng giới hạn người chơi trên một máy chủ giống như mở rộng quy mô một sự kiện xã hội ảo. Nhưng ngay cả khi tổ chức Thế vận hội trong thế giới ảo, cũng chẳng ai tham gia hết tất cả các môn, và chắc chắn không ai dồn toàn bộ sự kiện vào một sân vận động.

Tôi không quan tâm máy chủ logic được xây dựng từ một hay nhiều máy tính – đó là chi tiết kỹ thuật. Thiết kế trò chơi nên tránh tạo ra nhu cầu về khả năng chịu tải khổng lồ.

Tuy nhiên, chúng ta cần giữ lại khả năng mọi người chơi cùng tồn tại trong một thế giới ảo thống nhất, nơi họ có thể tương tác gián tiếp. Điều này mở ra vô số cơ hội cho lối chơi sáng tạo, khác biệt hoàn toàn với việc đơn thuần tăng số lượng tương tác kiểu “chiến tranh quốc gia nghìn người”.

Các hoạt động liên máy chủ cần được thiết kế khác biệt so với lối chơi nội bộ máy chủ. Giống như trong thế giới thực, bạn có thể trao đổi thông tin với người ngoài hành tinh ở đầu kia Ngân Hà, nhưng không thể tương tác thời gian thực – vì giới hạn tốc độ ánh sáng tồn tại.

Thiết kế liên máy chủ của chúng tôi dựa trên một nguyên tắc cốt lõi: truyền tải đối tượng (object transfer), chứ không phải điều khiển từ xa. Vấn đề kỹ thuật duy nhất cần giải quyết là làm sao truyền đối tượng an toàn, tránh mất mát hoặc nhân bản. Thời gian và hiệu suất trở thành yếu tố thứ yếu, hoàn toàn khác biệt với thiết kế tương tác nội bộ máy chủ.

Một cơ sở dữ liệu toàn cục là không cần thiết. Các thế giới trò chơi nên ngang bằng nhau, không có thế giới nào đặc quyền. Đồng bộ tức thời thông tin cũng không cần thiết – giống như rào cản tốc độ ánh sáng trong thế giới thực.

Ví dụ, với hệ thống bang hội có thành viên phân bố trên nhiều máy chủ, việc truy vấn danh sách thành viên toàn bộ là vô nghĩa. Bạn chỉ có thể xem danh sách trong thế giới hiện tại, còn thông tin từ thế giới khác luôn có độ trễ.

Việc di chuyển nhân vật giữa các máy chủ cũng vậy. Thiết kế tối giản tôi hình dung là: nhân vật phải “trần truồng” được chuyển sang thế giới mới (như Terminator). Cấp độ, kỹ năng được sao chép/truyền tải, còn vật phẩm cần vận chuyển qua hệ thống logistics trong game.

Khi chuyển nhân vật, người chơi có thể cần chờ một thời gian để nhân vật đến nơi, nhưng vẫn điều khiển được họ làm những việc giới hạn trong thế giới cũ. Khi hoàn tất, nhân vật sẽ bị xóa khỏi thế giới cũ và đăng nhập vào thế giới mới. Chúng tôi thậm chí có thể cấm quay ngược trở lại, chỉ cho phép gửi kinh nghiệm hoặc thuộc tính nhân vật dưới dạng vật phẩm về thế giới cũ. Nhân vật ở thế giới mới có thể coi như một bản sao của bạn tại đó.

Chỉ cần thiết kế khoảng cách logic giữa các thế giới nhỏ, thời gian trễ sẽ tự nhiên hình thành. Vì mọi tương tác giữa máy chủ đều dựa trên nguyên tắc truyền tải đối tượng – giống như rào cản tốc độ ánh sáng – điều này hiệu quả ngăn cách các mâu thuẫn giữa các vùng thế giới. Dù mâu thuẫn đó xuất phát từ lỗi thiết kế cục bộ hay sự phát triển không đồng đều của người chơi.

Tôi mong muốn tựa game mới của mình vừa cho phép cá nhân phát triển riêng lẻ, vừa tạo không gian cho các nhóm lớn tranh giành lãnh thổ, tài nguyên, xây dựng mạng lưới thương mại trong một thế giới duy nhất. Những điều này chắc chắn sẽ mang lại trải nghiệm hào hứng. Tôi biết nhiều game online đã thử làm điều tương tự, nhưng hiếm có dự án nào thực sự thành công trong việc mang lại niềm vui sâu sắc cho người chơi. Liệu lần này, chúng tôi sẽ làm được điều khác biệt?

0%