Releases: MinecraftTAS/TASmod
TASmod Alpha 9
Last 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
TASmod Alpha 8.1
Does this count as a hotfix?
New things (@PancakeTAS)
Control bytes in playback
You can now add commands to the playback file that execute different functions during playback. Currently these will not save so add them at the end of your TAS.
The commands are:
$interpolation on/off
: Turns on/off interpolation for playback$hud on/off
: Turns on/off hud during playback$info off/String
: Adds a box to the top left with a custom string
Interpolation for playback
Turn on interpolation via control bytes to enable a smooth playback.
Changes (@ScribbleTAS)
A bit of terminology:
- Savestates are the world files on the server side, loading savestates is changing the world.
- Client Savestates are copies of the inputs and stored on the client side. Those get loaded together with the server savestates
Loading savestates won't automatically load the client savestates anymore
In the past, parts of recordings were lost when accidentally loading a savestate.
Loading savestates, but without an associated Client Savestate won't clear the recording anymore
Imagine you made savestate 1 before recording anything, start the recording, stop it and load savestate 1. This cleared your recording since no client savestate was associated with the server savestate. This was a bit annoying and totally unnecessary...
/fullplay
won't change the savestate index anymore
This is useful when making a TAS and having e.g. 7 Savestates, but then playing the TAS back with /fullplay
. The result was that the savestate index was set from 7 back to 0. Continuing with the TAS afterwards and trying to make savestate 8, will accidentally overwrite savestate 1.
Fixes (@ScribbleTAS)
TASmod-Alpha8
New things
Log4J
With this release you will have to update to the newest forge version, since it fixed the log4j exploit on client and server. This is because with TASmod you are still vulnerable to that exploit in singleplayer, since another person can send you a TAS that writes stuff in your chat, which may trigger the exploit. So please update your Minecraftforge!
Fullrecord
Start a recording or a playback from the main menu with /fullrecord
or /fullplay
. This will save and quit to the main menu and record to the buffer or play back the current buffer.
The command /restartandplay <filename>
will quit minecraft, but when launching, it will load the specified file and will start playing that file. This is useful for sending your TASes to other players.
Credits in chat
When doing /fullplay
credits will display in the chat upon joining a world. To change these credits, save the file via /saveTAS <filename>
, open the saved file with a text editor, and change the parameters at the top of the document. Once that is done, save the file and load the file via /loadTAS <filename>
to apply these changes
Input Container View (Preview)
Pressing numpad zero ingame should launch a second window that displays all inputs in the current buffer. It will also display the current index when playing back. This feature is still experimental and more used to debug some things, so expect some bugs.
Pause recording/playback
You can now pause and resume the recording or playback. This is pretty useless for the average user but has a big use for development purposes. So you may sometimes see "Paused" in the F6 menu under State
Fixes
- Removed unnecessesary libraries
- Fixed recording not running in the main menu
- Fixed stop key (F10) not working in the main menu
- Fixed desync monitor not recording the main menu
- Fixed pointers scaling not working in multiple gui screens
- Removed Access Transformers (@MCPfannkuchenYT)
- Fixed a game freeze when loading the world in tickrate 0
TASmod-Alpha7
New things
Introducing a new savestating system that is hopefully easier to get used to... The system only changes how files are created and not how the savestating itself function, which should allow for easier navigation.
The old savestates (TASTools-Savestates)
This old system started all the way back in TASTools. If you press J
, a savestate will be created in .minecraft/saves/savestates . If you savestate again, the first one won't be overwritten, instead it will create a new folder.
Worldname-Savestate1/
Worldname-Savestate2/
Worldname-Savestate3/
However if you press K
it will always load the latest savestate, in this case Savestate 3. To load Savestate 2 you would have to delete Savestate 3. Another disadvantage was, that if you had a gap in the numbering, the rest after the gap would be ignored, so if you had 300 savestates and wanted to clear out the first 100, you couldn't do that.
The new savestates
The new system works exactly the same as the old system. J
creates a savestate, K
loads the savestate. But now, there is an internal number that represents the "latest" savestate instead of the files in the savestates folder. This allows you to delete previous savestates, while the number, which I call the "current index" btw, is still stored in memory. With the new /savestate
command, you can load or save savestates in different indexes... For instance in the example above, if you want to load Savestate 2, you can just type in /savestate load 2
. The system now thinks that savestate 2 is the latest savestate and after creating a new savestate, it will overwrite savestate 3.
You can find more help ingame by typing /savestate
or /savestate help
Bugfixes
- Interpolation is in the wrong direction after loading a savestate (@MCPfannkuchenYT )
- Fixed an issue where unbinding TASmod keybinds breaks mouse buttons
- You can now bind keybindings to mousebuttons
- Fixed an issue where sometimes, when pressing a TASmod keybind, it will spam the keybind 10 times in a row.
- Fixed #118
- Reintroduced #119
- Fixed #121
TASmod-Alpha6
Bugfix and QOL update:
- Removed KillTheRNG from this mod and added support for this KillTheRNG mod
- Removed gradle stuff (@MCPfannkuchenYT)
- Updated Info HUD (@MCPfannkuchenYT)
- Fixed vanilla mouse tutorial not advancing correctly
- Fixed transparency issues
- Added a keybind to open a seperate window that displays the inputs that get sent to minecraft when a TAS is loaded
- Fixed keybinds being pressed multiple times when you are on high framerates
- Added custom shields
- Added more labels to info hud
- Removed .mon and other files when tab completing in
/loadTAS
- Fixed Encoding issues with playback files
- Fixed Arrows being typed when pressing arrow keys in signs
- When loading savestates the gamemode will be correctly applied
- Fixed a bunch of multiplayer issues
- Rearranged and cleaned up a lot of things behind the scenes that shouldn't give me headaches in the fututre
TASmod-Alpha5
- Rewrote the input, recording and playback systems to allow for savestates and more!
- Added savestates
- Added new commands
- Disabled hotkeys when chat is open and in text fields in general
- Added savestates on the client
- Continued on multiplayer support
- Started working on KillTheRNG (@MCPfannkuchenYT)
- Added a better gui to display information (@MCPfannkuchenYT
- Added a system that checks if the playback desyncs
- Unpatched DragonSkip (@MCPfannkuchenYT)
- Added interpolation to the camera (@MCPfannkuchenYT)
- Removing the tutorial for now
- A LOT of bugfixes
Tutorial
In the bottom left of your screen are several things. Probably the number 0 and the inputs you are pressing.
The white buttons are what the game currently recognises, the green buttons are what you press on the keyboard currently.
On lower tickrates you can see that the green one is updated faster than the white inputs
Commands
-/record
: To start a recording. This records the inputs to RAM. The number should now increase because it detects the inputs.
-/clearinputs
: Clears the currently stored inputs. Do this before starting a new recording, since /record only adds inputs and does not clear them.
-/play
: Plays back the stored inputs. Before that, it teleports you to the location where you started recording.
WARNING Unfortunately the vanilla teleporting takes some time, so the player won't be able to move in the first few ticks, which oftentimes desyncs the TAS immediately. So record like 7 ticks at the start where you not move to account for that. Will be fixed sometime...
/saveTAS <filename>
: Stores the current inputs under the given filename in .minecraft/saves/tasfiles
.
/loadTAS <filename>
: Replaces the current inputs with the inputs from the file with the given filename.
/folder <savestate|tasfiles>
Opens the savestate or tasfile folder on your disk
Hotkeys
F8
Toggles between tickrate 0 and other tickrates. Pauses the game on both client and server side.
F9
You can advance one tick at a time while you are in tickrate 0.
J
Makes a savestate under .minecraft/saves/savestates
. If you are recording, a savestate of the recording will be made under .minecraft/saves/tasfiles/savestates
K
Loads the savestate. It will also work during recording or playback.
F6
Customize the HUD. Leftclick and drag to change the position, Rightclick to add a background
F10
Aborts a playback
TASmod-Alpha4
-
Pointer scaling is fitted to the gui scaling, to prevent desyncing on different monitors and aspect ratios
-
Stopping playback and recording when the window isn't active.
-
Deactivating links in chat when playback starts
(Options>Chat Settings>WebLinks) -
Added tickrate 0 in main menu
-
Added Keybindings
-
Added Aim Assist for tickrate 0 (@MCPfannkuchenYT)
-
Fixed an Out of memory error when recording (@MCPfannkuchenYT)
-
Added chat messages when recording (@MCPfannkuchenYT), error messages in the file will be displayed as chat messages (Scribble)
-
Added a keybind to stop recording/playback (F10)
-
Added basic savestates, not fully supported yet
-
Added keystrokes
-
Fixed scrolling with the mouse when dragging a bar
TASmod-Alpha3
- Removed ticksync command and added warnings when trying to play multiplayer
TASmod-Alpha2
Initial release.
-Added recording
-Added playback
-Added tickrate 0
-Added tickadvance
-Added Ingame Tutorial
-Added InfoGui
-Having a file named "startup" will run the file when the world is done loading