September 26, 2022, 9:00 pm

Update v13.1 Native File Browser, Cloud Manager & Rewind Time Improvements, Optimizations, and much more!

This patch we wanted to focus on bug fixing, optimizations, and working through the feedback the community has provided for us on our new feedback website:

We have found the feedback website to be instrumental in helping us work on the most important features and the fixes you guys would like to see, and we will continue to use this for our future updates.

Since going live we have implemented 96 suggestions left by the community on nolt!

If you have any feedback of suggestions of your own you can head on over to

Native File Browser

  • Added a native file browser as an alternative to the built-in one. (your OS file browser)
  • The native file browser supports selecting multiple files where applicable.
  • VR still uses the built-in file browser to ensure interaction still works.
  • Added console command file_browser_native and also added it to the misc settings menu.

Cloud Manager Improvements

  • Cloud Management should overall work much better and be less frustrating to use.
  • Cloud manager can now upload multiple files at once using the new native file browser.
  • Fixed cloud manager reseting to the root path every time you upload or delete something.
  • Fixed cloud manager folders not showing up until you open the cloud manager one more time.

Rewind Time Improvements

  • Rewind and fast-forward has been revamped with better controls and more information.
  • Can now rewind time in multiple steps with the new time slider.
  • Can now see the number of time steps in each direction.
  • Rewind states now are only being created if something has changed since the last rewind state.
  • Rewind now works for promoted players instead of just the host.


  • Updated Unity to 2019.4.23 for bug and stability improvements.
  • Added support for multiple auto save files. The default is now 3 and can be changed in the console and misc settings.
  • Broadcast message now appear at the top to better match up with the sliding out animation and fades out smoother.
  • Renamed save file "Expand" to "Search" to better reflect what it does.
  • Added Custom Music to the save file "Search" to make it easier to bring over music from one save to another.
  • Added Music to Workshop asset tags.
  • Added "chat_input_clear_on_dismiss" console property. May be set to OFF to allow clicking away from the chat input field without losing partially written chat messages.
  • Rotation values now store their data as strings instead of objects in the save file.
  • Added EpochTime to save files.
  • Changed misc option / console command "keyboard_single_digit_draw" to "keyboard_single_digit_by_default" - it is now used whenever you type on any component (e.g. when changing component states). If enabled you can still type higher numbers by starting with a 0.
  • Added end_turn command.
  • Grouping individual cards will now give the formed deck any tags which all the cards share.


  • Greatly reduced the lock up when spawning lots of objects, such as when loading a save file.
  • Reduced ram usage by about ~100 MB thanks to shader stripping.
  • Save/Workshop file "Search" is now much faster with less chance of a hard lock up.
  • Optimized network serialization to generate less garbage and cause less stutters.
  • Optimized under the hood cloning code.
  • Save file info now caches significantly faster (Less waiting when opening the Games menu).
  • Reduced network bandwidth for impact sounds.


  • Added previous turn color player as second param for onPlayerTurn event.

  • Added Object.getZones() that returns all the zones that the object is interacting with.

  • Added onObject(Enter/Leave)Zone that works on all zones instead of just scripting zones.

  • Added support for all zones with getObjects().

  • Added UI.loading bool to see if the UI is still loading on this Object.

  • Added lua object.getJson(bool indented) to disable indenting.

  • Added (Global) tryObjectRotate(object, spin, flip, player_color, old_spin, old_flip). spin & flip values [0, 360] degrees.

  • Added (Object) tryRotate(spin, flip, player_color, old_spin, old_flip).

  • Added (Universal) onObjectRotate(object, spin, flip, player_color, old_spin, old_flip).

  • Added (Object) onRotate(spin, flip, player_color, old_spin, old_flip).

  • Added (Universal) onPlayerPing(player, position).

  • Added (LayoutZone) object.LayoutZone.getOptions(), .setOptions({options table}), .layout()

  • Added (LayoutZone) onGroupSort(table group, bool reversed) and onZoneGroupSort(object zone, table group, bool reversed) lua events: return table in desired sorted order, or false to allow default zone behaviour. If present they take precedence over the selected sort in the zone options.

  • Ensured LuaWebRequest's text no longer raises a null reference exception when no downloadHandler is set.

  • Object.getData() now correctly omits null value keys.

  • Fixed being able to addAttachment with the Table bricking the game.

  • Fixed being unable to lua to index hands greater than 1.

  • Fixed issue with on[Enter/Leave]ScriptingZone was firing multiple times in a row.

  • Fixed Book setHighlight()/clearHighlight() bug.

  • Fixed minor bug whereby RPCLookAt was using the yaw after validating the pitch (instead of validating the yaw).

  • Fixed lua Player.getAvailableColors() can have repeats.

  • Fixed issue with tryObjectEnter/tryObjectEnterContainer only firing for the first object dropped in a bag.

  • Fixed tryObjectEnter/tryObjectEnterContainer not being passed the object entering when the container was a stack.

  • Fixed data/JSON round-tripping i.e. spawnObjectData({data=JSON.decode(JSON.encode(container.getData()))}).

  • Fixed Lua core mishandling of nil table inserts i.e. table.insert(tab, 1, nil).

