1. Tabletop Playground
  2. News

Tabletop Playground News

January Update Hotfix

A quick hotfix for several issues that came up with the latest update:

• Zones and stored cameras were not loaded correctly from old saved states
• Imported collision models were mirrored on the X axis. This change could break your collisions if you have used collision models that are not symmetric across the X axis!
• "Save as new" in template editor would store the new template in a "Templates" subfolder if used in the main directory. It also used an invalid Guid for the new template.
• Items from (non-lazy) "Infinite Queue" containers could not be removed properly
• Global script could not be changed on Mac/Linux
• A crash could occur when adding or removing items from containers using scripting
• A crash could occur when joining a game that uses hide cursor zones
• Tooltips for delete card and delete all cards buttons were flipped
• Linux version could crash on startup
• Remember player number and direct connect settings on starting new game

January Update

Get ready for our longest changelist yet! This update is all about the little things, and lots of them: improvements to how the game looks and feels, more intuitive and powerful interactions, convenient new options and commands in various places, and removal of a couple of restrictions. In addition there are new methods and callbacks for scripting, and a lot of fixed issues!

• Slightly reduced physics speed and improved dice roll feel
• You can now drop multiple held cards at once on stacks and card holders
• You can now drop the last picked up object by holding the invert/below key (Shift by default) and right clicking
• Distance measurements now snap, you can disable snapping as usual by holding the modifier key (Ctrl by default).
• Players can now use the container explorer for containers owned by their teammates
• Containers now have a "Lazy Load" option
• Rotating objects taken from containers like the container is now optional and can be toggled in the container properties. It is disabled by default.
• New button at the top of the screen in the editor allows you to quickly reload all textures and models for the current template
• New button when editing cards or multistate objects allows you to delete all cards/states
• When editing snap points in preview mode, you can now click on objects on top of your edited object to place the snap point so that the highlighted object would snap to its current location
• Switched default right click behavior while holding from reset to picking up additional objects. The behvaior can be configured in the game options, the new default only changes it for new users.
• When picking up additional cards, always add to an already held stack when holding exactly one stack that can take the additional card
• Added context action for PDFs to open the file with the default system PDF viewer
• Improved the feeling of the middle mouse world drag, particularly with unstable frame rates
• You can now change the height of the measure line while in measure mode in the same way as changing hold height (using Ctrl+Mouse Wheel)
• Ensure that shadows for large objects (like tables) do not fade in the distance
• Your previous server name and password are used by default when creating a new game
• Show the current folder when navigating away from the base folder in object library and editor template selection
• New option for cards available in editor: hidden looks the same as card back
• Allow loading states with missing packages when starting a new game, but show warning message
• "Save as new" button in the edit template screen now saves to the same subfolder where the original template is located
• Remove intermediate anti-aliasing levels because they blurred the image too much without a clear performance benefit. Anti-aliasing is now either on or off.
• Update main menu layout and Discord/Knowledge Base buttons
• Selection outline thickness is now adapted for high or low resolution scales
• Apply number actions immediately when moving cursor away from highlighted object
• Allow files with "jpeg" extentions as images (in addition to "jpg" files)
• Make included tokens (checker pieces) flippable
• Use previous selection whether snap points are visible when reopening template editor
• Allow a decimal place for snap point rotation
• Remove 1 cm thickness restriction for card-like objects
• Don't remove existing files from target package when using the TTS importer

Scripting
• Deprecate `ScriptPanel.setEqualChildSize` for a more flexible mechanism where each child added to a `HorizontalBox` or `VerticalBox` can receive a size weight
• Don't show UI cursor for Canvas elements that don't contain interactive widgets
• Add `CardHolder.onCardFlipped` and `CardHolder.onCardRotated` events
• Add `GameObject.getScriptFilename` and `GameObject.getScriptPackage`
• Add `usingEnter` parameter to `TextBox.onTextCommitted`
• Call `CardHolder.onRemoved` directly after the card has been removed instead of directly before
• Canvas now clips the widgets inside it (only relevant when using a Canvas within another Canvas)
• Fix: `TextBox` did not show proper characters when used with default font properties
• Fix: `GameObject.localPositionToWorld` and `GameObject.worldPositionToLocal` did not work correctly for rotated objects
• Fix: `GameObject.getRotation` always returned the 0 rotator while the object was held by a player

