Giter Club home page Giter Club logo

totsugeki's Introduction

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.

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

  • 3-4x Speedup compared to vanilla Strive. 6x+ speedup with *Unga-Bunga enabled.
  • No installation or messing with system files. Just download and run.
  • No administrator permissions needed.
  • *100% transparent: Sends data bit-for-bit the same as vanilla Strive. No stat or lobby inconsistencies.

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

totsugeki's People

Contributors

akumajoe avatar benjamin-schultz avatar br- avatar ericr86 avatar optix2000 avatar ripazhakgggdkp avatar strudlez avatar toadking avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

totsugeki's Issues

Medium icon too small?

image

Stupid but annoying peeve - the May icon looks bad on desktop (medium size view) and on Start menu. Probably fixable by changing icon_48.png to 🐬 too (if you agree).

Request: option to close totsugeki.exe when Strive closes

Right now the program continues to wait for the Strive process even when Strive closes. It would be nice to have an option to close after Strive does (I imagine that most people will close totsugeki.exe after exiting Strive anyways)

really slow after match

im having issues with REALLY REALLY slow after matches, dont know if this is totsugeki issue or not but look at my server responses

image

Does this program causes desync?

Alright so I just tried out using this fix and sure enough I get in after 30 seconds, The issue, though, is the first 2 matches I played they resulted in significant desync that resulted in 2 loses that I never realized. Looking at the replays I saw 1 match that ended earlier than I recall, and the other replay it just becomes a bunch of toddlers playing. I don't know if it was because of this program or just dumb luck though I have never experienced desync before now so I don't know.

Add automatic offset search

So I don't need to make an update every time Strive updates.

Should provide a warning if GGST doesn't have a known offset.
Should panic if the URL fundamentally changes.

Caching

Add option to cache certain API's (ie stats) with some level of consistency guarantee (ie expire cache on write to simulate write through cache).

Requires API's are identical between calls, which needs additional research.

Could add batching functionality if certain calls are always made together.

Mark as unsafe advanced feature only, as this removes the transparency guarantee.

Totsugeki unable to patch - Message: "Could not patch GGST..."

Does this issue happen when you don't use Totsugeki?

No, the error is a result of totsugeki not being able to patch GGST

Totsugeki Version and logs
Version: v1.1.4
image

Steps to Reproduce

  1. Start GGST from the steam library and run totsugeki.exe with the -no-launch argument or double click totsugeki.exe without the -no-launch argument
  2. Wait for totsugeki.exe to run
  3. Totsugeki errors out with the below message in step 3.1
    3.1 Could not patch GGST. Steam/GGST may be running as Administrator. Try re-running Totsugeki as Administrator
  4. repeat steps 1-2. at step 1 run totsugeki.exe as administrator. The message from step 3.1 will still show

The error occurs every time I try to run totsugeki.exe

2k

game launches with 1/3 of the screen black , monitor is 2k and the game is set at 2k.

Does this issue happen when you don't use Totsugeki? no

Totsugeki Version and logs

Version:
1.2.2
Steps to Reproduce

launche the game through totsugeki all the time

https://i.imgur.com/dgovLq9.png

Totsugeki not opening

I have downloaded totsugeki.exe but when I try to run the executable nothing happens. I've tried disabling firewall and there is no anti-virus that could make this clash.

Fatal error on startup (1.3.0)

I get a fatal error on startup (I provided a screenshot of the error log below). It happens about 80% of the time. Not sure what triggers it but it could have something to do with the fact that I have GGST installed on my D: drive instead of my C: drive. It has occurred regardless of whether I use unga bunga arguments or not.

Does this issue happen when you don't use Totsugeki?
No

Totsugeki Version and logs

Version: 1.3.0
Error log screenshot:
Untitled

Steps to Reproduce

  1. Launch totsugeki
  2. Wait until GGST process launches
  3. ????
  4. Profit

Carification in README

I've seen a lot of confusion on reddit about what the application actually does. Many people didn't understand the part about "patching Strive". Indeed it is ambiguous as to what it truly is.

README should mention that it only touches the memory of the process (and not the actual game itself) specifically to forward the API call to the local server instead of Strive's server directly.

