Ludum Dare 34
Coming December 11th-14th Weekend

October Challenge ends
Make a game – Take it to Market – Earn $1

Posts Tagged ‘roguelike’

Post-jam version MEGA update!

Posted by (twitter: @@donpastor82)
Friday, September 11th, 2015 1:14 pm

This has been a hard week and I had almost no time to work on my entry. Anyway I’ve been able to add a couple of new features for the post-jam version. You can rate the original jam version HERE and the updated post-jam version HERE.


Who doesn’t love new features?

So far this is the complete changelog:

  • First and last maps have a fixed layout now
  • Levels won’t repeat anymore in a single game (bugfix)
  • Different tilesets depending on depth (I recolored the base tileset as a placeholder for now)
  • Music is streamed instead of preloaded
  • Text appears when picking potions or leveling up. More informative
  • Text is animated now
  • More enemy types
  • Some enemy types are tied to certain depths
  • Touch controls
  • Combat is speed based now. Foes faster than you will atack first
  • Reduced amount of potions appearing
  • Special abilities for players. Troll (regeneration) and Cacodemon (See enemies and ladder) are already implemented
  • Diagonal movement enabled, both for players and enemies
  • Added Field of View for players
  • Foes have an alert radius. They won’t chase you unless they notice your presence
  • Ability to skip turns
  • Many more potion types. Some more useful than others. Also tweaked generation rate for the most powerful ones
  • Ascending will heal you 10HP
  • Changed starting stats for players. Troll is stronger but near-sighted, lizard is fast but weak. Try it yourself!

Still to-do:

  • Finish drawing the tiles
  • Add more songs
  • Poison and burn states
  • Ability for Demon, Imp and Lizard
  • Fix bugs (player appearing over ladders or items on map generation)
  • Adding super rare and difficult special maps

Posted by (twitter: @@donpastor82)
Tuesday, September 1st, 2015 8:43 am

I’m still working on improving my entry, Someone stole the Princess!

Looks like tileset usage based on depth is working. Of course, now I need to actually draw (or look for some CC) new tiles. These are the planned tilesets:

  1. Depth 10 & 9- The Lair
  2. Depth 8 & 7 – The Crystal Caves
  3. Depth 6 & 5 – The Sunken Ship (don’t ask)
  4. Depth 4 & 3 – The Underground Forest
  5. Depth 2 & 1 – The Basement
  6. Depth 0 – The Town
The excellent DawnLike tileset. Just need drawing wall intersections.

The excellent DawnLike tileset. Just need drawing wall intersections.

Once I finish preparing the tiles (I might alternate drawing tiles with programming some of the planned features) I’ll add all these changes to the post-jam version.

More tiles

Posted by (twitter: @@donpastor82)
Monday, August 31st, 2015 4:40 pm

I’m currently working on enabling different sets of tiles based on dungeon depth. Until something failed, of course :-)
You can play and rate my entry HERE

Shit happens

Shit happens

Posted by (twitter: @@donpastor82)
Saturday, August 29th, 2015 2:24 pm

I added a not-so-obvious improvement to the post-jam version: audio is now streamed instead of preloaded thanks to the buzz.js library.

This makes the game loading much quicker (as the biggest files were the background music in ogg and mp3 format) and opens the possibility of playing many different tunes without increasing load times.


The downside is that with slow connections music might take a few seconds to start, but that doesn’t affect gameplay at all.

Should I keep the music streaming or should I go back to preloading?

Play the jam version HERE or the updated post-jam version HERE

Post-Jam version uploaded

Posted by (twitter: @@donpastor82)
Saturday, August 29th, 2015 10:55 am

Hi! I’ve been working on my entry after the submission date and implementing many of the features suggested by users. While still it is not complete (you’ll find bugs), this is the changelog compared to the original jam entry:

  • Quantity of potions has been reduced.
  • Healing potions nerfed. Now they heal a random amount between 1 and 5 HP.
  • Ascending one floor heals now 15 HP.
  • Implemented FOV (albeit a very simple algorythm).
  • Implemented SPEED (enemies faster than you will deal damage first).
  • Implemented DIAGONALS (smarter enemy movement, ramped up difficulty).
  • Enemies are tied now to certain depths. Ninjas will appear on last two floors.
  • Added Infravision (+1 light radius) and Speed (+1 speed) potions.
  • Added the ability of waiting one turn without moving.
  • Implemented touch controls.
New and shiny version!

New and shiny version!

Still to-do:

  • Proper procedural map generation. Working on it!
  • Mix procedural and hand-created maps. I’d like first map to be the one in the intro. And the last one could be the town over the dungeon. Like in Angband.
  • More different enemy types.
  • Eyecandy: floating numbers, popups, speech bubbles, hit animation.
  • Proper victory and game over screens. Popups are cheap.
  • Proper intro.
  • Different sets of music and tilesets based on depth (mines? underground forest? pirate ship?).
  • Better FOV algorythm.
  • Implementing STATES with cooldown counters, like POISON and BURN.
  • Adding monster abilities (poisonous mist, random laser, autoevade and fury are planned).
  • Of course, adding potions of mutation. Wouldn’t be cool to have several abilities at once?
  • After implementing all of this, balance difficulty. A lot.

And some pro-tips:

  • Don’t let enemies sorround you. You can now be attacked from up to 8 directions first.
  • Use hallways to your advantage.
  • Use skip turn key (S or SPACEBAR) to let foes approach and attack fist.
  • If sorrounded, kill stronger foes first.
  • Before entering a room, evaluate the risks and benefits.
  • If low on HP, run to the stairs! You’ll recover 15 HP.

You can play the post-jam version HERE and the original jam version HERE.

Don’t forget to drop a comment if you liked it!

Speedy update

Posted by (twitter: @@donpastor82)
Thursday, August 27th, 2015 5:56 pm

I’m still working on the post-jam version of Someone stole the Princess!.

So far I have finished implementing the new speed stat. Also added a speed potion (for a grand total of 7 potion types, for now), which adds +1 speed to the player. Speed affects combat, as the speedier character will attack first.

Let’s put the troll as an example: the troll is very strong and has lots of hp, but unless he drinks lots of speed potions he will be hit by enemies before dealing damage.

Another finished feature is different behaviors for enemy types. The ninja, for example, is faster that the player by default and can attack TWICE!!! Luckily for the player that enemy will only appear in the two last floors, where the player should should already be stronger.

Ouch! Ninjas pack a punch now.

Ouch! Ninjas pack a punch now.

Working FOV

Posted by (twitter: @@donpastor82)
Thursday, August 27th, 2015 4:05 pm

I’m working on a post-jam version of my entry.

I already have a working implementation of Field of View algorithm. Of course the extremely rare potions of infravision are in the game too, adding +1 to the player’s view range.

Trolls are short-sighted

It’s a known fact that trolls short-sighted

I’ll post a link to the new version once it is finished.

BTW, I have a question. As I just added touch controls to the new version, would backporting that feature (in order to add an Android version) to the original jam entry be allowed?

Someone stole the Princess! Post-Mortem

Posted by (twitter: @@donpastor82)
Thursday, August 27th, 2015 5:52 am



Let’s code a roguelike. Should be easy, right?

Oh man, I was SO wrong. A roguelike might be one of the most complex game types to code, given the amount of interactions possible between its elements (just take a look at NetHack).

From the start I planned a short dungeon romp (about 10 floors deep) with no inventory screen. The original plan was an icon to appear over the player’s head when stepping over an equipment piece for exchanging gear (with the future difference in stats reflected in the GUI).

Of course, as monster can’t hold much equipment (they are not that intelligent) I wanted to put emphasis on drinking potions. Lots of potions with crazy effects affecting gameplay.

You can see the details in my Super Awesome Design Doc ©

Greatest concept art ever

Greatest concept art ever

The challenges

A roguelike is NOT a realtime game. Monsters move when you press a key, and the game world is divided in tiles (usually square tiles, but not always). Each key press is a “turn” and, as there are many actors involved in a turn, there must be a way of managing everything.

Another obvious challenge is map generation. In roguelikes every game is different. Maps are procedurally generated, as well as item end enemy location.