Fixes
• Object library did not open anymore when cancelling spawning with Escape key
• Missing object thumbnails weren't saved automatically when opening package in editor
• Taking additional card stacks out of containers while holding a single card stack picked up one card from the stack coming from the container
• Formatting for long folder names in object library was not correct
• Tooltip for ground containers stayed visible when not highlighting the object while in ground mode
• Camera did not move forward in editor while rotated all the way up
• Adding cards to a held stack could change the rotation direction when flipping the stack
• Higlighted zones that remain visible outside of zone mode remained highlighted when switching cursor mode
• Model files without normals got incorrect lighting
• Card positions in card holders that were scaled in-game could be incorrect
• Initial mod.io notification messages appeared behind the new game dialog when first triggered from there
• Use the automatic texture inpainting for shape images only at the same alpha level as the shape is generated, not for all translucent pixels
• Remove error message about missing impact sound that appeared in some scenarios with "Silent" surface objects
• When saving a state, could save state with empty name after saving a state with a valid name
• Invisibility zones did not hide cards in card holders
• The card space markers for card holders were not displayed correctly when editing a card holder in preview mode
• Maximized PDF viewer stayed on top of other windows
• Uploading packages to mod.io did not work on Mac

---

These new updates we've added are just some of the many features on our early access development roadmap for Tabletop Playground, which you can check out on our Trello HERE.

Don't forget to join our community Discord to chat with the dev team and give us your suggestions for new features for the game!

Custom backgrounds and tidying up



The new update brings many more improvements to the game! Highlights include custom backgrounds, subfolders for resources and templates to keep your packages tidy, and several control tweaks. Here's the full changelog:

• The session options now include a background setting where you can select an image to use as background. In 3D maps it will replace the sky (if it is visible on the map). Use HDRI images to get a background without stretching. Your selected background is saved in the game state.
• Object templates can now be organized in folders within packages.
• Resource files (textures, models, sounds, fonts) can now be organized in subfolders.
• You can now pick up containers and card stacks by double clicking in addition to clicking and holding
• Tweaked throwing: when only moving the cursor slightly, throw velocity is reduced. When moving quickly it is unchanged.
• Allow resizing and pinning the object library, card stack explorer, and container explorer windows
• Allow resolution scales above 100% (in the video settings) to improve image quality for fast computers.
• A new option in the video settings allows you to disable the rotation of object thumbnails (for example in the object library)
• Objects removed from a container now have the same rotation as the container
• Improved animation when dropping a card to the bottom of a stack to clearly show what happens
• TTS Importer now supports importing saved objects (in addition to workshop files and saves)
• TTS Importer now supports importing custom D6 by rearranging the image
• You can now switch your team in the player options and player color buttons show the associated team.
• When a new player joins, choose a free player slot that has a card holder instead of the first available player slot
• Ask for password when joining password protected friend's game through Steam
• Empty card holders can now be resized in-game. Maximum card sizes for the holder are adjusted accordingly.
• On-screen error messages are now a bit smaller and more readable
• Remove support to select DDS and 3DS file in the editor. The files can still be loaded so existing packages that use them won't break, but their use is discouraged because they may cause issues on future platforms.

Scripting
• Introduce `dealToAllHolders` parameter for `Card.deal` to optionally deal to all card holders even when no players are present
• Add `GameWorld.getTableHeight` to allow scripts to find the height of the table at different points
• Add `GameObject.getSize`
• Use generics in the TypeScript definitions for `TextWidgetBase` and its subtypes, so the `TextWidgetBase` are recognized to return the correct subtypes. This makes these methods more convenient for TypeScript users, it doesn't change anything in JavaScript.

Fixes
• Fix window size of zone permissions
• The size of the 3D cursor selection was slightly larger than the visual area
• Don't select objects when touching their attached UI with 3D cursor drag selection
• Fixed a crash that occurred when using empty Border widgets in multiplayer
• Model files with filenames that contained non-english characters did not work
• .obj files that were missing the newline at the end of the file were missing one triangle in-game
• Global snap points (like in Domino) weren't always working properly with the 2D or screen cursor

---

These new updates we've added are just some of the many features on our early access development roadmap for Tabletop Playground, which you can check out on our Trello HERE.

Don't forget to join our community Discord to chat with the dev team and give us your suggestions for new features for the game!

Teams, Text, and Trading Cards


