In diesem Repository finden Sie den vollständig umgekehrten Quellcode für GTA III (Master Branch) und GTA VC (Miami Branch).
Es wurde getestet und funktioniert unter Windows, Linux, MacOS und FreeBSD, auf x86, amd64, arm und arm64.
Das Rendern wird entweder von Original-RenderWare (D3D8) oder der Reimplementierungsbibliothek (D3D9, OpenGL 2.1 oder höher, OpenGL ES 2.0 oder höher) übernommen.
Audio wird mit MSS (unter Verwendung von DLLs aus dem Original-GTA) oder OpenAL erstellt.
Das Projekt wurde auch auf Nintendo Switch, Playstation Vita und Nintendo Wii U portiert.
Wir können noch nicht für PS2 oder Xbox bauen. Wenn Sie Interesse daran haben, nehmen Sie Kontakt mit uns auf.
Wir haben eine Reihe von Änderungen und Verbesserungen am Originalspiel vorgenommen. Sie können in core/config.h
konfiguriert werden. Einige davon können zur Laufzeit umgeschaltet werden, andere nicht.
Die folgenden Dinge wären schön zu haben/tun:
Asset-Änderungen (Modelle, Textur, Handhabung, Skript, ...) sollten größtenteils auf die gleiche Weise wie beim Original-GTA funktionieren.
CLEO-Skripte funktionieren mit CLEO Redux.
Mods, die Änderungen am Code vornehmen (DLL/ASI, Limit-Anpasser), funktionieren nicht . Einige Dinge, die diese Mods bewirken, sind bereits in re3 implementiert (ein Großteil von SkyGFX, GInput, SilentPatch, Widescreen-Fix), andere können leicht erreicht werden (Limis erhöhen, siehe config.h
), andere müssen einfach neu geschrieben und in den Code integriert werden direkt. Entschuldigen Sie die Unannehmlichkeiten.
Wenn Sie Premake verwenden, möchten Sie möglicherweise die Umgebungsvariable GTA_III_RE_DIR auf den GTA3-Stammordner verweisen, wenn Sie möchten, dass die ausführbare Datei per Post-Build-Skript dorthin verschoben wird.
Klonen Sie das Repository mit git clone --recursive https://github.com/halpz/re3.git
. Dann cd re3
in das geklonte Repository.
Für Linux mit Premake fahren Sie fort: Auf Linux aufbauen
Installieren Sie Python und Conan und führen Sie dann Build aus.
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
Für MacOS mit Premake fahren Sie fort: Auf MacOS aufbauen
Für FreeBSD mit Premake fahren Sie fort: Auf FreeBSD aufbauen
Vorausgesetzt, Sie haben Visual Studio 2015/2017/2019:
premake-vsXXXX.cmd
-Varianten im Stammordner aus.Microsoft hat kürzlich den Download des DX9 SDK eingestellt. Eine archivierte Version können Sie hier herunterladen: https://archive.org/details/dxsdk_jun10
Wenn Sie OpenAL unter Windows wählen, müssen Sie „OpenAL-Build unter Windows ausführen“ lesen.
premake verfügt über die Option
--with-lto
, wenn das Projekt mit Link Time Optimization kompiliert werden soll.
Es gibt verschiedene Einstellungen in config.h, vielleicht möchten Sie dort einen Blick darauf werfen.
re3 verwendet eine komplett selbst erstellte RenderWare-Ersatz-Rendering-Engine; Bibliothek librw ist ein Submodul von re3, Sie können aber auch die Umgebungsvariable LIBRW verwenden, um den Pfad zu Ihrer eigenen librw anzugeben.
Wenn Sie das Bedürfnis verspüren, können Sie auch CodeWarrior 7 verwenden, um re3 mit dem mitgelieferten codewarrior/re3.mcp-Projekt zu kompilieren – hierfür sind die Original-RW33-Bibliotheken und das DX8 SDK erforderlich. Der Build ist jedoch im Vergleich zu den MSVC-Builds instabil und dient hauptsächlich als Referenz.
Solange es sich nicht um eine Linux-/plattformübergreifende Skelett-/Kompatibilitätsschicht handelt, ist der gesamte Code im Repo, der nicht hinter einer Präprozessorbedingung (wie FIX_BUGS) steht, vollständig umgekehrter Code der ursprünglichen Binärdateien.
Wir akzeptieren keine benutzerdefinierten Codes, solange diese nicht über Präprozessorbedingungen oder die Linux-/plattformübergreifende Skelett-/Kompatibilitätsschicht umschlossen sind.
Wir akzeptieren nur diese Art von PRs;
Wir haben ein Codierungsstildokument, das nicht sehr gut befolgt oder durchgesetzt wird.
Verwenden Sie keine Funktionen von C++11 oder höher.
re3 wurde irgendwann im Frühjahr 2018 gestartet, zunächst um umgekehrte Kollisions- und Physikcodes im Spiel zu testen. Dies geschah, indem einzelne Funktionen des Spiels mithilfe einer DLL durch ihre umgekehrten Gegenstücke ersetzt wurden.
Nach ein wenig Arbeit ruhte das Projekt etwa ein Jahr lang und wurde im Mai 2019 wieder aufgegriffen und auf Github übertragen. Zu diesem Zeitpunkt hatte ich (aap) etwa 10.000 Codezeilen rückgängig gemacht und schätzte, dass das endgültige Spiel etwa 200 Zeilen umfassen würde. 250.000. Andere schlossen sich schnell der Anstrengung an (Fire_Head, shfil, erorcun und Nick007J in zeitlicher Reihenfolge und Serge etwas später), und wir machten im Laufe des Sommers 2019 sehr schnelle Fortschritte, danach verlangsamte sich das Tempo etwas.
Da zu Beginn der Corona-Pandemie alle zu Hause blieben, hatten alle wieder viel Zeit, an re3 zu arbeiten, und im April 2020 bekamen wir endlich eine eigenständige Exe (bis dahin etwa 180.000 Zeilen).
Nach der anfänglichen Aufregung und der weiteren Korrektur und Verfeinerung des Codes wurde reVC Anfang Mai 2020 gestartet, indem man mit re3-Code begann und nicht bei Null anfing und Funktionen durch eine DLL ersetzte. Nach einigen Monaten größtenteils stetiger Fortschritte gingen wir davon aus, dass reVC im Dezember abgeschlossen sein wird.
Seitdem haben wir reLCS gestartet, das derzeit in Arbeit ist.
Wir sind nicht in der Lage, diesem Code eine Lizenz zu erteilen.
Der Code sollte nur für Bildungs-, Dokumentations- und Modding-Zwecke verwendet werden.
Wir fördern keine Piraterie oder kommerzielle Nutzung.
Bitte bewahren Sie abgeleitete Arbeiten als Open Source auf und geben Sie die entsprechende Quellenangabe an.