Glow, lights, web browser, and grid

Tabletop Playground continues to evolve: over the past months we’ve added many new features and improvements. You can find the highlights below and the full list on our Discord:

  • You can now add Emissive Maps to models in the editor: They work like a regular texture, but emissive colors are not affected by lighting and look like the object is lit by itself. The red color channel of the new emissive map makes the color at that point emissive, the larger the red value is the more emissive the part of the model becomes. Fully red will make most colors glow. The other channels in the emissive map are not used for now.
  • Cards and multistate objects have a switch in the editor to make them emissive, effectively switching off lighting for them
  • The object coordinates window now allows arranging object into a hexagonal grid
  • A new option in the advanced interface settings allow you to change the behavior of the Flip/Upright key (middle mouse/F) when holding a group of objects: instead of flipping or turning to their default rotation, align all held objects to the rotation of the grabbed object
  • You can now place text labels. Labels can have different colors and sizes as well as custom fonts. They don’t get blurry at larger sizes or zoom levels. Apart from a fixed text, you can also set labels to show the name of the player in a selected slot. Press K to toggle label mode.
  • A new UI element for cursor modes is available in the upper left corner. It allows you to see your current mode and quickly switch to other cursor modes without memorizing the hotkeys.
  • There is now a tablet object available among the “General” objects. It allows you to browse the web while playing, the active website URL is synchronized with all players.
  • Drawing now supports glowing lines: a new checkbox in the drawing dialog allows you to turn up the emissive value of your lines to make them glow.
  • Add a new option for measuring angles (in measure move mode, selected in session options): you can measure the rotation of the movement compared to a straight line as before, or the rotation of the object.
  • Add support for TGA textures. TGA files are generally larger than PNG, but they can be useful when using an alpha channel as a mask (in the extra map/mask map) because some graphics tools don’t save colors properly in PNGs when the alpha channel is zero.
  • The session options now contain a new “Grid” button where you can set options for a global snap grid: it can be hexagonal or rectangular with adjustable size, offset, and rotation as well as different visibility and snap settings.
  • The session options now contain a new “Lighting” button. Here you can set the color, intensity, specular intensity, and direction of the main light. The settings are stored in the game state.
  • When arranging objects from the coordinates or by pressing a number button while holding a group of objects, keep their current arrangement as intact as possible

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 roadmap Trello board.

Drawing, tags, and avatars

Another three months have passed and Tabletop Playground has received several large updates. As usual, you can find the full list of changes on our Discord, but here are some of the highlights:

  • 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 permissions to disable access to drawing, and ground mode together withlocking/unlocking objects
  • 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: https://tabletop-playground.com/knowledge-base/tags/
  • 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.
  • 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.
  • 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.
  • 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)

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 roadmap Trello board.

New features galore

A lot has happened in Tabletop Playground over the past months. The full list would be too much for one post, so we’ll just give a small tour of the highlights here. As usual, you can find a timely and complete log of all changes and improvements on our Discord!

Defining teams
  • You can now define teams for players. Players on the same team can see each other’s cards and container contents, and chat or talk with each other privately.
  • 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. You can also open PDF directly in your default application from the context menu.
  • Object templates and resource files (textures, models, sounds, fonts) can now be organized in folders within packages.
  • The object library, stack explorer, container explorer, and notes window can now be resized and pinned
  • 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.
Custom background
  • 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 action is available for grabbing additional objects, mapped by default to the right mouse button. 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. If you hold the invert/below key while pressing the right mouse button, you drop the most recently picked up object.
  • Support selecting and moving multiple cards in holder
  • Select environment with images in a new step when creating new game instead of using drop down box. The selected environment is now stored in the game state.
Selecting environment
  • Slightly reduced physics speed and improved dice roll feel
  • You can now drop multiple held cards at once on stacks and card holders
  • 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 customization options for all scripting UI widgets that include text: You can set bold, italic, and color. Or set a completely custom TTF font.
  • Deprecate ScriptPanel.setEqualChildSize for a more flexible mechanism where each child added to a HorizontalBox or VerticalBox can receive a size weight
Text styling and custom fonts

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 roadmap Trello board.

Linux Beta and many more updates

