Iji TAS mod
Tool-Assisted Speedrun mod for Iji 1.7
Please note that Iji was made by Daniel Remar, and these modified game and source files are modified by me (https://github.com/Kataiser). You can find the game at http://remar.se/daniel/iji.php and the source code at http://remar.se/daniel/resources.php (in "Source codes and resources 1"). iji_17_tas.gm81
, the main source file, is generated by running Build folder.bat
and requires a registered Game Maker 8.1 to load and compile. Music files are not included, copy them from your copy of the game or download them from here.
Discord
https://discord.gg/8P9fjRW
Please consider joining if you're at all interested!
Download and installation
Iji_TAS_mod.zip (14 MB)
Doesn't include music, copy the music from your main game installation (or from here)
Also doesn't include an auto-updater, check back to https://github.com/Kataiser/Iji-TAS-mod occasionally for updates
This tool to convert between Hourglass files (.wtf
or .hgm
) and Iji TAS files (.itf
) may also be useful: https://github.com/Kataiser/wtf-to-itf
Syntax, controls, and documentation
Keys: escape, enter, U, D, L, R, Z, X, C, S, one-nine
Line syntax: number of frames to hold the inputs, followed by the inputs to hold, all separated by commas. Ex: 8,R,U
to hold right and up for eight frames
//
anywhere in the line (preferably at the beginning) is a comment and won't be executed
Save:
command: creates a savestate file with the name after the colon (can include spaces). These take a frame, clear current input, and are not invalidated
End
command: ends the TAS playback
Skip
command: skips to the clear screen of the current sector
Space: load an Iji TAS file (.itf
)
Right shift: pause/unpause
Right control: advance frame while paused
/ (forward slash): stop TAS execution, or restart the game if not currently executing
, (comma): load savestate, opens a file dialog
. (period): load most recently saved savestate
' (apostrophe): toggle crude hitbox rendering
; (semicolon): toggle debug text
\ (backslash): fast-forward (8x speed, or at least as fast as the game can run)
Debug text (white if running, light gray if not):
> Current line in file / step of execution / frames since start
> Frames on current step / Held keys
> Target FPS / actual FPS / activated instance count / activated enemy count
> Current RNG seed
Modifications
Only the bare minimum of changes to the game have been made to allow the reading of the inputs from a file, along with some minor changes to make creation much easier without affecting gameplay and the final playback.
- Reading inputs from a chosen file, with guaranteed sync
- Saving and loading of savestates
- Pausing and frame-advancing
- Deterministic RNG
- Framerate control (due to the lack of delta-time in Game Maker 8.1, this doesn't affect gameplay)
- Debug text and a hitbox viewer, both toggleable
- Disabled Vsync
It broke!
Sorry. This is a work-in-progress mod of a complex game that I didn't make, in a different version of an engine that's already being pushed to its limits by this game. There's a to-do page over at https://github.com/Kataiser/Iji-TAS-mod/projects/1, and any reproducible bugs specific to the mod should be added to https://github.com/Kataiser/Iji-TAS-mod/issues and/or mentioned on the Discord.
Why not just use Hourglass?
I've already done a TAS of this game using Hourglass, and it's still a totally viable option. However, there were a few frustrations I had with it that I wanted to fix with this mod: you can't make changes to an existing TAS and have them propogate forward in time, you have to replay the entire TAS so far in fast-forward after reopening the game in order to continue, playback is laggy, it crashes occasionally, and it struggles to work with Iji 1.7. The only downside I'm aware of is that this is probably not allowed on tasvideos.org, if that's a motivation for you.
Contributing
If you made changes to or added a .itf file, here are the steps for sharing them.
- Fork this repository (need a GitHub account of course)
- Make changes in your fork, use a descriptive commit title
- Create a pull request in this repo
Or just ask me in the Discord and I'll upload the file myself