Skip to main content

Treasures Of The Deep Dwellers: A Real Time Grid Based Roguelike?

Hello again!

It's been quite a while since I posted here. I've been working on other projects, and spending a lot more time with my family, but the core reason is that I just lost interest in the project as it stood.

But wait! I haven't given up. I just needed some time and some ideas to remake my vision in to something that:
A: I can finish.
B: Is actually fun.

So read on for the next chapter in the development hell of:


This time last year I took a break from this project since it was wearing me down.

I realized I was making a game for me, with stuff that I liked. But which I would probably never play.

What I really wanted to do was capture some of the excitement and joy of playing an RPG / Roguelike for the first time...

And package that as something that modern players would actually find enjoyable.

So it's clearly time to start over.

 Where do I go from here then?
Well, one idea I had was for making the game real time, and grid based.
I've made two complete games lately using this system, so it seems to improve my productivity anyway. Everything is just so much simpler. 

But single tile grids give too much of a blocky feeling that real world players complained about. I decided to make the grids more granular.

So now a default agent takes up a 2x2 chunk of the grid. They still move one square at a time though. You can see the debug function showing which squares are occupied by the agent. I talked a little about how I did this in an earlier blog post

The system makes it easy to scale up agents to 3x3 or even 4x4. A giant spider, a dragon or daemon perhaps? This is something I've wanted in the game from the very beginning. Different size monsters really add a great deal to an RPG. If everyone is human sized it gets boring fast.

Pathfinding has also been greatly simplified. I found a nice form of dumb AI which makes for quite interesting encounters, as the characters spend behave more unpredictably. 
The basic premise is that monsters will try to get closer to a seen enemy and will not backtrack until they get stuck. It's like water running downhill. It just keeps draining down until it gets blocked and then it tries to find a way around. Eventually it can overflow and fill backwards.
The most important point is that it allows for a large number of agents working in real time with no noticeable logic drain. So it's great for a python based game.

You might wonder why I chose 2x2 as the default character size. Why not 1x1? Well I'm saving that size for smaller creatures, like rats or insects which can swarm through small gaps... You can imagine the small creatures darting in, making an attack and running away again. Better pack a crossbow on this adventure!

Overall the game is going to be simpler. It's aimed at teenagers or kids playing a classic RPG for the first time. I want to make it fun. I want the thrill of an arcade game with some of the deeper options of an RPG.

Essentially though I want to get it finished! I'm going to be focusing on game play and functionality. No more wasted time on graphics which I might or might not use! 
(Final last words of an artist!!)


Post a Comment

Popular posts from this blog

Make your game models POP with fake rim lighting.

I was watching one of my son's cartoons today and I noticed they models were using serious amounts of simulated rim lighting. Even though it wasn't a dark scene where you'd usually see such an effect, the result was actually quite effective.

The white edge highlighting and ambient occluded creases give a kind of high contrast that is similar to, but different from traditional comic book ink work.

I'll be honest, I don't know if there's a specific term for this effect in 3d design, since my major at university was in traditional art. I learned it as part of photography.

You can find plenty of tutorials on "what is rim lighting" for photography. It basically means putting your main sources of light behind your subject so that they are lit around the edges. It can produce very arresting photographs, either with an obvious effect when used on a dark subject...

..,or as part of a fully lit scene to add some subtle highlights. See how alive the subject look…

How to... build a strong art concept.

So you want to make some art assets for your game. The first on the list is a Steampunk Revolver for your main character to shoot up Cthulhu with. Quickly opening your internet browser you start with a Google image search. Ah, there is is!

It might be a good idea to find a few influences so you don't accidentally end up copying a famous design.

Just mash them up and you're ready to go! Off to your favorite modeling program.
But wait! isn't there more to building a strong design concept than that?

Of course there is.
One of the diseases of modern design is that of recursion. Everything is a copy of a copy of a copy. This is especially a problem with "historical" concepts. Over the course of that recursive process the concept becomes infected with modern design elements, and ends up looking very similar to everything else that anyone else has ever made.
If you want to come up with a really fresh idea, you have to get beyond secondary references and go look at real …


Ok, so it's not exactly skynet, but I have got my first AI state working, kind of.

The first state is "HOLD" in which case the agent stays in place where they are and shoots at any unit that comes in range. When I started writing this module, I found that the existing method of triggering actions wasn't good enough to allow the AI to choose the best weapon or target. It worked by simply sending a command to the unit to trigger the currently selected action.

If the action is valid, it triggered, if not it didn't.
That's fine for play controlled units, as that's all they need to do. But AI needs to know in advance if the action is valid. The player can get that info from UI feedback, but that wasn't available to the AI player.

There were three problems:

1. The UI feedback duplicated code in the action trigger function. These  two sets of code could get out of phase so that UI feedback was wrong.

2. The action trigger didn't give enough feedback for …