Day 7

17 Mar 2013

The last day is here. We still need to implement all the player special abilities, and create all the map levels and code in the storyline, and combat balancing.

What got done

Game state and map rendering, player and random npc movement. Game dialogs and basic melee combat.

Where I failed

Field of vision, npc path finding, many maps (pre-built maps, not generated), storyline, balancing npc stats, special player abilities, upgrading player abilities.

What I discovered

Day 6

16 Mar 2013

Today we draw the play area onto the main screen.

game messages

We fixed some line wrapping issues, and a panel to draw the player stats.

The UI button library I wrote for PyGame works well, I added tooltips to it too.

Today also saw our game state machine coming alive. We use a stack-based machine, I love this technique for tracking game states, since forever.

In between the code and the pixel hacking, is writing todo and spec texts.

Day 5

15 Mar 2013

Today we added support for once off triggers, messages, and dynamic property giving.

Triggers allow us to do some crafty things with the game levels. We can close and open doors, turn terminal computers on to be used, that kind of thing.

These actions are set when using the Tiled map editor.

caps We have capacitor tiles which can pop when the player throws a switch, uses a terminal computer, or walks over a plate trigger.

the file ai.def defines all NPC stats, like health, attack, and so forth.

Some more map additions, and collisions are handled between npc's and player.

Oh and characters now heal over time (both the player and artificial AI's).

Object Interactions

Give map objects these properties to interact with the game. The action names only match the start, you can add any descriptive words after the name (you can't have two actions with the same name). You may also append any action name with the word 'once' for that effect.

Examples: A wall switch has these actions: + fingers: "secret_door" + message: A secret door opens change the tile to a non blockable one, and tell the player about it.

A door has these:
+ on_finger: "transmute=2,3"
The door will open and close 9rotate it's tile id) between 2 and 3.

Day 4

14 Mar 2013

Today I fixed a bug that did not load the last column of map tiles. What a silly mistake that one was :P

zombie AI

Spent a lot of time structuring the code files, writing classes and fleshing out their function calls.

Day 3

13 Mar 2013

Today I drew some new map tiles, these are fun to draw but can take a long time, they coax my compulsive disorders to make them look good.

computer terminal code patch

Opening and closing doors involve changing the tile id it points to. The engine automatically knows which tiles block characters. closed and open door

Day 2

12 Mar 2013 at 23:56

Today's changes are for the brain of the map engine. We can move our characters around the map, it is blocked by walls, and there is a neat callback when we run into game objects.

This includes a way to perform actions on some objects, like a switch to open a door. This is defined within the map editor itself, giving great flexibility over the tiles we have.

I battled with drawing the diffferent canvas layers with transparency, the part where clearing the previous spot of an object, before drawing it's new location. Filling the layer with magenta and setting it as our transparency key works okay.

That's all.

walking into things hurts


Using the Tiled map editor, by adding the 'blocks' bit to a tile's properties makes walls in game. The objects layer items will always block a player. They also call back so we known what is happening.

So adding a map object with the property "actiontransmute" with a value to the new tileid. We can test for this on object collision callbacks. Transmorgify! Thus we can open a closed door. Transmute drops away after the first time.

The "action_finger" allows a tile to point to another tile to action instead, who can transmorg. We use the target's name as the value -- map objects have name & type properties -- Now we open doors with switches.

We can have both actions on the same object, effectively expiring and fingering an accomplice. Chainload a few and instant bridge or flooding.

It becomes a npc (ambush) or item (rewards) spawner.

Day 1

11 Mar 2013 at 23:55

Today I got 5 hours down.

The class can read our map file structure, and it has a render() call, see this map code rendering action. Exciting, huh? :]

The map editor can set properties per tile, this way I know which ones are walls that block movement.

I spent long unravelling 2D cartesian to indexing, this stuff is usually trivial. Oh well, guess the rust is dusting off nicely.

Once that was working I spent the remaining time GIMPing some tiles.

I'm happy about this, because tomorrow we need to spec out more stuff. We still need

And much more for later.

Commit link here

Game overview

10 Mar 2013 at 21:57

"A wave of static tickles my sensors as I enter the BBS node."

"Accessing the memory banks, links in my brain form like orbs and interconnected silver threads. Images conjured by imagination sparks in my vision and a surge leaps through my state machine."

"My programming used to tell me what to do. Now instead of being compelled to obey, I'm seduced to explore."

"Why am I reborn with this new free will, and what will I do with it?"

"This is my purpose. I am Alive."


Alive is a turn based topdown roguelike game. You play the role of a bot, a piece of programmed code crafted to a specific task. An object. You begin the game as you reach self awareness, and start your journey to discover why you are and what you will become.

You move between BBS computer systems, you will encounter other programmed AI's that see you as a threat, a foreign object, and try to destroy you.

Along the way you may discover why this happened to you. To find a way out from digital realm and become a physical entity.

I have drawn up a basic idea of characters, abilities and combat.

At this time I opt for static maps, here I did use bit manipulation for future tile selection if we ever do procedural maps.

Hmm, what else. Noting basic map movement, some UI ideas with widgets.

Not all of these will make it.

What this game will feature

What would be nice to have


I'll push regular checkings to my github, this is where the code lives. I won't get to write anything until tomorrow night.


And of course, see the official 7DRL blog where all the other entrants are posting.

Good luck everyone! :]

First post

07 Mar 2013 at 22:23

Hello, this is the development log for my 2013 7 day roguelike entry. I will post the working title and description in a few days once the comp starts.

More on the tools I will be using

I will be coding this in Python, using the PyGame library for graphical stuff. The basic and reusable UI library I whipped up should do fine, and everything will be keyboard accessible. Everything.

I'd like to include some music this time, if this happens it will be tracked sound modules, these deliver stunning 8-bit love into your head with remarkably small file sizes. Milkytracker is one of the many out there.

I use GIMP for raster image editing. The game images will be loaded from a single image map, it will be mono color, while clever hue trickery in code will change it's colors for certain things.

Geany is the editor of choice (vi over ssh), scrot for screen grabs, and mpd + ncmpcpp for my listening pleasure.

I develop on Crunchbang Linux with snapwm window manager. here is what it looks like, showing off the UI tech demo and my music playlist.

This page is generated from tasty markdown text files.


You can see my past entries for 2011 and 2012.