Hey everyone it's been a while, but we have a huge patch for you guys today!
The headline feature is Tabletop Simulator now supports translations for all 29 languages supported by Steam. The game has been translated with the help of google translate but we also added support for creating your own translations and sharing them on the Workshop. Using google translate is an exciting jumping off point for a more global user friendly experience, however, recognizing google translate’s limitations we are also excited to see what native speakers in the community can come up with for the most authentic multilingual game play experience. Furthermore, the translation support is extended to all of your great mods out there. Now players can participate in the same game with different localized text or assets based on their selected language.
We've also upgraded the game's engine (everything should run smoother), added layout zones (automatically lay out cards easily), and added object tags (easily filter system interactions).
We have a bunch of other great new features, upgrades, and fixes you can read about all below.
Finally we are launching a new method for collecting user feedback and bug reports found at https://tabletopsimulator.nolt.io/. This will allow us to better connect with the community for a more fluid and streamlined feedback loop, including increased visibility into our process. The new system allows you to easily make suggestions and upvote and downvote other community member ideas in a similar style to reddit. Additionally, the community will now be able to see our progress on implementing suggestions, fixes, and new features through the roadmap tool.
New mechanics which allows objects to selectively interact with game systems. If a system (e.g. a hidden zone, a hand zone, etc.) has a tag set, then only objects which share a tag with it will interact with it.
Taggable systems:
Set what tags a object or system has by right-clicking it and selecting Tags
from the menu. You may access all tags present at the table via the Modding->Tags
window.
Added Snap-Point Creation Tags window: new snap points will automatically gain whatever tags you set here.
New Zone tool (in the zone tool popout) which allows you to automatically lay out objects (primarily cards) across the table. Deploy like any other zone, then left-click and hit the cog to change its settings. Especially useful for card games in which you lay melds on the table (like Gin) or which have trick-taking (Whist, Bridge, etc.), but can also be used to simply arrange a bunch of objects in a grid without locking them to it.
Features include:
Layout Zones can triggered by using the Layout Zone tool and left-clicking the zone then hitting the big Layout button, or by right-clicking a object inside a zone it interacts with and selecting the Layout
option in its context menu.
Mouse pointer shows icon indicating when you are holding an object inside a layout zone: will also show the zone's name if it has one.
End Turn
button now shows current player instead.Misc Settings
, detailed below.Misc Settings
.Spread
action in the right-click menu; spreads the cards out across the table. Distance between cards is set in Misc Settings
.tryRandomize(player_color)
and tryObjectRandomize(object, player_color)
for when someone tries to shuffle/roll/randomize an object. Returning false
will prevent randomization.onBlindfold(player, blindfolded)
event, triggered when a player puts on or takes off blindfold.object.alt_view_angle
property: when non-zero the Alt
view will use the specified Euler angle to look at the object.object.getPositionSmooth()
and object.getRotationSmooth()
return the current smooth move target and null if not moving.object.isDestroyed()
returns true if an object is (or will be) destroyed.object.tag
property: use object.type
instead.filter...
commands: now use prefix try...
. e.g. tryObjectEnter
.object.memo
, a string you can store info in on an object.Added Lua Global classes Tables and Backgrounds. Tables:
string getTable()
bool setTable(string name)
string getCustomURL()
bool setCustomURL(string url)
Object getTableObject()
Backgrounds:string getBackground()
bool setBackground(string name)
string getCustomURL()
bool setCustomURL(string url)
Added Info global static class exposing Info menu.
string name
string type
string complexity
int[] playing_time
int[] number_of_players
List<string> tags
Added calls for working with Tags:
object.getTags() -> Table
gets the Tags attached to an object.object.setTags(Table tags)
sets the Tags attached to an object.object.addTag(string label)
adds the Tag to the object.object.removeTag(string label)
removes the Tag from the object.object.hasTag(string label) -> bool
checks if the object has the Tag.object.hasAnyTag() -> bool
checks if the object has any Tags.object.hasMatchingTag(other) -> bool
checks if the other object has a matching Tag with this object.scripting_zone.getObjects()
will utilize Tags attached to the zone, unless you override with scripting_zone.getObjects(true)
deck.spread(distance)
uses the spread action on the deck.getObjectsWithTag(string tag)
getObjectsWithAnyTags({tag, tag...})
getObjectsWithAllTags({tag, tag...})
Fixes:
object.getSnapPoints()
throwing when having no snap points.object.clone()
sound parameter not working.Grid.snapping
not working.showHotkeyConfig
working over network. Added color
parameter; dialog will be shown to that player.onObjectRandomize
and onRandomize
not returning correct player colour.Physics.cast
not returning list in correct order.Group
action ignoring tryObjectEnter
and tryObjectEnterContainer
.Misc Settings
above.language
, language_...
commands for selecting current language.translation_export
, translation_import
, translation_for...
commands for working on translations.translate
command to translate an English term into the current language (if TTS knows it).hotseat_name_...
, hotseat_start_turn
, and hotseat_end_turn
commands.pointer_position
command.lift_height
and rotation_degrees
commands.action_spread
and action_layout
commands.ui_clear
command to clear UI generated by other commands (e.g. ui_button
)Measure Movement
working on clients.Pan
key not working while holding a object (as long as it is not on the same binding as Flip
)Camera Hold Rotate
key not working while holding a object (as long as it is not on the same binding as Tap
)