A netplay implementation and quality-of-life tool bundle for the Steam release of Guilty Gear XX Accent Core +R.
- Building
- Why GGPO? Why +R? Why now?
- Contributing
- Authors
- License
- External Licenses and Copyright Information
GGPOPLUSR uses CMake as a build engine. This is completely irrelevant to players, but developers will need an installation of CMake, or IDE support for CMake, like Visual Studio.
Many development tools also rely on Python 3. While it's not strictly necessary, developers may find it useful to have Python installed and available from their system path, particularly for prototyping new tools.
- CMake
- Visual Studio 2017 or later with Visual C++
- If you want to build the installer, you need to install NSIS and add makensis.exe to your PATH user environment variable.
If you want to build GGPOPLUSR easily or if you experience any difficulties when trying to build when manually following all the steps below, you can use the configure script (should work on computers with Visual Studio 2017 or later). Please note that the script will not install NSIS for you, which is required to build the GGPOPLUSR installer.
Run CONFIGURE.ps1
from an elevated PowerShell prompt as Administrator (Administrator rights are required to build Microsoft's Detours). Then proceed to the step number 4 below.
The script will create a convenient file structure, will copy your source files there, will clone and configure and build all dependencies, and will run CMake configure on the GGPOPLUSR source for you.
If you used the CONFIGURE.ps1
script successfully, go straight to step 4.
To manually build and run GGPOPLUSR:
- Clone the following dependencies, which are built from source:
- GGPO
- Microsoft's Detours. Detours is used to install custom netplay hooks at runtime.
- ValveFileVDF. ValveFileVDF is used to parse Steam's configuration files, to automatically detect your installation of Guilty Gear.
- Dear Imgui. Dear Imgui is used to provide custom overlays for new features and debugging.
- JSON for Modern C++. JSON for Modern C++ is used to parse JSON responses from GitHub's REST API.
- Replace the Microsoft's Detours' Makefile with resources/detours_Makefile and rename accordingly.
- Build GGPO and Detours using x86-compatible build tools.
- GGXXAC+R is natively compiled for 32-bit x86, and using an entire 32-bit toolchain prevents us from needing to handle cross compilation.
- GGPO and Detours are large enough that they benefit from precompilation- you won't need to precompile ValveFileVDF and Dear Imgui.
- Use Visual Studio (or your preferred CMake generator) to generate a new
CMake cache. Remember to update your CMake directories:
- The
DETOURS_DIR
Cmake variable should point at your Detours build output - The
VALVEFILEVDF_DIR
CMake variable should point at your ValveFileVDF checkout. - The
DEARIMGUI_DIR
CMake variable should point at your Dear Imgui checkout. - The
JSON_DIR
CMake variable should point at your JSON for Modern C++ checkout. - The
GGPO_DIR
CMake variable should point at your GGPO checkout.
- The
- Build the launcher using the makefile or project generated by CMake.
- Confirm that
Launcher.exe
andSidecar.dll
are in the build output. - Copy
GGPOPLUSR\build\config.vdf
and paste it in the same folder asLauncher.exe
- Run
Launcher.exe
.- You may need to copy the
ggpo.dll
inGGPO_DIR\build\bin\x86\Debug
to the Guilty Gear install folder to launch the program.
- You may need to copy the
(Optional) To build the installer program:
- Install NSIS.
- Add makensis.exe to your PATH user environment variable.
- At CMake configure step, point the vcredist_86_exe variable to the Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 and 2019 installer program for x86 (vcredist.x86.exe). If you cannot locate it in your Visual Studio installation folder, you can get it from Microsoft.
- Open the solution in Visual Studio and build the PACKAGE project to generate the installer.
As of right now, there is no way to compile GGPOPLUSR on Linux, so in order to run it you will need to compile it yourself on Windows first or download a release. The Debug target will not run in Linux. Once you have this, there are two ways to run it.
- Run Steam through Wine
Once you have an instance of Steam running through Wine, you just need to run Launcher.exe in the same prefix.
- Use Proton
Change the GGPOPLUSR_DIR variable in ggpoplusr.sh to the location of your compiled GGPOPLUSR build, place it in your +R install directory, and set the Steam launch options to ./ggpoplusr.sh %command%
.
While lockstep netcode was considered industry standard for many years (including triple-A titles like Street Fighter IV), its failures have been severe and widespread (Ultimate Marvel vs. Capcom 3 and King of Fighters XIII).
In the last decade, many prominent fighting-game developers have documented the negative player effects that lockstep netcode and its necessary input latency create. Instead, developers and community members alike have espoused the virtues of rollback-based netcode, including Mike "MikeZ" Zaimont of Lab Zero and Skullgirls, Michael Stallone of Netherrealm and Mortal Kombat, and Adam "Keits" Heart of Iron Galaxy and Killer Instinct.
GGXXAC+R uses an engine that was built on lockstep netcode, before rollback-based netcode became more common in fighting games.
While in some cases +R's netcode can hold up relatively well, playing with community members from across a country (or across an ocean!) is a poor experience. Fortunately, thanks to GGPO's open-source release in October 2019, adapting a game to rollback-based netcode no longer requires modifying the game and writing an entire netcode implementation. This opens up the possibility for fighting games new and old to be brought up to a new gold standard- including this project.
Contributions of all kinds are welcome! While we're certainly seeking help with C++ development, x86 assembly, Win32 APIs, reverse engineering, and networking code, we need many non-technical skills as well! You, the reader, can help us directly by:
- Reading CONTRIBUTING.md and submitting new pull requests
- Updating and organizing the wiki
- Testing early-access releases and reporting issues on the issue tracker
- Contribute to reverse engineering, identify bugs, or just chat on our Discord
- Spreading the word and recruiting new players and contributors!
Authors
- @Labreezy - founder
- @WesselKuipers
- @adanducci
- @Ninetime
- @FIXMESTEVE
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details.
Guilty Gear, Guilty Gear XX, and all related software Copyright © Arc System Works.
Steam Copyright © Valve Corporation.
Detours Copyright © Microsoft Corporation.
GGPO (Good Game Peace Out) Copyright © GroundStorm Studios, LLC.
ValveFileVDF Copyright © Matthias Möller.
CMake - Cross Platform Makefile Generator Copyright © Kitware, Inc. and Contributors.
Dear Imgui Copyright © Omar Cornut
JSON for Modern C++ Copyright © Niels Lohmann