I’m Going to Hell

I’m Going to Hell is a surreal, 8-bit, Point and Click adventure game full of hand-drawn art.

The game is focused on the surreal visuals, atmosphere, and storytelling. Pixel hunting and complicated item-based puzzle solving is kept to a minimum.

Visually, it’s strongly inspired by classic 8-Bit NES games.

I’m Going to Hell runs on a with a custom-built engine using Unity3D as a platform, and is written in C#.

This hand rolled engine lets me work with some specific NES limitations in order to create a fairly authentic 8-bit feel.

  • Every image is created from 8×8 tile elements
  • Each individual tile can only use a maximum of 4 colors (3 unique, and 1 background color)
  • There are 8 separate 4 color palettes available for use at one time. 4 for use by the background, 4 for use by sprites
  • Only the 64 (56 unique) colors from the original NES hardware are available for use in those palettes
  • Backgrounds share palettes in 2×2 tile chunks, similar to original hardware

These rules keep me honest about the 8-bit look, and let I’m Going to Hell use a number of cool palette swapping tricks that would be impossible, were it designed with assets that only looked 8-bit.

There are a few concessions to modern hardware, though:

  • The screen size is wider than the original 4:3 aspect ratio, so less of our 16:9 screen space is wasted
  • There are no limits put on the number of sprites per line. The NES only allowed for 8 per line, which led to workarounds like flickering. Any number of sprites can be displayed without flickering in I’m Going to Hell
  • There are no memory limits on the number of unique tiles or sprites loaded at once
  • Mouse input is supported (It is a Point-and-Click game, after all!)

Soundtrack

I’ve been joined by Alex Palm as composer on I’m Going to Hell. You can find him on Twitter at @alexwilliampalm.

Here’s an in-progress example of his awesome title track:

Release

There will be more information on that as we get closer to release!

Looking forward to meeting you… in hell!

Last Time on I Won’t Die

cTy8GaG

I figured it’d be good to write a little news roundup about what’s been going on with I Won’t Die for the last few weeks. I’ve been working on a lot of under-the-hood stuff, so there haven’t been many opportunities to post fun screenshots. Things have still been progressing steadily, though, despite the radio silence!

A* Pathfinding

Most recently, I’ve implemented an A* pathfinding algorithm, to use for NPC AI. For the laymen in the audience, A* a method to help find a path from somewhere (like an enemy) to somewhere else (like you) which will pass around obstructions like walls, trees, or other NPCs. I’ve done this a few times, professionally, so the recent version went really smoothly, which was a very pleasant surprise. (That said – half of the time working on it was still spent bug fixing!)

Goodbye, Threads

Before that, I actually removed a fairly big feature that had been in for a while – having graphics drawing in a separate thread from the actual game logic. While conceptually it was nice, maintaining such a structure was a bit out of the realm of my experience – and had the nasty side-effect of making the game very unstable. It turns out that fiddling with what should be on screen while you’re in the middle of putting it on screen can lead to unpredictable (and crashy) results! In the end, the performance benefits of writing in pure C++ have made any gains I was getting from separating the threads completely negligible. I Won’t Die still runs way faster than 60 fps when the framerate isn’t capped, with threading or without.

That said, I do still thread other aspects of the game – like loading assets from disk. In the future I also still plan to implement a separate thread for world generation. Long term concurrent threading was creating more problems than it was solving for the game in the mean time, however.

Aesprite

Capture

The final big change I’ve made recently was to build up engine support for a sprite editor named Aesprite. Up to this point I was only using Photoshop for image editing. While I haven’t used it a ton yet, Aesprite has some cool game-dev specific features like animation previews, which have been a great help for someone like me who isn’t a pixel artist by nature. The app exports useful metadata that I parse through with my Manifest Builder (a separate app I wrote to help maintain I Won’t Die‘s assets – which will probably be an article itself at some point) in order to generate code describing the sprite sheet information. In the end that means way less work on the programming end when it comes down to actually integrating assets.

If you’re interested in hearing more about any of these topics, drop me a line! To get the ball rolling on my actual “dev blog” I’ll probably write up a post about the scrolling cloud layer and blowing wind effects, but if there’s something else that piques your interest, by all means let me know.

Until next time, stay safe, stay warm and stay hydrated. It’s a dead world out there.