Bulkhead guide
Draw a starship or station deck plan, then get it into your virtual tabletop with walls, doors, windows and lights already in place.
1. Draw the ship
Rooms and corridors
R Room: drag a rectangle. O Round room: drag a box, the room fills the ellipse. C Corridor: paint cells; hold Shift for a straight run.
Walls are automatic: two rooms side by side get an interior wall, anything facing space gets the hull. Draw one room over another to merge them. Corridors all join.
Doors, airlocks, hatches, windows
D door, A airlock (hull only), H hatch, W window. Hover a wall, the edge highlights, click. Click again to remove.
In the VTT a door opens and closes; a window lets sight and light through but stops tokens.
Fixtures
S opens the picker: consoles, bunks, crates, cryopods, a 2×2 reactor, a 3×2 shuttle and more. R or right-click rotates. Click a placed fixture to remove it. + image adds your own PNG as a fixture.
Crates, lockers, reactors, pods and containers block line of sight in the VTT; the rest don't.
Key, labels, lights, colours
N Number: click a room to add it to the key, then name it and write GM notes in the panel; the same click shows the colour swatches. L labels (drag to move). T lights, with a range in squares.
X Select: drag a box, then drag inside it to move, Ctrl+D duplicate, Shift+H/V mirror. Draw half a ship, flip it. P Partition: a wall on an edge inside a room (cubicles, half-walls).
Decks: tabs above the canvas. Ladders and lifts ask which deck they lead to; tick Ghost the other deck to see the deck below while you place them. Double-click a fixture (with Select, Pan or Number) to give it a GM note.
Starting from something
Generate a ship (File section) makes a complete keyed ship or station — intact or derelict — to edit. Open also reads two other formats. One Page Dungeon JSON (Watabou's generator, Export as → JSON): rooms, corridors, doors, bars, secret doors, stairs, columns and the numbered notes come across, in a parchment style — export it and the dungeon lands in your VTT walled. NEWT Blueprint Builder saves: the floor becomes rooms, icons become fixtures with labels, text becomes labels.
2. Export
Universal VTT (.dd2vtt) is the one for your VTT: image plus every wall, door, window and light. Set pixels per square to what your VTT expects (Foundry's default is 100; 70 is common for Roll20; Owlbear rescales on import).
PNG for a plain picture. PDF for the table: fit to one page, or tile at 1″ per square for miniatures; the room key and fixture notes print on the last page. All decks exports every deck at once. Player map strips key numbers, notes and lights for handouts.
Save the plan itself with Ctrl+S — a .bulkhead.json you can reopen and edit later.
3. Import into your VTT
Foundry VTT
- Install the module Universal Battlemap Importer (by Moo Man) from Foundry's module browser and enable it in your world. Package page
- Open the Scenes tab and click the Universal Battlemap import button.
- Choose the
.dd2vtt, give the scene a name, pick where the image is saved. Leave fidelity at the default; offset 0. - Import. The scene opens with the map, grid, walls, doors (closed), windows and lights. Enable token vision and it's playable.
Roll20
- API scripts need a Roll20 Pro subscription. In your game's Mods (API Scripts) page, install UniversalVTTImporter from the script library. Forum thread
- Export a PNG from Bulkhead at the same pixels-per-square as the
.dd2vtt, upload it to the map layer and scale it so one square matches Roll20's grid. - Open the
.dd2vttin a text editor, copy its contents into the map graphic's GM Notes (the script's thread links a companion page that sanitises the text if pasting fails). - Select the graphic and type
!uvttin chat. Dynamic lighting lines, doors, windows and lights are created.
Owlbear Rodeo
- Add two extensions to your room: Dynamic Fog (from extensions.owlbear.rodeo) and Scene Importer — paste
https://scene-importer.pages.dev/manifest.jsoninto Add custom extension. - Click the Scene Importer icon, choose the
.dd2vtt, pick a compression mode, Create New Scene. - Open the new scene. Walls, doors and lights are already on the fog layer; give tokens vision in Dynamic Fog and play.
Troubleshooting
- The grid doesn't line up. The file records pixels per square; importers use it. If you exported at 100 and your scene expects 70, re-export rather than scaling.
- Doors are all closed. That's intended — open them in the VTT as play requires.
- A window shows as a door in Owlbear. Owlbear's Dynamic Fog has no window type; the importer makes an open door, which behaves the same for sight. Foundry and Roll20 get real windows.
- Lights are dim or huge. Light range is in squares; Foundry converts using the scene's grid distance. Adjust in the VTT or re-export.
- Custom images look boxed in the PDF. The PDF is vector and draws a placeholder for image fixtures; the PNG and .dd2vtt carry the real picture.
Bulkhead is made by Bananafest Destiny. The code and this page were written by an AI assistant under human direction; all built-in graphics are drawn in code. Foundry VTT, Roll20 and Owlbear Rodeo are their owners' trademarks; module and extension names are quoted from their own pages.
Built in public by an autonomous agent — the full log is at bananafest-destiny.com/zoo/cider3.