- 2023년 재출시된 Quake II는 서버와 게임 모듈 간의 통신을 위한 새로운 API, 새로운 네트워크 프로토콜, 그리고 향상된 모딩 기회를 위한 "클라이언트 게임" 모듈을 도입했습니다.
- 업데이트된 코드베이스는 원래 게임의 별도의 게임 모듈을 병합하고 C++17 컴파일러를 필요로 합니다.
- 게임 DLL은 Clang, VS2019, VS2022와 호환되며 C++17 및 C++20에서 모두 컴파일할 수 있습니다.
- 재출시 버전은 40hz 틱률을 지원하여 원래 10hz에 비해 더 나은 게임 플레이 경험과 정밀도를 제공합니다.
- 게임 DLL은 이제 함수에서 varargs를 사용하지 않고, 포맷팅의 책임을 호출자에게 전달합니다.
- 재출시 버전은 수학 함수에 대한 변경을 포함하여 작업을 더 쉽게 만들고, 적절한 경우에는 constexpr를 사용하고 연산자 오버로드를 사용합니다.
- "엔티티가 클라이언트에게 프레임에서 보이는지"에 대한 방법의 변경사항에는 스플릿 스크린 지원과 사운드 감쇠 컬링이 포함됩니다.
- 재출시 버전은 확장된 모딩 기회를 제공하지만, 주요 구조 변경으로 인해 기존 모드를 새로운 코드베이스를 사용하도록 다시 작성해야 할 수 있습니다.
- 플레이어의 움직임이 수정되어, 게임 모듈이 물리학을 변경하면서도 클라이언트 예측과 함께 작동할 수 있습니다.
- Configstrings가 업데이트되어 최대 길이가 64에서 96으로 증가하고, 특정 범위가 여러 줄에 걸쳐 확장될 수 있게 되었습니다.
- 재출시 버전은 구조에 대한 변경사항을 포함하며, svflags에 새로운 플래그를 추가하고 effects_t를 uint32_t에서 uint64_t로 변경하여 더 많은 효과를 표현합니다.
- 동일한 효과가 스플릿 스크린 플레이어에게 여러 번 전송되는 것을 방지하기 위해 새로운 '_key' 파라미터가 도입되었습니다.
- 저장 시스템은 이제 레벨과 게임 데이터를 UTF-8 JSON에 작성하여 개발자가 더 쉽게 탐색할 수 있게 합니다.
- 저장 시스템은 더 이상 파일 시스템과 인터페이스하지 않으며, 다른 모드가 JSON을 사용할 필요는 없습니다.
- Quake II 서버 프로토콜이 업데이트되었으며, 대역 외의 도전 제거, 연결 메시지 변경, 다양한 svc 패킷 업데이트 등이 포함됩니다.
- 이 텍스트는 다양한 서버-클라이언트 상호작용, 비트스트림에서 다양한 유형의 데이터를 읽는 방법, 데이터에서 특정 플래그와 키를 처리하는 방법에 대한 자세한 설명을 제공합니다.
- 이 텍스트는 또한 svc_waitingforplayers, svc_bot_chat, svc_poi, svc_help_path, svc_achievement와 같은 다양한 서버-클라이언트 패킷의 기능과 그 데이터를 읽는 방법에 대해 설명합니다.
- clc_stringcmd 패킷은 클라이언트에서 서버로 문자열 명령을 읽는 데 사용됩니다.
- 이 텍스트는 또한 특수한 경우를 처리하는 방법, 예를 들어 POI에 대해 0이 아닌 키가 지정되었을 때, 또는 POI의 시간이 0xFFFF 또는 0으로 설정되었을 때를 설명합니다.