IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Le code source de Quake 2 est de nouveau disponible
Et nécessite un compilateur C++17

Le , par Jade Emy

14PARTAGES

7  0 
Le code du jeu pour la réédition 2023 de Quake II est de nouveau disponible, pour les utilisateurs qui souhaitent modifier le jeu, ainsi que le code du jeu original qui a été utilisé comme référence.

Les mods peuvent être chargés dans la réédition de la même manière que dans le jeu original : lancez le jeu avec +set game mymod ou tapez game mymod dans la console lorsque le jeu est en cours d'exécution. Il est recommendé d'installer les mods dans votre répertoire %USERPROFILE%\Saved Games\Nightdive Studios\Quake II afin de vous assurer que les fichiers du jeu original ne sont pas modifiés.

id Software n'est pas en mesure d'assurer le support de cette version, mais il vous est conseillé vivement de profiter des nombreuses ressources communautaires déjà disponibles.


La réédition de Quake II utilise une nouvelle version de l'API pour communiquer entre le serveur et le module de jeu. Elle introduit également un module "jeu client" très fin, semblable au module cgame de Quake III Arena, pour permettre des possibilités de modding étendues qui modifient le comportement du client précédemment codé en dur. Il dispose également d'un nouveau protocole réseau, la version 2023.

Cette base de code est une combinaison des modules de jeu séparés qui faisaient partie du jeu original : baseq2, ctf, rogue, et xatrix. Il nécessite un compilateur C++17. Dans les cas de conflits de spawnflags, les cartes ont été modifiées afin de résoudre les problèmes, donc les cartes du pack d'extension original peuvent ne pas se charger correctement avec cette DLL. Le FGD combiné tel qu'il a été utilisé pour le développement est également disponible pour les utilisateurs souhaitant créer de nouvelles cartes. Un fichier gameconfig.cfg modifié de TrenchBroom Quake II est inclus car les drapeaux de texture ont été modifiés.

L'interface d'exportation du jeu ayant changé, les mods existants peuvent être déplacés pour prendre en charge les modifications de l'API. Cependant, afin de prendre en charge tous les packs d'extension sous une seule base de code et les nouvelles fonctionnalités de la nouvelle version, il y a eu des changements majeurs dans la structure et la disposition, de sorte que les anciens mods souhaitant utiliser la nouvelle base de code peuvent avoir besoin d'être réécrits.

Les modifications de l'API dont il est question ici sont écrites du point de vue de la DLL du jeu.

Compilation

La DLL du jeu n'a été testée qu'avec Clang, VS2019 et VS2022.

Le code peut être compilé sous C++17 et C++20. L'utilisation de C++20 vous permet de ne pas utiliser fmtlib comme dépendance.

Définitions requises du préprocesseur
  • GAME_INCLUDE doit être défini, il indique à game.h que c'est la DLL du jeu qui le compile.
  • KEX_Q2GAME_EXPORTS doit être définie, elle indique à game.h que nous exportons la fonction GetGameAPI.
  • KEX_Q2GAME_DYNAMIC doit être défini. La DLL du jeu prend en charge la liaison statique sur les plates-formes de console, mais est toujours dynamique sur PC.
  • NO_FMT_SOURCE : ce paramètre n'est présent qu'en raison d'une limitation du système de construction interne. Il doit être défini.


Définitions optionnelles du préprocesseur
  • KEX_Q2_GAME : doit être défini si l'on compile pour Kex. Cela modifie le comportement de la commande say pour qu'elle passe par le lobby.
  • KEX_Q2GAME_IMPORTS : utilisé uniquement par le moteur, indique à game.h que nous importons GetGameAPI.
  • USE_CPP20_FORMAT : si elle est explicitement définie, la bibliothèque <format> de C++20 sera utilisée à la place de fmtlib ; sinon, l'utilisation de fmtlib sera détectée automatiquement.


Dépendances
  • fmtlib : Si USE_CPP20_FORMAT n'est pas défini, la bibliothèque doit être disponible dans le sous-répertoire fmt.
  • jsoncpp : Doit être placé dans le sous-répertoire json.


Les deux peuvent également être installés via vcpkg : vcpkg install jsoncpp64-windows fmt64-windows

Windows (Visual Studio 2019 / 2022) :
  • Il est recommandé de placer les sources dans un sous-dossier au sein d'un répertoire mod. Par exemple, à côté de baseq2, créez un dossier appelé mymod, entrez dans ce dossier, créez un dossier appelé src, et copiez le contenu du répertoire rerelease dans le sous-dossier src nouvellement créé.
  • Ouvrir game.sln
  • Construire la solution


Il est possible de déboguer la DLL en l'attachant à l'EXE du moteur. Notez que si vous utilisez VS2022 Hot Reload, en raison d'un problème interne de Hot Reload, les modifications en cours seront perdues lors de la déconnexion du serveur, ou lors d'un changement de niveau à l'aide de la commande map.


Source : GitHub

Et vous ?

Quel est votre avis ?

Voir aussi :

Q2VKPT : un jeu basé sur Quake 2, l'API Vulkan et le path tracing compatible avec les GPU RTX qui veut mettre en avant les atouts du ray tracing

qengine, un fork du moteur de jeu de Quake II est disponible en open source pour les développeurs en proie à la nostalgie

Two-Take autorise à nouveau la création de mods pour GTA avec l'outil OpenIV sous la pression des joueurs

Une erreur dans cette actualité ? Signalez-nous-la !