So anyway; as I was saying a brief 1000 days ago…

Okay, maybe I’m taking the whole “seven year” part of 7yrl too literally ;-).  I’m working at a different company, still in the same house, still coding games at night to maintain sanity.  I took about 18 months off and spun up a few different projects (wanderlinggames.com and bluesky.io, primarily), but my life of an indie developer recently gave way to my life as an individual with a paycheck.  Which isn’t actually a bad thing.

I also recently started in on my roguelike coding efforts again.  I’ve started over from scratch again; one of the joys of not having a deadline imposed (well, other than the self-imposed 7 year one 😉 ) is that I can start anew knowing a bit more than last time.  I’m taking a few things from the previous attempt and will take more (primarily the dungeon generation code), but by and large it’s a completely different project.

The main thing that drove me back to coding up a roguelike is Pixoban, of all things.  It’s a pretty standard Sokoban, but with graphics that simply scream “make a roguelike with me!”  Check this out to see what I mean: http://www.148apps.com/wp-content/uploads/2013/08/pixoban5.jpg.

However, no one has made one (slackers, all of you!).  In the spirit of making the game you want to play, I’m, well, making the game I want to play.  As you can tell from the image in my previous post, I’m going for a bit of a darker feeling and playing a lot with shadows (lots more on that in future posts).

Here’s the short list of core pillars driving the game:

  • Old school 8- and 16-bit graphics with new school flair; real time shadows, particle effects, SSAO(-ish), normal lighting on mobs, bump mapping, ortho projection, and animated tiles.
  • Roguelike permadeath but with progression; when your character dies, he dies; but you maintain knowledge that helps you get farther next time – weapon proficiencies, monster proficiencies, skills, Professions, and more.
  • Heavy crafting influence; discover ingredients and recipes to decipher in order to make items – once you’ve made an item you can use it, but it also can then appear as a drop in subsequent plays.  Skills are also crafted, as are runes to augment weapons.
  • Targeting both Mobile and PC.  I’m building screens and controls from the start to support arbitrary resolutions as well as both portrait and landscape modes
  • One-finger play on mobile; I want to hold my phone like I was browsing the web when I play the game.  I’ll talk more about the Contextual Action Bar (CAB) later.

Current status:

  • All of the graphic systems listed above are coded and fairly production-ready. I’m getting acceptable performance on my 2011 macbook air, and an iPad 2 is acceptable; anything less isn’t.
  • State management (with transitions) is done.  Async loading is also almost done – some issues with OGL and TPL interaction to work through still.
  • You can move around using keyboard or tap-to-move or A* explore.
  • Persistence model is in place and functioning for multiple games and multiple levels
  • Works on both Mac and Windows now, and iOS builds work except for some layout issues.

I still need to finalize how much to open source and how to deal with it.  e.g. I picked up a license for Oryx’s great 8bit and 16bit sprites and am using both, so just posting stuff up on github may not be an option.  I need to read up a bit on how best to handle that situation (e.g. is a note in the license.txt sufficient?).

One more in-game shot:

Game

If you zoom in you can see the bump mapping on the floors as well as the walls above the player.  Up near the top is a mob with a colored light, and the flaming skulls all have particle systems attached to themselves.  A bit harder to see (but present) is that all of the mobs and items have normal maps and light correctly relative to the light; a subtle but nice effect.  The skeleton to the left of the player shows it best in this shot.  You can also see the SSAO-esque effect best in the space to the right of the stairs going down (upper left of the image).

It’s good to be back,
Jeff

Advertisements