Tabletop Simulator - MrStump
This sale has come to an end!



Tabletop Simulator is on sale now for 50% off!
You can buy the individual game, or the 4-pack at the discounted price.

https://store.steampowered.com/app/286160/Tabletop_Simulator/

Additionally, almost all DLC are on sale for up to 50% off.

https://store.steampowered.com/dlc/286160/

Sale ends 2/11/19 at 1pm EST.
Tabletop Simulator - MrStump
Sadly, this Steam sale has come to a close. But there will be others!



Tabletop Simulator is on sale now for 50% off!
You can buy the individual game, or the 4-pack at the discounted price.

https://store.steampowered.com/app/286160/Tabletop_Simulator/

Additionally, almost all DLC are on sale for up to 50% off.

https://store.steampowered.com/dlc/286160/

Congratulations to all the Steam Award winners, and Happy Holidays to our fantastic community. We continue to plug away at improving the game, so keep your ideas and your feedback coming. We'll catch you in the new year!

Sale ends 1/3/19 at 1pm EST.
Tabletop Simulator - MrStump


Tabletop Simulator and its DLC is one sale now for 50% off!
You can buy the individual game, or the 4-pack at the discounted price.

https://store.steampowered.com/app/286160/Tabletop_Simulator/

Additionally, almost all DLC are on sale for up to 50% off.

https://store.steampowered.com/dlc/286160/

We hope you enjoy your Autumn and any turkeys you may or may not be devouring.

Sale ends November 27th at 10am (PST).
Tabletop Simulator - MrStump
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!

We're also back at it with a new official DLC: Draco Magi!



DLC - Draco Magi
https://store.steampowered.com/app/610696/Tabletop_Simulator__Draco_Magi/
  • Draco Magi now available for $6.99 with a 20% launch discount.
  • Includes the base game, as well as the expansion.
  • Scripted setup to help you get into the game quickly.
  • Select your seats and press one of the on-table buttons to begin.
  • Read the Notebook for additional info.

Fog of War:
  • Found under the Zone tools, Fog of War acts similarly to a hidden zone, with the zone hiding objects that are within it.
  • You can right click any object to enable "Reveal Fog Of War" in its Toggles menu. This object now reveals fog, instead of being hidden inside of it.
  • Right clicking it again shows options for visibility range as well as what color objects are revealed for.
  • The piece reveals area of the fog, which is represented by a black plane.
  • Did we mention it can be accessed via scripting? See below.
  • GM (black seat) players can see everything in the fog.
  • Objects also have a "Ignore Fog of War" toggle, to disable the hiding effect on that piece.
  • All "Boards" are unaffected by fog, and are still visible. You can set your Custom Models or AssetBundles to be "boards" if you want them visible as well.
  • Read about other options and system details on the Zone Tools section of the new Knowledge Base.


Credit to B.I.O.S. for the table.

Play Area:
  • Want the camera to move further from the table? Or not be able to? Play area lets you set that distance limit.
  • Use this to make a small room that the player can't sneak out of.
  • Use it to make even BIGGER setups.
  • The setting can be modified under **Options** at the top of the screen, then under the **Game** settings.

Improved Line Tool:
  • Your measurements with the line tool are now visible for all players!
  • The line never covers the number.
  • It is not blurry. What more could you ask for from a line?!

Additive Load:
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.
  • Clicking this option causes all of the game pieces from the save to be loaded into your CURRENT game.
  • So all your current game objects remain where they were and the ones from the save you Additive Loaded from will appear as well.
  • An ideal use for this is to save different dungeon/map setups, then load them into your current game after clearing space.

New Knowledge Base:
The new Knowledge Base.
  • The old Knowledge Base was built to explain the many systems in Tabletop Simulator.
  • A replacement for the old Knowledge Base, the new Knowledge Base has a fast, much more modern setup.
  • It is patterned on the update API.
  • There have been some additional documents created, updates to classics and more.
  • It also allows you to submit improvements via GitHub.

VR Improvements:
  • On-Screen Keyboard:
    • Turn on in Interface settings. Displays an on-screen keyboard - mainly for use in VR (makes searching a lot easier). Can be toggled in VR with button on right of screen.
  • VR Settings UI:
    • You no longer need to use console commands to configure your VR experience.
    • Accessible through Interface settings, or in VR with button on right of screen.
    • Added setting to disable displaying network player VR peripherals; accessible in VR settings or via console command vr_display_network_players
    • Added settings for how selection works: either a box with a fixed height (as it has been), a box exactly as you draw it, or a box anchored to the table surface.
    • Long hover tooltips now wordwrap.
  • System Console:
    • 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.
  • New Commands:
    • 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



