The Inception of Lenna’s Inception

I spent a lot of time playing Link’s Awakening over the holidays, and while I was playing it, I couldn’t help but pick apart the mechanics of the game. It was like I was Neo in the Matrix: I could see the code (although definitely not in a literal sense, Nintendo).

This gave me some ideas, and I wondered how well some of Zelda’s game mechanics would work with some of the features of typical roguelikes, particularly randomization. The Binding of Isaac has been described to be a Zelda-like roguelike, but I’m not sure I really agree with that. To me, Zelda games are characterized by the item-based puzzles and the RPG elements in the overworld between dungeons. The Binding of Isaac plays more like an (awesome) top-down shooter/roguelike that superficially looks like Zelda.

Anyway, from here on I’m going to avoid saying anything about what I want to do, and talk only about what I have done: I’ve started coding a game. I have a rough idea of the direction I want to take it, but I’m aware that could change dramatically (which I am quite prone to do), or I could drop the project entirely to work on something else. For now, I’ve codenamed the game “Lenna’s Inception,” and the core library/engine running it “legend.”

Starting this weekend, I’m going to try to post a short progress update every Saturday — coinciding with /r/gamedev’s Screenshot Saturday. It’ll be fun for me to look back on this in future.

Progress so far

I’ve spent one week of evenings on this so far. Here’s where it’s at now:

  • Awful sprites and font. I’m really not an artist.
  • Clean MVC design.
  • Game object model mostly pinned down. Written in such a way that syncing and mirroring it over a network should be easy.
  • Reduced-color palette, and sprite recoloring (trying to emulate the feel of NES / Gameboy). Probably still needs some tweaks. I think it’s too brown.
  • Mob AI as finite state machine. Slime AI (seen in the video) written in about 20 lines of code.
  • Written in Java; image manipulation, drawing and controls completely abstracted away so the core of the game will run on Android without any modification.

The challenges I faced:

  • Some nasty deadlocks were occurring on the screen transitions, due to the need to lock multiple objects when drawing the object tree. In the end I gave up and put all game logic and drawing on the same thread.
  • Recoloring sprites efficiently was a hard one to work out. There are still a few things I can do to improve it, but it’s OK for now.

What I need to do next:

  • Hit detection needs some tweaks to be able to correctly handle Mobs moving at any speed.
  • Add mob health and damage.
  • Draw some tiles. I’m fed up of filled rects.
  • Add more mobs and sprites.
  • Implement networking and benchmark it to see how much bandwidth multiplayer uses. (I really need to find out if my object model works in this regard soon in case I need to reengineer it for efficiency.)
  • See if using OpenGL is faster than java.awt.Graphics2D.
  1. Procedural Dungeon Generation – Part I | Bytten - pingback on 2012/01/21 at 17:34

Leave a Comment

NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackbacks and Pingbacks: