1. Tabletop Playground
  2. News

Tabletop Playground News

Hotfix

A quick hotfix update for some recently identified issues:

• Screen mode cursor was locked in place while holding mouse button after using tab to ping
• Drawing rectangles on surfaces at an angle could produce wrong results
• `GlobalScriptingEvents.onDestroyed` was called twice for card objects that were destroyed by adding them to another stack
• Ensure that the inserted card parameter for `Card.onInserted` has the correct id
• Opening a pdf in an external viewer caused the viewer to open for all players

April update: Drawing

The April update is here! This one mainly brings a big new feature: in-game drawing on objects! You can draw lines that other players will be able to see, and the lines are saved with the rest of the game.



• You can now draw on ground objects: select "Start Drawing" in the right click menu, and a new window with drawing options will appear. While that window is open, you can draw using the mouse. There are a couple of modes available: free draw, straight lines, shapes (from rectangles to circles), and erasing existing lines. You can also change the color and thickness of the lines you draw.
• New permission to disable access to drawing
• New permission to disable access to ground mode and locking/unlocking objects
• Show snap preview for grabbed objects when holding multiple objects and snapping multiple is switched on

Scripting
• Add support for drawing: a new class `DrawingLine` represents drawn lines, `GlobalScriptingEvents.onLineDraw` is called when a player has finished drawing a line, and new methods in `GameObject` and `GameWorld` allow you to manage drawing lines from scripts: `addDrawingLine`, `getDrawingLines`, and `removeDrawingLine`
• Add `world.nextTurn`, `world.previousTurn`, and `world.getCurrentTurn`
• Add `Rotator.getInverse`
• Zone owner slots for the final two slots (White and Black by default) did not work from scripts
• `GameObject.getExtent` and `GameObject.getExtentCenter` could cause zone overlap events when used on scaled objects close to a zone
• `SnapPointFlipValidity` had a typo (was spelled `SnapPointFLipValidity`)

Fixes
• Switching on snapping for multiple held objects caused object groups to always snap to the ground
• D6 model was slightly too small after the previous update
• Tags could be duplicated when loading save states while playing

---

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!

March Update

The March introduces a new tag system, a setting to show player heads, and lots of improvements for snap points and scripting:

• You can now add tags to objects, templates, containers, snap points, and cards. They can control if objects snap and what can be inserted into containers. Tags can also help with finding what you're looking for in the object library, card deck explorer, or container explorer. Find more information on tags in the new knowledge base page on tags.
• A new option in the game settings allows you to activate snapping when holding multiple objects
• Snap points can now have different shapes for their range: in addition to the sphere shape, their snap range can also be a cylinder or a cube.
• There are new options for snap point rotation: instead of just switching between rotation on and off, you can also set snap points to flip objects upright, upside down, or adjust their rotation to be "flat" without fixing it entirely
• A new options for snap points allow you to specify that they are only valid when the object is upright or upside down.
• While creating a snap point grid, you can now drag the grid with the mouse
• Show range for highlighted snap point whilre creating a grid
• Show a quick animation when snapping an object
• Snap range for objects with non-uniform scale are now also scaled non-uniformly
• You can now show the heads of other players. An option in the video settings allows you to activate heads only for VR players (default), for everyone, or for no-one.
• Set zoom direction for the counter 10 and counter 100 objects so they don't spin when viewed in the object zoom

Scripting
• Add methods to work with tags: `GameObject.getTags`, `GameObject.setTags`, `Container.getContainerTags`, `Container.setContainerTags`, and `SnapPoint.getTags`
• Add `getTintColor` and `setTintColor` for `ImageWidget` and `ImageButton` to allow tinting images
• Add a key parameter to `setSavedData` and `getSavedData` in `GameObject` and `GameWorld`, allowing you to organize persistent information more easily and save larger amounts of data globally and per object
• Add `GlobalScriptingEvents.onWhisper`
• Add `getShape`, `getSnapRotationType`, and `getFlipValidity` methods to `SnapPoint`
• Add `GameObject.release` method to release objects held by players
• Allow automatically wrapping text for `Text` widget using `Text.setAutoWrap`
• Execute `CardHolder.onCardFlipped` and `CardHolder.onCardRotated` when animation finished instead of when the player pressed the respective button
• Text with multiple lines on a button was not centered properly
• Inserting and removing an object from a container in the same frame caused the object to become invisible on clients
• A previously clikced UI button could be clicked when pressing enter
• `Player.getSelectedObjects` for client players only worked while holding

Fixes
• When loading a state while an active measure move was visible, the measure indicator remained visible and stuck after the state was loaded
• Snap point radius shown in editor was too small
• Some zoomed objects were rotated incorrectly when using object zoom while looking directly down
• Card stack explorer did not show web textures and could have wrong aspect ratio for cards scaled in-game
• Team chat tab sometimes wasn't visible when the local player was part of a team

---

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!

Quickfix notes

Quickfix update that addresses a couple of recently identified issues:
• Scripts with filenames containing the single quotation mark character ' could not be executed properly
• Package class was named Proxy
• "Default Color" and "Player Color" buttons in object appearance window could result in an incorrect color
• Objects with a fixed zoom direction and non-uniform scale had visual issues in object zoom

February Update

The February update is now live! Another long changelist with many new features, convenience improvements, and fixes. Some highlights are the extended object coordinates window with aligning and arranging functionality, VR hands, clipboard buttons, more shortcut keys, more scripting UI functionality, and an upgrade to a new version of the JavaScript engine.

The object coordinates window has received a lot of new functionality, in particular when using it for multiple objects:
• Add grid arrange functionality for groups of objects: Set the number of rows and the distance you want between objects, and you can arrange them in a grid at the press of a button.
• Align on edge functionality for groups of objects: align all selected objects to the same outer edge (North/East/South/West)
• Gizmos are now available when opening the object coordinates for a group of objects
• When adjusting rotation or scale for groups of objects, you can now switch between rotating/scaling each object by itself or also adjusting their positions to keep the relative positioning intact
• Add color markers for axes
• Add copy to clipboard buttons for position, rotation, and scale when scripting UI is enabled



• Add VR hands: You can now see the hands of VR players using motion controllers. A new option in the video settings allows you to turn off the hands.
• When pressing a number key while holding multiple objects, they will now be arranged in a grid with a number of rows equal to the number pressed
• Add menu button to menu bar at the top of the screen. Make the menu bar visible by default and add a setting to auto-hide (like the previous behavior).
• Add keyboard shortcuts for card and multistate object editor for the new, remove, duplicate, previous, and next actions. The shortcuts are shown in the tooltips for the respective buttons.
• Add copy to clipboard buttons for information useful in scripts in a couple of places (template id on top of the object properties pane in the editor, unique id in object and zone properties)
• Store whether you want to see names in the object library
• When placing snap points based on objects in preview mode, use object rotation as well for rotation snapping
• In the container explorer, fall back to card names instead of template names for single cards if no object name exists
• Tune camera to avoid issues when moving around on irregular tables
• Improve shadow quality in 3D maps
• Make snapping easier for small objects snapping close to each other
• Tune physics so objects (except dice) are less bouncy by default
• Clip long object names in container explorer to ensure consistent grid of objects
• Allow picking up additional cards directly from holders (using right click or V)
• Move camera back to previous position after editing an object template in preview mode to prevent camera issues
• Make context menus more flexible for accomodating long entries (which can be created from scripts)
• Adjust mirroring back of image shape cards where the shape is not centered on the image
• Increase object limit to 10000, for those really large games

