- 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
Ý kiến trên Hacker News
"_t"cho các kiểu C/C++ được sử dụng trong mã nguồn Quake II