The latest update is now live: It introduces teams, card browsing in the object library, and a new cursor highlighting option. Find out more about teams in the knowledge base: https://tabletop-playground.com/knowledge-base/teams/
When using scripting, you now have a lot more options to customize the appearance of text, you can even use your own fonts! In addition, you can now add metadata to templates and single cards in the editor and access it from your scripts.
Finally, Tabletop Playground now includes Steam trading cards! You earn cards through playing and collecting a full set earns you emoticons and profile backgrounds.

• You can now define teams for players. Players on the same team can see each other's cards and chat or talk with each other privately.
• You can now spawn single cards out of card decks directly from the object library: on hovering, card decks now have a search symbol. Click on it to open the list of contained cards.
• A new game setting allows you to switch from highlighting objects (when hovered by the cursor) by lighting them up to showing an outline instead
• When trying to start a game with a package that has no starting states, you are now redirected to start with an empty table. The respective package will already be active in the new game.

Scripting
• New customization options for all widgets that include text: You can set bold, italic, and color. Or set a completely custom TTF font.
• Add Text.setJustification and Text.getJustification to control text alignment
• Add TextBox.setBackgroundTransparent and MultilineTextBox.setBackgroundTransparent to allow for more flexible text box styling
• Add onTextCommitted events for TextBox and MultilineTextBox
• Add Canvas.updateChild to change coordinates of widgets on a Canvas
• You can now add metadata to object templates and to single cards within card templates. You can configure the metadata in the editor, there are new text fields in the object properties and card properties. You can access the metadata using GameObject.getTemplateMetadata and CardDetails.metadata
• New scripting methods to deal with teams: Player.getTeam, GameWorld.getSlotTeam, GameWorld.setSlotTeam
• Various improvements to API documentation

Fixes
• Fix memory leak in upload mod screen
• Create stored objects folder automatically if missing
• Copy the node_modules directory with the API definition to user or custom package directory to enable autocompletion in VSCode when not using the game directory.

---

These new updates we've added are just some of the many features on our early access development roadmap for Tabletop Playground, which you can check out on our Trello HERE.

Don't forget to join our community Discord to chat with the dev team and give us your suggestions for new features for the game!

Convenience Update


The next update is here! This one is all about convenience: it brings a new PDF viewer, better object zoom capabilities, grabbing additional objects, selecting multiple hand cards, a new environment selection and more. In addition, the Linux version is now out of Beta and officially listed on the store! Here's the full changelog:

• You can now open a PDF viewer window for PDF Multistate objects. The window can be resized, pinned, and maximized to the side of the screen.
• The notes window can now be resized and pinned
• Allow rotating object manually while using object zoom by holding left mouse button
• Allow moving around object zoom of card-like objects by holding left mouse button
• A new action is available for grabbing additional objects, mapped by default to "V". You can use it to grab objects at the cursor while you're already holding something. You can also grab more objects from a container, and more cards from a stack. You can change the right mouse configuration in the game settings to return to this action instead of resetting positions of held objects.
• Support selecting and moving multiple cards in holder
• Select environment in new step when creating new game instead of using drop down box
• Save states now store the environment in which the state was created. It is selected by default when loading the state.
• Add black and white as standard player colors
• When starting a new game with a state that needs packages you don't have, show the missing packages with an option to download them immediately (similar to the list of packages in the server browser)
• Player buttons are now highlighted instead of disabled for the selected player
• Add button to open package folder in file browser to package editor
• Add `GameObject.setScript` to allow changing object scripts from scripting
• Add `Card.getAllCardDetails` as a convenient way to get all card details in an array
• Show message when a player randomizes a multistate object
• Show tooltip for ground containers when hovering with regular cursor (to indicate that you can pull objects from the container)
• Support dragging from card stacks and containers by moving mouse even when the cursor doesn't leave the object

Fixes
• Ensure that comparison of `SnapPoint` returns true when comparing two references that point to the same snap point
• Reset the `onCustomAction` event when a state is loaded or scripting is reset
• Screen mode mouse cursor didn't move while mouse button was pressed after using the preview mode template editor
• Adding cards to a stack with animation from within its `onInserted` event caused the added card to get deleted
• Dragging view stopped when hovering over scripting UI elements
• PDFs with non-ANSI characters could not be loaded
• PDFs with many pages caused slowdown in editor
• Allow adding local-only packages to a game
• Script filenames with a ' character did not work

---

These new updates we've added are just some of the many features on our early access development roadmap for Tabletop Playground, which you can check out on our Trello HERE.

Don't forget to join our community Discord to chat with the dev team and give us your suggestions for new features for the game!