Scripting Changes:
Not as much here as in some other patches. But we made sure you had access to some of the new toys.
  • Added Physics.play_area
  • Added object.setFogOfWarReveal(table)
  • Added object.getFogOfWarReveal()
  • Added object.ignore_fog_of_war
  • Read more about these in the API.

Bug Fixes:
  • Peeking cards no longer causes their name/description to become available for all players to see for a few moments.
  • Improvements to the console's color changing commands to prevent abuse.
Tabletop Simulator - Knil
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.



Drawing Tool:
  • Sharper less blurry look.
  • Added line, box, and circle tool.
  • Can now control thickness using +/-.
  • Added draw indicator to easier to see where you will be drawing.
  • Can now draw on any angled surface on objects.
  • Pixel paint removed.
  • Fixed up bugs plaguing lines on objects.

General:
  • Added Steam rich presence to see what games your friends are playing and if there is any room!
  • Server browser now streams in results instead of in one big chunk.
  • You can stop this refresh by clicking the refresh again.
  • Raised max packet size from 1 mb to 10 mb allowing you to load larger save files when promoted.
  • Input fields are now auto selected for popup dialogs.
  • Removed "Hacking in Unity" discord message.
  • Objects will now have their face hidden while face-down (set per object, defaults to on for objects such as cards / decks / dominos)
  • Rotation Value identifiers which begin with `#` will not be displayed in tooltip.
  • Tutorial now always uses Museum backdrop (as it has good text contrast)