The latest update brings Tabletop Playground to Linux! Over the past months, a lot more has happened as well: Blindfolds, gizmos, and zones are now available along with a long list of convenience updates. In addition, scripting has received many more improvements. You can now create custom object actions, use images and image buttons in your UIs, play sounds, and much more. Here are all the changes since the last post – brace yourself, it’s a long list!

  • You can now put on a blindfold from the player options or by pressing a key. Blindfolded players can’t see anything that happens on the table, but they can still participate in the chat. Everyone can see who is currently blindfolded. Putting on a blindfold also works in VR.
  • Every player can now add packages to a running game. Previously this was only possible for the host. In addition, you can now add packages that other players don’t have yet, they will be asked to download it. Once all players have the package installed, it gets added to the game and is available immediately.
  • Shaking the mouse while holding objects now clumps them together. If you hold card a card stack and shake the mouse, it will be shuffled. Sensitivity can be changed in the game settings.
  • Added an option in the card editor (also used for tiles/tokens): When using image shapes, flipping the back image can now be turned off
  • Allow changing gravity in the session options
  • A new option in the advanced game settings allows you to use the object zoom on ground objects even when the cursor isn’t in ground mode
  • Allow showing names in container explorer, show and filter on template name if objects have no name
  • Don’t allow taking from or dropping to the underside of card decks when peeking is not permitted
  • Duplicating a package in the editor now keeps template filenames if they are different from the template GUID.
  • Transform Gizmos: When opening the object coordinates window for a single object, a gizmo appears: it can be switched between move, rotate, and scale modes and allows you to quickly change each using the mouse.
  • Allow moving camera while UI is open
  • Turn off physics for objects while coordinates are modified
  • You can now add favorite directories in the file browser
  • New option for camera angle snapping: in the game settings, you can set an angle increment (like 60° or 90°) to which the camera will snap when it gets close.
  • Don’t allow flipping cards in stack for image shape cards (can lead to visual issues)
  • Zones are now available! They allow you to change behavior in restricted parts of the playing area. Each zone behavior can be set to affect everyone, nobody, or only owners of the zone. You can set any player color to be an owner, and zones can have multiple owners. The available behavior switches are:
    Object visibility: Objects in the zone can be hidden.
    Object interaction: Objects in the zone can’t be interacted with (but they remain visible).
    Cursor visibility: Player cursors in the zone can be hidden from other players.
    Snapping: All snap points within the zone can be deactivated.
    Stacking: Adding cards to stacks within the zone can be disabled.
    Inserting: Inserting objects into containers within the zone can be disabled.
    Find out more in the knowledge base: https://tabletop-playground.com/knowledge-base/zones/
  • A new cursor mode allows you to create zones by dragging and edit existing zones by clicking or right clicking. You can enter zone mode through the player options or with a new keybinding (default ‘U’)
  • The Zone coordinates window allows you to change position, rotation, and size of zones. It also activates a gizmo tool on the selected zone and works like the regular object coordinates window.
  • In the zone properties window, you can switch shape and color of zones.
  • The zone behavior window is where you define the owners and behavior switches of your zone.
  • Zone mode can be forbidden in the session permissions.
  • A new Zone object is available for scripting. You can get zone objects by using world.getZoneById, world.getAllZones, or world.createZone
  • You can now switch off shadow casting for translucent models in the editor
  • Snapping can now be turned off by default for objects in the editor

