We are a 3 person team. Here are our games so far:

Retro Game Internals

Like a lot of people doing programming for video games, I played a lot of NES games when I was a kid. It has always amazed me how they were able to get so much out of so little, and so I’ve spent a good amount of time over the years dissecting certain games to see how they work. Today I’m starting a series of blog posts in which I want to document what I’ve learned, from a game programmer’s point of view. I’m going to try to focus on how the game systems work at the game/engine level and not at the hardware level (so more like how does this game decide which things it wants to draw on this frame as opposed to how do sprites work on the NES.) I’ll also try to throw in any tidbits about the games that I think are interesting like things that weren’t obvious to me just from playing the game casually or instances of bugs in the game’s logic.

Contra Introduction

The first game that I’m going to write about is Contra on the NES. The remainder of this post will be a short overview of the objects and data that exist in a game of Contra and then subsequent posts will go into more detail about each system the game uses to manipulate its model of the world. The basic model that the game maintains is made up of:

  • Player characters
  • Player bullets
  • Enemies and other objects
  • Level data

The player characters are the main heavyweight objects of the game and have lots and lots of code that explicitly deals with them as you might expect. The bullets from player characters are treated differently from every other kind of object in the game for reasons that are probably performance related. We’ll see later on how the player bullets being separated out from the other game objects makes various things the game has to do more efficient. The final class of objects are the enemies which are managed by a simple entity system. This includes the enemies themselves along with enemy bullets and explosions, but also a couple of friendly things like flying power-up balloons and power-ups sitting on the ground. I’ll use the term enemies to refer to all of these things just to have a more descriptive term for them than “objects.” The key feature is that there is code in the game that deals with them abstractly as opposed to the player characters and player bullets which are always manipulated by specialized code.

The tile based level data is the final major part of the game simulation. Contra features standard horizontal levels along with a vertical level and pseudo-3D levels. Levels only support moving forward through them, never backwards. The game maintains a double buffer of tiles that hold collision and visual data for the current screen in the first buffer, while it builds the next screen in the second buffer. We’ll see later on how the level data is organized, how it is updated as you make your way through the levels and how enemies are spawned from it.

Up Next

I have a rough outline of where I’d like to go from here with this series but it’s still very much a work in progress. Topics I have ear marked to talk about include data representations, enemy behavior, scrolling, collision detection, random number generation, player control and other assorted things. I’d love to get feedback about what people might be interested in going forward. You can leave a comment below or reach me on twitter @allan_blomquist

(This is part 1 of a 7 part series – Next)

Little Inferno for Android NOW AVAILABLE! [UPDATED]

Little Inferno for Android

Toasty robots, type in your unlock codes! Swype across your parallaxing desktop! And ask Google’s permission to begin downloading your brand new Little Inferno for Android! It’s rolling out right now, worldwide at a launch discount of $2.99 (normally $4.99).

All reasonably recent devices should be able to handle the game just fine –  requiring Android OS 4.1 (JellyBean) or higher, 1GB RAM or higher, and 1GHz processor speed or higher. Any older device that is not compatible will be immediately incinerated.

Load Your DisketteThanks for your patience, everyone, while we put this together. And thanks to the folks at Apportable for making this happen. Let us know below how it works for you, and we’ll try and be quick about updates!

 

UPDATE AVAILABLE!

An update has just launched, version 1.2, on Google Play and Humble Store. Update on Amazon coming shortly after some more QA.

  • There should be better performance overall.
  • Less battery usage.
  • Rounded icon corners! (A highly requested feature.)

For those who have encountered a crash when using the My Pictures item to load photos, our Android experts think this can be solved one of two ways:

1) Instead of choosing a picture from your gallery or pictures, hit your Android back-button. We will choose a stock photo for you and you’ll be able to move on to the next catalog!

2) For some players, we believe that this problem is caused by a setting on some Android devices that shuts down the background activity to save memory. This may be a device setting that you can change if you can access Settings->Developer Options; it’s called “Don’t Keep Activities”. If not though, you can always get around it by pressing your back-button.

For those who are seeing this crash, does this help?

Note: The Android folks are still looking into NVidia Shield and TegraNote devices. If you’re still encountering any issues, the quickest way to get tech support is to contact our Android folks at Apportable by emailing here: androidsupport at tomorrowcorporation.com

 

Little Inferno for Android Coming Soon

Little Inferno for Android

BREAKING REPORT FOR LITTLE GREEN ROBOTS! The Android version of Little Inferno will begin rolling out very soon! More info to come once we know an exact date.

For those newly manufactured robots who might not yet be familiar with Little Inferno, you can fill your data banks with more information about the game here.

Just like the Wii U, PC, and iOS versions, the Android version will also ship in English, Spanish, French, Dutch, German, Brazilian Portuguese, and Italian. Thanks again to our volunteer translators!

 

 

Little Inferno for Linux

Little Inferno For Linux Computers

Open your blinking green terminals, prepare your admin config files, and pipe your standard shell input towards your internet sockets to begin a download of the brand new Linux version of Little Inferno!

You can get it directly from here. If you previously bought the Windows or Mac version from this site, you should now automatically (and freely) have access to the Linux version as well. To get it, just follow the same download link you used to download your Windows or Mac version. If need to retrieve your download link, you can do so here.

We’ll also be making the Linux version available on Steam as soon as we can, where it will also be freely available to anyone who already has the Windows or Mac versions. Thanks for your patience while we pulled this together, and we’re excited to hear your feedback!

 

Little Inferno Now Available for Mac

Little Inferno On Apple Computers

Little Inferno is now available for Mac! You can get it directly from us, on Steam, and on GamersGate. If you previously bought the Windows version from either site, you should now automatically (and freely) have access to the the Mac version as well. Thank you to all our beta testers who helped pull this together!

Other updates: Linux version is almost ready for testing, and we’re also working on an iOS update that will work on the older iPhone 4 and iPod Touch 4.