optix2000 / totsugeki

Guilty Gear Strive Proxy for faster loading screens.
BSD 3-Clause "New" or "Revised" License
476 stars 45 forks source link

totsugeki 🐬 Builds GitHub release Twitter Follow

As of the Bridget patch (v1.21), Totsugeki is no longer necessary. GGST now properly does keepalives after over a year of waiting 😭. Unga-bunga still provides a speedup. Rating-Update should continue to work.

Guilty Gear Strive Proxy for faster loading screens.

Totsugeki lets you totsugeki past the Strive connection screen.

https://user-images.githubusercontent.com/1121068/128973383-77b79b44-1998-48c6-aa67-e3014cf8f779.mp4

Better comparison (YouTube)

Quickstart

  1. Download (All Downloads)
  2. Run totsugeki.exe
  3. 🐬

Removing Totsugeki is as simple as deleting the executable and launching the game normally.

Features

* See Unga-Bunga/Unsafe Speedups. Unga-Bunga/Unsafe Speedups makes GGST much faster, but makes Totsugeki no longer transparent and may cause other issues.

Advanced Usage

(Supported in v0.1.0+)

You can disable any functionality of Totsugeki by adding -no-<feature> as an argument to totsugeki.exe. For example C:\Users\user\Downloads\totsugeki.exe -no-launch will no longer launch GGST.

Valid options:

  -help
        This help text.
  -no-launch
        Don't launch GGST. Useful if you want to launch GGST through other means.
  -no-patch
        Don't patch GGST with proxy address.
  -no-proxy
        Don't start local proxy. Useful if you want to run your own proxy.
  -no-close
        Don't automatically close totsugeki alongside GGST. (v1.0.0+)
  -no-update
        Don't automatically update totsugeki if there's a new version. (v1.4.0+)
  -unga-bunga
        Enable all unsafe speedups for maximum speed. Please read https://github.com/optix2000/totsugeki/blob/dev/UNSAFE_SPEEDUPS.md (v1.2.0+)
  -version
        Print the version number and exit.

The easiest way to do this would be to create a shortcut to totsugeki.exe and add the argument on the shortcut.

Shortcut Properties

More Speedups (Unsafe Speedups)

Want more speed?

See -unga-bunga and UNSAFE_SPEEDUPS.md

Building

Tested with Golang 1.17, but probably will compile with Golang 1.13+.

Installing from source

go install github.com/optix2000/totsugeki

Building from cloned repo

go build

The technical nitty gritty

GGST makes a new TCP connection and a new TLS connection every API call it makes. And it makes hundreds of them in the title screen.

Totsugeki solves this by proxying all API requests through a keepalive connection.

What this means is instead of doing 4 round trips (TCP + TLS + HTTP) for each API call, it only needs to do 1 (HTTP only). This shortens the loading time by a factor of FOUR! For example, if you live in the EU and have ~300ms ping to the GGST servers, you usually see something like 300ms * (1 TCP round trip + 2 TLS round trips + 1 HTTP Request round trip) = 1.2 seconds per API call.

This multiplied across all 127 API calls needed to get to the main menu means it takes a whopping 152 seconds (2.5 minutes) to load into GGST.

With Totsugeki, this is brought down to a mere 38 seconds.

This has added bonus of reducing GGST server load, as TLS negotiation is one of the most CPU intensive tasks today.

Thanks to u/TarballX for doing the initial research on why GGST takes so long to connect.