Hellfire (iPhone Game)

App Icon

  • Product description: Free-to-play Card Collecting game
  • Release Date: April 9, 2013
  • Product history/genesis: This is the first Unity3d-based title for the company. I was brought on to add new features to the product.
  • Team: Lead Coder, Self, Three Coders, Three Producers, Multiple Artists, QA team.
  • Core Technologies: C# in Unity3D, with native Java and ObjC code for platform specific plugins.
  • Most proud of: Quickly learned Unity3D, and made significant improvements quickly.
  • Responsibilities: Added Special Dungeon features, Code Refactoring and Engine support

Flick Controls Appstore Image
While I had done a little research into Unity3D previously, I did not feel a need to get deeply into it. After my company was bought, they forced a new tech direction, and by the time they allowed for native game engines again, theComplex had stagnated for two years.

As things turned out, it was the best possible situation. The deeper I got into Unity3D, the more the engine resembled the core design ideals of my own. In fact there were a few situations where I was able to guess the internal design of some Unity3D features simply by imagining how I would have written it in my engine.

Deck Edit Appstore Image
While my tasks started small, in the six months leading up to this major release I touched nearly every facet of the game. Adding new user interface scenes, working with downloadable asset bundles, creating asset bundles, and adding to the sqlite data management system.

One of my major tasks was to make scrolling lists act correctly on the new iPhone 5 with its taller screen. Up to this point the game simply stretched the standard 320×480 scene to the larger aspect ratio, and the effect was noticeable. I rewrote major chunks of the scrolling system to support proportionally correct scrolling, while still filling the entire display.

I also was a significant part of creating a new event type, the “Special Dungeon.” In standard dungeons you can choose to play any specific round of the game in a largely static environment. Special Dungeons have a specific progression of rounds that got progressively harder. With each round you would visually “crawl” through the dungeon to face the next foe.

I have continued to make improvements on this title, but now am on to other projects at the company.

Coin Push Frenzy HD (iPad Game)

App Icon

  • Product description: Free-to-play carnival game.
  • Release Date: Nov 24, 2010
  • Product history/genesis: Original title (Coin Push Frenzy) was handed to me to clean up enough to release. After doing so, I recoded it in my game engine (theComplex) to create the iPad version. Re-used most artwork from the original game.
  • Team: Self, Producer, Artist, QA team.
  • Core Technologies: C++ game in theComplex engine supporting iPhone OpenGL, and partial Android OpenGL
  • Most proud of: This was a very fast conversion. By this point my game engine had matured enough to allow this conversion of a very messy, zero commented, plain C codebase into a sleek and efficient game within a couple weeks.
  • Responsibilities: All code and art integration

Game Screenshot

All of the 2d user interfaces were implemented using Interface Builder. theComplex was able to load xib files directly and create OpenGL-based objects with them. This also included support for any aspect ratio screen (as would be needed on Android).

There are actually two physics engines in use on this product. theComplex has bullet physics integrated into it, and this was used for almost every object. However, in the original game, all the coins that were directly on the face of the playfield were handled manually in a 2d-only, much simpler physics system. This was done as a performance optimization. The side effect was that a coin that dropped onto the playfield at a slight angle (say, by getting hung up on the pusher) would actually stick at that angle permanently as it moved down the playfield instead of laying flat as one would expect. The HD version of the game preserves this error, despite the fact that the improved engine did not need the optimization any longer.

Machine Selector

When beginning this conversion, I built a few alternate models for the playfield to take advantage of the iPad’s larger display size. None of these alternate models made it into the final game, but the engine was able to play just fine with them.

Some of the most difficult things to reproduce in the new engine was the particle effects of the original. The original was based on redrawing everything every single frame, and the new engine is designed with a core concept of “assume it will exist in the next frame.” This was eventually handled by adding some particle system support to the engine, with dynamic vertex buffers. Up to this point, supporting both Apple’s vertex buffer standards and the ARB versions (for different hardware) was not that simple. But Apple had finally made the ARB versions available across all hardware which considerably simplified the task.

