With a little help from my friends…

(Screenshots at the bottom of this post.)

One of my design goals in Hellmouth is to emphasize knowledge and perception as alternative playstyles by making them as game-changing as combat attributes are in most games. Consequently, there will typically be a lot of information about a situation available to the player at any one time. Games that provide a lot of information can be very intimidating, and unfortunately one of my favorite games is well-known for failing to usefully communicate its rich complexity.

One of the ways that I’ll get a handle on information overload is by providing reasonable defaults but allowing the player a lot of control over the ultimate level of detail dislayed. There will be many LOD-based implementations throughout the game (such as item descriptions or combat text), but one of the most important to have is also one of the simplest to implement: a zoom control for the tactical map.

I started working on the zoom command today. I soon realized that, while I’d known that I wanted it for a while, I hadn’t really thought about the interface for it at all. I decided to start by creating some prototypes of hexagonal tiling and asking for feedback about them from #rgrd (on Quakenet).

No. 1:
 /. .\ /. .\ /. .\
|. . .|. . .|. . .|
 \. ./ \. ./ \. ./
    /A .\ /. .\ /. .\
   |. C x|. @ .|. . .|
    \x x/ \. ./ \. ./
 /. .\ /. .\ /. .\
|. . .|. . .|. . .|
 \. ./ \. ./ \. ./

I was surprised by the popularity of the first option. I found it hideous – the points look completely wrong.

No. 2
/. . \  /. .\. .
. . .| |. . .| |
\. ./A .\. ./. .\
.| |. C x| |. @ .|
/. .\x x/. .\. ./
. . .| |. . .|

The second is marginally nicer to look at, for me, but it didn’t have many fans.

No. 3
   /. .\       /. .\       /. .\
  |. . .|     |. . .|     |. . .|
.\ \. ./ /A .\ \. ./ /. .\ \. ./ /. .\
 .|     |. C x|     |. @ .|     |. . .|
./ /. .\ \x x/ /. .\ \. ./ /. .\ \. ./
  |. . .|     |. . .|     |. . .|
.\ \. ./ /. .\ \. ./ /. .\ \. ./ /. .\
 .|     |. . .|     |. . .|     |. . .|
./       \. ./       \. ./       \. ./

I initially liked the third option, but I was won over by people who pointed out that the extra spaces made the east/west hexagons look inaccessible.

No. 4
    /. .\   /. .\   /. .\
   |. . .| |. . .| |. . .|
    \. ./   \. ./   \. ./
/. .\   /A .\   /. .\
. . .| |. C x| |. @ .|
\. ./   \x x/   \. ./
    /. .\   /. .\   /. .\
   |. . .| |. . .| |. . .|
    \. ./   \. ./   \. ./
/. .\   /. .\   /. .\
. . .| |. . .| |. . .|
\. ./   \. ./   \. ./

This was my favorite layout, but nobody else seemed to like it.

No. 5
 . .     . .     . .
. . .   . . .   . . .
 . .     . .     . .
     A .     . .     . .
   . C x    . @ .   . . .
    x x      . .     . .
 . .     . .     . .
. . .   . . .   . . .
 . .     . .     . .
    . .      . .     . .
   . . .    . . .   . . .
    . .      . .     . .

Someone did like this layout, but most people either didn’t care for it or disliked it. I found it pretty uninteresting.

I decided that my personal preference for the fourth layout, combined with the utility from having borders around each hex, justified trying it out first. I used it to make another mockup, this time of the game window. (The ‘x’ border is the last drawable hex in the normal interface – i.e., the display shrinks slightly when you zoom in. C’est la vie.)

The Meat                                         [2]     HP:  20/20    ST: 20
Arena       x x x x x x x x x x x              .--+--.   MP:  10/10    DX: 15
Floor 1    x                     x             | = = |   FP:  10/10    IQ: 10
          x                       x            ' -|- '                 HT: 10
         x  /. .\   /. .\   /. .\  x            .\=/.    Block: n/a
      * x  |. . .| |. . .| |. . .|  x           |   |    Dodge: 9      Will: 10
       x    \. ./   \. ./   \. ./    x          |   |    Parry: 11     Per.: 10
      x /. .\   /. .\   /. .\   /. .\ x        --   --
     x |. . .| |. . .| |. . .| |. . .| x       (/*) RHand: fist
    x . \. ./   \. ./   \. ./   \. ./   x         [Brawling-17]
   x/. .\.  /. .\   /. .\   /. .\   /. .\x        punch 1d+2 cr
  x|. . .| |. . .| |. @ .| |. . .| |. . .|x
   x\. ./   \. ./   \. ./   \. ./   \. ./x
    x   /. .\   /. .\   /. .\   /. .\   x
     x |. . .| |. . .| |. . .| |. . .| x
      x \. ./   \. ./   \. ./   \. ./ x
       x    /. .\   /. .\   /. .\    x
        x  |. . .| |. . .| |. . .|  x
         x  \. ./   \. ./   \. ./  x
          x                       x
           x                     x
            x x x x x x x x x x x
                                               You enter The Meat Arena, Floor
                                                1.

Being limited to two hexagons in every direction is a little problematic – three would be preferable – but other than that I thought it looked great. I decided that I would indeed go with option four.

Why did I bother to ask for feedback if I was just going to go with my favorite in the end? Well, the act of asking was itself useful. Discussing the relative advantages of these representations made me realize that, in addition to entire-hex highlights, I’ll be able to selectively highlight hex faces to indicate choice of direction (or possibly facing). The discussion also got me thinking about some other problems I’d need to tackle that I simply hadn’t thought of, like how the zoomed-in display should position actors that are sharing a hex.

I wouldn’t bother making a post just to paste some ASCII. After I had the design figured out, I went ahead and implemented zooming (along with several related features). Here are some screenshots from the day’s development:

A mistake in implementation yielded an interesting pattern. Perhaps I'll use it in some other game?

A basic implementation of zooming. At this point, the game would crash if you moved too many steps.

Objects inside hexes (1 yard) are supposed to take up most of them. This was an attempt to show that. It has promise for walls, but probably not for actors.

Another attempt, this time based on borders rather than duplicating glyphs. I didn't really think this one through - it looks hideous. Oops!

Zoom functionality in action.

Reach combined with sharing hexes means that massed groups of pike-wielding soldiers will be deadly.

Perspicacious readers may note that I’ve only demonstrated zooming in. I do plan to permit zooming out, but that will have to wait for a later version of the game as it’s a much more challenging task.

Dedicated readers, on the other hand, get something for their time right away:

This is what happens when you don't understand curses functions well.

Leave a Comment

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