You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
## [1.5.0] 2021-07-27
### Changed
- Bypass caching for specific requests
- Requests from the game are unconditionally sent to real servers to ensure
consistency
### Fixed
- Demote some error messages to warnings
- Fixed hardcoded IP addresses causing network issues
When loading up the main menu, the guilty gear game downloads all your game
47
+
data in several HTTP (100+) requests to the game servers. These requests
48
+
are done in order, waiting for one to complete before doing the next.
49
+
50
+
Making this many requests isn't too bad, until you factor in latency.
51
+
Each request has to go to Japan and back, ~250ms each way / ~500+ ms total.
52
+
Multiply this by 100 requests and no wonder it can take it 5 minutes.
53
+
54
+
A good explanation of this can be found on reddit: [here](https://www.reddit.com/r/Guiltygear/comments/oaqwo5/analysis_of_network_traffic_at_game_startup)
55
+
56
+
### Solution
57
+
58
+
tl;dr cache the responses and send old ones back to the game immediately.
59
+
60
+
To solve this we put a fake server (`gg-struggle`) in the middle, between the game and the server.
61
+
We trick our game into thinking `gg-struggle` is the real server and asks
62
+
it for data. `gg-struggle` makes the same request to the real server and copies the response
63
+
back to the game. Then saves the response for later.
64
+
65
+
The next time the game tries to make the same request (e.g. download latest news),
66
+
`gg-struggle` will already have saved that data from earlier and return it back
2. Start `gg-struggle`. Keep this console open while guilty gear is running.
36
-
3._SLASH!_
37
-
38
-
## Overview
39
-
40
-
`gg-struggle` is a local webserver that caches responses from the guilty
41
-
This speeds up loading and menu times for regions furthest from Japan (NA, EU)
42
-
43
-
I'll update this with more documentation as I have time
11
+
Download [here][releases]
44
12
45
-
### Automated Install
13
+
### zip Archive (Windows)
46
14
47
-
Install using the `install-gg-struggle.exe` installer.
15
+
Install and run by unzipping the .zip file in releases
48
16
49
-
1. run `install-gg-struggle.exe`
50
-
2. Launch `gg-struggle.exe` through the start menu
51
-
3. Load game
52
-
53
-
NOTE: While installed, `gg-struggle` MUST be running while the game is up.
54
-
You must uninstall to revert things to normal.
55
-
56
-
### Manual Install
57
-
58
-
1. Run `certmgr.exe` as admin
59
-
2. Import `gg-struggle-cert.pem` under the **"Trusted Root Certification Authority"**
60
-
3. Edit `c:\windows\system32\drivers\etc\hosts` file as admin to include the following lines
61
-
62
-
127.0.0.1 ggst-game.guiltygear.com
63
-
3.112.119.46 ggst-game-real.guiltygear.com
64
-
65
-
## How It Works
66
-
67
-
### Problem
17
+
1. Use installer from releases [releases][releases].
18
+
2. Run `gg-struggle` before playing. Keep this window open during play
19
+
3._SLASH!_
68
20
69
-
When loading up the main menu, the guilty gear game downloads all your game
70
-
data in several HTTP (100+) requests to the game servers. These requests
71
-
are done in order, waiting for one to complete before doing the next.
21
+
## Updating
72
22
73
-
Making this many requests isn't too bad, until you factor in latency.
74
-
Each request has to go to Japan and back, ~250ms each way / ~500+ ms total.
75
-
Multiply this by 100 requests and no wonder it can take it 5 minutes.
23
+
Uninstall and reinstall with newest installer.
76
24
77
-
A good explanation of this can be found on reddit: [here](https://www.reddit.com/r/Guiltygear/comments/oaqwo5/analysis_of_network_traffic_at_game_startup)
25
+
## Uninstall / Remove
78
26
79
-
### Solution
27
+
Run `uninstall-gg-struggle.ps1`.
80
28
81
-
tl;dr cache the responses and send old ones back to the game immediately.
29
+
You can verify it's removed by opening
30
+
`c:\windows\system32\drivers\etc\hosts` in a text editor like notepad. This
31
+
line should __NOT__ exist.
82
32
83
-
To solve this we put a fake server (`gg-struggle`) in the middle, between the game and the server.
84
-
We trick our game into thinking `gg-struggle` is the real server and asks
85
-
it for data. `gg-struggle` makes the same request to the real server and copies the response
86
-
back to the game. Then saves the response for later.
33
+
```
34
+
127.0.0.1 ggst-game.guiltygear.com
35
+
```
87
36
88
-
The next time the game tries to make the same request (e.g. download latest news),
89
-
`gg-struggle` will already have saved that data from earlier and return it back
90
-
immediately.
37
+
If you see this line, open it with _notepad as administrator_ and delete the
38
+
line and save.
91
39
92
40
## Known Issues
93
41
@@ -97,24 +45,30 @@ The first load is always gonna be slow as normal, but subsequent loads should be
97
45
98
46
> Floor lockout / old data
99
47
100
-
As of 1.3, any changes to player data won't show in the client for 24 hours.
101
-
Future versions will dynamically cache data based on the request routes,
102
-
so that trivial data like player lobbies are always up-to-date.
48
+
Ranks and floor progressions would never update for some people.
103
49
104
-
This'll be fixed in the next patch.
50
+
This should be fixed in 1.5 Please report instances of this in issues.
105
51
106
52
## Logs
107
53
54
+
Crashes are hopefully stored in the logs. If experiencing an issue,
55
+
please paste relevant screenshots of the log.
56
+
108
57
Windows: `%TEMP%/gg-struggle/all.log`
109
58
linux: `$TMPDIR/gg-struggle/all.log`
110
59
111
60
## FAQ
112
61
62
+
> Is this a virus? How safe is this?
63
+
64
+
This isn't a virus, people can check the code.
65
+
It's common webserver software.
66
+
113
67
> Will I get banned?
114
68
115
-
The likelihood of getting banned is highly unlikely, since we're not tampering
116
-
with the game data nor the game client. We're just sitting on the network
117
-
between the game and servers, cleanly passing data along.
69
+
I'd say it's highly unlikely because `gg-struggle` runs as a standalone program
70
+
that does not touch the game in any way. It reads your game's network traffic
71
+
and relays it without any tampering.
118
72
119
73
We are sending slightly stale data back to the game client, so there can be
120
74
some client-side bugs with out-of-date info, like showing a lobby list with
@@ -130,16 +84,15 @@ We need to do two things with admin:
130
84
We need to assure windows that it can trust gg-struggle is the
131
85
real `ggst-game.guiltygear.com`, even though it's really not.
132
86
87
+
There's no way to distinguish if the HTTP request was made from the proxy or the game.
133
88
134
-
> What does the installation do?
89
+
> What does installation do?
135
90
136
-
The installation does 3 things
137
-
138
-
1. Installs the .exe file
139
-
2. Modifies the `hosts` file
140
-
3. Locally generates a Self-Signed Certificate
91
+
1. Modifies the `hosts` file
92
+
2. Locally generates a Self-Signed Certificate (cause you can trust youself)
141
93
- installs to the windows root store
142
94
- copy stored at `%ProgramFiles%/gg-struggle`
95
+
3. Installs the `gg-struggle` proxy to your program files.
143
96
144
97
> Why is GG:ST so slow?
145
98
@@ -149,7 +102,6 @@ When the game loads, a 100+ of HTTP requests are sent serially. Each request
149
102
can take ~200-1500ms due to latency from a region like NA to Japan. This adds
150
103
up to roughly `100 * 800 = 80+ seconds` in the average case.
151
104
152
-
153
105
> Why doesn't the game just lump the requests into one big one?
154
106
155
107
In Japan, the devs probably didn't experience this problem. 100 requests at 10ms/req
@@ -163,6 +115,9 @@ overwork themselves on the game itself.
163
115
164
116
> How does gg-struggle fix this?
165
117
118
+
We remember the data from previous connections and serve that to the game
119
+
while fetching from Japan in the background.
120
+
166
121
I've written an in-depth non-tech explanation in the form of a movie heist in
167
122
[EXPLANATION.md](docs/EXPLANATION.md)
168
123
@@ -248,3 +203,5 @@ You should also remove the `gg-struggle` certificate by
248
203
1. Run `certmgr.msc` as admin
249
204
2. Navigate to "Trusted Root Certifcation Authorities"
0 commit comments