Skip to content

Releases: Eddio0141/UniTAS

v0.7.2

Choose a tag to compare

@Eddio0141 Eddio0141 released this 05 Jul 00:31
Immutable release. Only release title and notes can be modified.
19ede6e

This fixes TAS playback from not working in certain games, mainly ULTRAKILL.

Fixed

Games

  • Fixed ULTRAKILL from breaking inputs after soft restart

v0.7.1

Choose a tag to compare

@Eddio0141 Eddio0141 released this 13 Jun 19:09
Immutable release. Only release title and notes can be modified.

Adds fixes for thunderstore

Fixed

UniTAS

  • Packaging for thunderstore is not possible, previously UniTAS was not finding the expected directory structure

v0.7

Choose a tag to compare

@Eddio0141 Eddio0141 released this 11 Jun 22:41
Immutable release. Only release title and notes can be modified.
2dfe380

Mostly contains stability changes.

This contains breaking changes that makes TASes made in v0.6 incompatible with this version, but these breaking fixes were necessary for accurate game execution, which also fixes many games from not behaving correctly.

To help minimise breaking changes like this, automated testing of a custom made unity game was added.

Huge thanks to people showing interest in the project, and special thanks for the ULTRAKILL speedrun community for extensively testing the tool. Life has been very busy for me as of late, and there were periods of times where I didn't have the time to work on UniTAS, but in the end I do keep coming back to the project fueled with support from others 🐱

This release of UniTAS and future releases will be published on thunderstore. The link will be added to the readme page shortly.

Fixed

Games

  • Fixed Baldi's basics itch.io throwing exceptions during TAS playback
  • Fixed Resonance Of The Ocean not saving some information at the start
  • Fixed Cat Quest 2 from soft locking in the first cave
  • Fixed Untitled Goose Game breaking when restarting level
  • Fixed latest ULTRAKILL crashing, and input desyncs depending on system performance.

UniTAS

  • Fixed non-existant axis name checks causing UniTAS to throw exceptions
  • Fixed first load caching creating broken caches, which completely breaks things
  • Fixed new input system event time desyncs
  • Fixed soft restart breaking new input system

Compatibility

  • BREAKING: Async scene load is not supposed to be instant, there is a frame of delay before loading
  • BREAKING: Async operations in unity now follows a queue of operations, so if a scene load operation happens, rest of the operations stop until scene loads
  • BREAKING: Setting async operation activation to true won't instantly load, which was the case before which is inaccurate
  • BREAKING: Fixed Time class related inconsistencies
  • BREAKING Mouse cursor lock will allow for mouse positions above screen resolution
  • AsyncOperation's InvokeCompletionEvent is only disabled for tracked AsyncOperation instances
  • Implemented LoadScene forcing pending LoadSceneAsync to be all loaded
  • Fixed accidentally obliterating return value of LoadScene instances
  • Fixed inaccurate scene load counter

Added

Compatibility

  • Unity animations can be paused now
  • Coroutines are pausable, including WaitForSeconds

v0.6.0

Choose a tag to compare

@Eddio0141 Eddio0141 released this 18 Nov 06:35

Brings in stability for many games that didn't work before
Also, the new input system support also brings in bunch of games that wasn't controllable before!!!
Some changes to how the UI works and stuff, it should be more friendly

Added

UniTAS

  • Added object tracker and object picker

TAS movie

  • maybe breaking: MOVIE_CONFIG now has a window table entry. width and height sets the game window's initial width and height. 1920 x 1080 by default unless specified. You can also set the resolution refresh rate (though it wouldn't matter unless the game is using this information) by setting refresh_rate to a number or a table containing numerator (or n) and denominator (or d)
    • Additional screen resolutions for the game to pick up on can be added to the list MOVIE_CONFIG.window.resolutions (this could be used for changing screen resolutions later on in the menu or something), where each entry of resolutions is a table containing width, height, and refresh_rate. Make sure they are valid or it is ignored otherwise
  • movie.no_refresh function for disabling and enabling game rendering for faster playback

Compatibility

  • Added new input system support, with keyboard and mouse working
  • Added basic support for rewired input system support

Changed

UniTAS

  • Cooler GUI theme
  • Most things can be configured within UniTAS GUI

TAS Movie

  • BREAKING: Changed controller functions, they don't use axis names for controlling anymore for accuracy

Performance

  • Loading should be faster if you've opened the game once with UniTAS
  • Slight performance increase in patching the first time

Fixed