Scripting
• Upgrade the JavaScript V8 engine to a more recent version (9.7). This gives you access to the latest JavaScript features like optional chaining (`?.` operator), and it makes your code run even faster!
• Add several parameters to `UIElement` that allow you to customize your UIs: `useTransparency`, `twoSided`, `anchorX`, and `anchorY`
• Add a new UI widget `LayoutBox` with several properties for sizing and aligning widgets
• Add a new class `Package` that allows you to inspect active or installed packages. You can get a package object through `GameWorld.getPackageById` or `GameWorld.getAllowedPackages`
• Add `GameWorld.setBackground`, `GameWorld.getBackgroundFilename`, `GameWorld.getBackgroundPackageId` to access and modify the map background from scripts
• Support looping sounds with a new parameter in the play methods and `Sound.stopLoop`
• Add `GameWorld.setSlotColor` and `GameWorld.getSlotColor`
• Add `skipContained` parameter for `GameWorld.getAllObjects`
• Add `GameWorld.clearConsole` to clear the built-in console from scripts
• Add `ImageWidget.onImageLoaded` and `ImageButton.onImageLoaded`
• New `keep` parameter for `Container.take`, `Container.takeAt`, and `Card.takeCards`
• Add `Container.getNextTakeIndex`, `Container.contains`
• Add `Card.moveCardInStack`
• Add `CardDetails.stackIndex`
• Add `animationSpeed` parameter to `GameObject.snap`
• Add `GameObject.freeze`
• Add `Panel.setHorizontalAlignment` and `Panel.setVerticalAlignment` for setting the alignment of all child widgets for HorizontalBox and VerticalBox
• Add methods to `CardHolder` to get/set how cards are hidden and if only the owner can interact with cards on the holder
• Update the value shown for Slider widgets while player is dragging
• Make sure that scripted UI on cards stays in the right place when the card is lifted while highlighted on a card holder
• Allow scripts to require other files more than two directories above themselves, as long as they stay within known safe directories
• Enable `GameObject.onSnapped` when snapping to snap points attached to the table
• `localRotationToWorld` and `worldRotationToLocal` could return incorrect values
• Dice rolled again through `Dice.roll` withing `GlobalScriptingEvents.onDiceRolled` did not cause another `onDiceRolled` event
• Fix requiring npm packages from node_modules on Mac/Linux
• Using `fetch` or `HttpRequest` directly when running a script did not show the "allow URL" dialog when resetting scripts from context menu
• Fix crash that occurred when moving objects into or out of a zone from within its `onEndOverlap` event

Fixes
• Unique ids (for scripting) of cards were not made available again when dragging cards onto stacks
• Translucent objects with low opacity did not get outline highlights
• Open container explorer window did not update when content of the container changed
• A small copy of the zoomed object in object zoom appeared at the origin (below the table) while zooming
• Object zoom did not show objects at the correct place that weren't positioned at their coordinate system origin
• Dragged card in stack explorer was shown as red cross
• Ensure that releasing the last object does not send it flying when held objects are clumped (after shaking the mouse)
• Object zoom with fixed zoom direction did not work properly with objects scaled in-game
• Don't allow locking cards on holders
• Fix issues with locking objects in multiplayer
• Mouse cursor was shown until clicking again when pressing Tab to Ping while chat was open
• When taking a card from the front of a stack in ground mode made of cards from different object templates, the remaining part of the stack switched to regular mode
• Selection rectangle was drawn for screen cursor while editing templates in preview mode
• Undo/Redo in the editor by pressing Ctrl+Z/Ctrl+Y could make previously edited objects appear
• Fix rare crash related to snap previews
• Placing cards from the object library while showing card fronts placed the card upside down in addition to flipping it
• Using non-uniform scale caused issues with cm measures in a couple of placed (object transform window, zone transform window, object size in editor)
• The deal and draw actions would not fill the final card on a card holder (before the card limit was reached)
• Removing cards from a holder by grouping them caused glitched images of the removed cards to remain in the on-screen hand that would disappear when clicking them
• "Include description in tooltip without delay" setting only showed names as tooltips
• Fix missing J on image for Jack of Clubs
• Fix crash related to editing image shape tokens/cards on Mac
• Rewinding could stop working on Macs

---

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!