2 points par GN⁺ 2023-08-11 | 1 commentaires | Partager sur WhatsApp
  • La réédition de Quake II sortie en 2023 a introduit une nouvelle API pour la communication entre le serveur et les modules du jeu, un nouveau protocole réseau, ainsi qu’un module de « jeu côté client » offrant de meilleures possibilités de modding.
  • La base de code mise à jour fusionne les modules de jeu séparés du jeu d’origine et nécessite un compilateur C++17.
  • Les DLL du jeu sont compatibles avec Clang, VS2019 et VS2022, et peuvent être compilées aussi bien en C++17 qu’en C++20.
  • La version rééditée prend en charge un taux de tick de 40 Hz, offrant une meilleure expérience de jeu et une plus grande précision par rapport aux 10 Hz d’origine.
  • Les DLL du jeu n’utilisent désormais plus de varargs dans les fonctions, en transférant la responsabilité du formatage à l’appelant.
  • La version rééditée inclut des modifications des fonctions mathématiques pour faciliter le travail, utilise constexpr lorsque c’est pertinent et recourt à la surcharge d’opérateurs.
  • Les changements dans la manière de déterminer si « l’entité est visible par le client dans une frame » incluent la prise en charge de l’écran partagé et le culling de l’atténuation du son.
  • La version rééditée offre des possibilités de modding étendues, mais les changements structurels majeurs peuvent obliger à réécrire les mods existants pour utiliser la nouvelle base de code.
  • Le déplacement du joueur a été modifié afin que les modules du jeu puissent changer la physique tout en restant compatibles avec la prédiction côté client.
  • Les configstrings ont été mises à jour : leur longueur maximale est passée de 64 à 96, et certaines plages peuvent désormais s’étendre sur plusieurs lignes.
  • La version rééditée comprend aussi des changements de structure, avec l’ajout de nouveaux drapeaux dans svflags et le passage de effects_t de uint32_t à uint64_t pour représenter davantage d’effets.
  • Un nouveau paramètre _key a été introduit afin d’éviter qu’un même effet soit envoyé plusieurs fois aux joueurs en écran partagé.
  • Le système de sauvegarde écrit désormais les données de niveau et de jeu en JSON UTF-8, ce qui facilite leur exploration pour les développeurs.
  • Le système de sauvegarde n’interagit plus directement avec le système de fichiers, et les autres mods ne sont pas obligés d’utiliser JSON.
  • Le protocole serveur de Quake II a été mis à jour, avec notamment la suppression des challenges hors bande, des modifications des messages de connexion et diverses mises à jour de paquets svc.
  • Ce texte fournit une explication détaillée de diverses interactions serveur-client, de la manière de lire différents types de données dans le flux de bits, ainsi que de la façon de traiter certains drapeaux et clés dans les données.
  • Il explique également le rôle de différents paquets serveur-client comme svc_waitingforplayers, svc_bot_chat, svc_poi, svc_help_path et svc_achievement, ainsi que la façon de lire leurs données.
  • Le paquet clc_stringcmd est utilisé pour lire des commandes textuelles envoyées du client vers le serveur.
  • Le texte explique aussi comment gérer certains cas particuliers, par exemple lorsqu’une clé non nulle est spécifiée pour un POI, ou lorsque le temps du POI est défini sur 0xFFFF ou 0.

1 commentaires

 
GN⁺ 2023-08-11
Avis sur Hacker News
  • La republication du code source de Quake II ravive une vague de nostalgie dans la communauté technique
  • De nombreux commentateurs racontent avoir appris à coder avec Quake II, dont le code clair et cohérent est mis en avant comme un excellent outil d’apprentissage
  • Quake II a aussi servi, à la fin des années 1990 et au début des années 2000, à enseigner la VR aux enfants, qui créaient leurs propres niveaux de jeu en réalité virtuelle
  • Certains utilisateurs partagent leurs souvenirs de création de mods pour le jeu, et l’un d’eux attribue même sa carrière de programmeur informatique à ses premières expériences avec Quake II
  • La sortie relance également le débat sur la préservation des anciens jeux, certains proposant que les jeux qui ne sont plus vendus ni pris en charge soient publiés en open source en raison de leur importance culturelle
  • La republication du code source de Quake II est aussi saluée pour sa compatibilité avec des outils de programmation modernes comme clang
  • Certains utilisateurs se disent déçus que la republication n’inclue pas de version Linux, tout en reconnaissant qu’iD (le développeur du jeu) reste fidèle à ses principes
  • La republication a également suscité une discussion sur la convention consistant à utiliser le suffixe "_t" pour les types en C/C++ dans le code source de Quake II
  • Les utilisateurs recommandent aussi d’essayer Quake2Quest sur Oculus Quest 2 pour revivre l’expérience du jeu nostalgique