This was the first game based on theComplex game engine to run partially on Android devices. It could get into and display the main game board. I was unable to complete the port, as ngmoco had just purchased Freeverse and completely changed the technology direction behind our games, canning it.

An older (but more exciting!) portfolio page for this project.

NBA Hotshot (iPhone Game)

Game Icon

  • Product description 3D pop-a-shot basketball game. Reached #29 on Top Applications across entire App store.
  • Release Date Jan 5 2010
  • Product Genesis Had previously built a basketball shooting multigame (Flick Basketball) with my theComplex engine. We redid the models and graphics, breaking this component out into it’s own title to focus and polish it.
  • Team Self, Producer, Artist, QA team.
  • Core Technologies C++ game in theComplex engine supporting iPhone OpenGL
  • Most Proud Of Integrated a theora video decoder for the backboard to animate short videos triggered by the player’s actions, like that seen at arcades. This was on devices that could not yet do any sort of video through standard apple APIs.
  • Responsibilities All code except the ball throw itself.

Gameplay Screenshot

All of the 2d user interfaces were implemented using Interface Builder. theComplex was able to load xib files directly and create OpenGL-based objects with them. This also included support for any aspect ratio screen (as would be needed on Android). Later on I found out the producer was able to create a free advertisement-based version of the game without any need of a coder until it was practically complete.

Backboard and net movement were animations imported from Maya using the Collada importer of theComplex engine.

Added synchronized network play with four other players via GameKit (bluetooth or wifi). It synchronizes the game start, then displays the scores of the other players in real time.

High Score Display Screenshot
Integrated Plus+ leaderboard system.

Built an in game “store” that you can purchase additional basketballs and prizes. How you did in the game awarded you special points that you redeem in the store.

There was a bit of discussion around the ball throw itself. I had built a method of throwing the ball that worked out the ideal angle/speed to throw the ball, and then averaged all the player input to modify it. The feel was pretty easy, good for casual gamers. However the game Skeeball had recently been released and was a fairly big hit. In that game, only the player’s beginning and end of the swipe mattered, and it was used to make a direct correlation to the velocity and angle of the throw. It was much more difficult in my opinion.

An older (but more exciting!) portfolio page for this project.

kinda green

It’s been odd these past couple days for me to be so dang “glass half full”. Tho I think it’s related to a) forementioned great project; b) wifey and I finally reached 100% on Lego Star Wars (those who play know that isn’t easy); and c) completing an independant game called Iji.

To those who play, Iji is a classic side scrolling platformer with great writing, great music, and a main character you can believe. Tho what really got my bacon was the ending stats screen which said I killed a huge number of enemy characters I didn’t need to. This is after an entire storyline devoted to the idea of the insanity of having to kill just to get your voice heard. It really hit me how greatful I am knowing I don’t have to make decisions of that order of magnitude in my real life.

While I’d like to say my kill ratio was just because I’ve played games so long, the fact that I can look back and see many places I could have just run makes me think I should not be playing such violent games.

This week’s buzzword: Augmented Reality

Since iPhone 3gs came out with it’s compass everyone has been talking about augmented reality. So we jumped on the bandwagon. In two weeks I’ve made a full on game for augmented reality on the iPhone complete with skin animated butterflys, full UI, and fairies with fast beating wings. And it’s fun, too!

We can show as many butterflies as we want- it shares the animation results and only processes it once a frame. I really like the engine I wrote over this last couple years. It’s sad that the other projects it’s been in haven’t been very commercially sucessful. This project is different- it’s not being held back anymore. Now that it reads Interface Builder files directly it doesn’t need a secondary user interface engine.

This time around we finally have an honest to goodness technical artist. Every 3d house must have one, and we have a great guy!

Dunno when the publisher will release it but I’m excited about how fast and well we made it!