(I'm not sure if this is what you intended to actually write from the start as the phrasing in this part seems like a simple typo / oversight)

Steam Path not found, possible solution

First things first: This is an insanely good job and kind of a life saver, so thank you very much !

I have a possible simple amelioration, which would be prompting the user for Steam's exe's path if it's not found at the usual place (some people don't put it in C:). This would require a simple config file to be placed in the same folder as totsugeki's exe.

Totsugeki stopped connecting to the internet

Since a few days ago, when I try to use totsugeki with the game I recieve a Failed to update totsugeki: could not get latest release version number.. Then, when the game opens and I press a button to get past the Title Screen the game shows an error message saying there is no connection is if I was oppening the game in Steam's offline mode. Right when this happens I get the next message:
image
Translation:
Post "https://ggst-game.guiltygear.com/api/sys/get_env" : deal tcp 3.114.111.171:443: connectex: There was an attempt to access a socket thats not allowed by it's
privileges`
Note that I've tried oppening totsugeki as an Administrator.

Does this issue happen when you don't use Totsugeki?
No, it works normally when I don't use it.

Totsugeki Version and logs
It started when I updated to v1.7.0 but I've tried with v1.3 and 1.6, both versions that used to work

Steps to Reproduce
No special steps, happens everytime.

Parameter is incorrect?

Does this issue happen when you don't use Totsugeki?

Totsugeki Version and logs

Version:

Steps to Reproduce

Screenshot 2021-12-06 042655

  1. for some reason the it does this when i start totsugeki.exe, plz fix i don't intend to communicate with these servers...

Fatal error when opening totsugeki

I'm launching Totsugeki as admin from the Downloads folder on a 64bit win10 machine. Every time, it launches Strive then immediately gives me a "fatal error" message.

Here's the message in question

Strive still launches. After clicking OK Totsugeki closes.

I'm also running Steam as admin which I why I do so for totsugeki.

Modifying statistics data

Hi,
I've been working on https://github.com/halvnykterist/rating-update/ and was wondering how feasible it would be to modify stat request calls to replace a player's character level with their rating from the website. I've poked around a bit but due to my poor familiarity with the language I'm not entirely sure what the best approach would be for this.
I'd be grateful for any hints on where to start!

Not connection to network when running Totsugeki

When launching the game with version 1.2.3 or 1.3 the game can't connect to the servers as if I wasn't connected to the internet at all. I tried out the launch options and when I use -no-proxy it connects, but is also as slow as usual.
Does this issue happen when you don't use Totsugeki?

Only happens when launching through Totsugeki.
Totsugeki Version and logs

Version: 1.2.3 and 1.3
image

Totsugeki process is ended before GGST opens up

Totsugeki process is ended before GGST opens up

I see the Totsugeki cmd prompt opens up when I double click the .EXE file, but right before GGST opens up, it closes and I don't see it in my Task Manager's Processes or Details tabs.

I tried booting up the game, with and without Totsugeki, and I get around 2 minutes and 40 seconds of login time either way.

Does this issue happen when you don't use Totsugeki?
No.

Totsugeki Version and logs
Totsugeki v1.0.0 and GGST 1.07. Since the terminal is being closed I don't have access to any logs.

Version:

Steps to Reproduce

  1. Double click Totsugeki.exe
  2. After GGST opens up, check if the Totsugeki cmd prompt is open or not

EDIT:

As mentioned by @oryxcallotis, opening Totsugeki.exe as an admin made it stay open and reduced my login time from 2 minutes and 40 seconds to about 48 seconds.

(Unga) Relauching GGST without closing Totsugeki greatly increases startup time

https://files.catbox.moe/mzj0wx.mp4

Test method: launched and closed GGST sequentialy. Went as far as the floor menu but no change there, all took ~6-8s. Relaunching Totsugeki -unga fix the issue.

Even accounting the time it took for the first startup to "warm up" the difference is huge. 4th one happened to be the slowest of all but given the consistency it should be just communication differences.

Two separate tests with normal Totsugeki gave me ~1:10 to menu, so the speedups are either not in effect or being greatly limited by something.


As this isn't the intended usage I'm sharing it for debug purposes (reason why I use the -no-close flag), but in case there's no fix you could add a note next to -no-close.

Anti-virus detection

Track (and hopefully fix) any false positive detections on VirusTotal (and more).

  • Windows Defender - Whitelisted
  • Kaspersky - Whitelisted
  • McAfee GW Edition - Partially Whitelisted
  • SecureAge APEX - Partially Whitelisted
  • Cylance - Partially Whitelisted
  • MaxSecure - Pending
  • Cynet - Whitelisted
  • Qihoo-360 - Whitelisted

Unfortunately, Microsoft SmartScreen will always bring up a warning because I'm not willing to shell out $100+/yr for code signing certificates to become a "known publisher".

Allow building/installing on Linux

I'd love to try the mod on Linux with Proton to see how it works, but I can't seem to build/install this, as there is some hard dependency on something for Windows?

❯ go install github.com/optix2000/totsugeki
package github.com/optix2000/totsugeki
        imports golang.org/x/sys/windows: build constraints exclude all Go files in /home/tommy/go/pkg/mod/golang.org/x/[email protected]/windows

New set of unsafe speedups causes Quick Match to Disconnect

Totsugeki 1.4.1, coming from 1.3.0 (no issues there)

Testing:

First run, after getting to the main menu and entering Quick Match, had a long wait time with several async logs from Totsugeki until a disconnect ("Network features unavailable" blabla) happened. Hitting normal online prompted a reconnection and from there I could enter the tower/park and play.

Back to the menu I tried to enter Quick Match again. Same behavior, but without any notification on Totsugeki.

Normal mode works as expected of course.


Unless there was any change outside of the listed ones it should be either an issue with #47 or a regression from #46. I could do tests in each later but should be easy enough to track.

Thanks for supporting it still btw, it certanly saved the game for me and a bunch of people.

Error warning at startup

error warning at startup. Nothing happens but the game loads slightly slower than normal totsugeki.

Does this issue happen when you don't use Totsugeki? no

Totsugeki Version and logs

Version: 1.1.1

Steps to Reproduce

  1. start up totsugeki
  2. its the first time it happens.

Captura de pantalla 2021-08-22 211208

Context Cancelled?

image

This happens at random. Yesterday it was fine even though it took about 4m to connect. I'm new to the game.

This check failed at the upload stage, and it kept failing for 2 hours today :( not sure if there's something I can do here.

The error it gave me was Failed to upload R-Code. I imagine this is on their end, but I'm posting here because maybe there's something I can do.

Thanks for the attention

Error with Unga-Bunga on first login

Error with Unga-Bunga when user registers online.

2021/09/05 00:38:39 http: panic serving 127.0.0.1:64380: runtime error: slice bounds out of range [:79] with capacity 64
goroutine 40 [running]:
net/http.(*conn).serve.func1(0xc000230e60)
        net/http/server.go:1804 +0x153
panic(0x10f3900, 0xc000394018)
        runtime/panic.go:971 +0x49a
github.com/optix2000/totsugeki/proxy.(*StatsGetPrediction).ParseLoginPrefix(0xc00022e0a0, 0xc00038e040, 0x3b, 0x40)
        github.com/optix2000/totsugeki/proxy/stats_get_prediction.go:136 +0x205
github.com/optix2000/totsugeki/proxy.(*StatsGetPrediction).StatsGetStateHandler.func1(0x21750187cb8, 0xc0000d0cc0, 0xc0000b8900)
        github.com/optix2000/totsugeki/proxy/stats_get_prediction.go:88 +0x317
net/http.HandlerFunc.ServeHTTP(0xc000252280, 0x21750187cb8, 0xc0000d0cc0, 0xc0000b8900)
        net/http/server.go:2049 +0x4b
github.com/go-chi/chi/v5/middleware.RequestLogger.func1.1(0x1197830, 0xc0000dcfc0, 0xc0000b8800)
        github.com/go-chi/chi/[email protected]/middleware/logger.go:57 +0x1de
net/http.HandlerFunc.ServeHTTP(0xc00021e870, 0x1197830, 0xc0000dcfc0, 0xc0000b8800)
        net/http/server.go:2049 +0x4b
github.com/go-chi/chi/v5.(*Mux).ServeHTTP(0xc000216300, 0x1197830, 0xc0000dcfc0, 0xc0000b8700)
        github.com/go-chi/chi/[email protected]/mux.go:88 +0x330
net/http.serverHandler.ServeHTTP(0xc0002c2000, 0x1197830, 0xc0000dcfc0, 0xc0000b8700)
        net/http/server.go:2867 +0xaa
net/http.(*conn).serve(0xc000230e60, 0x1198000, 0xc0000d0b00)
        net/http/server.go:1932 +0x8cd
created by net/http.(*Server).Serve
        net/http/server.go:2993 +0x3b8

Caching more requests during login process

In case it's not known:

It is possible to pre-fetch the following once during the initial login. The cache for these should not be used after the initial request

/api/catalog/get_block
/api/catalog/get_follow
/api/lobby/get_vip_status
/api/item/get_item
/api/catalog/get_replay (x3)

The request structure is: "data=9295" + token + "02a5"+"302e302e35" + "03" + aob + "\x00";

The unique AOBs at the end for /api/catalog/get_replay are longer than the other requests, if it can be confirmed that they are not user specific then it is also a simple cache.

When pre-fetching the above I can login in 15 seconds from Europe via DLL injection.; when not it takes 25 seconds.

error in EnumProcessModules

I have been using an older version of Totsugeki successfully. Today I downloaded the v1.1.2 release and immediately tried to run it, and got this error. I thought it sounded a bit like a permissions issue so I tried running it as administrator, to no avail.

 _____       _                             _     _
|_   _|___  | |_  ___  _   _   __ _   ___ | | __(_)
  | | / _ \ | __|/ __|| | | | / _` | / _ \| |/ /| |
  | || (_) || |_ \__ \| |_| || (_| ||  __/|   < | |
  |_| \___/  \__||___/ \__,_| \__, | \___||_|\_\|_|
                              |___/
                                         v1.1.2
Starting GGST...
Started Proxy Server on port 21611.
Waiting for GGST process...
Error at offset 0x0: error in EnumProcessModules: Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

It also opens a separate window...

image

Totsugeki does not connect, network features are not available etc.

Here are screenshots of when I start it up. I also tried unga bunga mode to no effect.

image
image
image

Saw in another post to go to that url, I get an instant 404. Without totsugeki it times out.

Version: 1.8.0, but happened before. It used to work, but at some point stopped during GGST updates

Not working - Network features disabled

When I run totsugeki, it patches the process but when I press A, and start communicating, I don't see the posts on totsugeki window, and then the game gives me the message that the Network features are disabled because there is not internet connection.

Is there a workaround for that?

error in EnumProcessModules

tried to launch, and got this error as soon as the game itself opened
image
image
roughly translates to: only a part of a request (...) or (...) was concluded.
it's also easily crashing with no error message as soon as the game opens

Going back to the main menu from a lobby kills matches

Hey!

I've been using Totsugeki with no issues but one, whenever I return to the main menu and join another lobby/park/floor every duel station starts saying "Failed to connect to the Duel Station" or something along those lines.
I can still access lobbies, rankings and everything else, I just can't connect to matches after leaving another lobby.

I don't have this issue without Totsugeki and rebooting the game seems to fix it (luckily it's super fast now).
Not sure what the issue can be or if it is even on the mod's end at all, I don't have any special message in the command prompt either so not sure where it could come from.

Anyways thanks for the awesome mod, you're making a godlike job!

V1.10 Update

New GGST update 1.10 released today.
Using Totsugeki in normal mode without any unsafe features should still work and give a noticeable speedup (about 1:30 -> 0:30 for me, EU).

I only looked at the loading screen so far, but it looks like ASW massively reduced the amount of statistics/get requests that are done.
Connection is still not keep-alive, which is why Totsugeki still gives a good speed boost.
Did some initial tests with reduced requests in ungabunga mode and I get around 10 seconds for the loading screen.

Looking at other people's R-Code

Really small problem since most people don't use the inspect R-Code thing at all I guess, but currently when using the mod the load time is still the same when looking at other people's R-Code, that is, they're still really long.

I noticed that Totsugeki is still redirecting stuff when you look at someone's R-Code even though it's so long, so this might be something unavoidable since you're pulling someone else's information and not sending yours? I don't know how it works, but I'm opening the issue because this might have been something that was overlooked.

Pretty much everything I looked into loads way faster though, and I didn't encounter any other problems so far, thanks for the great mod.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.