roguelike movement

moving right along

After finishing some basic terrain generation, the next step for Namazu will be implementing movement and world display. Movement has a common implementation, especially for roguelikes and similar 2D overhead games with direct control of one character in a tile-based world. Movement for many roguelikes is the primary action that players take, though, and alternative ways of moving the player character and representing the world after moving can lead to very different play experiences. Here are some thoughts I had while considering movement in Namazu, using the following games for reference: 868-Hack, Dungeons of Dredmor (Dredmor), A False Saint, an Honest Rogue (Saint), UnReal World, and Vicious Orcs.

Instant movement transports characters between locations without any visual feedback for intervening screen space. This hastens gameplay at the potential expense of differentiating between similar characters moving simultaneously. Saint, UnReal World, and Vicious Orcs instantly move characters.

Animated movement provides visual feedback between discrete locations providing visual feedback. Animations slow the gameplay while providing more feedback on what moved where. 868-Hack and Dredmor animate movement.

Absolute movement maps input directly to the world: Pressing the up arrow moves the player character "north", optionally with rotational feedback. If characters have facings, the movement provides feedback on the new orientation by, for example, displaying a different sprit for the new orientation or by rotating a vision cone. This can be easier for players since movement is independent of character facing, reducing a mode for players to consider. 868-Hack and Dredmor use absolute movement.

Relative movement maps input to the player character's current orientation: Pressing the up arrow moves the player character forward. Relative movement corresponds with physical bodily movement (can map the in-game movement to experiences they've physically had); however, this is complicated in absolute worlds. Saint, UnReal World, and Vicious Orcs use relative movement.

Absolute worlds keep the orientation of the world fixed: Terinyo is south-west of the puppy cave, and the screen always displays Terinyo left and lower than the puppy cave. Absolute worlds make navigation easier by maintaining fixed spatial relations. 868-Hack, Dredmor, and UnReal World use absolute worlds.

Relative worlds change the orientation of the world often by matching the player character's current facing. If ADOM displayed a relative world, Terinyo, though it remains south-west of the puppy cave, would be displayed above and to the left of the puppy cave on the screen if the player character is facing west. Relative worlds are harder for players to navigate since they must now remember orientations in addition to spatial relations. Saint and Vicious Orcs use relative world displays.

The most common movement system I've experienced in modern games using a 2D overhead perspective is animated, absolute movement with absolute world display. It's easy to understand for players and not difficult to implement. Terminal-based programs, like classical roguelikes, have more problems animating movement and instead use instant movement. Helping new players associate their input with onscreen movement is more difficult with instant movement if players are unfamiliar with conventions (such as representing the player character with @) and if many things are moving as the player starts playing.

Relative movement in absolute worlds, whether animated or instant, make movement a bit more difficult for players since they have to remember their current orientation. I don't know if this is a large problem cognitively—among the reference games, only UnReal World uses relative movement in absolute worlds and it provides a large semicircle of vision to indicate the player character's current orientation.

Compared to absolute movement modes, relative movement in a relative world potentially reduces the minimal number of inputs players need to learn to three (forward, turn left, and turn right) from four (north, south, east, and west). Allowing characters to move backwards makes the input requirement equal to four way movement and still half that of eight-way movement. I haven't played any games using relative eight-way movement; if you have, I'd like to know! (Edit: Zeno Rogue points out that the Necklace of the Eye frontend supports eight-way relative movement in first and third person views; here's a video of showing DoomRL starting with a first person perspective. I'm still interested in hearing about other examples, too!) One of the complications with relative movement, though, is that using instant movement makes orienting harder for players. Playing Saint or Vicious Orcs is just harder to keep track of what tile went where compared to absolute worlds. Note, though, that input maps closely to the display, just like absolute movement in absolute worlds and unlike relative movement in absolute worlds.

For Anoxic Depths, I wanted to minimize local orientation problems while maintaining overall orientation difficulties. Like Saint, it's a survival game where knowing how to reach a destination is part of the challenge. To do so, I used animated movement instead of instant movement, and the feedback I've received about it has been positive. Namazu is going to focus less on environmental survival though player orientation will be important. It'll therefore use animated, relative movement in a relative world.