Roguelike Origins

I didn’t know what to title this post so I guess I’m going with the most “modern b-movie” type name possible 😛

(oh also ICYMI I posted this months WIP build earlier, link here)

Anyway I’m gonna talk about the roguelike I’m working on, where the idea came from, what I want to to with it, all that junk.

The starting point for the idea came where I imagine most roguelikes have begun; I was playing NetHack :P. Specifically, I was playing nethack thinking about a possible 3D interface for the game that I might be able to make – there’s a lot that appealed about that to me, but mostly it was ‘no animation’, everything would be static models just as the normal interface is static sprites. I do enjoy 3D animating and making models that can be animated… but at the same time it’s a HUGE drain on my time. I’m most comfortable when I can throw together a bunch of models quickly that don’t need to be posed or animated ever. So yeah, roguelike mechanics/history and static 3D models meant boardgame aesthetics jumped straight into my mind obviously, and I kind of fell in love with the idea.

And then I figured, why just reskin a roguelike when I could make my own?

It’s a really bad thought tho, I don’t recommend it. Don’t make a roguelike. It’s a very bad idea!

But on the other hand it’s also an interesting challenge. Since most of the games I make don’t challenge me as a programmer anymore (the benefits of an accessible game engine and years of experience with it) I figured I’d give it a shot and started dropping a few notes on thoughts I had for a system that would drive the engine. Which more or less looks like what I have now, and that is a system composed of;

• Objects (swords, players, monsters, etc. the “stuff”)

• Agents (something an object may have, essentially it’s a mind)

• Properties (how does it appear? is a thing poisoned? heavy? burning? etc)

• Actions (things an agent can do on it’s turn)

I also have a few other systems like the turn manager that handles which agent gets to act next, the dungeon system that generates the spaces all the objects exist within, and a player interface so human players can act as the agent for their object (which is almost always going to be their character/avatar).

What I thought would make this really interesting is something I’ve talked about a little on twitter, and that is that each agent has their own knowledge of the world and other objects based on what they perceive around them. No agent (including human players) is aware of any actual real thing in the world, all they have are mental versions of those things that they make and maintain as they observe them. And how accurately something is perceived is down to a bunch of properties on the agent’s object (eg it’s discovery skill, if it’s psychic or not, do they have training to see hidden traps – that kind of thing).

Objects (and map tiles) can all have many different appearances that can only be observed depending on various properties of an agent. And whatever an agent observes or infers is created as a new object with it’s own properties in the mind of that agent.

So the tl;dr is every character on a map has their own (probably incomplete & incorrect) copy of the map and the things in it in their head. All being updated as each character witnesses things. 

Which I figured would be an interesting challenge to program… I was not wrong lol (don’t make roguelikes! it’s a bad idea!)

Anyway as for where I’m at with building all of this right now… it’s mostly together! I did have a loooot of trouble getting it to work despite having a clear mental picture of what I wanted it to be, largely because I would forget things like pulling information from an agent’s knowledge of an object instead of from the real version of the object, but for the time being it’s working. If you’ve got the monthly build you’ll be able to toggle debug maps on, which will let you see the “real” map and objects, your character’s mental image of that stuff (with what is “know” and what is remembered marked differently).

The boardgame view is of course just a 3D representation of what your character “knows” about the map and the objects on it.

One thing I find interesting is that in my system, the classes I use for “knowledge” of an object are largely identical to the classes I use for the “real” objects themselves – whilst there may be differences in the details of a real object and “knowledge” of the object – neither is more real than the other unless I say so. And when I say I find this interesting, I mean I find it INCREDIBLY DISTRACTING! It leads to a bunch of old philosophical ideas that are all fascinating but they don’t help me work on the game so I have to catch myself and say “nope, don’t think too much about the nature of reality right now, just finish making the rules of this little reality instead!” lol.

Anyway I know that this post was a little abstract as far as gamedev insight goes, no actual code or anything like that but that’s how a lot of “idea for an interesting system” type games come about, at least for me. You gotta have this weird abstract thing and a vague idea how you’re gonna make it before you can actually jump in and try playing with it and seeing what might come of it.

This content is available exclusively to members of this creator's Patreon at $1 or more.