This is a script that disables the anti-tamper mechanisms that are used in the engine The Zoo Race is built in, in order to allow for modding directly through scripts. The engine used compiles scripts at runtime, and so once we disable the anti-tamper mechanisms, we can simply code new features in those scripts. This has limitations, and requires learning C-Script, but is a much simpler solution and does not require hooking of functions like many other common modding tools require.
- Download and install a copy of The Zoo Race from zoorace.com.
- Make a copy of the installed folder to use as your modded version, and place it in a convenient location.
- Drag
zoorace_enable_mods.pyinto the modded folder, and then run it with your current directory being that folder. This will disable the anti-tamper mechanisms that the engine uses to ensure the binary and the scripts are unchanged from the published versions. - (Optional) Drag the
.wdlfiles contained inscriptsinto the modded folder, overwriting the pre-existing ones. This will enable simple information display menus.
Included in the scripts folder are some basic demo scripts, which include: a stats overlay that can be toggled with f10 and shows the player character's position, speed, and movement state; and an engine info overlay (toggleable with f11) that shows the current FPS of the game, and the number of entities currently loaded in the engine. These are both useful, and already a new glitch has been found as a result of the stats overlay!
In notes.md I have included some notes about the modding process (the reverse engineering process took ~8-10 hours, but details are likely not useful to users of this repo), including difficulties I've run into. These have not been substantially edited from the form I wrote them for myself, and so are much more train-of-thought than a formal writeup.
They also contain an extended section on my attempts to implement save states: the ability to save the current state of the game and then load it again later such that it is exactly the same as when the game was saved. This would be a very useful tool to have access to for glitch hunting, but I have encounted substantial difficulties in doing so, and many of the reasons why are enumerated in notes.md. Nevertheless, I believe it to be possible, and so I will continue attempting to do so.
If you have any wish to contribute to this project, email me at sixthousandj@gmail.com (with a clear subject line), or join the Zoo Race Speedrunning discord (not linked here).