Other not-so-obvious challenges involve enemy AI (foes should chase you in an intelligent way) and field of view, where only the visited rooms are drawn in the map (strategy players will know this as ‘fog of war’).


What the hell?

How does a turn work?

I designed the turn management (turn-o-matic in my code) as a fixed series of events:

Player movement → Enemy movement → Effects update (poison, burn, etc)

First the game would check what kind of tile the player wants to move towards. Depending on the tile type different actions will be triggered:

  • If it’s a wall, player won’t move.
  • If a potion, player will pick it up and effects will be applied.
  • If an enemy, combat will be triggered.
  • If a closed door, it will be opened.
  • If a ladder, player will climb and map will change.
  • Finally, if it’s floor or an open door, player will move.

Next would be enemy movement. Enemies chase the player when there is a path available. That was accomplished thanks to the EaysStar.js library, that allows asynchronous A* pathfinding in your game.

For EasyStar to work, you must provide an array filled with numbers and tell which tiles are walkable, and the start and destination coordinates. For example:

      var walkablemap = [[0,0,0,0],[0,1,1,0],[0,1,1,0],[0,0,0,0]];
      estar = new EasyStar.js
      estar.findPath(foe.posX,foe.posY, player.posX, player.posY, function (path) {
          if (path) {
              //if success then move the player

EasyStar returns a “path” array containing all the calculated steps to the target. So for a turn we would take the second element of the array, as the first one is the origin point:


As EasyStar wouldn’t let the foe step over a wall, game must only check if the destination tile is an empty tile (in that case the foe move towards that tile) ot the player (then it triggers combat).

As for the effects updating, things like ‘Poison’, ‘Burning’, ‘Weakened’, ‘Silenced’ and such were planned but not implemented, so this part is empty.

What went well

Tileset generation went smoothly. Cosmigo ProMotion, while not very intuitive, is a great tool for making tilesets. I also tried Pyxel Edit and liked it even more, but sadly the outdated free version was full of bugs, like refusing to load half of the tiles when loading a project.

The game flow coding went smoothly. Almost a pseudocode to code direct translation.

The map rendering worked on the first try. While some of the wall tiles are not drawn correctly, it doesn’t affect gameplay. It will be corrected soon (that should count as a bugfix for the entry, right?).

¡Behold this amazing black screen!

¡Behold this amazing black screen!

What went wrong

Map generation. For the map generation I took a look at this code, and while I got it somewhat working, didn’t have time to fully integrate it with my game. This is something I’m looking for in the post-LD version I’m making.
I ended choosing a random map between 20-something premade maps. While not common it is possible to see a repeated map ingame.

Field of view is not implemented at all. Shouldn’t be hard to generate a rogue-style FOV, where the full room is revealed once it’s in the player’s range. I’ll leave that for the post-LD version.

Content and gameplay balancing. Base game took so long to code that I didn’t have time to implement many of the things I planned: different foes with different behaviours appearing at different depths, player abilities, equipment system and, of course, some eye-candy.

Map generation needs work

Ouch! Map generation needs some work.


Just as last LD, this was a really fun experience. While I didn’t enjoy the theme much, I’ve always wanted to code a roguelike. I did not completely succeed, but at least my entry is in a somewhat playable state. I’m fine with that :-)

See you at next Ludum Dare!

You can play my entry HERE. Feedback is welcome.

MiniLD59 – Keith Karnage in the Omega Zone

Posted by
Friday, May 29th, 2015 12:13 am

Here is my MiniLD59 entry.




I put in some mouse controls really quick, which seem to work.  I’m not sure why the keyboard input wasn’t working, but it wasn’t working on either.

Did anyone ever make an archive of all the images.  I downloaded about 60 from the swapShop.  I provided alpha channels for about four of them, mostly because they were really nice, but looked terrible with big white boxes around everything.



Great LD 32 Games

Posted by
Monday, May 11th, 2015 4:29 pm

I had a really good time with these games.  Ld32 is about to finish, if you still have time don´t forget to rate them. 😉


B • Scott

by TridecimalJam Entry


One of my favourites, it´s a whole short game. Very well programmed and challenging. People say that it’s to hard, I say is as hard as it should.


Operation H.A.N.D.s

by The Capitalist CrayfishJam Entry

Strage shoot’em up,: Your weapon is a hand…. with five fingers. It’s a crazy idea, and I love it. The game has the funniest power up I’ve ever seen.


Don’t Be Afraid Of The Dark

by RomixalJam Entry

I wasn´t afraid of the dark, but I was afraid of this little red thing up to the right. Play it and you´ll see what I mean. Great game, great mood.


A Knife Made Of Whispers

by ManagoreCompo Entry

A lot of people is speaking about this game, and they are right, it´s a very good one. Great mood, beautiful story, cool aesthetics.


Eye Rush

by asobi techJam Entry

Hey hey! Fast gameplay, cool music, great gameboy like aesthetics. It´s addicitive, I had a great time with it.

Last Ark Walkthrough (with all embryos saved)

Posted by (twitter: @NuclearNapalm)
Thursday, December 11th, 2014 9:43 pm

Some people asked in comments if it’s really possible to “win” the game and keep all embryos alive? Yes, it is possible. I recorded walkthrough GIF to prove it.

Click to view full-size
Last Ark WalkthroughIt still requires some luck (digging resources, find a star), but still, it is possible :)



Last Ark

Posted by (twitter: @NuclearNapalm)
Sunday, December 7th, 2014 7:05 pm


I didn’t believe that I can do it until this moment! Here is my compo-entry LAST ARK

Roguelike survival about artificial life in deep space after the end of the Earth.

This is a point & click game.
You manage oxygen consumption, energy, health and resources. Your goal is to find a planet suitable for living. When you have landed at the planet – the game is over. So choose wisely. Check planets info to figure out if it’s good or not. The far you travel, the higher chance to find an appropriate planet you have.


I hope you’ll enjoy it!

Heads up’s what’s up!

Posted by
Sunday, December 7th, 2014 1:36 pm


Lot’s of visual progress since my last update!  Got a nice HUD up and running with various useful informations.  Now, though, the thing I’ve been avoiding, which is to make items interact-with-able.  First picking up and dropping, then equipping weapons.  Then I’ll need an enemy.  Then attack.  Then a million other things!  Aaaah!

Finally a bit of progress

Posted by
Saturday, December 6th, 2014 8:24 pm


I got stuck with some nasty bugs for several hours right after my last update and ended up bashing my head against them for hours before giving up, deleting several hours of work, and redoing the sections from scratch.  It’s sad and frustrating, but I’ve now got it working so that I have a dude who can walk around, bump into walls, open doors, see around himself, and remember the terrain he’s already been through.  Huzzah!  Now I need items and enemies!  Also I need to decide how I’m going to make this game unique and interesting…

LD31 – Update 2: A New Generation

Posted by
Saturday, December 6th, 2014 10:21 am


As claimed in the previous update, my level gen code didn’t take much longer to complete.  I can now generate an interconnected system of rooms and hallways, separated by doors.  Making doors something that can be opened/closed will not be difficult once I actually get a character in and moving around.  That’s the next goal:  Dude and move.  Then doors and vision.  Then we work on stats, enemies, combat, inventories… so much left to do!  But at least I’m already the furthest I’ve ever made it on a rouge-like, so I’ve already succeeded at something great!

You are in a box. It is dark. There is no you.

Posted by
Saturday, December 6th, 2014 8:45 am


That is currently the state of my game.  I think you can already see what I’m going for, though:  A single-screen rogue-like!  I’ve always wanted to do a good rogue-like, but never gotten past the planning stages before, so I’m really excited for this one.  Despite the simplicity of this screenshot, I’m actually very close to having full-on level generation up and working – You’ll see within a few hours.

As for pacing – I let myself get a solid five hours of sleep last night since I was wiped out from the week, and have taken a couple breaks for things like food  and stretches so I’m about 6-7 hours into actual development time, split fairly evenly so far between design, research, and actual code time.  Getting to be about 300 lines of code, by raw line count.  More to come soon, I hope

[cache: storing page]