Scripting

  • Widgets can now be added again to containers (like Canvas) after they’ve been removed
  • Added Player.isBlindfolded and Player.setBlindfolded
  • Added Card.onInserted and Card.onRemoved callbacks
  • Added World.getGravityMultiplier and World.setGravityMultiplier
  • Removed deprecated Player.setPosition and Player.setRotation methods, use Player.setPositionAndRotation instead
  • New GameObject.addCustomAction and GameObject.removeCustomAction methods and GameObject.onCustomAction callback for using context menu items from scripts
  • Add Widget.setEnabled and Widget.isEnabled to allow disabling user interaction with widgets
  • Flipped the hideAnimation parameter to showAnimation in Container.insert, Container.Take, and Container.takeAt to make it consistent with animation parameters at other points in the API. This change can affect how existing scripts behave, but it only changes animations so it won’t break any games.
  • New GameObject.flipOrUpright method to flip cards and generally produce the same behavior as a user pressing “F” for a highlighted object
  • Call Card.onRemoved and Container.onRemoved when a player removes items in the stack or container explorer • Updated API definition to specify what functions can return undefined
  • Object events are now reset before the global script runs on loading a state, so you can subscribe to events from the global script (object scripts are unaffected)
  • Add Container.addObjects as an alias for Container.insert
  • You can now play sounds from scripts: The new Sound object can play sounds and music from your package or an online source. It supports WAV, MP3, and FLAC files.
  • New scripting UI widgets: ImageWidget and ImageButton allow you to display images from your package or from the internet
  • Add clear() command for the scripting console
  • Add refPackageId which contains the package id of the
  • Add GameObject.getSnappedToPoint to find the snap point that an object is snapped to
  • Add GameWorld.showPing to create ping events from scripts
  • Add GameWorld.getObjectsByTemplateId to get all objects with a particular template
  • Add GameWorld.getTemplatePackageId and GameWorld.getTemplateName to get more information about a template
  • Add Card.setCardIndexAt to allow changing cards from scripts
  • Add return value to Card.split and Card.divide: an array with the newly created card stacks
  • Don’t allow file:// protocol for http requests
  • Don’t copy description of stack to drawn cards

Fixes

  • Remove slight aliasing for tokens and cards with one card per texture when the image had different colors on opposing borders
  • Remove typos in tooltip for cursor types (#45)
  • The object zoom for some objects (like dice and books) did not move with the player camera
  • Card front image was sometimes not updated immediately when combining cards from different decks into one stack
  • On Mac, “Browse Games” in main menu did not open web browser
  • Zoomed view of multistate objects did not update when state changed
  • Correct too large return values of GameObject.getCenterOfMass
  • Fix problems with using recent mod.io uploads on Mac
  • Lines on the side to indicate number of cards in a stack were not updated under some circumstances when adding cards from scripts
  • With the screen cursor, picking up an object the first time immediately after using chat or console did not work properly
  • Zone ids weren’t working consistently and zone events were not cleared when resetting scripting
  • Measure move mode could not be activated
  • The shuffling animation for image shape card stacks wasn’t working
  • “Mirror back” option in the editor did not work fro image shape cards with a separate back image
  • Cards couldn’t be flipped right after being dragged out of card explorer
  • Tooltip now resizes properly when showing long object descriptions
  • Mirror backs of image shape cards correctly when shown in object zoom
  • insertedCard parameter of Card.onInserted event did not contain the correct number of cards when adding cards to the front of a stack
  • Don’t remove scripting UI in preview mode when changing in settings 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!

Mac Release & 50% Discount!

The Mac version for Tabletop Playground is now out of beta and officially available!

To celebrate the Mac release we’ve also put the game on discount, for 50% off!! Grab on Steam with the discount before it runs out on May 15th:

Tabletop Playground On Steam

The new update also adds more options to create complex user interfaces through scripting. It features a new category of UI widgets that group other widgets. `VerticalBox` and `HorizontalBox` give a quick way to create lists of widgets, and `Canvas` gives you complete freedom about where you want to position your widgets.

As an example of how the new widgets can be used, we’ve implemented a Dungeons & Dragons character sheet! Check it out here: https://tabletopplayground.mod.io/dnd-character-sheet-example. If you want to create your own complex UIs, have a look at the new tutorial: https://tabletop-playground.com/knowledge-base/advanced-ui-character-sheet/

Scripting
• Add `VerticalBox` container widget
• Add `HorizontalBox` container widget
• Add `Canvas` container widget
• Add `MultilineTextBox` widget
• Allow setting font size on all widgets that contain text
• Execute `On…Changed` callbacks on widgets when the respective values are changed from scripts (with player parameter `undefined`)
• Text boxes with number input types are now allowed to be temporarily empty while editing, making it easier to enter new numbers
• Removed “Reload Scripts” action because it could lead to confusing states and even crashes. Renamed the “Reset Scripting” action to “Reload Scripting” to emphasize that modified scripts are reloaded. Removed `GameWorld.reloadScripts`.

Fixes
• Fixed crash that could occur when playing with more than two players and players who joined first left the game
• Script UI buttons now play sound when pressed
• Latest Unreal hotfix version for Windows and Mac (can help with Unreal related issues)

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!