1. Tabletop Simulator
  2. News

Tabletop Simulator News

New Year, New Tabletop Simulator — 2.0 Overhaul Roadmap

[p]Happy New Year Everyone![/p][p]We are kicking off the year with what we are calling Tabletop Simulator 2.0 — a series of major updates that we will be releasing for free with the goal of modernizing Tabletop Simulator and setting up the platform for success over the coming decade and beyond.[/p][p]Tabletop Simulator 2.0 is not a sequel but the same Tabletop Simulator you already own, upgraded and reworked to feel modern, snappy, and more comfortable to use. The recent v14.0 engine update was the stepping stone to begin this process, and we would like to share this roadmap with you early to incorporate your feedback and suggestions.[/p][p]Our major focus and centerpiece for 2.0 is the UI/UX overhaul — reworking the fundamentals of how you play, learn, and build in Tabletop Simulator.[/p][hr][/hr][h2]Summary of Tabletop Simulator 2.0[/h2]
  • [p]Improved gameplay experience: Rebuilding the interface and user experience to make TTS more approachable for new and experienced players alike.[/p]
  • [p]Practical creator tools: New and improved tools for creators so they can spend more time creating and less time fighting interfaces.[/p]
  • [p]Better performance & improved visuals: Modernizing the rendering pipeline and performance foundations.[/p]
  • [p]Multiplayer reliability: Networking improvements with a focus on stability and security hardening.[/p]
  • [p]VR rework: A modern VR foundation with improved interactions and VR-friendly UI.[/p]
  • [p]Steam ecosystem: Better compatibility and usability on Steam platforms such as the Steam Deck and upcoming Steam hardware.[/p]
[hr][/hr][h2]The Tabletop Simulator 2.0 Roadmap[/h2][p]Our plan is to release the changes in the roadmap as individual major updates in the following order so that you can experience the changes earlier and give us the time we need to go through all of your feedback and suggestions.[/p]
  1. [p]Stable & Secure Online Play[/p][p]Networking modernization focused on reliability and security improvements.[/p]
    • [p]Upgrading to the new Steam P2P networking which encrypts traffic and helps protect player privacy (including hiding IP addresses).[/p]
    • [p]Overhauling the networking system to offer better protection against exploits from malicious users.[/p]
  2. [p]Performance & Hardening Improvements[/p][p]A build/runtime upgrade moving the build over to IL2CPP for better performance characteristics and security hardening by raising the bar against common tampering/exploits.[/p]
  3. [p]New Interface & Experience Overhaul (Play Mode / Edit Mode)[/p][p]Full UI/UX overhaul from the ground up on a modern framework (UI Toolkit).[/p][p]The re-design will focus on creating two distinct modes that you can switch between:[/p]
    • [p]Play Mode: Clean and intuitive UI designed to streamline gameplay and make the playing experience less cluttered and confusing.[/p]
    • [p]Edit Mode: Advanced tools and options for creators and power users who want expansive control over their creative process.[/p]
    [p]We also want to support full UI theming and skinning (a “CSS-like” styling system) so creators can build more customized interfaces for their games.[/p]
  4. [p]Modern Control Scheme & Controller Support Improvements[/p][p]More consistent controls across mouse/keyboard and controller use with the Steam Deck in mind.[/p]
    • [p]Upgrading to Unity's new input system for better device support and a more modern action-based design.[/p]
  5. [p]Visuals & Performance Improvements[/p][p]Major rendering modernization by upgrading to the Universal Rendering Pipeline (URP) while preserving legacy Workshop content.[/p]
    • [p]Reduced CPU usage for rendering with URP's batcher (should improve frame rates and performance in many cases).[/p]
  6. [p]VR Rework — Modern VR Foundation & Better VR UI[/p][p]Full VR rework introducing OpenXR with a focus on fluid VR interactions and VR-friendly interfaces.[/p]
  7. [p]Steam Deck / Steam Frame / Steam Machine Polish Pass[/p][p]Focused improvements to make Tabletop Simulator run better on Steam platforms and future hardware.[/p]
  8. [p]Creator Marketplace[/p][p]A curated marketplace for user content that aims to expand the library of available Tabletop Simulator content without interfering with existing free Steam Workshop submissions. Read more about the Creator Marketplace below.[/p]
[hr][/hr][h2]What is the Creator Marketplace?[/h2][p]Our goal is to expand the options and support for creators who publish content for Tabletop Simulator — giving smaller creators a real chance to monetize their work while also increasing the amount of polished, ready-to-play content available.[/p][p]The Creator Marketplace will be a curated marketplace for content such as:[/p]
  • [p]Official DLC-style content[/p]
  • [p]TTRPG assets & figurines[/p]
  • [p]Original models & assets (tables, tokens, miniatures, props, environments)[/p]
  • [p]Polished high-quality experiences designed to work “out of the box”[/p]
[p]We are designing the Creator Marketplace to be creator-first with a top-tier revenue share structure compared to other in-game UGC (user generated content) marketplaces so that more of each purchase goes to the people making the content. We are happy to share more details about this when we get closer to release.[/p][p]Marketplace submissions will be checked and curated by our team to ensure that they are of high quality and do not infringe on intellectual property rights.[/p][p]The Creator Marketplace does not replace the Workshop or introduce a paywall on existing community content. It is an optional library in addition to the Workshop that will let you support creators who produce high-quality content. Like with current DLC content only the host will need to have purchased a marketplace item for it to be available to all connected players.[/p][p][/p][hr][/hr][h2]What won’t change[/h2]
  • [p]You will not need to purchase a new copy of Tabletop Simulator — all of these updates will be applied to you for free.[/p]
  • [p]The Steam Workshop remains fully supported. We are committed to keeping existing content fully playable during this modernization.[/p]
  • [p]The core values of Tabletop Simulator remain the same — making it the best platform for finding and playing your favorite tabletop games.[/p]
[hr][/hr][h2]We want your feedback early![/h2][p]Help shape this roadmap with us! Tell us about your personal priorities, potential concerns, and what you want to see first. Please submit your feedback with tag "Roadmap" on our feedback board here: https://feedback.tabletopsimulator.com/[/p][hr][/hr][h2]We are hiring a Senior UX Designer[/h2][p]The UI/UX overhaul is the centerpiece of Tabletop Simulator 2.0 and we want experienced help to make sure it’s done right. Please see the hiring page for more information about how to apply: https://tabletopsimulator.com/contact/hiring[/p][hr][/hr][h2]Thank you for your continued love and support![/h2][p]We are excited to build the next generation of Tabletop Simulator with you and will be working closely with the community throughout, making sure we get things right and develop the best tabletop gaming platform possible.[/p][p]— Berserk Games[/p]

❄️ Winter Sale - 50% Off Tabletop Simulator & DLC

