VTT Desktop Client
A simple and lightweight, chromium based, desktop client for your virtual tabletop games.
This project is no longer officially supported, it's instead supported by community members. If you have any issues, use the repository's issues tab to report them.
Usage
Simply download the zip file from the Patron post, extract it, and run the executable (vtt-desktop-client.exe). Forge Login is currently not supported (only public games) For non-windows systems, Follow the multi-platform release link and download your system's version installer.
Performance
The classic question: "Is it better than the browser?". The answer is: "It depends". The client is based on chromium, but since there is no stuff around it or running in the background it will generally use a bit less resources. If you are using a powerful computer, you will probably not notice any difference. If you are using a weaker computer, you will probably notice a difference. How big is the difference? It depends. Theoretically the VTT Desktop Client will not perform significantly better than a clean Edge install with only one tab open and no extensions and with all the hardware acceleration\gpus setup correctly.
So, what i can say for certain is. If you are using chrome with a lot of extensions (or other browsers for that matter) and you have weak hardware, you will probably notice some improvement.
Customization
If you used the Setup to install the client, you can find the config.json
file in the C:\Users\%your_user_name%\AppData\Local\vtt_player_client\app-%version%\resources
folder.
You can pre-configure and customize the client by editing the config.json
file. From where the executable is located, you can find the config.json
file by navigating to the resources/app
folder. You can edit the file with any text editor.
Config Options
Be mindful of trailing commas, they are not allowed in JSON. If you want, you can use an editor such as VSCode or an online tool such as JSON Formatter to validate your JSON.
This is an example configuration file:
{
"games": [
{
"name": "This is the name of my game",
"url": "https://url-to-my-game.com"
}
],
"background": "https://url-to-my-img.com/img.jpg",
"backgroundColor": "#000000",
"textColor": "white",
"accentColor": "hsl(0, 100%, 50%)",
"ignoreCertificateErrors": false
}
Games
The games array is where you can add your games. Each game object has a name and url property. The name is what will be displayed on the button, and the url is where the client will navigate to when the button is clicked. These preconfigured games cannot be deleted from the client.
Background
The background property is where you can set a background image for the client. This can be a url to an image, i suggest using imgur to host custom images.
Background Color, Text Color, Accent Color
These properties are where you can set the background color, text color, and accent color of the client. These can be any valid css color value.
Keyboard Shortcuts
Control | Action |
---|---|
Ctrl + R | Reload |
Ctrl + ⇧ Shift + R | Hard Reload |
Ctrl + + or Ctrl + ⇧ Shift + + | Zoom In |
Ctrl + - | Zoom Out |
Ctrl + 0 | Reset Zoom |
F11 | Fullscreen |
Ctrl + ⇧ Shift + I | Developer Console |
Connections with invalid certificates (SSL)
While this flag could be directly added to the application, therefore avoiding this procedure, i don't plan on doing so. This is because it could be a security risk, and i don't want to be responsible for that.
While it's suggested to setup a valid SSL certificate for your VTT, if you are using a self-signed certificate or your certificate is invalid, you can follow this procedure:
From the Configuration Menu:
- Open the Configuration Menu
- Enable the
Ignore Certificate Errors
option - Save the configuration and restart the client
From the Configuration File:
- Locate the Configuration File
- Set the
ignoreCertificateErrors
property totrue
- Save the file and restart the client
Pop Outs
If you are using the PopOut! module, you will have to do a small modification for it to work, the developer has been contacted for a fix. In the meantime:
With a macro
Running this as a script macro will fix the issue:
Object.defineProperty(navigator, "userAgent", {value: navigator.userAgent.replace("Electron", "")})
You can also add this as a World Script (opens in a new tab) to automatically run it when the world is loaded.
Modifing the module
Open the popout.js
(lines 460-463) file in the PopOut! module folder, and remove or comment the following lines:
Before
// Check if popout in Electron window
if (navigator.userAgent.toLowerCase().indexOf(" electron/") !== -1) {
ui.notifications.warn(game.i18n.localize("POPOUT.electronWarning")); // eslint-disable-line no-undef
return;
}
After
// Check if popout in Electron window
// if (navigator.userAgent.toLowerCase().indexOf(" electron/") !== -1) {
// ui.notifications.warn(game.i18n.localize("POPOUT.electronWarning")); // eslint-disable-line no-undef
// return;
// }
Packaging
If you created a custom configuration file and want to share it with your players, you can simply zip the whole vtt-desktop-client-win32-x64
folder and send it to them. They can then extract the zip file and run the executable.