Games

  • ULTRAKILL can be controlled now
  • Fixed itch.io Jaded Combat crashing on file selection
  • Fixed It Steals not being controllable properly with key, mouse, and controller
  • Fixed Lethal Company not loading the ship
  • Fixed Lethal Company breaking on soft restart
  • Fixed HuniePop soft locking after dialogs due to time being frozen
  • Fixed Rain World not booting and being stuck at a black screen
  • Fixed Cuphead not loading
  • Fixed Baldi's Basics itch.io release from not working

General

  • TAS encoding shouldn't show a command prompt anymore, probably
  • Fixed music overlaying on each other every restart
  • Fixed UniTAS not limiting realtime FPS making things go super fast

Compatibility

  • Fixed UniTAS not loading at all for games
  • Fixed accidentally skipping over static constructors
  • Fixed accidentally skipping over removing some readonly fields
  • Fixed crash when trying to remove readonly fields
  • Fixed sometimes UniTAS not receiving the first update, which might cause some movie desync by 1 frame
  • Fixed soft restart not properly taking in account for threads
  • Fixed soft restart not resetting cursor visibility and lock state
  • Fixed old input system's axis not being controlled by mapped inputs
  • Fixed async scene load event callback to be at proper timings
  • Fixed AsyncOperation instance not returning proper values
  • Fixed invoking RuntimeInitializeOnLoadMethod in the wrong order
  • Fixed games using ISerializationCallbackReceiver not receiving OnAfterDeserialize callback on soft restart
  • Fixed old games with only Time.captureFramerate appearing to have frozen time
  • Fixed most things related to asset bundles
  • Fixed old unity game times being frozen (unity 5 games and before most likely was affected)
  • Fixed static constructor throwing causing UniTAS to incorrectly track static constructors
  • Fixed unity not being reset, related to static extern properties
  • Fixed ScriptableObject not being reset to their initial state

Pull requests

Full Changelog: v0.5.1...v0.6.0

UniTAS 0.5.1

Choose a tag to compare

@Eddio0141 Eddio0141 released this 13 Sep 22:41

Few big bug fixes including ones I accidentally created the moment I released 0.5.0
Most of the change comes from implementation of frame advancing but this update doesn't include it and I'll be working on it (hopefully) for 0.6.0

Changes

Fixed

Games

  • Fixed Cat Quest not being TASable due to a bug in UniTAS
  • Fixed DDLC launch on crash because out of range system time
  • Fixed Needy Streamer crashing on start up

TAS playback

  • Fixed timing being offset wrong by whatever value is fixed update is at

Compatibility

  • Fixed some games using switch statement skips over UniTAS tracking the end of static constructors
  • Fixed not using the right ILCode for returning a default value from a method
  • Fixed duplicate AssetBundle loading causing an exception
  • Fixed coroutines causing exception on restart
  • Fixed some timing issues

Changed

UniTAS

  • Stopped setting unity running in background to false (this was causing issues with some games when you tab out)
  • UniTAS system time by default is now the current time (until you run a movie)

UniTAS 0.5.0

Choose a tag to compare

@Eddio0141 Eddio0141 released this 03 Jul 23:41

For once, a release that doesn't have breaking TAS scripting changes. This release makes GUIs more pretty, and fixes more games that were broken before, but there's still a long way to go! 🔥

Changes

Added

Config

  • Added live config reloading
  • Added config for binding keys to actions

Overlays

  • Added built in overlays
  • Added frame counter overlay
  • Added mouse overlay

TAS movie

  • Added unity module for interacting with unity engine
  • Added unity.find_objects_by_type() to find all objects of a type
  • Added wrapped type for UnityEngine.Transform to read transform data for objects
  • Added gui module for interacting with UniTAS GUI
  • Added gui.show_overlays to show or hide overlays

UniTAS

  • Added built in overlay GUIs for TAS information

Fixed

UniTAS

  • Fixed movie playback fps unlock not working
  • Fixed movie running while game is paused while tabbed out

Games

  • Fixed deepest sword crashing randomly when running a TAS

Compatibility

  • Fixed readonly fields pointing to old references after soft restart
  • Stop threads created by game from running after soft restart
  • Prevent finalizers from running during soft restart
  • Fixed some static constructors not being tracked properly
  • Added calls to RuntimeInitializeOnLoadMethod attribute methods

Changes

UniTAS

  • Now you can run a different TAS while one is already running

Performance

  • Improved performance of changing fps

GUI

  • Updated GUI to new style
  • Added terminal
  • Added ability to move and resize windows
  • Added movie file browser

Security

TAS Movie

  • Sandboxed lua environment for TAS movie playback

