What and why

Back from my long trip to Japan, I started back game dev, with the feature that was most requested during play tests: an Automap.

Old DRPG and gamebooks didn’t have a map, you are supposed to take graph paper and map out the dungeon as you go. Some DRPGs still require you to draw a map, sometimes, even in the game, like Etrian Odyssey. However, most games nowadays have an Automap which makes games much more accessible to the common mortal.

This article is not a tutorial but more a log of my decision-making, that I am writing for myself.

MinimapPrototype.

Making the minimap

First, I already have a strong foundation, since I was able to generate a 3D map from a JSON map generated with Tiles. I just needed to repeat the process, for 2D.

Basics

  • Generate a map of 1 layer of the dungeon with bogus data. Having bogus data allows me to test and ensure the code does not rely too much on the general codebase/game state.
  • Make the script a @tool in Godot to be able to launch generation in the editor. This speeds up the process immensely.
  • Add a hint for the player’s position. Rotate this hint depending on player rotation

Once I had this, there was a major issue: the whole map was revealed, and there would be no charting, no exploration if you could just go where you needed.

Hide it

  • Add a “visited” property on every Cell of the dungeon.
  • Every time the player steps on a cell, it is visited.
  • Add a condition to draw a tile on the map, if the cell is visited.
  • Save visited cells on the Singleton that holds player data.
  • Save this when you save the game
MinimapPrototype.

Make it a minimap

  • Add a viewport to Godot and the map to itch
  • Add a camera on the player hint so the view is always centered

Making the map menu

My game is in 3D so it would be nice for the player to be able to go around the floors to see how they should traverse the dungeon. For this, I need people to interact with the map. I decided to make a mpa menu, like many other games.

Basics

  • Reuse the map from before, without the camera.
  • Made the map pop on the screen with the button “m”.
  • Being able to change the layer displayed, with keyboard press.
  • Add an indicator of which layer we are.
  • Add 2 animated buttons that can be clicked to change the layer. They also are animated when you use the keyboard for feedback.

Now you can fairly well see the dungeon. But I wanted people to be able to do more, tell which case they are in, and be able to place notes. This is a bit bonus, but there was still time on my time budget.

Building up Note-taking

  • Add a cursor, and make it move on the grid, with a mouse or keyboard.
  • Display a hint of where the cursor is.
  • Save a position in memory, on button press.
  • Save a position and text, on button press.
  • Save a position and text coming from custom input on button press.
  • Display these notes on the screen.
  • Allow to remove those inputs.
  • Allow to edit those inputs (actually, I just removed and recreated one).

Weirdly, I was working fast on a single layer, but up until now, the location of the cursor and note wouldn’t take into account the layer, so I had to refactor a bit for this.

  • Add Z to location and notes.
  • When the layer is changed, remove displayed notes to only display those from current layers.
  • Add an Icon for notes
  • Add highlight when you go over a note

Now it’s nearly finished. If you close the map, you lose all your precious notes. So we have to remedy this:

  • Create a variable on the Singleton that holds the data related to the current state of the game.
  • Save the notes by position and level there, when you close the map
  • When you open the map, try to load the notes present on this Singleton.
  • When you save your game, the notes are written as well. When you load your game, this variable is loaded as well.

And now I have a fully featured map for my game.

There is still work needed on it:

  • Add more contrast to be able to see clearly, everything there is to see.
  • Add control hints so the player knows how to interact with the map.
  • Add a shortcut to directly take a note on the cell you are standing.
  • Test it with real players (!!!).
  • Adjust the size of the map or implement a zoom if it becomes too big (not a problem at the moment).