Dans ce référentiel, vous trouverez le code source entièrement inversé de GTA III (branche principale) et GTA VC (branche de Miami).
Il a été testé et fonctionne sous Windows, Linux, MacOS et FreeBSD, sur x86, amd64, arm et arm64.
Le rendu est géré soit par RenderWare d'origine (D3D8), soit par la bibliothèque de réimplémentation (D3D9, OpenGL 2.1 ou supérieur, OpenGL ES 2.0 ou supérieur).
L'audio est réalisé avec MSS (en utilisant les DLL de GTA d'origine) ou OpenAL.
Le projet a également été porté sur Nintendo Switch, Playstation Vita et Nintendo Wii U.
Nous ne pouvons pas encore construire pour PS2 ou Xbox. Si cela vous intéresse, contactez-nous.
Nous avons apporté un certain nombre de changements et d'améliorations au jeu original. Ils peuvent être configurés dans core/config.h
. Certains d’entre eux peuvent être activés au moment de l’exécution, d’autres non.
Les choses suivantes seraient bien d’avoir/faire :
Les modifications des actifs (modèles, textures, manipulation, script, ...) devraient fonctionner pour la plupart de la même manière qu'avec GTA original.
Les scripts CLEO fonctionnent avec CLEO Redux.
Les mods qui apportent des modifications au code (dll/asi, ajusteurs de limites) ne fonctionneront pas . Certaines choses que font ces mods sont déjà implémentées dans re3 (une grande partie de SkyGFX, GInput, SilentPatch, Widescreen fix), d'autres peuvent facilement être réalisées (augmentation des limites, voir config.h
), d'autres devront simplement être réécrites et intégrées dans le code directement. Désolé pour le dérangement.
Lorsque vous utilisez premake, vous souhaiterez peut-être pointer la variable d'environnement GTA_III_RE_DIR vers le dossier racine de GTA3 si vous souhaitez que l'exécutable y soit déplacé via le script de post-construction.
Clonez le référentiel avec git clone --recursive https://github.com/halpz/re3.git
. Ensuite, cd re3
dans le référentiel cloné.
Pour Linux utilisant premake, procédez : Construire sur Linux
Installez Python et Conan, puis exécutez build.
conan export vendor/librw librw/master@
mkdir build
cd build
conan install .. re3/master@ -if build -o re3:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s re3:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
conan build .. -if build -bf build -pf package
Pour MacOS utilisant premake, procédez : Construire sur MacOS
Pour FreeBSD utilisant premake, procédez : Construire sur FreeBSD
En supposant que vous disposez de Visual Studio 2015/2017/2019 :
premake-vsXXXX.cmd
sur le dossier racine.Microsoft a récemment interrompu ses téléchargements du SDK DX9. Vous pouvez télécharger une version archivée ici : https://archive.org/details/dxsdk_jun10
Si vous choisissez OpenAL sous Windows, vous devez lire Exécuter la version OpenAL sous Windows.
premake a une option
--with-lto
si vous souhaitez que le projet soit compilé avec Link Time Optimization.
Il existe différents paramètres dans config.h, vous voudrez peut-être y jeter un œil.
re3 utilise un moteur de rendu entièrement homebrew remplaçant RenderWare ; bibliothèque. librw est un sous-module de re3, mais vous pouvez également utiliser la variable d'environnement LIBRW pour spécifier le chemin d'accès à votre propre bibliothèque.
Si vous en ressentez le besoin, vous pouvez également utiliser CodeWarrior 7 pour compiler re3 à l'aide du projet codewarrior/re3.mcp fourni - cela nécessite les bibliothèques RW33 d'origine et le SDK DX8. La version est cependant instable par rapport aux versions MSVC et est principalement destinée à servir de référence.
Tant qu'il ne s'agit pas d'un squelette/couche de compatibilité Linux/multiplateforme, tout le code du dépôt qui n'est pas derrière une condition de préprocesseur (comme FIX_BUGS) est un code complètement inversé par rapport aux binaires d'origine.
Nous n'acceptons pas les codes personnalisés, tant qu'ils ne sont pas encapsulés via des conditions de préprocesseur, ou qu'il s'agit d'une couche de squelette/de compatibilité Linux/multiplateforme.
Nous n'acceptons que ce type de PR ;
Nous avons un document sur le style de codage qui n’est pas très bien suivi ou appliqué.
N'utilisez pas les fonctionnalités de C++ 11 ou version ultérieure.
re3 a été lancé au printemps 2018, initialement pour tester les collisions inversées et le code physique dans le jeu. Cela a été fait en remplaçant les fonctions uniques du jeu par leurs homologues inversées à l'aide d'une DLL.
Après un peu de travail, le projet est resté en sommeil pendant environ un an et a été repris et poussé sur github en mai 2019. À l'époque, j'avais (aap) inversé environ 10 000 lignes de code et estimé que le jeu final en contenait environ 200. 250k. D'autres ont rapidement rejoint l'effort (Fire_Head, shfil, erorcun et Nick007J dans l'ordre chronologique, et Serge un peu plus tard) et nous avons fait des progrès très rapides tout au long de l'été 2019 après quoi le rythme s'est un peu ralenti.
Comme tout le monde restait à la maison pendant le début de la pandémie de Corona, tout le monde a eu beaucoup de temps pour travailler à nouveau sur re3 et nous avons finalement obtenu un exe autonome en avril 2020 (environ 180 000 lignes à ce moment-là).
Après l'enthousiasme initial et la correction et le peaufinage du code, reVC a été lancé début mai 2020 en partant du code re3, et non en repartant de zéro en remplaçant les fonctions par une dll. Après quelques mois de progrès plutôt réguliers, nous avons considéré que reVC était terminé en décembre.
Depuis, nous avons lancé reLCS, qui est actuellement en cours de réalisation.
Nous ne pensons pas être en mesure de donner une licence à ce code.
Le code ne doit être utilisé qu'à des fins éducatives, de documentation et de modification.
Nous n'encourageons pas le piratage ou l'utilisation commerciale.
Veuillez conserver les travaux dérivés open source et accorder le crédit approprié.