Scripting:
    Updates to the new Wait class:
  • Added repetitions to Wait.time to better emulate Timer. Wait.time(func, time, number_repetitions).
  • Using -1 will cause infinite repetitions
  • Improvements to stop() so it should work more as expected.
    Returns from getObject and getStates improved to a common standard, includes:
  • Name and Nickname
  • Description
  • Lua Script and Lua Script State
    New Object functions:
  • obj.drop() causes the item, if held by a player, to be dropped.
  • setHiddenFrom(players) Hides objects from a specific player/players. Uses "hand zone" hiding.
  • setInvisibleTo(players) Hides objects from a specific player/players. Uses "hidden zone" hiding.
  • attachHider(...) and attachInvisibleHider(...) are more advanced version of
  • setHiddenFrom and setInvisibleTo, there to help handle complex situations easily.
    Old Object Functions (with new features!)
  • setRotationValues() now allows you to start a name/value with a # and it won't display the value in the tooltip.
  • randomize(color) Now an optional string can be added so that
  • onObjectRandomized will trigger, indicating that player color triggered it.
    New base function:
  • get/setVectorLines() Allows for lines to be placed via scripting using the new vector line tools`
    New Spawnable object: Custom Decks!
  • Technically this was added before, but now it works and is documented!
  • Spawn using spawnObject then set it using setCustomObject
    Clarifications to the Object class
  • Some functions, let setSnapPoints or call, work on both Object and Global.
  • To highlight which Object functions can be directed at the game world, they have been broken out on the Object page into a "Global Functions" section.
    New Object member Variables
  • use_rotation_value_flip can be used to modify which direction objects flip.
  • is_face_down determines if an object's "face" is pointed down (like with cards). The face is the direction that faces the positive Y value.
  • hide_when_face_down hides an Object when it is face-down. Objects are hidden like if in a hidden zone. The face is the direction that faces the positive Y value.
    New Event
  • onObjectEnterContainer has long been a requested event, and it is now available!

VR:
  • New virtual hand feature that lets you interact with your hand just like if it was attached to your left controller.
  • Click trigger while holding a card to straighten it and hide it from other players. Click again to toggle.
  • When you pull an object out of the search inventory (for example, removing a card from a deck) it will appear at the controller tip, and be grabbed if possible.
  • Improved controller tooltips.
  • Tooltip showing click button for Vive on main menu.
  • Fixed VR tutorial.
  • Flick and Line tools now working properly.
  • Reduced jitter on scale + rotate.
  • Up no longer defaults to teleport (but that can be re-enabled with `vr_teleport_with_pad`)
  • Down on pad now defaults to Zoom, on both controllers.
  • Pad now has context commands when hovering over objects.
  • Lots of other VR changes/improvement that can all be found here.

Stats Monitor:
  • Added a stats monitor for fps, memory, and sound.
  • Activated with stats_monitor console cmd.

Fixes:
  • Fixed auto raise over tablet freaking out.
  • Fixed input bug spamming hotkeys into input fields when first selecting.
  • Fixed locking object while it then unlocking it dropping through world.
  • Fixed splitting into 10 decks merges some of the decks.
  • Fixed decal on flipped cards bug.
  • Fixed vector, decals, infinite bags hiding bugs.
  • Fixed onscreen hands not showing decals and vector lines.
  • Fixes convert URL to steam cloud now works on UI custom assets.
  • Fixed string size limit over the network being increased for large xml.
Tabletop Simulator - Knil
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!

Give Host:
  • Allows the host of game to pass the hosting off to another player that is connected to them.
  • The selected player will receive a confirmation dialog to accept the new host and can accept or decline.
  • If accepted all players will disconnect and then have the choice to reconnect to the new host in the exact same setup and layout they were just playing in.
  • Everything will be preserved from the previous host.



New File Browser:
  • Brand new file browser.
  • Can search and favorite folders to easily find your assets.
  • Works in VR now.

Split & Cut:
  • New split added to contextual menu that let's you split a deck / stack in a certain number of stacks.
  • Cut has been improved by letting you choose at what proportion you want to split the deck / stack.

Scripting Improvement:
    Lua
  • putObject() now returns an Object.
  • Using it to combine two cards will return an object reference to the newly formed deck.
  • Using it to put an object into a container/stack/deck will return the container/stack/deck it was made part of.

    New class Notes
  • Contains notebook and set/getNotes functions.
  • Deprecated the old "Base" versions of these functions.

    New class Wait
  • This new class allows you to easily trigger functions after some form of delay.
  • Contains frames, time, condition, and stop functions.
  • Deprecated Timer class entirely.

    New Object functions
  • obj.cut(int) - Cuts a deck at the given card index.
  • obj.split(int) - Splits a deck in a number of stacks.
  • obj.getRotationValue - Returns the current rotationValue of an object (see: gizmo tool).
  • This function existed previously, but was not documented.

    Event Functions
  • Added onObjectPeek(object, player) - Triggers when peek is used by a player.
  • Added object.onPeek(player), object.onRandomize(player).

    Misc
  • Player Color strings convert automatically
  • Example: printToAll("Hello", "Green").
  • Snap points created on objects use Vectors local to the Object, rather than global.
  • This applies to both position and rotation.
  • Fix for optional parameters of spawnObjectJSON().
  • Fix motor_force not working on jointTo().

    New Object Member Variables
  • loading_custom - Indicates if the assets of a custom element are being loaded.
  • spawning - Indicates if any object is currently in the process of spawning.
  • These are helpful to determine if elements are loaded into the game fully
  • Especially useful with the new Wait class!

    Callback Changes
  • Callbacks are being overhauled to use brand new syntax where you directly pass the function instead of the function string name, function owner, and params.
  • Ex: Wait.time(|| print("Done"), 1) or Wait.time(function() print("Done") end, 1)
  • Effected are spawnObject/Json(), takeObject(), and Webrequests.

    Custom UI:
  • New Lua function:
  • UI.setValue(string id, string value) - Updates the value that appears within element tags {>>(ex: <Text>THIS</Text>)<<}
  • UI.getValue(string id)- Obtains the value that appears within element tags {>>(ex: <Text>THIS</Text>)<<}
  • Both support Rich Text!
  • Added get/setCustomAssets() with keys named and url.
  • New InputField attribute placeholder- Greyed out text that appears in the input if there is no text present.

Chat Improvements
  • Added optional timestamps for chat found in chat settings.
  • Improved black outline around text in chat.
  • Numbers in chat are now monospace.

Onscreen indicators
  • Added on screen indicators to the edge of the screen for ping arrow and peek icons.
  • Never miss a notification because you were looking at the wrong direction.

UI Improvements
  • Add clear input x button to all search inputs.
  • Added a scale animation to popup menus.
  • Added a safe guard to restore UIs dragged off the screen.

VR Fixes:
Tabletop Simulator - Knil


Steam's Summer Sale is here and Tabletop Simulator is 50% off!
You can get both the individual and the 4-pack at this discounted price.

http://store.steampowered.com/app/286160/

Additionally, all our DLCs are on sale up to 50% off!

https://store.steampowered.com/dlc/286160/

Hope you guys are having a great summer!

Sale ends July 5th at 10am PST.
Tabletop Simulator - Knil
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.



Xml UI Example:

General:
  • Flip now actually flips the dice instead of increasing the number value (rotate right still does this).
  • Optimized away all garbage allocation per frame to improve overall smoothness.
  • Optimized 2D UI rendering to be more performant.
  • Overall lots of code cleanup to improve our workflow in the future.

Xml UI:
  • Visibility attribute now supports admin, host, and team names.
  • Clicking button won't block your hotkeys anymore.
  • Added getXmlTable() setXmlTable().
  • Fixed onValueChanged recursive event loop.
  • Fixed setAttribute() not working if it thought there wasn't a change.
  • Fixed not being able to setXml() with an empty string.
  • Fix support for RichText in Get/SetXmlTable().
  • Fixed zombie Xml UI when opening File Browser.

Scripting:
  • Added Player.getAvailableColors() and Player.getColors().
  • Added SetSnapPoints() and GetSnapPoints().
  • Added JointTo().
  • Lots of scripting improvements to make it easier to convert between Lua Tables and C# types.
  • Fixed Hotseat crash when using scripting input fields.
  • Fixed camera triggering scripting zone.
  • Fixed Turns.getNextColor() returning name instead of color.

Permissions:
  • Added feedback with a onscreen popup warning when trying to do
  • something that is blocked by a permission.
  • Permission save objects / saves to block saving objects to chest.
  • Permission peek to block alt+shift looking at the backside of an object.
  • Permission nudge to disabling all nudging with N.

External API:
  • Atom will now warn you when you try to Save & Play after creating an object in TTS without saving.
  • Lua error reporting improved.
  • Various fixes.

VR:
  • 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.

New commands:
  • 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
Tabletop Simulator - Knil
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.



Custom UI
  • Supports 3D UI attached to Objects.
  • Each object can have its own assets (images)
  • UI.getXml() and UI.setXml() added, allows for dynamic UI creation from a string. Expect more ways to dynamically spawn to added in the future.
  • Click sounds added for the UI.
  • Player colors now match TTS colors. For example, "red" is now equivalent to the player color red exactly.
  • Dragging is improved so the element doesn't snap to its rectAlignment when dragged.
  • Fixed changing active attribute from scripts the visibility attribute would sometimes not work correctly.
  • Added position attribute and fixed rotation to work like you would expect.
  • Scale of onscreen UI based on resolution height instead of width.
  • Custom UI hides correctly whenever there is a popup dialog.
  • Scripting editor now has two modes Lua and UI that let you edit their respective scripts per Object or Global.

VR Improvements
  • Fixed grabbing objects messing with rotation.
  • Selection box will use laser position if laser is on.
  • Fixed selection box placement bug.
  • Added icon showing current tool mode.

    Fixed Rift controls:
  • Gem now defaults to angled and is better positioned
  • Trigger activates laser and UI objects
  • Stick controls activate properly (teleport works on click, rotation will repeat on hold)
  • Stick UI becomes visible when stick touched.

    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

Looking For Players
  • New looking for players indicator on the server browser. This will be default on for all servers.
  • This can be changed in game by going Options -> Server.
  • Can also be set from scripting with setLookingForPlayers(bool).

General
  • Updated to Unity 5.6.6.
  • Fixed thumbnail preview image causing image to being lower resolution than it should in the world.
Tabletop Simulator - Knil
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!



Custom UI

Scripting
  • object.randomize (or shuffle/etc) now returns 'true' if shuffle occurred. For example, a deck currently being searched by a player will not shuffle, so 'false' is returned.
  • Added search events: onObjectSearchStart, onObjectSearchEnd, onSearchStart, onSearchEnd
  • Button callbacks now have a third parameter which will be set to true if the button was right-clicked or long-pressed.
  • createButton now lets you specify 'hover_color' and 'press_color'
  • Added getJSON() to Object and spawnObjectJSON() this is the same format as Objects are saved in the save files.
  • Turns class added to let you controls the turns menu from scripting.
  • Event onPlayerTurn(player) added.

Voice Chat
  • Team icon is now working.
  • Updated to latest version of voice chat.
  • Fixed more bugs with Voice Chat.

Fixes
  • Fixed items appearing faded in Search window.
  • Fixed Search window not working in VR.
  • Fixes to cosmic encounter.

VR Controls Update
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.

Note
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)

Changes
Laser pointer now turns on and off as the player touches the touch pad, and is oriented like a pointer rather than a gun (it now matches the default steam keyboard laser).

Selection box now drawn from controller position instead of laser position.

Controls
Touchpad when not holding an object:

Center = click (buttons, UI, etc.)
Up = teleport
Left & Right = Mapped tool. Hold left or right to bind current tool to that button.
Touchpad when holding an object:

Center = flip
Left & Right = Rotate
Grip buttons now let you move (holding one controller) or rotate/scale (holding both). Holding any grip button will display control layout.

Holding menu button will reset your position.

Trigger now used exclusively to interact with 3D world

Advanced
The touchpad controls when not holding an object are set using the console bind command, and can be overwritten, so you can bind any command you want to the touchpad if you wish (left, right, and up if you disable teleport; down and center are reserved). For example: 'bind vr_right_pad_left !vr_laser_constant' will toggle the laser on and off when you hit left on the right controller's touchpad. You can use -, +, and ! bind prefixes to bind to press, release, and long press respectively. Use 'vr_unbind_all' before binding your own to remove the default bindings.

Example autoexec
-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.
...