Google Groups

Re: Generalized map protocol in Common Lisp

Jeff Lait Aug 30, 2011 1:14 PM
Posted in group:
On Aug 29, 3:20 pm, Thomas Bartscher <>
> Wait, I just realized that your directions are relative and not absolute.
> I name them and thus a cell always knows where north is. How are you
> doing that without loosing track of where to move?

Short answer: There are no cells.

The user of the map interacts with Positions.  From a position, I can
give an absolute direction: "North, South".  The position is a struct
of x, y, angle, and room id.  The local angle in the position
transforms the "North" given by the user into the actual underlying

Thus, there is no requirement that pos->north->south == pos.  Indeed,
since the result of pos->north() is a new position, it could have its
own local angle be different than pos.

Jacob's Matrix uses this angle shifting heavily to get people lost.
The Jacob's Matrix "maze" is actually quite trivial in connectivity.
The problem comes from the constant angle twists.  I've learned from
experience that this is way confusing to users and to avoid it as much
as possible.

The recent history of my 7DRLs has been an attempt to reduce the
confusion engendered by letting rooms connect any which way.  Normal
roguelikes benefit highly from people building an absolute map in
their minds of where things are in the game.  When you mess with that,
you cause lots of problems.

I went into this in more detail with my IRDC presentation, so I really
need to package that up!
Jeff Lait