Skip to content

Commit 7bf4ee7

Browse files
Add some stuff
1 parent 756d2bb commit 7bf4ee7

File tree

1 file changed

+21
-7
lines changed

1 file changed

+21
-7
lines changed

_docs/unreal.md

+21-7
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ Practically, for making simple Unreal Engine autosplitters, the following is cru
6969

7070
## Setup
7171

72+
First, you'll need Cheat Engine. Then you'll need a dumper.
73+
7274
There are a lot of different dumpers that will let you see the structure of the code for
7375
Unreal Engine games. The one I have found to be the most consistent is [UE4SS](https://github.com/UE4SS-RE/RE-UE4SS).
7476
Follow the installation instructions to install it on your game.
@@ -98,6 +100,11 @@ to see if your game is supported there. If it isn't, then you can find their doc
98100
on how to support it [here](https://docs.ue4ss.com/dev/guides/fixing-compatibility-problems.html).
99101
It is quite complex, but I won't go into supporting it right now.
100102

103+
### Other Unreal Engine tools you may find useful
104+
105+
- [Universal Unreal Engine 4 Unlocker](https://framedsc.com/GeneralGuides/universal_ue4_consoleunlocker.htm), to unlock the UE console in-game
106+
- other stuff?
107+
101108
## Finding base addresses
102109

103110
You should first figure out what version of Unreal Engine the game is running. Right click
@@ -142,15 +149,22 @@ guide is for the practical use - finding these addresses for the purpose of
142149
autosplitters.
143150

144151
I currently don't have a great way of finding these, it's a little
145-
jank. I would recommend finding a signature, like this one, to
146-
find it (keeping in mind sigs aren't guaranteed):
152+
jank. I would using a signature (like the one in [the below section](#signatures)) to find it if it works.
153+
154+
### SyncLoadCounter
155+
156+
I haven't got much personal experience with this, but for some modern UE4 games, this address contains an int with the number of
157+
things currently being loaded. It might be useful for your game, to detect if a load is happening.
147158

148-
4.27: `89 5C 24 ?? 89 44 24 ?? 74 ?? 48 8D 15` (offset 0x13)
159+
### Signatures
149160

150-
I would recommend looking at other autosplitters that use signatures
151-
to find some good ones.
161+
Here's a quick reference of some commonly used signatures. This is *not* a guide on how to use signatures, that is out of scope.
162+
All of these work at about 4.27ish most of the time. It's never guaranteed that one works, but it's always worth trying.
152163

153-
TODO - fill out more information here (sorry!)
164+
GWorld: `0F 2E ?? 74 ?? 48 8B 1D ?? ?? ?? ?? 48 85 DB 74"` (offset 0x8)
165+
NamePoolData: `89 5C 24 ?? 89 44 24 ?? 74 ?? 48 8D 15` (offset 0xD)
166+
GEngine: `48 39 35 ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 48 8B 0D` (offset 0x3)
167+
SyncLoadCounter: `89 43 60 8B 05` (offset 0x5)
154168

155169
## Dumping Headers (SDK)
156170

@@ -483,7 +497,7 @@ class APlayerController : public AController
483497
484498
On `PlayerController`, a few things I want to make note:
485499
- `MyHUD` contains information about widgets that are on the screen that make up the HUD. The game will probably extend this.
486-
- `PlayerCameraManager` - you may find things useful about this, but I personally haven't tried to look into it.
500+
- `PlayerCameraManager`'s Name might be able to tell you if you're currently in a cutscene, or even a checkpoint, area, etc. Depends on the game!
487501
488502
You probably want the **position**, **rotation**, and **velocity** of the player though. That
489503
information is in the superclasses of `APlayerController`:

0 commit comments

Comments
 (0)