Original Post
Toribash 5.60 beta - Steam (Windows, macOS)
This is the first public alpha version of the next major Toribash 5.60 update
This alpha is primarily targeted at scripters and replaymakers to give a heads-up on what's to come as it introduces some breaking changes to some Toribash Lua functionality and the new replay data protocol.
To switch to this build, choose "alpha" in the Betas tab in Toribash properties from your Steam Library.

What's new in Toribash 5.60:
Lua replay manipulation updates
All player or environment changes (position, rotation, velocity, etc) triggered with Lua are now properly stored in replay files. See the list of all new functions below.

Documentation with EmmyLua annotations
We know Toribash has been notorious for its lack of documentation when it comes to game-specific Lua functionality. With 5.60 we're adding documentation for all existing Toribash functions as well as for built-in classes like UIElement or PlayerInfo.
EmmyLua is available as an extension for VSCode or IntelliJ IDEA.

Current alpha version does not have the final documentation yet and will receive further updates closer to stable release.

Texture atlas support
You can now load a single master texture and render its specific parts. This will be especially useful if you need to draw a lot of textures which will normally get capped by max texture limit.

All Lua hooks are now executed in a predetermined order
In past, when you attach multiple callbacks to the same Lua event you couldn't predict which order they'll be executed in. This has been revised in 5.60 and now hooks will always execute in the same order as they've been added.

Raycasting functionality in Lua
You can now create raycastable bodies and shoot rays with Lua. That is cool.
Lua bodies will exist in their own space and will not collide with any other objects.

Other updates
  • Screenshots are now saved as PNG files instead of BMP
  • Vastly improved obj loading performance
  • utf8 library support for Lua
  • Blood particles now collide with static environment
  • Blood particles no longer get generated from player collisions with static environment by default (requires hardness > 0)
  • New UITween class (toriui/uitween.lua) that can be used for time-accurate animations

New build (230214) is now live

Changes and fixes:
  • Autostart scripts will now be run after built-in classes initialization (UIElement, TBMenu, PlayerInfo, etc)
  • Fixed bug with replay saving window always throwing "invalid name" error
  • Fixed bug with main chat tab title not being displayed by default
  • UIMODE_LIGHT global Lua variable is now UIElement.lightUIMode

I've received a bunch of reports which all involved the usage of third party scripts (such as theme picker by AssassinPro) - please keep in mind that any scripts will potentially break your game as things get updated, depending on whether they relied on deprecated functionality.
Theme picker script in particular will currently break file IO as its initializer code will run infinitely, opening a new instance of a config file every time and never closing it as it crashes before doing so.
I am going to make a post right now in case I forget later, and keep updating it with stuff I find
1. When the queue list gets smaller and the scroll bar disappears, it does not scroll up, so you are not able to see the first player.
2. Text highlight looks odd on custom belt titles with color codes
Last edited by AssassinPro; Feb 26, 2023 at 11:24 AM.
New build (230307) is live


  • New room list menu
  • Netcode support for IPv6 networks
  • Fixed Lua raycasting for spheres and capsules
  • Fixed Ukeko name display
  • Any changes done to players and/or environment with Lua will no longer get carried over to new game
  • Fixed bug with some player changes done with Lua not getting logged properly
  • Fixed bug with DQ ring always displaying at 100% opacity when blood is enabled

  • Added Lua functions:
    • refresh_roomlist()
    • get_roomlist_num_rooms()
    • get_roomlist_room_info()
    • set_raycast_body_pos()
    • set_raycast_body_sides()
    • set_raycast_body_rot()
    • set_raycast_body_rot_m()
    • get_obj_color()
    • get_obj_shape()
Originally Posted by AssassinPro View Post
Could you also add a get_body_shape() function?

get_body_info(player_id, body_id).shape should exist now.
Toribash 5.60b2 (build 230403) is now available on alpha branch

Updates in this build:
  • Various fixes for world manipulation from Lua to make sure changes do not carry over to new game
  • Full utf-8 support for replay file and folder names
  • Added new camera options to Game tab in Settings: focus mode and ability to invert axes
  • Added lower quality fluid blood option
  • Performance improvements for flame rendering
  • Performance improvements for game hud rendering
  • Bloodstains option is now remembered between game sessions
  • Added free orbital camera mode as a valid option for set_camera_mode() Lua function
  • Improvements to UI sliders: clicking anywhere on the slider area will now automatically also push the toggle so you can keep moving the mouse to change slider position
  • Rooms without Qi restriction now get a slightly translucent white belt icon in room list
  • Replay hud will no longer display replay speed slider if replay hasn't yet been cached / replay speed is disabled
  • Graphics presets have been slightly tweaked to adjust for new options
  • Fixed bug from one of the earlier versions that broke blood reflections
  • Fixed bug with free camera getting stuck when looking up
  • Fixed various bugs in Replays menu windows (modify replay, create new directory etc)
  • Fixed bug with replay speed potentially getting stuck at 0 on rewind_replay() Lua call
  • Fixed bug with set_camera_mode() Lua function not working with free, tori and uke camera modes
  • Fixed bug that was sometimes breaking the in-game report submission result screen
  • Fixed in-game report screen discord link to point to

  • New Lua functions:
    • toggle_game_pause()
    • is_game_paused()
    • get_shader_option()
    • set_shader_option()

My boot times were getting a bit ridiculous, the alpha feels incredible in comparison. The multiplayer UI looks great too. My only gripe is that I don't really like how the featured rooms get eaten when you sort with the column headers.