Lua Player Action APIs

An API that fires when a user performs an action. You may return false to prevent the action. As opposed to onObject* events, actions are fired once per user action, rather than once per object affected.

Added (Universal) onPlayerAction(player, action, targets). targets is a list of Objects and action will be one of:

  • Player.Action.Select
  • Player.Action.PickUp
  • Player.Action.RotateIncrementalLeft (Q)
  • Player.Action.RotateIncrementalRight (E)
  • Player.Action.RotateOver (Alt + F, whilst held)
  • Player.Action.FlipIncrementalLeft (Alt + Q, whilst held)
  • Player.Action.FlipIncrementalRight (Alt + E, whilst held)
  • Player.Action.FlipOver (F)
  • Player.Action.Copy (Ctrl + C / Menu Copy / Menu Clone)
  • Player.Action.Cut (Ctrl + X / Menu Cut)
  • Player.Action.Delete (Delete / Backspace / Menu Delete)
  • Player.Action.Group (G)
  • Player.Action.Paste (Ctrl + V / Menu Paste)
  • Player.Action.Randomize (R / Menu Roll)
  • Player.Action.Under (U)

    • Addresses:

Player.Action is not a table, but you may still do:

  • for name, value in pairs(Player.Action) do
  • log(Player.Action)



Lua Value and Value Flags

  • Value now persisted in ObjectState.
  • Summing of Value now takes into consideration stacks.
  • Objects with differing Value or ValueFlags are no longer stackable.
  • Selected objects will now have their value summed according to their tags.
  • value_flags will continue to work like before, but are now deprecated in favor of object tags.


  • Fixed (on|try)(Object)?Rotate not firing for click+release or short throws of dice & coins.
  • Fixed an issue loading custom assetbundles when they were created and destroyed in very quick succession.
  • Fixed a potential memory leak with custom assets.
  • Fixed voice chat not working with MacOS 10.13 as minimum.
  • Fixed global contextual menu bugging out.
  • Fixed issue with objects not hiding as fast inside hidden zones.
  • Fixed issue with lua onLoad() not triggering when the game has been running for a while.
  • Fixed {verifycache} on url checking Last-Modified header being case sensitive.
  • Fixed Fog Of War not working correctly with multiple collider objects.
  • Fixed GM pointer not hiding in fog of war zones.
  • Fixed Fog of War revealer contextual text being offset.
  • Fixed stacking of objects (stacks) in the presence of tags.
  • Fixed a event memory leak on Tablet.
  • Fixed inversed hiders i.e. Hands.hiding = 2 (Reverse) hiding mode.
  • Fixed destroy all text tools not working.
  • Fixed issue with mahjong tiles rotating strangely.
  • Fixed snap visualizer revealing hidden objects in hands.
  • Fixed issue with Custom AssetBundles hierarchy being indeterminate when using a secondary bundle.
  • Fixed bug with chips stacking with wrong names and wrong objects.
  • Fixed typo in LayoutZone HorizontalSpread value, you might need to set this value again for your save file.
  • Fixed zone click interactions.
  • Fixed objects hiding when they shouldn't.
  • Fixed missing "Pass Turn" option in hotseat mode.
  • Fixed 3D pointer being visible beneath 2D pointer when using picture-in-picture.
  • Fixed highlighting not working in VR.
  • Fixed XML UI buttons not working correctly in Hotseat mode.
  • Fixed user defined hotkeys not working while hovering over UI.
  • Fixed tags not syncing on player connect.
  • Fixed player hands failing to load when loading a save file.
  • Fixed issues with translated URLs: not cleaning up correctly and not working for UI assets.
  • Fixed issue with music persisting through loading different mods.
  • Fixed issue with the table and some objects being white when connecting to host.
  • Fixed reverse Hidden Zones overlapping stopping hiding.