UniTAS 0.4.0

Choose a tag to compare

@Eddio0141 Eddio0141 released this 02 Jun 04:29

⚠️ This release would probably break TASes while making the playback accurate and actually fixed (I don't want to make breaking changes as much as I can even if major version is 0, but I really had to, sorry!!!)

This release mainly fixes a bunch of compatibility problems and stuff, so some games might start working. I wanted to fix the big problems with games for them to be TASable but I wanted to just get this breaking change out of the way in the release first.

Changes

Added

TAS movie

  • Added config MOVIE_CONFIG.update_type and API env.update_type to choose what update frame advancing should use

New input system support

  • Added very basic new input system support
  • Added support for keyboard and mouse devices

Old input system support

  • Added support for ResetInputAxes
  • Added support for mouseScrollDelta

Testing

  • Added runtime unit tests to test if UniTAS features works

Fixed

TAS movie

  • Fixed accidentally skipping a frame when an unity FixedUpdate happens

Compatibility

  • Fixed AssetBundle async operations failing with null reference exception
  • Fixed game setting AsyncOperation priority throwing an exception
  • Fixed unity's Camera events not being cleared on soft restart throwing a null reference exception
  • Fixed unity's SceneManager events not being cleared on soft restart throwing a null reference exception
  • Fixed unity's NavMesh events not being cleared on soft restart throwing a null reference exception
  • Fixed opened files not being closed on soft restart, causing IO exceptions
  • Fixed static constructor dependency called in the wrong order
  • Fixed static fields not being reset all at once
  • Fixed not being able to call some async methods in AssetBundle

UniTAS internal

  • Fixed UniTAS not patching AsyncOperation classes if SceneManagerAPIInternal isn't found
  • Fixed UniTAS's wrapped classes not handling the case of the original wrapped type being null
  • Fixed not resolving monobehaviour types more than 1 parent
  • Fixed use of unload scene being called wrong causing null reference exception
  • Fixed not searching async load method in scene manager
  • Fixed AsyncOperation's OnComplete being not called at the right timing

UniTAS 0.3.0

Choose a tag to compare

@Eddio0141 Eddio0141 released this 10 Apr 14:27

⚠️ This release will most likely break existing TASes by fixing how time works and skipping the extra Update invoke at the start of the TAS, but you could probably fix it by removing 1 frame at the start of the movie

Changes

Added

TAS movie

  • Added movie module
  • Added movie.playback_speed() to set playback speed
  • Added FPS unlocking for TAS playback
  • Added video rendering with movie.start_capture() and movie.stop_capture()

Changed

TAS movie

  • Errors at runtime and set up now don't dump the exception stack trace
  • Renamed and moved method adv as movie.frame_advance
  • Allow the user to set the RNG seed at start up with MOVIE_CONFIG.seed
  • Set TAS playback speed to be 0 unless user changes it

UniTAS set up tool

Fixed

TAS movie

  • Fixed movie not playing again if a runtime error occurs
  • Fixed movie not playing again if error occurs when parsed
  • Fixed movie respecting the FPS limit if game has a fixed FPS
  • Fixed accidentally invoking engine methods while set up

TAS playback

  • Fixed time not getting the same value every TAS playback
  • Fixed Time.timeScale not resetting on soft restart

Compatibility

  • Fixed not being able to patch class deriving MonoBehaviour that has generic parameters for pausing and accurately
    updating TAS input
  • Fixed unity time being wrong
  • Prevent an extra update from being called on the first frame of soft restart

Removed

TAS movie

  • Removed MOVIE_CONFIG.ft since MOVIE_CONFIG.frametime already exists

UniTAS 0.2.0 - Set up tool 1.1.3

Choose a tag to compare

@Eddio0141 Eddio0141 released this 02 Mar 01:22

This release is important as I've swapped the TAS movie scripts to use lua, which reflects the wiki notes

⚠️ Any scripts that follows any previous formats will fail to work
⚠️ The wiki shows that frame advancing is frame_advance(), but this version defines it as adv(), please be aware!

Changes

TAS movie

  • Now uses lua 5.2, check the new wiki for tutorials and documentation

UniTAS GUI

  • Temporarily removed unused buttons until they are implemented

UniTAS set up tool

  • Updated dependencies

UniTAS 0.1.0 - Set up tool 1.1.2

Choose a tag to compare

@Eddio0141 Eddio0141 released this 24 Feb 06:10

Change log

Fixed

UniTAS set up tool

  • Fixed installing UniTAS from GitHub release