Home Artists Posts Import Register

Content

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 this possibility about a year and a half ago, just to kinda work through what an implementation might entail, and what benfits 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 I recently 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!

Text cells vs. map cells:

Displaying four map cells in two text cells using foreground and background colors alone:

So in square terms 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.

Here's 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 big 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 likely 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--could lead to a fair number of unforeseen complications or restrictions though, hard to tell without testing it out). But obviously players want polished features in their roguelikes, so it would kinda suck 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.

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 rewriting this feature today (the original implementation and state I left it in was, uh, not good xD) 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 tricky Garrison Access in -8/Materials ;)

Here's a demo of using such a feature in combination with a partially-explored Factory map:

Anyway, that's my notes on this topic so far. Maybe this will make it's way into the game one day. Maybe I'll just put it on the next voting list to gauge interest compared to other options!

Comments

Jayden Foxx

Perhaps some user-assigned map markers would make this even more useful? Looks really good how it is now for a quick look at most of the map, so some waypoints would fit well.

Kyzrati

Absolutely I'm sure that'd help, and it's actually already been requested before for the regular map, which is where it might appear one day. The overmap is not likely to become a feature, just an idea I was playing with. It's an example of a feature that's difficult to add at all because it will always be substandard in various ways due to the limitations. Just yesterday I added player notes for the log, however, and the next step after that would be player notes for the map, but it'll be much more complicated to add that one so I haven't gotten to it yet.

Jayden Foxx

Ah okay that makes sense. I'm excited for the future :D