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: https://tabletopsimulator.nolt.io/roadmap
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 https://tabletopsimulator.nolt.io/
file_browser_nativeand also added it to the misc settings menu.
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.
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.
valuesummed according to their tags.
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.
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
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.
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 Turnbutton now shows current player instead.
Misc Settings, detailed below.
Spreadaction in the right-click menu; spreads the cards out across the table. Distance between cards is set in
tryObjectRandomize(object, player_color)for when someone tries to shuffle/roll/randomize an object. Returning
falsewill prevent randomization.
onBlindfold(player, blindfolded)event, triggered when a player puts on or takes off blindfold.
object.alt_view_angleproperty: when non-zero the
Altview will use the specified Euler angle to look at the object.
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.
filter...commands: now use prefix
object.memo, a string you can store info in on an object.
Added Lua Global classes Tables and Backgrounds. Tables:
bool setTable(string name)
bool setCustomURL(string url)
bool setBackground(string name)
bool setCustomURL(string url)
Added Info global static class exposing Info menu.
Added calls for working with Tags:
object.getTags() -> Tablegets 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) -> boolchecks if the object has the Tag.
object.hasAnyTag() -> boolchecks if the object has any Tags.
object.hasMatchingTag(other) -> boolchecks 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
deck.spread(distance)uses the spread action on the deck.
object.getSnapPoints()throwing when having no snap points.
object.clone()sound parameter not working.
showHotkeyConfigworking over network. Added
colorparameter; dialog will be shown to that player.
onRandomizenot returning correct player colour.
Physics.castnot returning list in correct order.
language_...commands for selecting current language.
translation_for...commands for working on translations.
translatecommand to translate an English term into the current language (if TTS knows it).
ui_clearcommand to clear UI generated by other commands (e.g.
Measure Movementworking on clients.
Pankey not working while holding a object (as long as it is not on the same binding as
Camera Hold Rotatekey not working while holding a object (as long as it is not on the same binding as
Hey everyone, hope you're all doing good! We got a great patch you guys today with a ton of great features, improvements, and fixes.
Summary: You can now make your games friends or invite only, no longer requiring a password. We have a ton of great new features to the line tool making it awesome for all your wargaming needs. There are a lot of great physics improvements to make everything feel a lot more stable. Workshop tags have been revamped and have many more options making it easier to find your games. Custom Card shapes have been added hex, circle, and square. Spawning overhaul where you can see a ghost preview where the object will appear. And much more all covered below!
Metric. Will measure according to the size of the grid.
3Dmodes. In 2D all measurements are flattened to the horizontal plane. In 3D height is included.
Automode the ruler will take advantage of objects you hover over, snapping to them where appropriate. You can hold down
ctrlto override this behaviour.
Measure Movementtoggle, which if enabled will mean whenever that object is picked up (and you are in
Automode) a measurement will be started.
Automode, if you start measuring while holding an object (by holding
tab), it will measure from the pickup location.
shiftwhile measuring to view the orthogonal axes (
2Dmode) or the flat distance + height (
ctrlat the same time will show the other.
Pure Mode, a simpler view of the table, tunable in the Theme Editor. Supports all built-in tables.
object.measure_movement- access the
Measure Movementobject toggle.
held_position_offsetposition offset from pointer, lift height and object bounds still modify distance from surface.
held_rotation_offsetrototation offset from pointer. This in combination with
held_spin_index0-23 value, 15 degrees Y axis. Upside down is 12, right side up is 0. Changes when a player rotates.
held_flip_index0-23 value, 15 degrees Z or X axis depending on the object. Face down is 12, face up is 0. Changes when a player hits flip or alt + rotate.
pick_up_positionThe position the object was picked up at.
pick_up_rotationThe rotation the object was picked up at.
held_reduce_forceWhen the Object collides with something while moving this is automatically enabled and reduces the movement force.
filterObjectEnterContainernot working while game is loading.
action_state_prevcommands, which will trigger that action on the currently selected object.
bind f action_search, and then
fwould open the search window.
editcommand messing up
Hey everyone, hope you are all doing ok in these crazy times! We have another great update for you guys today that adds a brand new tool called Attach which lets you stick objects together. We also have a much needed performance optimization on the server browser due to all the new players joining us! Welcome everyone new hope you all our enjoying the game! We have a ton more below in the full patch notes.
Search inputs are now more powerful (applies to Server Browser and in-game Search dialog).
Example: gloom -fantasy, scythe, -casual will find any servers with "gloom" (but not "fantasy") or "scythe", so long as they do not contain "casual".
Special thanks to modzero for helping us track down a security vulnerability that we hotfixed.
UI Fixed a bunch of bad interactions between 2D XML UI, 3D XML UI, the normal UI, and invisible objects. Everything should now behave as you would expect.
Allows objects to behave similarly to poker chips: when set, the object will display its value when hovered over, and if multiple objects which share a flag are selected the total value will be displayed. object.value - integer value of object. object.value_flags - flags for object values.
Book objects (e.g. PDFs)
book.page_offset - Offset virtual book numbers are from numbers rendered on pages. book.getPage(offsetPageNumbering = false) - Get current page. If offsetPageNumber is true then factor in the page_offset. setPage(page, offsetPageNumbering = false) - Set current page. setHighlight(x1, y1, x2, y2) - Set highlight box on current page. clearHighlight() - Clear highlight.
Browser objects (e.g. Tablet)
browser.url - URL which currently wants to display. browser.pixel_width - The pixel width the browser is virtually rendering to.
Attach Tool To go along with the new Attach tool there is new Object functions available to create these bindings in script.
object.addChild(Object) - The Object supplied as param is destroyed and becomes a dummy Object child. object.removeChild(index) - Use getChildren to find out the index property. object.removeChildren() - Detaches the children of this Object. object.destroyChildren() - Destroys the children objects without detaching them. object.getChildren() - Returns a table in the same format as getObjects() for containers.
Grid Global Class Grid options menu is now available to scripting as Grid.show_lines = true
int type bool show_lines Color color float opacity bool thick_lines float offsetX float offsetY float sizeX float sizeY
object.drag_selectable - Drag Selectable toggle of object. object.getSelectingPlayers() - Returns table of players currently selecting the object. object.addToPlayerSelection(player_color) - Add object to player's selection. object.removeFromPlayerSelection(player_color) - Remove object from player's selection. player.clearSelectedObjects() - Clears a player's current selection.
Fixes: Fixed log not outputing to external API.
cam_load, cam_load_zero, cam_save, cam_save_zero - Load and save camera positions. dev_autoconfirm_browser_url_change - Disables browser page load confirmation. Use with caution! hand_component_hotkey_draw - Controls whether objects which can go in hands will respond to the draw 1 hotkey. load & save - Load and save games. spectator_restrict_zoom - Restrict view of spectator zoom if object should be hidden to spectators. spectator_show_zoom - Display alt-zoom in spectator window. spectator_zoom_follows_pointer - Alt-zoom aopears at pointer position in spectator window. spectator_zoom_position - Position on spectator window alt-zoom appears if above is turned off. ui_context_menus_collapsed_height - Height of collapsed context menus. ui_games_window - Visibiliy of Games window. ui_server_browser_search - search text in Server Browser. ui_server_browser_window - Visibility of Server Browser window. zoom_position - Position on screen to display alt-zoom if above is disabled. zoom_follows_pointer - Alt-zoom follows mouse pointer. vr_tilt_mode, vr_tilt_angle - VR Tilt Mode toggle, and angle setting.
We've got yet another great update for you today featuring a Custom Theme Editor (dark mode included), Global Chat Filter, Picture-in-Picture and many scripting improvements!
Alongside the new Dark theme, you may now edit the colours of the user interface however you wish using the Theme Editor. Find it in the Configuration->Interface window.
The Global Chat now has a Profanity filter that the user can enable to filter out profanity, spam and misbehaviour. Can be enabled/disabled in chat settings, or with /filter & /nofilter
New API events:
filterObjectEnterContainer(container, object) - Global version of object.filterObjectEnter onPlayerChangeTeam(player, team) - Called when a player changes team. onObjectHover(player, object) & object.onHover(player) - Called when a player moves their pointer over an object. onObjectNumberTyped(object, number) & object.onNumberTyped(number) - Called when a player types a number on an object. Uses new property object.max_typed_number onObjectStateChange(object, old_guid) & object.onStateChange(old_guid) - Called when an object changes state, after it is in its new state. onObjectCollisionEnter(object, collision_info), onObjectCollisionStay(object, collision_info), onObjectCollisionExit(object, collision_info) - Called when an object collides with another. Objects must be registered with the collision handler before they will trigger these events.
New API commands:
player.setUITheme(theme_script) - Sets the player's UI theme. object.addContextMenuItem(label, function, keep_open = false) - Adds a right-click context menu to the object. object.clearContextMenu() - Clears all items added by above. addContextMenuItem(label, function, keep_open = false, require_table = false) - Same as above, but global (when user right-clicks empty space, or the table). clearContextMenu() - Clears all items added by above. addHotkey(label, method_name, trigger_on_key_up = false) - Add a bindable control. User may assign a key to it in Options->Game Keys. showHotkeyConfig() - Shows the config window described above. clearHotkeys() - Remove all controls created by above. 'container.remainder' - After using container.takeObject, if there is only one object left in the container (which means the container will be destoyed in the next frame) then this will be set to that last remaining object. object.getGMNotes() & object.setGMNotes(notes) - For new GM notes feature. object.registerCollisions(include_stay_events = false), object.unregisterCollisions() - Objects must be registered in order to trigger the global collision handler events detailed above. Sway events are particularly expensive, so only set that parameter to true if you absolutely require it.
Spectator command rework:
spectator_window now controls the picture-in-picture mode. spectator_screen can be used to open spectator view on another monitor. spectator_activate_with_resolution now has -p parameter to specify picture-in-picture. This command can be used to open picture-in-picture with specific position and size.
New commands: (for more info see above page, or use help
object.loading_customreturning false too early.
onObjectEnterContaineronly firing for one of the objects when two single objects merge.
Hey everyone, we got another great update for you today! We have added 2 very long requested features a Music Player and PDF support!
There are also a ton of great additions and improvements listed below in the patch notes.
Constructors: Vector(num, num, num) --> return a vector with specified (x, y, z) components Vector(table) --> return a vector with x/y/z or 1/2/3 conponents from source table (x/y/z first) Vector.new(...) --> same as Vector(...) Vector.max(vec1, vec2) --> return a vector with max components between vec1 and vec2 Vector.min(vec1, vec2) --> return a vector with min components between vec1 and vec2 Vector.between(vec1, vec2) --> return a vector pointing from vec1 to vec2 vec:copy() --> copy self into a new vector and retur it Component access: vec.x, vec.y, vec.z --> read/write component v, v, v --> read/write component vec:get() => num, num, num --> returns x, y, z components of self Methods modifying self and returning self: vec:setAt(key, num) --> same as "vec[key] = num" vec:set(num, num, num) --> set x, y, z components to passed values vec:add(otherVec) --> adds components of otherVec to self vec:sub(otherVec) --> subtracts components of otherVec from self vec:scale(otherVec) --> multiplies self components by corresponding compnents from otherVec vec:scale(num) --> multiplies self components by a numeric factor vec:clamp(num) --> if self magnitude is higher than provided limit, scale self down to match it vec:normalize() --> scale self to magnitude of 1 vec:project(otherVec) --> make self into projection on another vector vec:reflect(otherVec) --> reflect self over a plane defined through a normal vector arg vec:inverse() --> multiply self components by -1 vec:moveTowards(otherVec, num) --> move self towards another vector, but only up to a provided distance limit vec:rotateTowards(otherVec, num) --> rotate self towards another vector, but only up to a provided angle limit vec:projectOnPlane(otherVec) --> project self on a plane defined through a normal vector arg Methods not modifying self: vec:dot(otherVec) --> return a dot product of self with otherVec vec:magnitude() --> return self magnitude (length) vec:sqrMagnitude() --> return self magnitude (length) squared vec:distance(otherVec) --> returns distance between self and otherVec vec:sqrDistance(otherVec) --> returns squared distance between self and otherVec vec:equals(otherVec, num) --> returns true if otherVec same as self (optional numeric tolerance param), false otherwise vec:string(str) --> return string describing self, optional string prefix vec:angle(otherVec) --> return an angle between self and otherVec, in degrees [0, 180] vec:cross(otherVec) --> return a cross-product vector of self and otherVec vec:lerp(otherVec, num) --> return a vector some part of the way between self and otherVec, numeric arg [0, 1] is the fraction vec:normalized() --> return a new vector that is normalized (length 1) version of self vec:orthoNormalize() --> return three normalized vectors perpendicular to each other, first one being in the same dir as self vec:orthoNormalize(otherVec) --> same as vec:orthoNormalize(), but second vector is guranteed to be on a self-otherVec plane Operators: vecOne + vecTwo --> return a new vector with added components of vecOne and vecTwo vecOne - vecTwo --> return a new vector with subtracted components of vecTwo from vecOne vecOne * vecTwo --> return a new vector with multiplied components of vecOne and vecTwo, NOT a dot product (!) vec * number --> return a new vector with all components from vec scaled by a numeric factor number * vec --> same as "vec * number" vecOne == vecTwo --> return true if both vectors identical or within a small margin of each other, false otherwise tostring(vec) --> return a string description of a vector
Constructors: Color(num, num, num) --> return a color with specified (r, g, b) components Color(num, num, num, num) --> return a color with specified (r, g, b, a) components Color(table) --> return a color with r/g/b/a or 1/2/3/4 components from source table (letter keys prioritized) Color.new(...) --> same as Color(...) Color.fromString(colorStr) --> return a color from a color string ('Red', 'Green' etc), capitalization ignored Color.fromHex(hexStr) --> return a color from a hex representation string (e.g. '#ff112233'), hash sign and alpha are optional col:copy() --> copy self into a new color and return it Color.Purple [etc] --> shorthand for Color.fromString('Purple'), works for all player and added colors, capitalization ignored Component access: col.r, col.g, col.b, col.a --> read/write component col, col, col, col --> read/write component col:get() => num, num, num, num --> returns r, g, b, a components of self col:toHex(includeAlpha) --> returns a hex string for self, boolean parameter col:toString(num) --> returns a color string if matching this instance, nil otherwise, optional numeric tolerance param Methods modifying self and returning self: col:setAt(key, num) --> same as "col[key] = num" col:set(num, num, num, num) --> set r, g, b, a components to passed values Methods not modifying self: col:equals(otherCol, num) --> returns true if otherCol same as self, false otherwise, optional numeric tolerance param col:lerp(otherCol, num) --> return a color some part of the way between self and otherCol, numeric arg [0, 1] is the fraction Operators: colOne == colTwo --> return true if both colors identical or within a small margin of each other, false otherwise tostring(col) --> return a string description of a color Other: Color.list --> table of all color strings Color.Add(name, yourColor) --> add your own color definition to the class (string name, Color instance yourColor)
Hey everyone, this is one of our largest updates yet! We've updated the game engine massively to the latest version of Unity 2019.1 which will give us overall better performance and features. There has also been an optimization pass to reduce stutter causing situations, so everything can be as silky smooth as possible. That's just the tip of the iceberg: reduced game size 4gb, AssetBundle materials, spectator camera improvements, and ton more covered below!
displays - Lists all available displays. ID 0 will always be your main game screen. spectator_window - Turn on to activate the spectator window. spectator_activate_with_resolution - Use instead of above to specify display, resolution, etc. vr_spectator_replaces_main_window - In VR, controls whether spectator mode makes its own window or just uses the desktop mirror. spectator_camera_follow_player - When ON the camera will follow your point-of-view. spectator_camera_attachment - Lets you specify a component or pointer to attach camera to. spectator_camera_follow_attachment - When ON the camera will follow the above object. spectator_camera_dolly - When camera is following an object, it will be offset this far in the direction it is facing. spectator_camera_offset_position - When camera is following an object it will be offset by this X Y Z. spectator_camera_offset_rotation - When camera is following an object its facing will be offset by thus X Y Z. spectator_camera_load - Set the camera to a saved camera position. spectator_camera_load_zero - As above, but the position is zero-indexed (useful when coupled with certain commands like Add). spectator_camera_smooth_on_load - Whether smoothing is applied during above. spectator_camera_target - Lets you specify a component or pointer for the camera to track. spectator_camera_tracking - When ON the camera will track the above object. spectator_camera_look_at - Make spectator camera look a component or pointer. spectator_camera_override_player_with_look - When ON the look at and track commands will work when camera is following player. spectator_show_ui - Whether the UI is displayed on the spectator window. spectator_post_processing - Whether post-processing effects are applied to spectator window. spectator_camera_smooth_position - Positional smoothing factor. spectator_camera_smooth_rotation - Rotational smoothing factor. spectator_camera_stay_upright - When ON the camera will not go upside-down.
+spectator_window -spectator_show_ui # Make easier to type versions of spectator_camera_ commands. # i.e. cam_load instead of spectator_camera_load alias cam_* spectator_camera_* +cam_stay_upright # make right control have camera follow player while held # @ makes it not output to console bind +right_control @+cam_follow_player bind -right_control @-cam_follow_player # make semicolon look at object under pointer # need to start line with > to stop <hovered> being evaluated, # and exec to make it evaluate when activated >bind semicolon exec cam_look_at <hovered> # make period toggle object tracking, and comma set tracked object bind period !cam_tracking >bind comma exec cam_target <hovered> # make right shift cycle through first 3 camera positions alias next_camera add cam_load_zero 1 3 bind right_shift next_camera # make some buttons to load specific camera positions ui_button 1 600 0 cam_load 1 ui_button 2 600 -30 cam_load 2 ui_button 3 600 -60 cam_load 3
If you want to set up a binding/alias/button in a script then you need to start the line with a >, surround the variable with < and > instead, and use exec.
>bind right_control exec spectator_camera_attachment <hovered>
Hey there everyone! This is one of biggest updates yet, we have a lot of great stuff coming for you guys in this update, but we want to make sure it's stable before pushing it live. So, we are doing a public beta first and we want to hear from you about any issues!
To opt into the beta:
/commands now work when typed into system console.
spectator_activate_with_resolutioncommand (can now specify display)
spectator_camera_attachment- sets component or pointer for camera to attach to.
spectator_camera_follow_attachment- when this is on the camera will move as if attached to above entity.
spectator_camera_follow_player- renamed, was
spectator_camera_dolly- distance camera is offset along the direction it is looking.
spectator_camera_offset_position- vector3 positional offset from attachment.
spectator_camera_offset_rotation- vector3 rotational offset from attachment.
spectator_camera_look_at- make camera look at specified component or pointer.
spectator_camera_target- sets component or pointer for camera to track.
spectator_camera_tracking- when ON the camera will constantly track the above entity.
spectator_camera_override_player_with_look- when ON look and track commands will override follow_player.
spectator_camera_stay_upright- when ON the camera will avoid being upside-down.
Oh my! More optimizations are always nice, as the community continues to produce fantastic and more technically complex creations. But if you’re hungry for a new feature, we hope you’ll enjoy the new Video Images, which allow you to use videos as textures for assets. Plus, a long requested feature: Spectator Mode! Whatever your taste, we think this patch has a little something for everybody.
There's now a way to interact with Unity's built in components using this new API. You can control all aspects of your assetbundles for example changing the light settings, all from Lua. You can read more about it on the API page. self.getComponentInChildren("Light").set("intensity", 20)
spectator_window - turn on to activate the spectator window spectator_show_ui - whether the UI is displayed on the spectator window spectator_camera_follow - when enabled spectator camera will follow your view spectator_camera_load - set spectator camera to a stored position spectator_camera_load_zero - same as above, but zero-indexed (so 0 = slot 1, 1 = slot 2, etc.) spectator_camera_smooth_position - factor used to smooth spectator camera movement spectator_camera_smooth_rotation - factor used to smooth spectator camera rotation spectator_camera_smooth_on_load - when enabled smoothing will be applied when loading camera positions as well as when following player spectator_post_processing - whether post-processing effects are applied to the spectator window vr_spectator_replaces_main_window - in VR, controls whether spectator mode makes its own window or just uses the desktop mirror.
+spectator_window -spectator_show_ui +spectator_camera_follow spectator_camera_smooth_position 0.1 spectator_camera_smooth_rotation 0.1 # set right control key to toggle player follow bind right_control !spectator_camera_follow # set space to make spectator camera follow player while it is held down # @ = silence command in console bind +space @+spectator_camera_follow bind -space @-spectator_camera_follow # set keys to jump to specific camera positions bind comma spectator_camera_position 1 bind period spectator_camera_position 2 bind semicolon spectator_camera_position 3 # set right shift key to cycle through the first 3 camera positions alias next_camera add spectator_camera_position_from_zero 1 3 bind right_shift next_camera
Speed up loading of cached models by up to 20 times with new .rawm format and "Models Raw" folder. This uses the same principle as the what we've done to the images to speed up loading of your .obj files.
This patch is filled to bursting with general improvements that you, the community, have been asking for. Better Fog of War, useful scripting additions, better VR, game chat announcements of clearing and measurements, Jigsaw puzzle improvements and MORE! If you don't see the improvements you were hoping for in this update, we're still hard at work on even more improvements for the future!
Some new features, as they are worked on, do not have their own UI menu yet. We've got them collected in the "MISC" setting menu!
You can find details and examples for these, and all of Tabletop Simulator's functions, in the Tabletop Simulator API.
Keep tabs on VR improvements on the discussion page.
All New Console Commands
camera_clear_saved_positions camera_load_rotation_rate camera_restore_saved_positions camera_store_saved_positions component_default_autoraise component_default_grid component_default_hands component_default_ignore_fow component_default_reveal_fow component_default_snap component_default_sticky component_default_tooltip component_override_defaults component_state_wrapping drawing_erase_all drawing_render_fully_visible dice_roll_height_multiplier jigsaw_randomize jigsaw_validate measure_in_metric measure_logging mouse_wheel_zoom_and_center sendkey ui_config_misc ui_panel_chat ui_panel_main ui_panel_notepad ui_panel_player ui_panel_tools vr_display_network_players_off vr_display_network_players_hands vr_display_network_players_all vr_grabbing_hides_gem vr_hover_tooltips vr_interface_click_threshold vr_left_controller_bind_tool_hotkeys vr_mode_display_network_players vr_mode_ui_attachment vr_joypad_emulation vr_laser_activation_threshold vr_laser_beam_thickness vr_laser_dot_size vr_right_controller_bind_tool_hotkeys vr_tooltips_action_enabled vr_ui_attach_left vr_ui_attach_right vr_ui_detached vr_ui_floating vr_ui_scale vr_ui_suppressed vr_wall_mode vr_zoom_object_aligned
vr_trigger_click_effect_delay -> vr_orient_object_delay vr_thumbstick_repeat_duration -> vr_interface_repeat_duration
vr_cards_held_like_in_hand vr_tooltips_when_gripping vr_trigger_activates_laser vr_trigger_activates_ui vr_trigger_click_effect
It has been a while since the last update, because we've been plugging away at making it a big one. Fog of War, Play Area control, Line Tool improvements, Additive Loading, VR Improvements, and much of it covered in our brand new Knowledge Base. Oh my!
When in the Game menu, when clicking the 3 dots that appear in the upper right of a Game when you go to select it, you will see a new option: Additive Load.
VR Settings UI:
A number of commands are now persistent: you do not need to add them to your autoexec to set them at startup; instead they will remember their setting between sessions. help will show which commands persist.
reset ui_config_vr ui_keyboard_default_state ui_keyboard_show ui_keyboard_scale ui_keyboard_echo_duration vr_display_network_players vr_mode_selection_style vr_selection_style_anchored vr_selection_style_exact vr_selection_style_fixed
Not as much here as in some other patches. But we made sure you had access to some of the new toys.
Hey everyone got meaty patch for you guys this time focusing on improving the drawing tool with improved visuals and functionality. We also got a plethora of great VR improvements that can be seen below like virtual hands. Also like normal we got a bunch of great scripting improvements.
#will not be displayed in tooltip.
Updates to the new Wait class:
Returns from getObject and getStates improved to a common standard, includes:
New Object functions:
New base function:
New Object member Variables
Hey we got another great patch for you guys today with a ton of great scripting changes, give host, and a brand new file browser!
putObject() now returns an Object.
New Lua function:
Hey everyone we got another great patch for you guys focused on a broad range of things, but a lot had to do with spring cleaning and keeping everything running great. We got a couple of great Custom Xml UI examples below to help you started getting your feet wet. They are also very functional and could be useful for your games.
Score Tracker https://steamcommunity.com/sharedfiles/filedetails/?id=1415879101 Dice Roller https://steamcommunity.com/sharedfiles/filedetails/?id=1393821479
Zoom object: by default bound to pad-down on the left control. Touch it to display the last examined object (with either controller). Click it to lock in this mode; click again to exit. While locked, pad-left and pad-right will scale the object. Fixed rift hotkeys.
vr_left_hand_pad_down_bindable vr_left_hand_pad_down_zoom vr_left_hand_zoom_scale vr_right_hand_pad_down_bindable vr_right_hand_pad_down_zoom vr_right_hand_zoom_scale
This section includes 10.6.1 & 10.6.2
Hey everyone we got another patch for you guys today focused on improving the new Custom UI by adding the ability to attach them to 3d objects in the game. Also many VR Improvements especially for Oculus. Last and not least a new looking for players indicator on the server browser.
New console commands:
vr_card_in_hand vr_laser_beam_opacity vr_laser_beam_visible vr_mode_icon_colored vr_thumbstick_icons_constant vr_thumbstick_repeat_duration vr_trigger_activates_laser vr_trigger_activates_ui
This patch includes creating Custom UIs using Xml giving you the power of Unity's UI system with an easy to use format. We also have a brand new API documentation that is much more feature complete with examples and better looks. Can be found here: https://api.tabletopsimulator.com/
Read about the new VR Controls at the bottom of the patch notes!
The goal is to provide a more intuitive VR experience; closer to how you would play a board game IRL. This is still in development, feel free to leave us your feedback about how it feels! To enable the old control scheme type +vr_controls_original into the system console.
Various commands in the system console govern vr behaviour: type help vr to see them. For example, turning 'vr_sticky_grab' on will mean you do not have to hold the trigger to maintain grip on an object; instead you press to grab, then press again to release. If you want these commands to persist then add them to your autoexec (type 'edit autoexec' and enter them there).
You can quickly switch between old and new controls if you do something like 'bind right_control !vr_controls_original' (...you can then hit right control to toggle)
Grip buttons now let you move (holding one controller) or rotate/scale (holding both). Holding any grip button will display control layout.
-vr_controls_original vr_unbind_all bind +vr_right_pad_left tool_grab bind -vr_right_pad_left tool_revert bind +vr_right_pad_right tool_paint bind -vr_right_pad_right tool_revert
This will mean for the right controller, as long as you hold the left pad you will be in grab mode, and as long as you hold the right pad you will be in paint mode.
This is our first update in 2018 and while this patch may not seem too exciting, it’s because we spent a lot time cleaning up underlining code to facilitate better updates for the future. We hope you do like any of the changes and updates that have been added thus far.
A big thing we’ve added to TTS is Discord integration, so you can see what game your friends are playing, what they are hosting and the number of seats available, and much more. Hope you enjoy!
Added hotkeys to toggle UI elements on and off:
Callback function has property with keys string url, bool is_done, float download_progress, float upload_progress, bool is_error, string error, string text.
This tiny update was mainly to get VR and Touch working again after the slight downtime with v10.0. Thanks for your patience!
Hey everyone, v10.0 will be our largest patch ever added to the game! This update’s focus was on completely rewriting and optimizing the netcode on Tabletop Simulator to help solve a lot of the connection issues. If you helped us test on the beta, thank you very much for your input as we needed all the extra testing we could get to ensure things were cleaned up smoothly. This is a major update, so if you encounter any issues, please let us know on our forums with as much detail as possible before we head into the holidays.
And finally, we have made a few UI improvements which we hope you like. The main menu has changed for simplicity and to match the rest of the UI, and the host options menu has been split into Game, Server and Permissions. We’ve added some additional features to these menus as well. VR and Touch is currently not working in this update, but we plan on adding it back in very shortly. Please be sure to post your feedback and suggestions on our forums.