Sunday, 16 March 2014

The 7 Day RogueLike Challenge 2014 - Post Mortem - Post Hangover

I sit here with a mug (Royal Denby no less!)  of green tea and citrus, the only chocolate biscuit I can find in the house (jaffa cake no less!) and a hangover ... reflecting on my entry for the 7DRL Challenge and ProceduralDeathJam

I wanted a 3D isometric open world roaming brawler.
It might be quicker for me to list the things which went right over what went wrong ...

The isometric camera system was easy enough, mount it on the player and then set the player as the control object.

The control system was much more of a pain. My first attempt was somewhat of a broken mess and I eventually settled for a simpler and somewhat hacky script based solution - the sort of thing which I would avoid like the plague in a real game.

The stealth system is a bit of a broken mess. It was working fine but it looks like the last minute changes I made before uploading might have broken it. Fortunately I made sure that the player can outrun the Ai.

I had wanted the rooms to be made up of individual tiles and each tile to have a random shade which would then correspond to the stealth rating. This turned out to be horrific for performance, mainly due to the number of meshes (1600) being subdivided into 9 or more objects ( over 9000!) and I hadn't LODed anything to save time. This idea got cut and the new radius based function was created using the lights to give the player a visual reference.

I had wanted different coloured meshes to portray different environments ... but there was never the time to do this.

Combat works nicely, though I didn't have the time to add in impact effects and audio so player feedback on whether an hit has been landed on an enemy is missing. Light and heavy attacks work fine, with heavy attack doing x3 damage but taking much longer to execute than light attacks.

Animation was a bit of a pain and took way longer than I had expected, eating up a full day for what I had originally though would be a couple of hours.

Procedurally generating the world also proved to be more of a pain than expected but eventually I came up with an algorythm which minimized the chances of orphaned areas. It generated the 2D map and the 3D world at the same time.

Objects where then randomly placed which was easy enough. It's completely possible for a world to generate with no objects and no enemies - just very very very unlikely. The bonus system for objects works nicely, increasing damage for kungfu and staff weapon, giving the player a reason to seek out objects and switch between weapon types. There's also plenty of heals.

Enemy Ai works well enough -  a little too well when it comes to spotting the player as stealth isn't working correctly. The one thing I didn't have time for was decent pathfinding and so there is no real wandering about on their own. As a last minute change I made them slower than the player so the player can escape. I was going to use many more enemy models but cut them back to just the the 3 classes to save time. The randomized uniform textures work nicely though.

The 3 classes give the player some choice of play style, though stealth class is reduced to speed class as the stealth mechanic isn't working as accurately as it should.

The additional randomized quest mechanic was dropped as there was never enough time to do it ... which is a bit of a shame as it was going to measure player progress. Instead I used the items, rooms and kills mechanic to create high scores.

All in all it works as a game, which is at least something. And I am relieved that I managed to ship a game in my first ever game jam.

Play it here:

Stuff Used:
  • Engine: Open Source Torque 3D (off github)
  • 3D: Blender
  • 2D: Gimp
  • Character Models are being reused from my existing indie game “Airship Dragoon”.
  • Animations are to be taken from existing libraries I have licensed.
  • Some audio will be taken from existing libraries I have licensed, the rest will probably be badly created in Audacity.

No comments: