GM Kit (tentative)
GM Kit is an application designed to help GMs who run games in-person with second screen digital/virtual enhancement, (TV in table, projector, etc...). This app lets GMs add dynamic lighting to their maps, and manage local audio tracks.
GM Kit code repository
Some pros of GM Kit:
  • There are no accounts or sign-ins required.
  • No information is stored or tracked anywhere aside from a small local config.json on the user's computer.
  • Any image can be turned into a map with dynamic lighting by adding walls.
  • Local audio track management and integration (I wouldn't say it replaces things like Spotify, but it helps supplement it).
  • Can be used entirely offline (except for the smart bulb support).
  • Grid and Spell Marker support lets guesswork be taken out of what squares/cells are affected.
  • Simple (hopefully) to use, get up an running configuring maps within minutes.
...and some cons:
  • There are no enemy or player character tokens or trackers at the moment. The app is currently best suited for those who have non-digital minis and tokens for use on top of the virtual maps.
  • No files are included with the software. All maps and audio must be supplied by the user.
  • No smart bulbs are included with the software.
...and some stuff I want to add:
  • Distribution of .json files for maps. I can't supply the maps, but I can supply the .json files for the maps.
  • More smart bulb support (Philips Hue).
  • Better audio management (playlists and whatnot).
  • Continually improve the random info/name generators.
  • Simple map maker, nothing fancy, but enough to create a simple map with recognizable terrain and auto populated walls and doors.
Maps: Walls and Dynamic Lighting
The app works by asking for a folder of maps when you first go to load one. This will populate a modal allowing you to see which maps have walls added to them (complete) and which ones don't (image only). Walls can easily be added to the map by drawing them on wherever you want, which are then used for the dynamic lighting on the map.
  • Walls can be added anywhere for custom dynamic lighting.
  • Doors can be added, which can be instantly opened or "dragged" open for full or partial light.
  • One Way Walls can be created that allow all light through in one direction and completely block it in another. This helps with terrain that has height variances. Block light/visibility to the top of a cliff, but allow the top of the cliff to look down over everything.
  • GM and Player screens can be zoomed independently.
  • A custom Overlay Grid can be added for maps that don't have one or for maps where Spell/Shape markers are wanted, this grid should represent a 5' grid system, and will be saved when the map is saved.
  • Spell/Shape Markers can be placed (line/square/circle/cone) to mark spells and see what grid squares are affected. Spell Markers are not saved to the map and will go away between closing and opening the app. This currently requires the use of the overlay grid, as the spells use the grid to determine a 5' square for sizing.
Good sources for maps:
Audio: Local Track Management and Player
By pointing the app to a local folder of audio tracks, they will all become available to play and manage. Tracks can be searched by name or folder, and can be tagged for easier searching. Tracks can hold any number of tags, though the UI may not like it at the moment. Tracks simply loop when ended (unless looping has been turned off). Previously played tracks are saved to help when switching between tracks
  • Easily view and manage a tree of local audio tracks.
  • Collapsed sections are saved and will remain collapsed upon app relaunch.
  • List of previously played tracks is kept to keep audio switching easier during play.
  • Previously played tracks are saved and loaded on app launch.
  • Tracks can be tagged for easier searching.
  • Tracks can be searched for by using the name, tag, or folder name.
Info: Random Name and Quest Generators
Several small generators to help come up with names and places on the spot. Names are split between races and gender and any number can be generated at a time. Clicking on a result will mark it to remain in the list during the current app session.
The names mainly came from: