Overhead Map

BlitzMax Forums/BlitzMax Programming/Overhead Map

blackwater(Posted 2012) [#1]
Hi all. I'm currently working on an isometric RPG, in the category of the old Fallout games. I'm going to need an overhead map of some kind for various game levels.

I have a decent handle on all of the other functionality a game like this will require but the overhead map is one area where I'm not even sure where to begin.

Ideally, the map will contain an exact replica (but miniature) of the current level the player is on. The other idea is to simply draw lines of the various parts they explored but I'm not really sure how that would work, or to be exact, how to keep the proportions of the level the same when drawing a much smaller scale of it.

I did a bunch of searching on the forums here but can't find anything. I'm not asking to be handed all the answers or for anyone to do the work for me, just some ideas on what makes the most sense with Blitzmax and where to begin on something like this. Anyone? :)


matibee(Posted 2012) [#2]
What scale would the mini-map be? 1 pixel per tile would be easy to pull off, you could even automate its generation by using the colours of the main tile averaged into the pixel colour.

How big are your maps? You could probably store the minimap data straight into a TPixmap meaning you could draw and store in one place.

Visibility could be controlled by only filling the pixels of the map when necessary.


blackwater(Posted 2012) [#3]
Right now I'm not sure how big the maps will be in terms of pixels. I don't plan to have one large level but will break it down into sections. Off the top of my head, perhaps internal levels will be 5000p by 5000p. Outside levels probably twice that.

That's a pretty interesting idea with the tpixmap, never thought about that but I know exactly what you are saying.


TomToad(Posted 2012) [#4]
Maybe use SetVirtualResolution() and draw the level normally. Some Pseudocode:

Local MapMode:Int = false

While In the game loop
    If SwitchToMapMode
          MapMode = true
          SetVirtualResolution(1600,1200)
    End If

    If SwitchToGameMode
          MapMode = False
          SetVirtualResolution(800,600)
     End If

     DrawLevel()
     Flip
Wend