TASmod Alpha 9
Pre-releaseLast release was 1 year ago... How the time flies...
Important
This release is still for Forge 1.12.2. Future Beta releases will be for Legacy Fabric
New things
Deterministic RNG
The main feature of this release is Deterministic RNG.
This was done using the library KillTheRNG, which patches every call to an RNG to be deterministic. This meant around 400 Mixin-Classes for 2100 randomness calls. The mod for this has to be downloaded seperately from TASmod, as KillTheRNG still needs bugfixing.
Seed behaviour
To ensure deterministic behaviour, one "Global RNG" exists. The Global RNG changes to its next seed at the start of every tick. Additionally, this global seed sets the seed of all other RNGs at the start of the tick.
There are 2 Global RNGs, one on the client and one on the server. The Global Server is the one responsible while sending its seed to the Global Client every tick.
Start seed
When starting a recording, the current seed is recorded. When playing back the start seed gets applied to both client and server.
Setting the seed
The seed can be entered manually in the Main Menu. Simply typing numbers will set the seed. The seed will not advance when you are not in a Minecraft world.
InfoHUD
The current seed of the Global Client can be viewed in when enabeling KTRNG Seed in the F6 menu.
Seed Monitoring
If the seed is not the same when playing back as when you recorded the TAS, then the InfoHUD will display a warning
Command /killtherng
KillTheRNG has it's own command that gives some information about the RNG values in the game.
Command /playuntil
/playuntil runs the next playback until the specified ticks, then switches to a recording. This is useful when savestates are not available.
Changes
Networking
This release introduces a new packet server written by @MCPfannkuchenYT. This makes packets more reliable when sending between client and server.
Ticksync
Ticksync also received a massive overhaul. This makes it work better in both single and multiplayer and should get rid of random desyncs when the server is lagging.
Pause the server when a player is connecting
This ensures that the server doesn't tick while the client is connecting/joining the server.
TASfile
Smaller TASfile improvements
Changed fileending to .mctas
TASmod will now attempt to read files ending with .mctas rather than .tas. To update your existing files, simply rename the file ending.
Merged .mon and .mctas files
In the past, monitoring was stored in files ending with .mon.
Now, monitoring will appear as comments in TASfiles.
If you have existing .mon files, simply load the TASfile into TASmod. The file will be converted to the new format, and the old .mon file will be deleted.
Added 0th tick to the file
The first tick in the playback file was never played back, which caused me some issues when trying to sync things up. This is now fixed.
Fixes
I probably can't find every fix that was done in the past year...
- Fixed playing time failing to save
- Fixed "player moved to quickly" during a savestate
- Removed "catchup ticks" when the server is lagging
Written by @ScribbleTAS