Skip to content

A netplay implementation and quality-of-life tool bundle for the Steam release of Guilty Gear XX Accent Core +R.

License

Notifications You must be signed in to change notification settings

Otsgekee/GGPOPLUSR

 
 

Repository files navigation

GGAC+R GGPO-BASED CASTER

Build Status

A netplay implementation and quality-of-life tool bundle for the Steam release of Guilty Gear XX Accent Core +R.

Table of contents

Building

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.

Build requirements

  • 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.

Using the configure script

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.

Manually configure and build

If you used the CONFIGURE.ps1 script successfully, go straight to step 4.

To manually build and run GGPOPLUSR:

  1. 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.
  2. Replace the Microsoft's Detours' Makefile with resources/detours_Makefile and rename accordingly.
  3. 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.
  4. 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.
  5. Build the launcher using the makefile or project generated by CMake.
  6. Confirm that Launcher.exe and Sidecar.dll are in the build output.
  7. Copy GGPOPLUSR\build\config.vdf and paste it in the same folder as Launcher.exe
  8. Run Launcher.exe.
    • You may need to copy the ggpo.dll in GGPO_DIR\build\bin\x86\Debug to the Guilty Gear install folder to launch the program.

(Optional) To build the installer program:

  1. Install NSIS.
  2. Add makensis.exe to your PATH user environment variable.
  3. 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.
  4. Open the solution in Visual Studio and build the PACKAGE project to generate the installer.

Running on Linux

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%.

Why GGPO? Why +R? Why now?

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.

Contributing

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

Authors

  • @Labreezy - founder
  • @WesselKuipers
  • @adanducci
  • @Ninetime
  • @FIXMESTEVE

See also the list of contributors who participated in this project.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

External Licenses and Copyright Information

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

About

A netplay implementation and quality-of-life tool bundle for the Steam release of Guilty Gear XX Accent Core +R.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 63.5%
  • C 23.3%
  • Python 6.0%
  • CMake 4.9%
  • PowerShell 2.2%
  • Shell 0.1%