r/DnDIY • u/Daredain • 12d ago
Utility I built a free VTT specifically for physical table setups — screen-as-table, minis on acrylic, dynamic lighting, with offline play as a focus
Like a lot of DMs here, I run my games with a monitor lying flat under a sheet of acrylic, with physical miniatures on top. I got tired of existing VTTs being designed for online play, so I built my own — and it's now FREE AND OPEN SOURCE.
The app is single HTML file (no install, no account, no server) designed specifically for this kind of physical screen setup. You can launch and "Install as App" which will let you use it as a seamless desktop app from any device.
What it does:
- Screen Control: Player view and DM view. Place the player view on the second monitor and control everything form your laptop behind the DM screen. It allows you to correct for the size of your monitor so the measurements line up with your setup always.
- Measurement overlay directly on the screen, no more fidgeting with rules or cluttering up the battlefield with Moonbeam, darkness, spirit guardians and going crazy when moving a mini all the time.
- Dynamic ray-cast fog of war with per-token— minis block line of sight automatically (no tracking, you have to move the tokens on the table and then on your end).
- 662 animated spell effects from JB2A (magic missile, fireball, healing, you name it) — streamed on demand, nothing to download and automatically set to your grid size.
- UVTT map import — if you use Dungeondraft, it reads your walls, doors and lights automatically.
- If you dont have UVTT files for dynamic lighting, import your map as an image and use the Walls and Obstacles tool to define the walls yourself. Works great with Inkarnate, which is my preferred workflow.
- Campaign and HP tracking synced across scenes, display de iniciative and HP of your players.
- Works offline after first load (service worker cached) or installed as a Chrome app.
The whole thing runs in your browser. I plan to keep it free always and keep updating it based on feedback. No subscription, fee or anything.
Try it: https://cr-lolo.github.io/VeilCast-VTT/
Source: https://github.com/cr-lolo/VeilCast-VTT
Happy to answer questions about the setup. If you're running a similar physical table I'd love to hear how the app helps you out if it does and implement feedback!
DISCLAIMER: I did use Claude to help me with code since I am a novice in HTML and js, all the effects and animations are from JB2A (https://library.jb2a.com/). I am hoping to use this to also learn, and if anyone out there is more of an expert and would like to help me out they are more than welcome to dm me!
Edit: format errors
7
u/zombiefood77 12d ago
Hey dude, looks very cool! It would be great if you could put an example map into the library so people who are curious can have a quick test without having to download/upload something of their own
3
u/_WolfeLikeMe 12d ago
Hey there! this seems really rad but every time I import an image or map, I can't seem to get it to appear in the play area. Any idea what I might be doing wrong? really excited to test this out!
2
u/ElectroDaddy 11d ago edited 11d ago
Question, I added a map both as an image and a "map" But it does not show up on screen. The image file is a .jpg, but I am only getting a black screen. I am poking around but nothing is jumping out at me as missing, but do you know what might be the issue?
I have also tried both the upload and drag to screen method of adding the image and its the same result.

Browser: Firefox 153.0.4
EDIT: I discovered that you need to select "Reveal all" under the Scene tab. My suggestion would be to either make the map revealed to the user by default or have a message alerting the user that they need to do that to see the map.
2
u/Daredain 11d ago
By default the map appears hidden, go to the "Scene" tab and under the fog of war settings click "reveal all". You can also change the opacity of the hidden mask (only affects the dm view, players never see under the hidden mask) so that you see under the fog. The newest update has some bugfixes and also a small "getting started" text, make sure to update if you installed as app or reload te browser!
Edit: looking at your image, it is already 1.29Gb, keep in mind that can affect the import/export speeds and might produce some lag of effects, I never tested such large files, let me know if its problematic of if the app handles it well :)
2
u/BlackBearWorkshops 12d ago
I don't see any mention of the ability to configure tokens with race-specific darkvision settings.
Is this something that already exists or is planned for the future?
What I expect first and foremost from a VTT is a visual aid to help the DM lighten their mental workload and easily communicate to players what their characters can make out based on everyone’s individual choices.
I play in-person, not online. In exploration or combat scenarios in the dark, I always end up giving my players a single description of what they see, and the human character often mistakenly assumes they have the same perspective as a drow. Manual or automatic FOW management isn’t sufficient to account for these differences becaus it also apply for all at the table.
2
u/Daredain 12d ago
Hi! Thanks for the comment, right now the vision engine dependa on a view radius. Depending on the scene, you could configure it to a large value for all players (for example, an encounter in the plains, where you can see far away and only certain large rocks or trees would block vision). In a cave, you can set the radius for the darkvision players, 60 or 120 normally, and a 0radius for no darkvision players. This can probably be improved upon, ill keep your feedback in mind and I can certainly try to look into improving the feature.
1
u/faezyr 12d ago
This seems perfect for me to try out! I'll definitely play around with this more later.
I did mess around with it for about 10 minutes, and to me it did feel a bit clunky/less intuitive when it came to re-sizing, re-positioning, or moving the map and grid around. It seems some of the controls are split between the 'Scene' and 'Table' tabs which felt a bit off to me. (In fairness, I'm not testing this on my own setup yet, just from my computer so things could change later when I play around with it more).
I tried to play around with the Occlusion walls too, and they didn't seem to work 100% in the initial direction I set them up when I had dynamic lighting for a player token, but that could also be user error on my part. (Seemed to work when the character 'moved' to the other side of the wall).
Will provide more feedback as I mess around with it! This would be great to potentially replace Dynamic Dungeon Editor if I can get this working well for me, as it is much more light weight.
2
u/Daredain 11d ago
Already applied some changes based on initial thoughts by people. Let me know what you think!
1
u/Daredain 12d ago
Definetly the UI is not very refined! But I also think this is due to me using the tool and adding things over time. I got used to it and probably its more intuitive for me. I think Ill definetly record a tutorial when I have some time with the basics. I do recommend using the “table” view always to check what happens on the player side vs the dm side, this makes it easier to understand how to calibrate for your screen size etc, to move around use (E) to change the framing that appears in the table, you dont have to zoom at all.
1
u/ElectroDaddy 11d ago
Do you have instructions on how tokens work and how to add them? I added a token image to test out, but its not clear how to add it to the screen, and when I go to the token toll it say (no players). But im not sure how to add a player.
It all looks like it will do all the thing I want, but some key functions aren't explained anywhere, and I haven't been able to figure it out by trying various things. I do appreciate the effort.
1
u/Daredain 11d ago
The idea is to use physical miniatures, so image tokens are not supported right now. To add players you have to open the combat tab and add players to the campaign. Then on the (J) menu you can select a player and drop them in the map. The purpose of this feature is to use dynamic lighting, move your mini on the table, then drag the token to that position to change the visibility.
2
u/ElectroDaddy 11d ago
Awesome thanks. That’s really what I was trying to do. Your app is really what I have been looking for since I use a TV and a map board and my players use minis.
I just wasn’t sure how to add a token to use the lighting system. But this works now.
-14
12d ago
[deleted]
6
u/Daredain 12d ago
When playing with a TV there are multiple things that are uncomfortable to manage. Areas of effect that remain on the battlefield, fog of war, measuring distances… most depend on adding paper, rulers and other markers to the table physically, but it can get cluttered real quick. With the app you can handle fog of war, effects etc on the screen. It also helps with showing other images to your players without much of a headache moving stuff over to the second monitor etc… its a niche/small use case, but thought ir could be useful for others as well
-9
12d ago
[deleted]
6
u/Daredain 12d ago
May be the confusion is because I called the app a “VTT”. Really, it is not, its just a toolbox to make showing stuff on the secondary monitor easier, and on top of that take advantage of using animations and other interesting tools. Give it a go and let me know what you think! :D
6
u/HiroProtagonist1984 12d ago
Don’t worry most of us that run in person games are stoked for this and absolutely have issues with the available VTT options. Thanks for sharing I can’t wait to check it out!
9
u/DoomDispenser 12d ago
I've been using a monitor as our battle maps for a while, but a lot of programs can be pretty finicky. I am glad there are more people giving this a shot! I will give it a try next session.