Llama VTT
Hybrid 3D / 2D Virtual Tabletop
A virtual tabletop built from scratch in Unreal Engine 5 — where players can switch between a full 3D perspective and a clean 2D top-down view in the same live session.
I've been playing Dungeons & Dragons and other TTRPGs for years. Like a lot of people in that world, I've cycled through the usual virtual tabletop options — each one a compromise between ease of use and visual fidelity. The 2D ones are quick to set up but feel flat. The 3D ones look amazing but are heavy to run and painful to build maps for. I always wanted something in between, and I never found it.
As a Technical Artist, I spend most of my professional life in Unreal Engine — building render systems, managing GPU budgets, writing shaders, designing pipelines. When I started thinking about building a VTT, it stopped being a "wouldn't it be nice" and became a genuinely interesting technical problem. One engine. Two rendering modes. Both camera rigs live at the same time. Every asset ships with both a 3D mesh and a 2D flat version. The runtime swap is a subsystem call. I knew I could build that.
I've been planning this since early 2026 — researching engine architecture, P2P networking without a dedicated server, how to represent map data in a file format that's version-control friendly and Obsidian-compatible. The kind of planning that only makes sense when you're also the artist, the programmer, the architect, and the player at the same table.
Llama VTT is built the way I'd build a production system at a studio — with a proper subsystem architecture, typed C++ classes, a defined source folder structure, and a roadmap. Except this one is mine.
Most virtual tabletops make you choose: either you get a flat 2D token-on-map experience (fast to set up, easy for players) or a full 3D scene (immersive, but heavy). Llama VTT doesn't force that choice — the GM builds the map once with dual-mesh assets, and anyone at the table can switch modes on the fly.
It's also built with the assumption that GMs are already living in tools like Obsidian. Rather than duplicating campaign data, .lvtt files are designed to be generated from vault exports — so encounter notes, NPC stats, and location descriptions flow into the VTT without double-entry.
This is a personal project I build alongside professional work — documented publicly because the architecture decisions (HISM baking, render mode subsystems, EOS P2P from scratch) are worth writing about.