Tabletop Combat Map

OVERVIEW

I’ve been playing Dungeons and Dragons with a group of friends for a few years now and I wanted to build a simple system for creating on-the-fly combat maps for our at-home games. This would help me further increase my skillset in Unity and C# scripting as well as provide a new tool for my friends to use.

Skills learned

  • Unity Asset Bundles

  • Resource Loading and Dictionaries

  • Unity GUI Layout Elements

  • Unity Tilemap System

 

Trailer showing current tabletop combat map prototype

Project Management

I began this project with a lot of ideas in mind - terrain editing, day/night lighting switch, interactive props, LAN connection so every player can place their own character or move them on the map - but decided I needed to scale down my scope significantly since I wanted to get a first prototype to my friends. While working on the project, I realized keeping things simpler meant focusing on this prototype more as a tool and less as a game. I want it to function as a useful addition to an in-person game but not overshadow the actual play of players interacting with each other at the table.

Challenges

  • Asset Bundles: I had never used unity asset bundles but I wanted to be able to import purchased 3D models from HeroForge so players can have their custom characters on the board. After some trial and error, I was able to successfully load imported asset bundles and assign them to a gameobject to be cloned in the tool.

  • Creating a building system: At the beginning of the project, I had no idea where to start with a building system. I found some helpful tutorials to reference and was able to create a building system that also allowed to additional data to be stored with character and enemy gameobjects.

  • Layout Elements: As an experienced UX designer, I am very used to making sure the UI of an application scales on different screen sizes and behaves how you would expect. This was my first time using Unity’s layout elements and it took me several rounds of iteration to get them to work for me and not against me.