[h3]❄️ The Winter season is here and to celebrate we are putting Tabletop Simulator & All DLC on a 50% discount throughout the duration of the Steam Winter Sale[/h3][p][/p][p]The Winter Sale will be active from December 18 through to January 5th.[/p][p]Check out the Winter Sale sale here:[/p][p][dynamiclink][/dynamiclink][/p]

Update 14.0 - Engine Upgrade, Feature Additions & Performance Improvements

[p][/p][h2]Tabletop Simulator v14.0 - Engine Upgrade, Feature Additions & Performance Improvements![/h2][p][/p][p]A quick note from the team: We know it’s been a long time since the last big update. Behind the scenes we’ve been doing a lot of groundwork on the engine and tools, and this patch is the first step to a renewed focus on regular updates and improvements to TTS. Thank you for your patience and for sticking with us ❤️[/p]
[p]Thanks to everyone who tried out this update in the public beta—your feedback was invaluable in helping us make it as good as it is. A lot of the new features and fixes came directly from what you shared with us.[/p]
[h2]Read First (Important Changes)[/h2]
  • [p]New minimum OS / platform requirements:[/p]
    • [p]Windows: 64-bit Windows 10 21H1+ (Windows 11 supported)[/p]
    • [p]macOS: 11 Big Sur+[/p]
    • [p]Linux: Ubuntu 22.04 / 24.04 (64-bit)[/p]
  • [p]Win 32-bit builds are no longer supported.[/p]
  • [p]Keybind behavior changed: keybinds now use physical key location instead of character (better across keyboard layouts). Keybinds have been reset due to this change.[/p]
  • [p]Image pipeline update: your RAW image cache will be cleared with this update due to image pipeline changes and new translucency support.[/p]
  • [p]Voice chat: if you are the host and disable voice chat, it disables voice chat for all players.[/p]
[p]Gameplay, rules, and your saves are unchanged. This is primarily an engine + quality-of-life update.[/p]
[h2]Summary[/h2]
  • [p]Engine & platform[/p]
    • [p]Engine upgrade to Unity 6 LTS for smoother performance, better stability, and faster loading in many cases. Over 5 years of engine improvements![/p]
    • [p]Native Apple Silicon support on macOS with a universal app (Apple Silicon + Intel), using Metal by default on Apple Silicon.[/p]
    • [p]The game executable is now code signed, improving trust with Windows and reducing false positives with antivirus.[/p]
  • [p]Rendering & mod assets[/p]
    • [p]New Vulkan graphics API option on Windows & Linux (experimental) for potentially better performance in heavy scenes.[/p]
    • [p]New rendering & image upgrades: higher quality PCSS shadows, optional image translucency, and WebP image support for more efficient mods.[/p]
  • [p]Quality of life[/p]
    • [p]Camera movement improvements, deal from bottom of deck, keyboard layout–friendly keybind behavior, turns system improvements, controller pointer smoothing, music player overhaul, notepad improvements, grid tools, erase-all controls, Cloud Manager upgrades, and new console options.[/p]
  • [p]Lua / creators[/p]
    • [p]Lua upgrades including a new turn-order API, improved deck dealing controls (including “deal from bottom”), [c]putObject[/c] index support, plus stability fixes for scripting and drafting/hand selection workflows.[/p]
[hr][/hr][h2]Engine, Platform & Security[/h2]
  • [p]Updated TTS to Unity 6 LTS.[/p]
  • [p]Updated all plugins to their latest compatible versions.[/p]
  • [p]The game executable is now code signed, improving trust with Windows and reducing false positives with antivirus.[/p]
[h3]New OS / Platform Requirements[/h3]
  • [p]Windows[/p]
    • [p]64-bit only.[/p]
    • [p]Minimum: Windows 10 version 21H1 (build 19043) or newer.[/p]
    • [p]Windows 11 fully supported.[/p]
  • [p]macOS[/p]
    • [p]Minimum: macOS 11 Big Sur or newer.[/p]
    • [p]Ships as a universal app that runs on both Intel and Apple Silicon (M-series).[/p]
    • [p]On Apple Silicon, TTS runs natively (no Rosetta required).[/p]
  • [p]Linux[/p]
    • [p]Officially supported/tested: Ubuntu 22.04 / 24.04, 64-bit.[/p]
    • [p]Wayland and X11 supported (behavior may vary by distro/driver).[/p]
[p]If you're on an older OS than the above, TTS may not launch after this update. Please update your system.[/p]
[h3]Graphics APIs[/h3]
  • [p]macOS (Apple Silicon)[/p]
    • [p]Metal is now the default graphics API when running on Apple Silicon.[/p]
    • [p]If you're not on Apple Silicon, the game uses OpenGLCore by default.[/p]
  • [p]Windows & Linux[/p]
    • [p]Added Vulkan as a new experimental graphics API.[/p]
    • [p]In very demanding scenes, Vulkan can offer better performance on supported hardware.[/p]
    • [p]If you hit visual glitches or stability problems, switch back to the default renderer.[/p]
[h3]Security[/h3]
  • [p]Includes the latest Unity 6 security fixes, addressing known file-loading vulnerabilities in older engine versions.[/p]
  • [p]Combined with code signing, this should reduce security prompts and exploit risk.[/p]
[hr][/hr][h2]General & Performance[/h2]
  • [p]Greatly increased snappiness of WASD camera movement with less "floaty" gravity.[/p]
  • [p]Keybinds now use physical key location instead of character, so bindings line up across different keyboard layouts.[/p]
  • [p]Turn order UI now updates dynamically in the top-right player list whenever turn order changes.[/p]
  • [p]Controller input for moving pointers should now feel slightly smoother.[/p]
  • [p]Greatly optimized network serialization on CPU via more efficient bitpacking.[/p]
  • [p]Image loading improvements[/p]
    • [p]Loading new (uncached) images is now more performant.[/p]
    • [p]Improved image quality in many cases.[/p]
    • [p]Reduced likelihood of crashes when large or many new images are being loaded.[/p]
  • [p]Added support for WebP images, a more efficient image format than JPG or PNG. (Feedback #2273)[/p]
  • [p]Voice chat improvements:[/p]
    • [p]Disabling voice chat in the configuration menu properly stops all voice chat processes.[/p]
    • [p]This can fix audio issues with some Bluetooth headsets.[/p]
    • [p]If you are the host and disable voice chat, it disables voice chat for all players.[/p]
    • [p]Added an error message when trying to use voice chat when it isn't connected.[/p]
  • [p]UI theme can now automatically follow your system theme if none is manually selected.[/p]
[h3]Rendering Options[/h3]
  • [p]Added a higher quality shadow setting PCSS, which gives more realistic shadows and blurs based on distance.[/p]
  • [p]Added a new console command [c]Translucency[/c] that allows images to support partial translucency (EXPERIMENTAL, please send us feedback on this!).[/p]
[h3]Connectivity & Session Safety[/h3]
  • [p]Added a popup when disconnecting while players are still connected to offer them host migration. (Feedback #2663)[/p]
[p]Note: Your RAW image cache will be cleared with this update due to image pipeline changes and new translucency support.[/p]
[hr][/hr][h2]Music Player[/h2]
  • [p]Added search filter for playlists. (Feedback #2143)[/p]
  • [p]Added Clear Playlist button.[/p]
  • [p]Added Export Playlist and Import Playlist[/p]
    • [p]Save your current playlist to a file.[/p]
    • [p]Add a playlist file into your current playlist.[/p]
  • [p]Added Upload Music Folder[/p]
    • [p]Select a folder and upload all songs in it at once, with naming.[/p]
  • [p]TTS will now suggest a name for a song when you provide a URL or file.[/p]
  • [p]Fix: Music player no longer breaks when loading a new mod. (Feedback #2038)[/p]
  • [p]Fix: Music events no longer break when a song ends with no playlist active.[/p]
  • [p]Fix: Music player no longer resets when loading a save file with no music saved on it.[/p]
[hr][/hr][h2]Notepad (On-Screen Notes)[/h2]
  • [p]On-screen notes region is now resizable.[/p]
  • [p]New notepad settings for:[/p]
    • [p]Font[/p]
    • [p]Font size[/p]
    • [p]Text justification[/p]
  • [p]New console commands:[/p]
    • [p][c]ui_notepad_edit[/c][/p]
    • [p][c]ui_notepad_left_align[/c][/p]
    • [p][c]ui_notepad_locked[/c][/p]
    • [p][c]ui_notepad_fixed_width_font[/c][/p]
    • [p][c]ui_notepad_font_size[/c][/p]
    • [p][c]ui_notepad_size[/c][/p]
    • [p][c]ui_notepad_text[/c][/p]
[hr][/hr][h2]Grid[/h2]
  • [p]While Grid settings are open, the grid now renders on top of everything, making adjustments easier.[/p]
    • [p]Controlled via [c]ui_grid_highlight_when_editing[/c] (console / Misc setting).[/p]
  • [p]New anchor & gizmo mode[/p]
    • [p]Click the Gizmo button in the Grid window.[/p]
    • [p]Select a component to center the grid on it.[/p]
    • [p]Ctrl+click a second component to size the grid appropriately (using your snap settings). (Feedback #1871)[/p]
  • [p]Added [c]measure_grid_multiplier[/c] command.[/p]
[hr][/hr][h2]Erase All[/h2]
  • [p]Applies to drawn lines, text, and decals.[/p]
  • [p]Non-promoted players[/p]
    • [p]"Erase all" now only erases their own drawings/decals. (Feedback #1841)[/p]
  • [p]Promoted players[/p]
    • [p]Can erase everything[/p]
    • [p]Can erase just their own[/p]
    • [p]Can erase all content from a specific player[/p]
[hr][/hr][h2]Cloud Manager[/h2]
  • [p]Cloud folder dropdown now has a "Select Folder" button that opens the Cloud Manager folder browser. (Feedback #711)[/p]
  • [p]Starred folders[/p]
    • [p]Folders can now be Starred (button next to folder name).[/p]
    • [p]Starred folders show first in the folder browser dropdown. (Feedback #711)[/p]
  • [p]Cloud search now restricts results to the current folder. (Feedback #1839)[/p]
  • [p]Fix: Resolved several file browser issues and cleaned up its underlying code to improve stability.[/p]
[hr][/hr][h2]Dealing: Deal From Bottom[/h2]
  • [p]Holding ALT while dealing or drawing from a deck will now take the card from the bottom of the deck. (Feedback #2680)[/p]
  • [p]The deck will do a small “hop” animation to make it clear when this happens.[/p]
  • [p]Works both with the number keys and the GUI.[/p]
  • [p]Dealing hand objects will now correctly deal to your new hand if you change the table.[/p]
[hr][/hr][h2]Misc Features[/h2]
  • [p]Custom Figurine[/p]
    • [p]Added toggle to use a minimal collider on the card part. (Feedback #1929)[/p]
    • [p]Added option to mirror the back texture. (Feedback #2107)[/p]
  • [p]Added Reset Scale to an object's scale context menu. (Feedback #2078)[/p]
  • [p]Hotseat player names are now remembered between sessions. (Feedback #2070)[/p]
  • [p]Added [c]vr_floor[/c] command / VR setting[/p]
    • [p]Lets you turn off the floor independently of [c]fog[/c] / "Floor Of Mist". (Feedback #2173)[/p]
  • [p]Server browser improvements[/p]
    • [p]Player names now show in the server browser.[/p]
    • [p]Your name is hidden if you are offline, invisible, or you untick the "Show Name In Server Browser" option.[/p]
[hr][/hr][h2]Console Commands[/h2][p]New/updated commands:[/p]
  • [p][c]component_hotkey_state_change[/c][/p]
    • [p]When enabled, press number keys while hovering an object to change its State.[/p]
    • [p]Appears in Misc Settings.[/p]
  • [p][c]ui_notebook[/c][/p]
    • [p]Shows the Notebook window.[/p]
  • [p][c]text_tool_default_font_size[/c][/p]
  • [p][c]autorun_lua[/c][/p]
    • [p]Controls whether Lua automatically runs when updated.[/p]
  • [p][c]camera_reset_on_color_change[/c][/p]
    • [p]Controls whether the camera automatically moves to your seat when you change color. (Feedback #256)[/p]
  • [p][c]show_name_in_server_browser[/c][/p]
    • [p]Controls whether your name is listed in the server browser for public servers you join.[/p]
  • [p][c]measure_grid_multiplier[/c][/p]
    • [p]Applies a scale multiplier when the line measure tool is in Grid mode.[/p]
[p]Fixes:[/p]
  • [p]Fixed [c]help[/c] command not working on commands that have no arguments.[/p]
  • [p]Removed old console commands related to global chat. (Feedback #2117)[/p]
[hr][/hr][h2]Open Beta Fixes[/h2]
  • [p]Fixed a major networking issue where loading a save file could break the game state. (Feedback #2641)[/p]
  • [p]Fixed rewinds and autosaves not working correctly. (Feedback #2656)[/p]
  • [p]Fixed an issue where XML UI could be blocked by incorrect objects, including the invisible floor at [c]y = 1[/c]. (Feedback #2647)[/p]
  • [p]Fixed a 64-depth issue when downloading and loading mods. (Feedback #2640)[/p]
  • [p]Fixed hand selection working incorrectly with the new Lua drafting mechanic.[/p]
  • [p]Fixed an issue where you could erase your drawn lines incorrectly. (Feedback #2702)[/p]
  • [p]Fixed several HandSelectMode issues. (Feedback #2618)[/p]
  • [p]Fixed a bug in [c]Lua Wait.collect[/c]. (Feedback #2635)[/p]
[hr][/hr][h2]Fixes[/h2]
  • [p]Fixed an issue where XML UI would not be blocked by objects when it should.[/p]
  • [p]Fixed XML UI not hiding in hidden zones. (Feedback #2673)[/p]
  • [p]Fixed partial transparency when importing UI and decal images for the first time.[/p]
  • [p]Fixed advancing the turn immediately after loading a game always going to the first player instead of the second.[/p]
  • [p]Fixed a macOS issue where text could be entered while the Cmd modifier key was held. (Feedback #2636)[/p]
  • [p]Fixed infinite bags visually breaking after Undo or Reload. (Feedback #2665)[/p]
  • [p]Fixed drop indicator not showing color when dropping with Alt + Right Click for decks and stacks.[/p]
  • [p]Fixed grid size inputs not allowing you to type a [c].[/c] at the end.[/p]
  • [p]Fixed [c]onLoad[/c] not executing in Hot Seat Mode. (Feedback #2629)[/p]
  • [p]Fixed RPG tileset snapping preview so it now displays correctly.[/p]
  • [p]Fixed Flick and Combine sometimes requiring a double click when you are a client.[/p]
  • [p]Fixed right click while drawing a line not canceling for everyone else. (Feedback #125)[/p]
[hr][/hr][h2]Misc Fixes[/h2]
  • [p]You can now obtain the "Be Social" achievement using in-game chat. (Feedback #1895)[/p]
  • [p]Fixed game crashing when trying to load a CMYK JPG.[/p]
  • [p]Fixed line tool not converting to cm in component mode. (Feedback #1934)[/p]
  • [p]Fixed "Showing Hand" button displaying incorrect color after seat swap.[/p]
  • [p]Fixed on-screen hand blocking in-game UI. (Feedback #1757)[/p]
  • [p]Fixed hotseat turn not being set to correct player on load. (Feedback #1960)[/p]
  • [p]Fixed hotseat players being unable to drop cards in searched deck. (Feedback #1959)[/p]
  • [p]Fixed hotseat turn incorrectly resetting when loading a Classic game.[/p]
  • [p]When starting a hotseat game, the game now only picks larger tables, so all player colors are immediately selectable.[/p]
  • [p]Fixed context menu not clamping to screen. (Feedback #1966)[/p]
  • [p]Fixed context menu appearing in the wrong position when right-clicking a card in hand. (Feedback #2051)[/p]
  • [p]Fixed unintuitive Text Tool placement behavior.[/p]
  • [p]Fixed appearance of custom card aspect ratios when searching containers. (Feedback #2021)[/p]
  • [p]Fixed cards merging incorrectly with a deck when the deck is on a snap point. (Feedback #2063)[/p]
  • [p]Fixed left edge of search dialog not having a collider. (Feedback #2077)[/p]
  • [p]Fixed Japanese language name in language select. (Feedback #2116)[/p]
  • [p]Fixed shake detector triggering when the user spams Tap.[/p]
  • [p]Fixed Random Domino/Card/Mahjong Tile not generating every possible object. (Feedback #2160, #2154)[/p]
  • [p]Fixed rewind/forward ([c]rwd/fwd[/c]) not working correctly. (Feedback #2161)[/p]
  • [p]Fixed game breaking on first launch but working on subsequent launches.[/p]
  • [p]Fixed cards getting cut off onscreen when scaling very large hands.[/p]
  • [p]Fixed deleting a folder in Cloud Manager not deleting all contained files.[/p]
  • [p]Fixed issues when uploading PDF files via "Upload All" in the Cloud Manager.[/p]
  • [p]Fixed a bug where objects with multiple assets (primary/secondary AssetBundles) could think they finished loading too early, breaking on-screen hands, highlighting, and Lua load completion.[/p]
  • [p]Fixed dice behavior when picking up and dropping instantly, so dice now roll correctly in that scenario.[/p]
  • [p]Fixed VR floor setting being inverted for the [c]vr_floor[/c] option.[/p]
[hr][/hr][h2]Lua[/h2][p]New Lua functions and features for creators:[/p][h3]Object State Changes[/h3]
  • [p]Added [c]tryObjectStateChange(object, new_state_index, player_label)[/c] and [c]object.tryStateChange(new_state_index, player_label)[/c]. (Feedback #1822)[/p]
  • [p]Limited [c]tryObjectStateChange[/c] and [c]tryStateChange[/c] to only trigger on valid state indices.[/p]
[h3]Turn Order & Input Modifiers[/h3]
  • [p]Added [c]Turns.getTurnOrder()[/c] which returns the current turn order, including automatic order (in automatic mode) and custom order (in custom mode).[/p]
  • [p]Lua will now receive the ALT modifier on the events [c]onNumberTyped[/c] and [c]onObjectNumberTyped[/c].[/p]
[h3]Dealing API[/h3]
  • [p]Updated [c]obj.deal(int NumCards, string Color = Colour.SeatedLabel, int HandIndex = 1, bool DealFromBottom = false)[/c][/p]
    • [p]Now supports dealing from the bottom of the deck when [c]DealFromBottom = true[/c] (only works for decks).[/p]
[h3]Hand Select Mode[/h3][p]Automate drafting & hand selection:[/p]
  • [p][c]chooseInHand(label, minCount, maxCount, prompt, players) -> affectedPlayers[/c][/p]
  • [p][c]chooseInHandOrCancel(label, minCount, maxCount, prompt, players) -> affectedPlayers[/c][/p]
  • [p][c]clearChooseInHand(players) -> affectedPlayers[/c][/p]
  • [p][c]currentChooseInHand(player) -> label[/c][/p]
  • [p][c]onPlayerHandChoice(player_color, label, objects)[/c] → Callback triggered when a player confirms their selection.[/p]
[h3][c]Wait.collect[/c][/h3]
  • [p]Added [c]Wait.collect(table expected_ids, on_finished, on_add = nil, on_error = nil) -> {table expected, table results, add(id, ...), reset()}[/c].[/p]
[p][c]Wait.collect[/c] takes a list of expected ids and returns a [c]collect_table[/c]:[/p]
  • [p]When the task for a given id is complete, call: [c]collect_table:add(id, ...)[/c].[/p]
    • [p]The first time this happens for a given id:[/p]
      • [p][c]collect_table.results\[id][/c] is set to the [c]...[/c] you passed in.[/p]
      • [p]If you provided [c]on_add[/c], it is called as: [c]on_add(id, ...)[/c].[/p]
  • [p]Error handling:[/p]
    • [p]If you call [c]add[/c] more than once for the same id and you provided [c]on_error[/c], it is called as: [c]on_error(Wait.COLLECT_DUPLICATE, id, ...)[/c].[/p]
    • [p]If you call [c]add[/c] with an id that was not expected and you provided [c]on_error[/c], it is called as: [c]on_error(Wait.COLLECT_UNKNOWN, id, ...)[/c].[/p]
[p]When all expected ids have been added:[/p]
  • [p][c]on_finished(results)[/c] is called with the final [c]results[/c] table.[/p]
[p]You can call:[/p]
  • [p][c]collect_table:reset()[/c] to zero out call counts and clear results so you can reuse the same collector.[/p]
[h3]Rewind State[/h3][p]Rewind states are stored periodically. If a store happens in the middle of a complex scripted change, you can end up with bad intermediate states. These helpers let you control when rewinds are saved. (Feedback #617)[/p]
  • [p][c]storeRewindState(closure andThen, block_further_stores)[/c][/p]
    • [p]Attempts to store a rewind state if there are unsaved changes, then calls: [c]andThen(success, didSave)[/c].[/p]
    • [p][c]success[/c][/p]
      • [p][c]true[/c] → the call completed successfully.[/p]
      • [p][c]false[/c] → a rewind state could not be stored. You should always check this before continuing.[/p]
    • [p][c]didSave[/c][/p]
      • [p][c]true[/c] → a new rewind state was actually written.[/p]
      • [p][c]false[/c] → call succeeded but there was nothing new to save.[/p]
    • [p]If [c]block_further_stores[/c] is [c]true[/c] and [c]success[/c] is [c]true[/c], then no additional rewind states will be recorded until:[/p]
      • [p]You call [c]storeRewindState[/c] again, or[/p]
      • [p]You call [c]allowRewindStore()[/c], or[/p]
      • [p]60 seconds have passed.[/p]
  • [p][c]allowRewindStore()[/c][/p]
    • [p]Clears the block on storing rewind states.[/p]
[h3]Hand Zone Stash[/h3][p]Each player’s primary hand zone now has a “stash” where cards in the players hand can be stashed temporarily:[/p]
  • [p][c]player.drawHandStash()[/c] → draws all cards from stash into hand.[/p]
  • [p][c]player.setHandStashLocation(v3 position, int rotation)[/c] → set stash position & rotation.[/p]
  • [p][c]card.moveToHandStash()[/c] → moves a card in hand into its stash.[/p]
[p]Use cases: drafting mechanics, temporary hidden piles, etc.[/p][h3]Lua API Addition[/h3]
  • [p]Lua added an optional index parameter to [c]putObject(Obj, index)[/c]. (Feedback #659)[/p]
[h3]Lua Fixes[/h3]
  • [p]Fixed an issue with [c]Lua GetData()[/c] involving the new Steam IDs.[/p]
  • [p]Fixed [c]JSON.encode[/c] not working correctly with Unicode. (Feedback #1263)[/p]
[p][/p][hr][/hr][h2]v14.0.3 Hotfix 1[/h2][hr][/hr][h2]v14.0.3 Hotfix 2 [/h2]
  • [p]Added a 'Community Chat' button to the chat menu that opens the Tabletop Simulator community group chat on Steam. Community Chat Rules need to be accepted before you can join. [/p]
[hr][/hr][h2]v14.0.3 Hotfix 3[/h2]
  • [p]Added Lua Turns.endTurn() an easy way to end a players turn.[/p]
  • [p]Changed json save file max depth to 1024...[/p]
  • [p]Optimized the Wait class and fixed potential bugs with callback and calling stop().[/p]
  • [p]Fixed "crashed" caused when deleting large RAWT cache after update (made deletion async, so it doesn't appear crashed).[/p]
  • [p]Fixed not being able to pass turns for non admin players.[/p]
  • [p]Fixed being able scale objects with locked Y scale to 1 to really small or big.[/p]
  • [p]Fixed stacking distance for small cards and decks so that the spread action properly works with them.[/p]
  • [p]Fixed autosaves happening when your server becomes disconnected.[/p][p][/p]
[hr][/hr][h2]Troubleshooting & Logs[/h2][p]For issues or feedback, post them here: [/p][p]https://feedback.tabletopsimulator.com/[/p][p][/p][p]If you hit problems, attaching your Player.log helps us a lot:[/p]
  • [p]Windows: [c]%USERPROFILE%\\AppData\\LocalLow\\Berserk Games\\Tabletop Simulator\\Player.log[/c][/p]
  • [p]macOS: [c]~/Library/Logs/Berserk Games\\Tabletop Simulator/Player.log[/c][/p]
  • [p]Linux: [c]~/.config/unity3d/Berserk Games\\Tabletop Simulator/Player.log[/c][/p]
[p]Enable logging with [c]/log[/c] in chat or the [c]-log[/c] launch option.[/p][hr][/hr][h2]Thank you ❤️[/h2][p]Engine upgrades are big and tie in to every platform and a ton of unique hardware configurations. If you run into issues, please include with your report:[/p]
  • [p]OS version[/p]
  • [p]GPU + driver version[/p]
  • [p]Player.log[/p]
  • [p]Workshop link (if it's mod-related)[/p]
[p]And again, thank you for your patience during the long gap of silence. This engine work sets us up for faster, more frequent updates going forward.[/p][p]We have a big announcement coming soon - keep an eye out for around New Years![/p]

Tabletop Simulator v14.0 Public Beta — Engine Upgrade (Unity 6 LTS)

[h2]Tabletop Simulator v14.0 Public Beta — Engine Upgrade (Unity 6 LTS)[/h2][p]A quick note from the team: We know it’s been a long time since the last big update. Behind the scenes we’ve been doing a lot of groundwork on the engine and tools, and this patch is the first step to a renewed focus on regular updates and improvements to TTS. Thank you for your patience and for sticking with us ❤️[/p][p][/p][h2]Public Beta (Steam)[/h2][p]This is a huge engine and platform update, so we’re rolling it out as a public beta first to shake out any remaining issues before it goes live for everyone.[/p][h3]How to opt into the public beta on Steam[/h3]
  1. [p]Open your Steam Library.[/p]
  2. [p]Right-click Tabletop SimulatorProperties…[/p]
  3. [p]Go to the Betas tab.[/p]
  4. [p]Select the public beta branch for the Unity 6 update from the dropdown.[/p]
  5. [p]Close the window and let Steam download the update.[/p]
[p]You can switch back to the live version at any time by setting the beta dropdown back to “None”.[/p][p][/p][h3]Give feedback[/h3][p]Please report bugs and suggestions on our Nolt board 👉 https://feedback.tabletopsimulator.com/[/p][p]Include your OS, GPU, and logs (see Troubleshooting & Logs below) when reporting issues. It helps a lot.[/p][p]Please use the "Public Beta" tag for feedback to do with this patch.[/p][hr][/hr][p][/p][p]Windows: 64-bit Windows 10 21H1+ (Windows 11 supported) macOS: 11 Big Sur+ Linux: Ubuntu 22.04/24.04 (64-bit)[/p][p][/p][h2]Summary[/h2]
  • [p]Engine upgrade to Unity 6 LTS: smoother performance, better stability, and faster loading in many cases.[/p]
  • [p]Native Apple Silicon support on macOS with a universal app that runs on both Apple Silicon and Intel, using Metal by default on Apple Silicon.[/p]
  • [p]New Vulkan graphics API option on Windows & Linux (experimental) for potentially better performance in heavy scenes.[/p]
  • [p]New minimum system requirements:[/p]
    • [p]Windows: 64-bit Windows 10 21H1+ (Windows 11 supported)[/p]
    • [p]macOS: 11 Big Sur+[/p]
    • [p]Linux: Ubuntu 22.04/24.04 (64-bit)[/p]
  • [p]Win 32-bit builds are no longer supported.[/p]
  • [p]Game & plugins updated to latest versions and now code-signed for fewer antivirus/security issues.[/p]
  • [p]Big quality-of-life upgrades: camera movement, keybind behavior, music player overhaul, notepad improvements, grid tools, erase-all controls, Cloud Manager upgrades, new console options.[/p]
  • [p]New Lua tools for drafting, hand selection, hand “stash” areas, rewind control, and more scripting power.[/p]
[p]Gameplay, rules, and your saves are unchanged. This is primarily an engine and quality-of-life update.[/p]
[hr][/hr][p][/p][h2]Engine, Platform & Security[/h2]
  • [p]Updated TTS to Unity 6 LTS.[/p]
  • [p]Updated all plugins to their latest compatible versions.[/p]
  • [p]The game executable is now code signed, improving trust with Windows and reducing false positives with antivirus.[/p]
[p][/p][h3]New OS / Platform Requirements[/h3]
  • [p]Windows[/p]
    • [p]64-bit only.[/p]
    • [p]Minimum: Windows 10 version 21H1 (build 19043) or newer.[/p]
    • [p]Windows 11 fully supported.[/p]
  • [p]macOS[/p]
    • [p]Minimum: macOS 11 Big Sur or newer.[/p]
    • [p]Now ships as a universal app that runs on both Intel and Apple Silicon (M-series).[/p]
    • [p]On Apple Silicon, TTS now runs natively (no Rosetta required).[/p]
  • [p]Linux[/p]
    • [p]Supported: Ubuntu 22.04 / 24.04, 64-bit.[/p]
    • [p]Wayland and X11 supported (behavior may vary by distro/driver).[/p]
[p][/p]
[p]If you’re on an older OS than the above, TTS may not launch after this update. Please update your system.[/p]
[p][/p][h3]Graphics APIs[/h3]
  • [p]macOS (Apple Silicon):[/p]
    • [p]Metal is now the default graphics API when running on Apple Silicon.[/p]
    • [p]If you’re not on Apple Silicon, the game uses OpenGLCore by default.[/p]
  • [p]Windows & Linux:[/p]
    • [p]Added Vulkan as a new experimental graphics API.[/p]
    • [p]In very demanding scenes, Vulkan can offer better performance on supported hardware.[/p]
    • [p]Because Vulkan is still experimental, if you hit visual glitches or stability problems, switch back to the default renderer.[/p]
[p][/p][h3]Security[/h3]
  • [p]Includes the latest Unity 6 security fixes, addressing known file-loading vulnerabilities in older engine versions.[/p]
  • [p]Combined with code signing, this should reduce security prompts and exploit risk.[/p]
[hr][/hr][p][/p][h2]General & Performance[/h2]
  • [p]Greatly increased snappiness of WASD camera movement with less “floaty” gravity.[/p]
  • [p]Keybinds now use physical key location instead of character, so bindings line up across different keyboard layouts.[/p]
  • [p]Voice chat improvements:[/p]
    • [p]Disabling voice chat in the configuration menu properly stops all voice chat processes.[/p]
    • [p]This can fix audio issues with some Bluetooth headsets.[/p]
    • [p]If you are the host and disable voice chat, it disables voice chat for all players.[/p]
    • [p]Added an error message when trying to use voice chat when it isn’t connected.[/p]
  • [p]UI theme can now automatically follow your system theme if none is manually selected.[/p]
  • [p]Greatly optimized network serialization on CPU via more efficient bitpacking.[/p]
  • [p]Image loading improvements:[/p]
    • [p]Loading new (uncached) images is now more performant.[/p]
    • [p]Improved image quality in many cases.[/p]
    • [p]Reduced likelihood of crashes when large or many new images are being loaded.[/p]
[hr][/hr][p][/p][h2]VR (Beta Note)[/h2]
  • [p]In the current public beta, post-processing is not active in VR.
    This means effects like LUT-based color grading and other post-processing visuals do not work in VR yet. We’re planning to restore this in a future update.[/p]
[hr][/hr][p][/p][h2]Music Player[/h2]
  • [p]Added search filter for playlists. (Nolt #2143)[/p]
  • [p]Added Clear Playlist button.[/p]
  • [p]Added Export Playlist and Import Playlist:[/p]
    • [p]Save your current playlist to a file.[/p]
    • [p]Add a playlist file into your current playlist.[/p]
  • [p]Added Upload Music Folder:[/p]
    • [p]Select a folder and upload all songs in it at once, with naming.[/p]
  • [p]TTS will now suggest a name for a song when you provide a URL or file.[/p]
  • [p]Fix: Music player no longer breaks when loading a new mod. (Nolt #2038)[/p]
  • [p]Fix: Music events no longer break when a song ends with no playlist active.[/p]
  • [p]Fix: Music player no longer resets when loading a save file with no music saved on it.[/p]
[hr][/hr][p][/p][h2]Notepad (On-Screen Notes)[/h2]
  • [p]On-screen notes region is now resizable.[/p]
  • [p]New notepad settings for:[/p]
    • [p]Font[/p]
    • [p]Font size[/p]
    • [p]Text justification[/p]
  • [p]New console commands:[/p]
    • [p][c]ui_notepad_edit[/c][/p]
    • [p][c]ui_notepad_left_align[/c][/p]
    • [p][c]ui_notepad_locked[/c][/p]
    • [p][c]ui_notepad_fixed_width_font[/c][/p]
    • [p][c]ui_notepad_font_size[/c][/p]
    • [p][c]ui_notepad_size[/c][/p]
    • [p][c]ui_notepad_text[/c][/p]
[hr][/hr][p][/p][h2]Grid[/h2]
  • [p]While Grid settings are open, the grid now renders on top of everything, making adjustments easier.[/p]
    • [p]Controlled via [c]ui_grid_highlight_when_editting[/c] (console / Misc setting).[/p]
  • [p]New anchor & gizmo mode:[/p]
    • [p]Click the Gizmo button in the Grid window.[/p]
    • [p]Select a component to center the grid on it.[/p]
    • [p]Ctrl+click a second component to size the grid appropriately (using your snap settings).
      (Nolt #1871)[/p]
[hr][/hr][p][/p][h2]Erase All[/h2]
  • [p]Applies to drawn lines, text, and decals.[/p]
  • [p]Non-promoted players:[/p]
    • [p]“Erase all” now only erases their own drawings/decals. (Nolt #1841)[/p]
  • [p]Promoted players:[/p]
    • [p]Can erase everything.[/p]
    • [p]Can erase just their own.[/p]
    • [p]Can erase all content from a specific player.[/p]
[hr][/hr][p][/p][h2]Cloud Manager[/h2]
  • [p]Cloud folder dropdown now has a “Select Folder” button that opens the Cloud Manager folder browser. (Nolt #711)[/p]
  • [p]Starred folders:[/p]
    • [p]Folders can now be Starred (button next to folder name).[/p]
    • [p]Starred folders show first in the folder browser dropdown. (Nolt #711)[/p]
  • [p]Cloud search now restricts results to the current folder. (Nolt #1839)[/p]
  • [p]Fix: Resolved several file browser issues and cleaned up its underlying code to improve stability.[/p]
[hr][/hr][p][/p][h2]Misc Features[/h2]
  • [p]Custom Figurine:[/p]
    • [p]Added toggle to use a minimal collider on the card part. (Nolt #1929)[/p]
    • [p]Added option to mirror the back texture. (Nolt #2107)[/p]
  • [p]Added Reset Scale to an object’s scale context menu. (Nolt #2078)[/p]
  • [p]Hotseat player names are now remembered between sessions. (Nolt #2070)[/p]
  • [p]Added [c]vr_floor[/c] command / VR setting:[/p]
    • [p]Lets you turn off the floor independently of [c]fog[/c] / “Floor Of Mist”. (Nolt #2173)[/p]
  • [p]Server browser improvements:[/p]
    • [p]Player names now show in the server browser.[/p]
    • [p]Your name is hidden if you are offline, invisible, or you untick the “Show Name In Server Browser” option.[/p]
[p](The previously mentioned standalone external server browser tool has been removed and is no longer part of this update.)[/p][hr][/hr][p][/p][h2]Console Commands[/h2][p]New/updated commands:[/p]
  • [p][c]component_hotkey_state_change[/c][/p]
    • [p]When enabled, press number keys while hovering an object to change its State.[/p]
    • [p]Appears in Misc Settings.[/p]
  • [p][c]ui_notebook[/c][/p]
    • [p]Shows the Notebook window.[/p]
  • [p][c]text_tool_default_font_size[/c][/p]
    • [p]Sets default size for the Text tool. (Nolt #2000)[/p]
  • [p][c]autorun_lua[/c][/p]
    • [p]Controls whether Lua automatically runs when updated.[/p]
  • [p][c]camera_reset_on_color_change[/c][/p]
    • [p]Controls whether the camera automatically moves to your seat when you change color. (Nolt #256)[/p]
  • [p][c]show_name_in_server_browser[/c][/p]
    • [p]Controls whether your name is listed in the server browser for public servers you join.[/p]
[p]Fixes:[/p]
  • [p]Fixed [c]help[/c] command not working on commands that have no arguments.[/p]
  • [p]Removed old console commands related to global chat. (Nolt #2117)[/p]
[hr][/hr][p][/p][h2]Misc Fixes[/h2]
  • [p]You can now obtain the “Be Social” achievement using in-game chat. (Nolt #1895)[/p]
  • [p]Fixed game crashing when trying to load a CMYK JPG.[/p]
  • [p]Fixed line tool not converting to cm in component mode. (Nolt #1934)[/p]
  • [p]Fixed “Showing Hand” button displaying incorrect color after seat swap.[/p]
  • [p]Fixed on-screen hand blocking in-game UI. (Nolt #1757)[/p]
  • [p]Fixed hotseat turn not being set to correct player on load. (Nolt #1960)[/p]
  • [p]Fixed hotseat players being unable to drop cards in searched deck. (Nolt #1959)[/p]
  • [p]Fixed hotseat turn incorrectly resetting when loading a Classic game.[/p]
  • [p]When starting a hotseat game, the game now only picks larger tables, so all player colors are immediately selectable.[/p]
  • [p]Fixed context menu not clamping to screen. (Nolt #1966)[/p]
  • [p]Fixed context menu appearing in the wrong position when right-clicking a card in hand. (Nolt #2051)[/p]
  • [p]Fixed unintuitive Text Tool placement behavior.[/p]
  • [p]Fixed appearance of custom card aspect ratios when searching containers. (Nolt #2021)[/p]
  • [p]Fixed cards merging incorrectly with a deck when the deck is on a snap point. (Nolt #2063)[/p]
  • [p]Fixed left edge of search dialog not having a collider. (Nolt #2077)[/p]
  • [p]Fixed Japanese language name in language select. (Nolt #2116)[/p]
  • [p]Fixed shake detector triggering when the user spams Tap.[/p]
  • [p]Fixed Random Domino/Card/Mahjong Tile not generating every possible object. (Nolt #2160, #2154)[/p]
  • [p]Fixed rewind/forward ([c]rwd/fwd[/c]) not working correctly. (Nolt #2161)[/p]
  • [p]Fixed game breaking on first launch but working on subsequent launches.[/p]
  • [p]Fixed cards getting cut off onscreen when scaling very large hands.[/p]
  • [p]Fixed deleting a folder in Cloud Manager not deleting all contained files.[/p]
  • [p]Fixed issues when uploading PDF files via “Upload All” in the Cloud Manager.[/p]
  • [p]Fixed a bug where objects with multiple assets (primary/secondary AssetBundles) could think they finished loading too early, breaking on-screen hands, highlighting, and Lua load completion.[/p]
  • [p]Fixed dice behavior when picking up and dropping instantly, so dice now roll correctly in that scenario.[/p]
  • [p]Fixed VR floor setting being inverted for the [c]vr_floor[/c] option.[/p]
[hr][/hr][p][/p][h2]Lua[/h2][p]New Lua functions and features for creators:[/p][h3]Object State Changes[/h3]
  • [p]Added [c]tryObjectStateChange(object, new_state_index, player_label)[/c] and [c]object.tryStateChange(new_state_index, player_label)[/c].
    (Nolt #1822)[/p]
[p]These are called whenever a user uses the state change action on an object — even if the object doesn’t actually have extra states. That means:[/p]
  • [p]You can hook into the “state change” action to drive similar custom behavior in your own scripts.[/p]
  • [p]You should not use this as a generic “do anything” trigger; keep it semantically tied to state-change-like behavior so your mods remain intuitive.[/p]
[h3][c]Wait.collect[/c][/h3]
  • [p]Added
    [c]Wait.collect(table expected_ids, on_finished, on_add = nil, on_error = nil) -> {table expected, table results, add(id, ...), reset()}[/c].[/p]
[p][c]Wait.collect[/c] takes a list of expected ids and returns a [c]collect_table[/c]:[/p]
  • [p]When the task for a given id is complete, call:
    [c]collect_table:add(id, ...)[/c].[/p]
    • [p]The first time this happens for a given id:[/p]
      • [p][c]collect_table.results\[id][/c] is set to the [c]...[/c] you passed in.[/p]
      • [p]If you provided [c]on_add[/c] to [c]Wait.collect[/c], it is called as:
        [c]on_add(id, ...)[/c].[/p]
  • [p]Error handling:[/p]
    • [p]If you call [c]add[/c] more than once for the same id and you provided [c]on_error[/c], it is called as:
      [c]on_error(Wait.COLLECT_DUPLICATE, id, ...)[/c].[/p]
    • [p]If you call [c]add[/c] with an id that was not expected and you provided [c]on_error[/c], it is called as:
      [c]on_error(Wait.COLLECT_UNKNOWN, id, ...)[/c].[/p]
[p]When all expected ids have been added:[/p]
  • [p][c]on_finished(results)[/c] is called with the final [c]results[/c] table.[/p]
[p]You can call:[/p]
  • [p][c]collect_table:reset()[/c] to zero out call counts and clear results so you can reuse the same collector.[/p]
[h3]Rewind State[/h3][p]Rewind states are stored periodically. If a store happens in the middle of a complex scripted change, you can end up with bad intermediate states. These helpers let you control when rewinds are saved.
(Nolt #617)[/p]
  • [p][c]storeRewindState(closure andThen, block_further_stores)[/c][/p]
    • [p]Attempts to store a rewind state if there are unsaved changes, then calls:
      [c]andThen(success, didSave)[/c].[/p]
    • [p][c]success[/c]:[/p]
      • [p][c]true[/c] → the call completed successfully.[/p]
      • [p][c]false[/c] → a rewind state could not be stored. You should always check this before continuing.[/p]
    • [p][c]didSave[/c]:[/p]
      • [p][c]true[/c] → a new rewind state was actually written.[/p]
      • [p][c]false[/c] → call succeeded but there was nothing new to save.[/p]
    • [p]If [c]block_further_stores[/c] is [c]true[/c] and [c]success[/c] is [c]true[/c], then no additional rewind states will be recorded until:[/p]
      • [p]You call [c]storeRewindState[/c] again, or[/p]
      • [p]You call [c]allowRewindStore()[/c], or[/p]
      • [p]60 seconds have passed.[/p]
    [p]If [c]success == false[/c], the safest simple strategy is to retry [c]storeRewindState[/c] before proceeding with the critical part of your script.[/p]
  • [p][c]allowRewindStore()[/c][/p]
    • [p]Clears the block on storing rewind states.[/p]
    • [p]You should call this any time you previously used [c]storeRewindState[/c] with [c]block_further_stores = true[/c], once your “don’t interrupt me” work has finished.[/p]
[h3]Hand Zone Stash[/h3][p]Each player’s primary hand zone now has a “stash”:[/p]
  • [p][c]player.getHandStash()[/c] → returns the stash object if it exists.[/p]
  • [p][c]player.drawHandStash()[/c] → draws all cards from stash into hand.[/p]
  • [p][c]player.setHandStashLocation(v3 position, int rotation)[/c] → set stash position & rotation.[/p]
  • [p][c]card.moveToHandStash()[/c] → moves a card in hand into its stash.[/p]
[p]Use cases: drafting mechanics, temporary hidden piles, etc.[/p][h3]Hand Select Mode[/h3][p]Automate drafting & hand selection:[/p]
  • [p][c]chooseInHand(label, minCount, maxCount, prompt, players) -> affectedPlayers[/c][/p]
  • [p][c]chooseInHandOrCancel(label, minCount, maxCount, prompt, players) -> affectedPlayers[/c][/p]
  • [p][c]clearChooseInHand(players) -> affectedPlayers[/c][/p]
  • [p][c]currentChooseInHand(player) -> label[/c][/p]
  • [p][c]onPlayerHandChoice(player_color, label, objects)[/c]
    → Callback triggered when a player confirms their selection.[/p]
[h3]Lua Fixes[/h3]
  • [p]Fixed [c]JSON.encode[/c] not working correctly with Unicode. (Nolt #1263)[/p]
[hr][/hr][p][/p][h2]Troubleshooting & Logs[/h2][p]If you hit problems, attaching your Player.log helps us a lot:[/p]
  • [p]Windows:
    [c]C:\\Users\\\\AppData\\LocalLow\\Berserk Games\\Tabletop Simulator\\Player.log[/c][/p]
  • [p]macOS:
    [c]~/Library/Logs/Berserk Games/Tabletop Simulator/Player.log[/c][/p]
  • [p]Linux:
    [c]~/.config/unity3d/Berserk Games/Tabletop Simulator/Player.log[/c][/p]
[p]Enable logging with [c]/log[/c] in chat or the [c]-log[/c] launch option.[/p][p]Your Mods and other user data live here (good for backups or clean caches):[/p]
  • [p]Windows: [c]%USERPROFILE%\\Documents\\My Games\\Tabletop Simulator\\Mods[/c][/p]
  • [p]macOS: [c]~/Library/Tabletop Simulator/[/c][/p]
  • [p]Linux: [c]~/.local/share/Tabletop Simulator/[/c][/p]
[hr][/hr][p][/p][h2]Thank you ❤️[/h2][p]Engine upgrades are big and tie in to every platform and a ton of unique hardware configurations.
If you run into issues, please include with your report:[/p]
  • [p]OS version[/p]
  • [p]GPU + driver version[/p]
  • [p]Player.log[/p]
  • [p]Workshop link (if it’s mod-related)[/p]
[p]And again, thank you for your patience during the long gap of silence. This engine work sets us up for faster, more frequent updates going forward — and your feedback in the public beta will help us get there.[/p]

Autumn Sale - Tabletop Simulator & All DLCs 50% OFF!

[p][/p][h3]The Steam Autumn Sale is here![/h3][p]From September 29th to October 6th - grab Tabletop Simulator and all DLCs at 50% off — our biggest discount of the season! Don’t miss your chance to expand your tabletop collection for half the price! 🛒 Get it now on Steam! 🚀 [/p][p][/p][p][dynamiclink][/dynamiclink][/p][p][/p][p][/p]