2 điểm bởi GN⁺ 2023-08-11 | 1 bình luận | Chia sẻ qua WhatsApp
  • Quake II, được tái phát hành vào năm 2023, đã giới thiệu API mới cho giao tiếp giữa máy chủ và mô-đun trò chơi, giao thức mạng mới, và mô-đun "client game" nhằm mở rộng cơ hội modding.
  • Codebase đã được cập nhật bằng cách hợp nhất các mô-đun trò chơi riêng biệt của bản gốc và yêu cầu trình biên dịch C++17.
  • Game DLL tương thích với Clang, VS2019, VS2022 và có thể được biên dịch bằng cả C++17 lẫn C++20.
  • Bản tái phát hành hỗ trợ tick rate 40hz, mang lại trải nghiệm chơi và độ chính xác tốt hơn so với mức 10hz của bản gốc.
  • Game DLL hiện không còn dùng varargs trong các hàm, thay vào đó chuyển trách nhiệm định dạng cho phía gọi hàm.
  • Bản tái phát hành bao gồm các thay đổi đối với hàm toán học để giúp việc phát triển dễ dàng hơn, dùng constexpr ở nơi phù hợp và sử dụng nạp chồng toán tử.
  • Các thay đổi về cách xác định "thực thể có hiển thị trong khung hình đối với client hay không" bao gồm hỗ trợ chia đôi màn hình và cắt giảm suy hao âm thanh.
  • Bản tái phát hành mở rộng cơ hội modding, nhưng do các thay đổi lớn về cấu trúc, các bản mod hiện có có thể cần được viết lại để dùng codebase mới.
  • Chuyển động của người chơi đã được chỉnh sửa để mô-đun trò chơi có thể thay đổi vật lý mà vẫn hoạt động cùng client prediction.
  • Configstrings đã được cập nhật, tăng độ dài tối đa từ 64 lên 96, và cho phép một số phạm vi cụ thể được mở rộng qua nhiều dòng.
  • Bản tái phát hành bao gồm các thay đổi về cấu trúc, thêm cờ mới vào svflags và thay đổi effects_t từ uint32_t sang uint64_t để biểu diễn nhiều hiệu ứng hơn.
  • Một tham số _key mới đã được đưa vào để ngăn cùng một hiệu ứng bị gửi nhiều lần tới người chơi trong chế độ chia đôi màn hình.
  • Hệ thống lưu trữ giờ đây ghi dữ liệu màn chơi và dữ liệu trò chơi sang UTF-8 JSON để nhà phát triển dễ duyệt hơn.
  • Hệ thống lưu trữ không còn giao tiếp trực tiếp với hệ thống tệp nữa, và các chế độ khác cũng không bắt buộc phải dùng JSON.
  • Giao thức máy chủ của Quake II đã được cập nhật, bao gồm việc loại bỏ thách thức ngoài băng, thay đổi thông điệp kết nối và cập nhật nhiều gói svc khác nhau.
  • Văn bản này cung cấp mô tả chi tiết về nhiều tương tác giữa máy chủ và client, cách đọc nhiều kiểu dữ liệu khác nhau từ bitstream, và cách xử lý các cờ và khóa cụ thể trong dữ liệu.
  • Văn bản này cũng mô tả chức năng của nhiều gói máy chủ-client như svc_waitingforplayers, svc_bot_chat, svc_poi, svc_help_path, svc_achievement, cũng như cách đọc dữ liệu của chúng.
  • Gói clc_stringcmd được dùng để đọc các lệnh chuỗi từ client gửi lên máy chủ.
  • Văn bản này cũng giải thích cách xử lý các trường hợp đặc biệt, chẳng hạn khi POI có khóa khác 0, hoặc khi thời gian của POI được đặt là 0xFFFF hoặc 0.

1 bình luận

 
GN⁺ 2023-08-11
Ý kiến trên Hacker News
  • Việc tái công bố mã nguồn của Quake II đã khơi dậy làn sóng hoài niệm trong cộng đồng kỹ thuật
  • Nhiều người bình luận chia sẻ rằng họ đã học lập trình từ Quake II; mã nguồn rõ ràng và nhất quán của trò chơi được nhấn mạnh là một công cụ học tập tuyệt vời
  • Quake II từng được dùng vào cuối những năm 1990 và đầu những năm 2000 để dạy trẻ em về VR, cho các em tự tạo các màn chơi thực tế ảo của riêng mình
  • Một số người dùng chia sẻ ký ức về việc tạo mod cho trò chơi; có người còn cho rằng sự nghiệp lập trình viên của mình bắt đầu từ những trải nghiệm đầu tiên với Quake II
  • Việc phát hành này cũng khơi mào thảo luận về bảo tồn game cũ; một số người dùng đề xuất rằng những trò chơi không còn được bán hoặc hỗ trợ nữa nên được phát hành mã nguồn mở vì giá trị văn hóa của chúng
  • Việc tái công bố mã nguồn Quake II được khen ngợi vì khả năng tương thích với các công cụ lập trình hiện đại như clang
  • Một số người dùng bày tỏ thất vọng vì bản tái phát hành không bao gồm phiên bản Linux, nhưng vẫn thừa nhận iD (nhà phát triển game) đã giữ vững nguyên tắc của mình
  • Bản tái phát hành cũng làm dấy lên thảo luận về quy ước dùng hậu tố "_t" cho các kiểu C/C++ được sử dụng trong mã nguồn Quake II
  • Người dùng khuyến nghị thử Quake2Quest trên Oculus Quest 2 để có trải nghiệm chơi game đầy hoài niệm