Need Help with Binding of Isaac style Mapscreen

Hello everyone!
I’m currently facing the difficulty to create a map screen for my procedurally generated game - in a Binding of Isaac Rebirth way. In case you don’t know that game or you want a reminder of how that looks, here is a screenshot:

(don’t mind the double or quad rooms, my game only has 1 room size for every room)

My first idea was to make 2 arrays that are stored inside the player.

  1. a list of vectors of the rooms he has visited (and rooms that are adjacent to visited rooms in different color)
  2. a list of integers that indicate the type of room that was visited (or adjacent, like above in different color)

Since my game is a first person game and not top-down, I’ll work with a line trace that is shot each tick from the camera of the player. It checks for rooms and doors that connect two rooms.
Each time the line hits a room directly, it shows it on the map in full color. Every time the trace hits a door, it shows the adjacent room behind the door in a darker shade color.

While I haven’t done this yet, in theory there is nothing that makes this too complicated for me.

But now comes the part with the UMG that I’m struggling with. What is a good way to display the map to make it look like in Binding of Isaac? My maps are in 2D as well btw.

So my first idea is to convert every vector of the real rooms into a much smaller scale and place a 32x32 image for each room of the array. My problem with that is how do I tell coordinates to an image in UMG? There seems to be no function that I can bind it to. Then I could put this into an overlay box and auto-scale it, so the map is always at a good size and centered. But this doesn’t seem possible.

My second thought is to make a big grid of max room amount by max room amount in images and only color the ones that match the vectors of rooms I’ve visited. But this creates two problems. 1 the map is always waaay too big for the little amount of rooms that may actually be shown and 2 it’s really complicated to convert each coordinate to a grid of images and I would have to work with two different set of coordinates for actual rooms and the map.

Do you know a good way to achieve a Binding of Isaac style mapscreen?

I don’t have an answer for you but I am attempting to achieve the exact same thing. The two methods you’ve mentioned and the problems with both are exactly the same conclusions I’ve arrived at. So for what it’s worth we’re in this together.

I attempted to set up the method you describe of using a grid of the max size filled with 32x32 images that I would then change based on an array of locations and types but I found it very time consuming populating the grid with images manually (10 by 10 grid) within UMG so stopped to focus on other tasks whilst I tried to think of a smarter way to tackle this.