Official development blog

Exploring the Concept of a Terminal Roguelike “Overmap”

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.

Method

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!

cogmind_overmap_development_text_vs_map_cells

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.

 

cogmind_overmap_development_four_cells_in_one

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 200×200 map like Factory could be displayed in a 100×100 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.

cogmind_overmap_wip1

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 ;)

cogmind_overmap_wip1_highlighted_explorable_edges

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 :)

overmap_development_annotation_sample

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:

cogmind_map_export_pimski_garrison_clear

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’s been garnering a surprising number of votes, at one point in the lead though more recently falling to second place as item searching and filtering somewhat overtook it.

This entry was posted in GUI and tagged , , . Bookmark the permalink. Trackbacks are closed, but you can post a comment.

2 Comments

  1. Menderbug
    Posted November 9, 2020 at 5:43 pm | Permalink

    Another interesting (though maybe slightly gimmicky) use for the overmap might be an option to show the path the player has taken, like Breath of the Wild does (with DLC). Probably not necessary for experienced players, but it might help newer players put the space in context.

    • Kyzrati
      Posted November 9, 2020 at 6:01 pm | Permalink

      Ooh that’s an interesting one, yeah! Also easy to do--I like easy optional features that people might find handy :D

      Not only helpful, either, I’d love to see maps like that shared by players. Could potentially even be added as a feature to the map exports (although more complicated in that case since it’s not a mode of its own, just a single command).

Post a Comment

Your email is never published nor shared. Only the anti-spam entry is required. See here for the privacy policy.

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>