Showing Character Upgrades in a 2D Game

August 13th, 2009

“Congratulations! You have acquired magnetic boots. You can now walk through any part of the ship at a constant speed, even if there is no gravity in that section.”

This is a message displayed when the player finds magnetic boots on the ship. Now, the big question for the game designer/programmer is how do we show this upgrade to the player?

A few different solutions and their pros and cons

1. Leave the player avatar unchanged with no visual indicator that anything is different.

    Pros:

    • No extra animation work needed.
    • No need to create an exponential number of sprite maps based on the different upgrade combinations. (Ex: Only a flashlight, only boots, flashlight and boots, etc.)
    • No need for complex programming or storing multiple animations in memory, just change one flag indicating the possession of that upgrade.

    Cons:

    • Player has no way to tell which upgrades they have.
    • Player can’t tell what the upgrades do if they forget after seeing the original message.
    • Sense of accomplishment is fleeting as there is nothing reinforcing the fact that the player has more power/ability than before.

    2. Change the player avatar to show the upgrade (flashy new boots).

    Pros:

    • Sense of accomplishment is reinforced as the player goes forward in the game and sees their character growing in power.
    • Player can see which upgrades they have at a glance at any time without the need for a separate menu.

    Cons:

    • Player still can’t tell what the upgrades do unless the animations are very detailed and obvious.
    • Extra animations are needed for every combination if using sprite maps
    • Complex rigging system needed if not using sprite maps (drawing each part of the character including upgrades on a skeleton)
    • Much more programming required

    3. Have an “inventory” screen that shows all items the player currently has equipped.

    Pros:

    • Same sprite can be used from when the item is found for the item icon in inventory
    • Details about the item are available when hovering over the item reminding the player of what it does.
    • No extra animation work needed.

    Cons:

    • Some extra programming work needed for the UI.
    • Only some visual indication of how powerful the player is, reinforcing their need to find more upgrades and proceed in the game.

    4. Show a paper doll status indicator to show which upgrades the player currently has.

    Pros:

    • Very basic filled or not filled paper doll sprites can be used as indicator. No fancy animations or sprite art needed.
    • Details about the item are available when hovering over the item reminding the player of what it does.
    • At a glance reinforcement of the player upgrades.

    Cons:

    • Not as detailed as custom animations, may not be as appealing to some players.
    • Takes up more space on the main UI, may make it seem cluttered.

    As you can see, most of these solutions either put more pressure on the artists to create more game assets, the programmers to create a rigging system capable of displaying those assets, or the player in relying on their imagination and memory about the upgrades they have.

    For an indie developer, and quite possibly any large studio developer, you never want to leave it to the imagination of theĀ  player. This would rule out option number one, since it relies too heavily on the player to remember what upgrades they have acquired and what they do.

    For an indie developer that doesn’t have any artists, creating a lot of art assets is out of the question. This pretty much rules out option number two. Unless you use a pre-built rigging system with a small number of sprites, and have experience using it already, this would take too much time to do.

    Option three is good if you have plenty of time. Depending on how easy it is for the indie developer to implement another screen worth of UI, this may be the best and most engaging solution for the player as well. It would also allow for multiple upgrades in the same “slots” like multiple types of boots. It also reuses art assets, but in a way that would make sense to the player.

    Option four is the best solution if time is of the essence. It has the least amount of work involved for the developer, while also providing immediate feedback and gratification to the player.

    For my project, I will most likely end up going with option three. If I were to get an artist working on all the art assets for the game, then I would consider option two, as that is I think the best solution if given the resources to do so.

    Here’s a little sneak peak at some of the art assets I created in my attempts at option two on my own. This is for a headlamp or flashlight that the player attaches to the helmet of their suit. These are four variations for the same upgrade.

    Astronaut Light Options

      Starship Engineer: Tutorial Level

      July 9th, 2009

      I recently purchased a Cintiq 12WX (MSRP is around $1,000) to use in creation of art assets and mockups for my game. I have to say that this has to be one of the best investments a starting game designer can make. The tablet allows me to draw directly onto the screen with very high accuracy and undo/redo very quickly when I’m trying to get something just right.

      Creation of debris art assets is my top priority for the art side of things. However, I took a break from that and drew out what I have outlined in my design document for the tutorial level of the game. I’ve always liked tutorials that are built into the story so it doesn’t break that immersion into the game world. In this case, to introduce the player to the movement, salvage, and repair systems, they start in a small shuttle that has just survived an attack. Their task is to repair the shuttle by doing a spacewalk, or EVA, to replace, repair, and salvage different systems.

      And now what I’m sure everyone is waiting to see, a completed mockup drawing of the tutorial level.

      Please note that the final game will probably look a bit different than this, but it should give you a good idea as to my goals for the game. Also note, that I will not be giving any spoilers regarding how to beat different puzzles in the game on this blog. Considering this is just the tutorial level, there will be guidance given towards completing it within the game itself… that is another thing I want to save as a surprise until the game’s beta release.

      What follows is the technical information of how I created this image and some of the thoughts behind it.

      Layers

      • Background
      • Clouds
      • Astronaut
      • Engine Glow
      • Ship
      • Antenna
      • Tanks
      • Smoke
      • Tanks Compartment
      • Tanks Hatch
      • Line
      • Electrical Hatch
      • Electrical Compartment
      • Electrical Compartment Objects

      Method of Creation

      I started my drawing with the astronaut on his own layer. He started as a small white blob with barely any definition or detail that indicated it was a person in a suit. I then defined his shape more while zoomed into the pixel level.

      Then, I added the black background with blue haze to give it a basic environment. The background can’t have too much going on or it would be too difficult to see all of the foreground objects.

      The ship was created next. I drew a basic shape at first and gave it a single color. I then went back and gave it a kind of manual gradient from light to dark top to bottom. I created an airlock on it’s own layer so that it can be animated with an open and shut door animation. Every part of the ship that isn’t the hull or window is on it’s own layer so that they can be removed or replaced easily.

      The line connecting the astronaut to the ship was next, again on its own layer. Originally it was all red, but I added a black line to the bottom of it. I can’t determine yet if it should be considered two cables, a red and black, or just a shadow on the underside of the red line.

      I added the blue engine glow using pressure on the pen tip to determine opacity. Same method for the oxygen and smoke being expelled from the tanks at the bottom of the ship.

      The satellite dish will most likely be replaced with a fancier looking communications array of some sort. It was all I could think of at the time to be a kind of placeholder. I also experimented a little with shading to see if I could get a more detailed/realistic look to it.

      The hatch near the front of the ship contains 4 circuit boards. I know it’s hard to tell with them being so tiny. There is a zoomed in version that has more detail though. This is one of the items that I have as “debris” that can be collected throughout the game. Having each component in their own layer makes it very easy to separate things out and reuse them elsewhere.

      Last of all, the hatches were created by selecting a part of the ship, copying it, flipping it vertically, then lining it up or throwing it out into space as the case may be and adding details to it. If I remove those layers and the components within the hatch layers, the ship appears to have no access hatches on it at all.

      I hope you enjoyed this little preview of my game! I know that I’m loving every minute I spend working on it.

      Game Programming Libraries in C++

      June 13th, 2009

      There are many open source game librariesĀ  available for the indie game developer. Most of these libraries are not used in the professional game industry, however, they do give a programmer experience with reading someone else’s code and adapting to a new toolset/API. They also allow the programmer to do more programming related to the game mechanics, rather than spend a lot of time developing complex systems that many others have already created.

      I’ve chosen the following game libraries for my first real 2D game:

      I plan to release my game on the PC at first, but want the ability to release it onto other systems in the future. Both of these libraries are very portable and allow for this. They both have very excellent documentation and are easy to dive right into.

      They may not be the industry standard, but they will serve me just fine in my first real game as a certified C++ programmer.