Update v13.0 - Translations, Engine Upgrade, Layout Zones, Object Tags & More!

Tabletop Simulator

Tabletop Simulator is the only simulator where you can let your aggression out by flipping the table! There are no rules to follow: just you, a physics sandbox, and your friends. Make your own online board games or play the thousands of community created mods. Unlimited gaming possibilities!

[h2]Hey everyone it's been a while, but we have a huge patch for you guys today![/h2] 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. [h2]Updates, Optimizations, and Cleanup[/h2] [list] [*] Updated Unity version to 2019.4 LTS. [*] Enable graphics jobs, free performance by multi-threading the rendering (benchmarked up to 25% increase in fps). [*] PhysX version upgrade gives better accuracy and performance in a variety of cases. [*] Video player is now using hardware decoding on the gpu making video textures more performant. [*] Updated tablet chromium version which now supports mp3. [*] Updated Dissonance voice chat plugin. [*] Voice chat is now working on Linux again. [*] Updated Lua Moonsharp to 2.0. [*] Lots of code refractoring and cleanup to facilitate faster updates in the future. [*] Reduced ram usage, by lower the number of variants for our custom DXT5nm Standard shader. [*] Optimized a lot of physics code to use non gc allocing functions. [*] Greatly sped up updating Workshop mods on initial load. [*] Optimized the netcode to be more performant on the cpu. [/list] [h2]Translation[/h2] [img]{STEAM_CLAN_IMAGE}/5854753/3442136c8e17174ecce325de8264360653bb0717.png[/img] [list] [*] Added translations for most common languages using google translate. Access Language menu via the button in the bottom right of the main menu, or in the menu bar of the Configuration window. [*] Added the ability to create your own translations for the default UI and share them on the Workshop. [*] Added localization support for your text fields. This allows you to translate your mods for different languages. Example: {en}Hello {fr}Bonjour {de}Hallo [/list] This also works in url fields if you need to change assets based on the language. Example: {en}url1 {fr}url2 Supported languages: [en]English, [zh-cn]Chinese (Simplified), [ru]Russian, [es]Spanish, [pt-br]Portuguese (Brazil), [de]German, [fr]French, [ko]Korean, [pl]Polish, [tr]Turkish, [ja]Japanese, [zh-tw]Chinese (Traditional), [th]Thai, [it]Italian, [pt]Portuguese, [cs]Czech, [hu]Hungarian, [sv]Swedish, [nl]Dutch, [es-419]Spanish (Latin America), [da]Danish, [fi]Finnish, [nb]Norwegian, [ro]Romanian, [uk]Ukrainian, [el]Greek, [vi]Vietnamese, [bg]Bulgarian, [arb] Arabic [h2]Object Tags[/h2] [img]{STEAM_CLAN_IMAGE}/5854753/74bbe53cfc2ab677584d2811992ab2230265fe5d.png[/img] New mechanics which allows objects to selectively interact with game systems. If a system (e.g. a hidden zone, a hand zone, etc.) has a tag set, then only objects which share a tag with it will interact with it. Taggable systems: [list] [*] Hidden zones [*] Randomize zones [*] Hand zones [*] Layout zones [*] Fog-of-War zones [*] Scripting zones [*] Snap points [/list] Set what tags a object or system has by right-clicking it and selecting Tags from the menu. You may access all tags present at the table via the Modding->Tags window. Added Snap-Point Creation Tags window: new snap points will automatically gain whatever tags you set here. [h2]Zones[/h2] Hand, Hidden, and Random zones should perform much faster and no longer slow down the game. Zones now work correctly when there are multiple colliders attached to the same Object. (TODO: LayoutZone and FogOfWarZone) Zones now all have a right-click context menu. Left-click will open the zone-specific menu that used to be on right-click. [h2]Layout Zones[/h2] [img]{STEAM_CLAN_IMAGE}/5854753/da5db45f4db5aebf4564d368f5a450480138cb66.png[/img] New Zone tool (in the zone tool popout) which allows you to automatically lay out objects (primarily cards) across the table. Deploy like any other zone, then left-click and hit the cog to change its settings. Especially useful for card games in which you lay melds on the table (like Gin) or which have trick-taking (Whist, Bridge, etc.), but can also be used to simply arrange a bunch of objects in a grid without locking them to it. Features include: [list] [*] Filter affected objects (face-up/down, non-cards, etc) [*] Split/Combine decks. [*] Set to Manual Only for one-off arranging. [*] Automatic sorting of objects inside groups based on Name, Description, etc. [/list] 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. [h2]Hotseat[/h2] [list] [*] Improved turn transitions. [*] Added ability to set player names. [*] End Turn button now shows current player instead. [*] Added some Misc Settings, detailed below. [*] Fixed object visibility. [*] Fixed a bunch of bugs in the Lua API relating to Hotseat mode. [/list] [h2]General[/h2] [list] [*] Added "Order" option to contextual menu for bags (LIFO, FIFO, and Random). [*] Spawn mode now works off objects in the void. [*] Picking up objects that are teleported from out bounds now snap to the mouse nicer. [*] When cloning/spawning objects you may hold the left mouse button down and move the mouse to spawn multiple objects. [*] Buttons will now only appear on Books (i.e. PDF objects) when you hover the mouse over them. This can be disabled in Misc Settings. [*] Decks now have a Spread action in the right-click menu; spreads the cards out across the table. Distance between cards is set in Misc Settings. [*] NGUI now shows up on objects in the onscreen hand view and optimized it when alt zooming. (XML UI still doesn't work) [*] Added description to the tooltip when searching a container. [*] Workshop loading wheel above chat is always spinning now when updating. [/list] [h2]Lua:[/h2] [list] [*] HandZones are now Objects like everything else. [*] Added Lua Hands.getHands() and get/setValue() string Color for Hands Objects. [*] Added Lua WebRequest.custom(string url, string method, bool download, string data, Dictionary headers, Closure callbackFunction) [*] Lua getAllObjects() is now instantly updated to add or remove when an object is spawned or destroyed. [*] Added Hands class to Lua with members (bool enable, bool disable_unused, int hiding) sames as the hands menu. [*] Deck no longer populates cards with its script and script state. [*] Added [i]tryRandomize(player_color)[/i] and [i]tryObjectRandomize(object, player_color)[/i] for when someone tries to shuffle/roll/randomize an object. Returning [i]false[/i] will prevent randomization. [*] Added [i]onBlindfold(player, blindfolded)[/i] event, triggered when a player puts on or takes off blindfold. [*] Added [i]object.alt_view_angle[/i] property: when non-zero the [i]Alt[/i] view will use the specified Euler angle to look at the object. [*] Added [i]object.getPositionSmooth()[/i] and [i]object.getRotationSmooth()[/i] return the current smooth move target and null if not moving. [*] Added [i]object.isDestroyed()[/i] returns true if an object is (or will be) destroyed. [*] Deprecated [i]object.tag[/i] property: use [i]object.type[/i] instead. [*] Deprecated [i]filter...[/i] commands: now use prefix [i]try...[/i]. e.g. [i]tryObjectEnter[/i]. [*] Added [i]object.memo[/i], a string you can store info in on an object. [*] Stopped the ability to spawn Tables using spawnObject. [/list] Added Lua Global classes Tables and Backgrounds. Tables: [list] [code] [*] string getTable() [*] bool setTable(string name) [*] string getCustomURL() [*] bool setCustomURL(string url) [*] Object getTableObject() [*] Backgrounds: [*] string getBackground() [*] bool setBackground(string name) [*] string getCustomURL() [*] bool setCustomURL(string url) [/code] [/list] Added Info global static class exposing Info menu. [list] [code] [*] string name [*] string type [*] string complexity [*] int[] playing_time [*] int[] number_of_players [*] List tags [/code] [/list] Added calls for working with Tags: [list] [*] object.getTags() -> Table gets the Tags attached to an object. [*] object.setTags(Table tags) sets the Tags attached to an object. [*] object.addTag(string label) adds the Tag to the object. [*] object.removeTag(string label) removes the Tag from the object. [*] object.hasTag(string label) -> bool checks if the object has the Tag. [*] object.hasAnyTag() -> bool checks if the object has any Tags. [*] object.hasMatchingTag(other) -> bool checks if the other object has a matching Tag with this object. [*] scripting_zone.getObjects() will utilize Tags attached to the zone, unless you override with scripting_zone.getObjects(true) [*] deck.spread(distance) uses the spread action on the deck. [*] getObjectsWithTag(string tag) [*] getObjectsWithAnyTags({tag, tag...}) [*] getObjectsWithAllTags({tag, tag...}) [/list] [h2]Lua Fixes:[/h2] [list] [*] Fixed network sync bug with Xml UI by adding null check to Xml setAttribute(s) and setValue. [*] Fixed object.getSnapPoints() throwing when having no snap points. [*] Fixed loading_custom to work with custom decks and cards. [*] Fixed object.clone() sound parameter not working. [*] Fixed MusicPlayer.playlistIndex to MusicPlayer.playlist_index (old way still works). [*] Fixed Grid calls not working over network. [*] Fixed Grid.snapping not working. [*] Fixed showHotkeyConfig working over network. Added color parameter; dialog will be shown to that player. [*] Fixed onObjectRandomize and onRandomize not returning correct player colour. [*] Fixed Physics.cast not returning list in correct order. [*] Fixed Group action ignoring tryObjectEnter and tryObjectEnterContainer. [/list] [h2]System Console[/h2] [list] [*] Added commands for options detailed in Misc Settings above. [*] Added language, language_... commands for selecting current language. [*] Added translation_export, translation_import, translation_for... commands for working on translations. [*] Added translate command to translate an English term into the current language (if TTS knows it). [*] Added hotseat_name_..., hotseat_start_turn, and hotseat_end_turn commands. [*] Added pointer_position command. [*] Added lift_height and rotation_degrees commands. [*] Added action_spread and action_layout commands. [*] Added ui_clear command to clear UI generated by other commands (e.g. ui_button) [/list] [h2]Fixes[/h2] [list] [*] Fixed major bug when saving stuff to cache not overwriting but writing on top of and maybe deleting garbage at the end. [*] Fixed url redirect issue when trying to load assets from the web with expired certs error. (Curl error 51: Cert verify failed: UNITYTLS_X509VERIFY_FLAG_EXPIRED) [*] Fixed chat breaking and being uninteractable. [*] Fixed bug when uploading steam cloud image thumbnail for Workshop by only allowing local files. [*] Fixed being unable to click through magnify ui to pick up objects. [*] Fixed issues with states number 95 being 96. [*] Fixed rotation values not syncing on connecting client. [*] Fixed null reference when downloading old workshop files that had null width and height deck info. [*] Fixed issue when downloading a bunch of mods with the games menu open causing an insane number of threads to spawn and blow up the game. [*] Fixed bug with FogOfWarZone and child colliders not working correctly. [*] Fixed objects with Measure Movement working on clients. [*] Fixed measuring tool logging revealing hidden object info. [*] Fixed Lift Height slider not hiding when you click away from it. [*] Fixed Pan key not working while holding a object (as long as it is not on the same binding as Flip) [*] Fixed Camera Hold Rotate key not working while holding a object (as long as it is not on the same binding as Tap) [/list] [h2]Known Issues:[/h2] [list] [*] Mac performance reduced and steam overlay not working. (Try using the Metal option when launching the game) [/list] [h2]Hotfix v13.0.1[/h2] [list] [*] Fixed not being able to put objects back into infinite bags. [*] Fixed card peek not working correctly. [*] Fixed cards not flipping correctly in Hand Zones. [*] Fixed {verifycache} not working on URLs. [*] Fixed scripting zones getObjects() not working on interactable == false. [*] Fixed VR highlighting displaying incorrectly. [/list] [h2]v13.0.1 Hotfix 1[/h2] [list] [*] Fixed issues when going from one hand zone into another. [*] Fixed reversed scroll direction on Linux. [*] Fixed exception issue that caused not being able to load a game. [/list] [h2]v13.0.1 Hotfix 2[/h2] General: [list] [*] If you are having performance issue on your Mac check your resolution in Configuration -> Graphics and lower it. [*] Fixed bag order contextual not hiding correctly. [*] Fixed tooltip for bag order. [*] Fixed `Spread` context menu item. [*] Fixed layout zone hotkey with F3. [*] Fixed using localize codes in global chat. [/list] Lua: [list] [*] Forgot to add this in the main patch notes but GUIDs are now stable. [*] Fixed scripting zone working on other zones or tables. [*] Fixed lua spawnObject callback by delaying it one frame. [*] Fixed putObject memo field no longer contributes toward object equality. [*] Fixed script_state on global not clearing between loads. [/list] [h2]Hotfix v13.0.2[/h2] General: [list] [*] Language will not be automatically set to a google translated language but default to English. [*] Added a cloud url check for workshop upload so that it doesn't get stuck uploading. [*] Added knowledge base articles for Object Tags and Layout Zones. [/list] Fixes: [list] [*] Fixed hand zones interactions to be more consistent when overlapping multiple zones. [*] Fixed issues with hand zones eating other hand zones cards being dealt to them. [*] Fixed tablets being governed by Digital permission instead of Tablet. [*] Fixed objects sometimes not being visible when searching a container due to a scrolling issue. [*] Fixed crash cashed from using a custom lut with incorrect dimensions. [*] Fixed Layout Zone not working on rotations other than 0 and 180. [*] Fixed lua issue when a client removed an item from a bag it wouldn't trigger onPickUp() event. [*] Fixed Spread contextual tooltip. [*] Fixed physics menu sliders not working correctly. [/list] [h2]Hotfix v13.0.3[/h2] General: [list] [*] Updated Unity to 2019.4.19. [*] Updated Dissonance voice chat plugin. [*] Updated Steamworks.net steam plugin. [*] Updated Skyshop rendering plugin. [*] Add "Metal" launch option for Macs, that should run the game faster but with some graphical issues. [/list] Fixes: [list] [*] Fixed issue with player hand named and portrait not updating correctly. [*] Fixed issue with guids ending up empty if the json of an object was missing the guid. [*] Fixed translating card images not working. [*] Fixed issues with server type UI messing up. [*] Fixed being able to mess around with non-active players from top-right menu in hotseat mode. [*] Fixed searching from one object to another messing up scroll position. [*] Fixed zone tooltips. [/list] [h2]Hotfix v13.0.4[/h2] General: Zones now instantly respond to settings that cause an object to interact with the zone without it having to go in and out. Lua deprecated getAllObjects() with getObjects(), old function doesn't return hand zones for compatability. (Global.getObjects() works too) Added lua tags to getObjects() on all container returns. Hand Zones now functions like all other Objects and are saved as such. Added misc setting controlling randomize zone prompt-on-load. Fixes: Fixed issue with hands not hiding for clients. Fixed up the last of the hand zone name and potrait positioning. Fixed randomize zone not prompting on load. Fixed title issue with custom translations. Fixed issue with translations exporting more than it should when uploading. Fixed issue if invalid hidden colors were being set for Hand and Hidden zones. Fixed turns menu help button link. Fixed tags getting translated version of Game Type & Complexity Fixed lua tryObjectEnter only firing on first dropped object if it returned false. Fixed lua getObjects() not working correctly with onObjectPickUp() by delaying it a frame to match prior version. Fixed lua Wait.frames() to work correctly if it was called after the Update() loop. [h2]Hotfix v13.0.5[/h2] Hey everyone this is likely the last hotfix for this update unless something else comes up majorly broken. With that said we will be likely be turning off the old version of the game on the "public beta" by the end of the week. So if you have any further issue caused by this update please report them here: https://tabletopsimulator.nolt.io/ Changes: Alt zoom doesn't hide other player's pointers anymore. Disabled the appearance of being able to turn off turns while in hotseat mode. Fixes: Fixed voice chat not working on Mac. (Make sure to accept the allow mic dialog that pops up) Fixed issue with not being able to put objects in searched container. Fixed duping bug with cards. Fixed issue with pure white color tint not syncing correctly. Fixed PDF buttons not displaying for all players. Fixed pointers not hiding correctly in hidden zones when setting is enabled. Fixed not being able to flip a Table after leaving and joining a new game. Fixed lua turn events in hotseat mode. Fixed UI click-through issue with XML UI blocking 2d UI interaction. Fixed blurry text on Language menu. Fixed contextual menu clipping off the screen. Fixed contextual menu material options text being clipped. Fixed elapsed typo on mod loading. Known Issues: Mac performance reduced and steam overlay not working. (Try using the Metal option when launching the game)