• Register
Post news RSS Exploring the Concept of a Terminal Roguelike "Overmap"

Exploring how to build a minimap alternative designed for a traditional terminal roguelike.

Posted by on

Lots of games have "minimaps" allowing you to view a greater area than normally visible in the game screen, although (except in maybe a few rare instances) these usually aren't games with displays limited to a strict terminal grid like we have with Cogmind. After all, you can only "zoom" so much given the restrictions of such a grid.

That said, it has certainly been requested multiple times before, so I first explored an alternative possibility last year, what I've been calling an "overmap," just to kinda work through what an implementation might entail, and what benefits it could provide us with.

At the time it didn't get very far since it was a spur-of-the-moment type of little side project and I got too busy with other features later, though the rudimentary code and interface have actually been in the game all this time and some weeks ago I picked it back up again to play with the idea some more.


So what's the best option here--how much more information can we really show using an alternative display method that obeys the grid?

Fortunately for us Cogmind does technically have a narrower grid than that used by the map: the grid on which text is displayed, and which represents the actual base terminal grid underlying the program. Map cells each occupy the same amount of space as two of these text cells combined. Purely by taking advantage of that fact, we could use text cells to represent map cells in order to narrow the map into half as much space horizontally.

Then we can get even more creative and use a CP437 character, the half block, placed in every single overmap "text" cell to divide it in half yet again, this time vertically. Then the foreground color of a cell, that coloring the block itself, is used to represent one map cell and background color represents another. Altogether this allows us to compress four map cells into a quarter of the space!

Comparing text and map cells in Cogmind. Notice how the square '#' cell (an ASCII mode wall) occupies the same amount of space as two letters ("nd") below it.

Representing four map cells in two text cells using purely foreground and background colors, also showing how the wider room looks when converted to the colored block method.

Using this method, a 200x200 map like Factory could be displayed in a 100x100 area (one quarter of its normal size in pixel terms as well), 35% of which would fit in the usual map display area, and 48% of which could appear if we expand the "overmap" to fill the entire Cogmind window! In other words, using this method we can squeeze an entire Factory map into approximately two screens worth of visual data.

A quick demo of opening a Factory map in its basic overmap form.

Some Pros and Cons

As you can see it loses a lot of detail, but I mean it's essentially just a "huge minimap" so that's inevitable :P. In that sense I've always been skeptical of how useful it really is considering you can already 1) see such a large area at once on Cogmind maps due to the relatively small grid (by default containing more cells at once than almost any other roguelike) and 2) easily pan around the map at full detail and get all the normal features and benefits of doing so.

I can see it coming in handy to more quickly skip the map view focus to a specific distant point on the map, at least via mouse (this aspect would perhaps be somewhat less useful for keyboard users in that regard?).

Certainly more worrisome from a development perspective is that there wouldn't be a whole lot of interaction possibilities due to the fact that half-cells cannot normally be distinguished and interacted with separately in Cogmind's engine, although technically I guess it might be feasible to get the engine to make an exception here (basically have the overmap ask it for extra info when necessary--this could lead to a fair number of unforeseen complications or restrictions though, hard to tell without further testing). But obviously players want polished features in their roguelikes, so it's not all that desirable to release a feature that either can't be polished due to limitations, or isn't worth putting in a huge amount of effort to polish for limited returns. Features like this are usually best avoided because they're more likely to lead to unhappy players. These are some of the primary concerns that have been keeping me from doing much with the overmap all this time.

That aside, what other benefits could we potentially get out of something like this? Naturally based on its greater range of visibility we can assume many of its features would be associated with the idea "exploration." Cogmind's main map view already has a good bit of this in the form of intel and labels for off-screen objects, but perhaps a dedicated display would lend itself to additional uses instead of simply highlighting known stairs, for example.

One interesting idea I had while working on the foundation for this feature was to have an optional highlight for areas that haven't been fully explored yet. Combined with player "map sense" this could perhaps help realize that an exit may have been passed somewhere, or remind that a particular door wasn't opened, or even for tracking down that elusive Garrison Access in -8/Materials ;

A partially-explored Factory map with edge highlighting.

Another common request related to this sort of feature would be the ability to add annotations. I'm not really sure what people would use it for, but I've added some random samples here as an example of what that might look like :)

Sample optional map notes superimposed on the overmap to describe certain locations.

Aside from gameplay use, I imagine some players might also be interested in using this feature to annotate how certain battles/adventures across a map progressed in order to share with others (or just for their own records). Some players do this already, but using either screenshots or Cogmind's full map export-to-PNG feature:

Sample map export image from a run shared by Pimski. Exporting a map to an image creates a large PNG showing all areas that have been explored so far.

It's also possible that we'll one day get on-map annotations regardless of the overmap, and those could transfer between the two automatically.

Despite my reservations regarding the overmap feature, I did add it to the feature voting list for patrons where it garnered a surprising number of votes, at one point in the lead though eventually falling to second place behind the item searching and filtering overtook it.

Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.