Archive for the 'Cannonade' Category

Zurp 1.0 Postmortem

December 15th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Last September I wrote a blog post introducing Invader Zurp which revealed a little of the back story on how I came upon this new game idea after it’s first 2 months in development. Fast forward to 3 months later and Invader Zurp had just hit the App Store! I thought it would be useful to sit down and review the last 5 months of development, kind of plan out where I want to go from here and go over the events and insights that I thought were most influential during development.

The Story So Far…

So to recap the original blog post a bit, it was the middle of the summer (2011) and I had been working my brains out on Cannonade for the previous 6 months. I was a little discouraged at that point because progress wasn’t coming quite as quickly as I had hoped. Reception from my testers (just friends and family at that point) hadn’t been as positive as I had wanted either. I still had a very clear vision of what I wanted Cannonade to be and still believed that there is a ton of untapped potential for multiplayer-only games on iOS. But there was only so much I that could do as a one-man team and testing a multiplayer game can be quite time consuming. I took the family on vacation in early July and was able to step away from things for a while. It was then that I got an idea for a single player experience that distilled the core gameplay mechanic of Cannonade down to it’s essence. Thus Invader Zurp was born. Within two weeks I had modularized the Cannonade game engine, re-written the graphics sub-system in OpenGL ES 2.0 and had a working prototype. And it was fun! I found myself on very long “testing” sessions playing even after I had verified my fixes. I seeded the first alpha version in early September and wrote the introductory blog post. Then began the journey of finishing the game and kicking the darn thing out the door. (more…)

iPod Touch Server: iOS 5.0 Edition

October 12th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Achievement Unlocked: iOS 5 NDA

In a previous blog post I outlined my need for an iOS server. I had found a sufficient but non-optimal solution for iOS devices running iOS 4.X. I mentioned at the end of that article that I had found an optimal solution utilizing some new features in iOS 5. Now that iOS 5 has gone gold master and the NDA has been lifted I can outline in detail how to get your own iOS server up and running. To review, the three requirements for setting up a server in my situation are that it must:

  1. Be able to receive push notifications (so it can get it’s work)
  2. Have it’s display turned off (to save energy and avoid things like screen burn-in/fatigue)
  3. Require no human interaction (needs to be completely autonomous)

In the previous article I outlined why these were in conflict with each other on iOS 4 devices. However, there is some new functionality and behavior policies that allow all three requirements to be fulfilled.


Invader Zurp

September 12th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

So for those of you on my Cannonade TestFlight profile, you might have noticed that I havn’t seeded a build for about two months. I have a good explanation for this.

Lets rewind back to right after my last Cannonade seed build. I was on vacation at the time and had the opportunity to stand back from Cannonade and evaluate things from a different perspective. Sometimes I don’t think I seek out those opportunities to just sit and think as much as I should (just thinking sometimes makes me feel a bit lazy for not doing). At one family gathering I observed my older son playing Fruit Ninja on his aunt’s iPhone. I was aware of Fruit Ninja and knew that it was a definite App Store success. As I watched him play I thought to myself “That just one play mechanic. One. Repeated, millions of times over and over and over.” This is the typical MO of most games that are successful on the App Store. Simple, easy to pick up and well implemented with good production values. With Cannonade I am trying to break new ground on the App Store. I still believe that there could be a place for deep multi-player experiences on the App Store and I think that Cannonade is on the right track. But watching Fruit Ninja got me thinking. Did I have a single, fun gameplay mechanic that I could repeat millions of times? The core fun mechanic of Cannonade is “Knock Your Friend’s Castles Down.” Maybe I could modify that to just “Knock Castles Down.” Even knocking down dumb castles was fun in and of itself. Maybe I could repeat that experience millions of times and put out a more limitedly scoped single player experience? I decided that it would be a really fun exercise and that I would put Cannonade on hold for a few months while I brought this new single player game to market. I call it “Invader Zurp“.


Cannonade 0.5.10 (Wall Street) is now seeded

June 22nd, 2011
Spencer Nielsen Follow snielsen42 on Twitter

So you’re successful right? How successful? Let us count the ways. Let us count them by ranking you against your peers with an Elo ranked leaderboard and achievements. Remember that your worth can now be quantified and compared, so be sure to push your numbers as high as you can. “Greed, for lack of a better word, is good”. Welcome to the Wall Street update.

Complete Changelist:

  • Bumped engineCompatibility to 0.5.10. (this means all games previously created by versions <= 0.5.9 will be deleted)
  • Fixed a bug with the friction attachements that was casuing divergence.
  • Taking another initial stab at redoing the cluster picker menu.
  • Initial stab at 2X UI for the iPad.
  • Added in-game stats panes and leaderboards.
  • Designed the profile page and got initial replay functionality implemented.
  • Made some changes to speed up app initialization.
  • Added more capability to the stat gathering functionality.
  • Added “Judge” capability.
  • Added all the server-side support for interacting with judges and passing judgement on games.
  • Added more stats functionality and judge bug fixes.
  • Refined convex sweeping to only be super aggressive when dealing with the (thin) terrain.
  • Fixed some concurrent loading bugs.
  • Fixed a sound loading bug.
  • Added a pragma to skip the intro.

I described the initial set of achievements that I had come up with in a previous blog post. For this update these are the achievements that are actually implemented and currently earnable:

Boot Camp Rookie’s Luck Start A Fight With A Total Stranger Keep Your Enemies Close…
Finish Him Good Game Battle Hardened Angry Zurps
The General The Old College Try Flawless Victory LOL HAX
Peashooter Moonshot Greased Pig Heh Heh, Fire!, Fire!, Fire!
Rainbow Roll Lucky 7s Sky High Going The Distance
Pacifist One Hit Wonder Jack Of All Trades Critical Hit
Epic Fail McDuck The National Debt All Your Base

Alpha Testing List

Would you like to be one of the awesome alpha testers that help make Cannonade great? Send an email to: [email protected] and I will reply with instructions on how to get onto the Trac server, Testflight list and tester forums.

iPod Touch Server

June 11th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Top-down view of the Aoren Software datacenter in the living room corner.

Why, you might ask? In my case the answer is simply because it is my only alternative. In development of my game Cannonade there quickly arose a need to be able to replay my user’s completed games and validate the results with exactness. In order to obtain that level of exactness, my games must execute with complete determinism. Unfortunately the implementation of floating-point match according to IEEE754 can actually vary somewhat between x86 and ARM processors. This means that if I replayed a game that two of my users played using iOS devices on an x86-based server, the results of the replay would very quickly diverge. Thus I am left with no choice but to set up a dedicated iOS device to wait for notifications of the matches that it needs to replay and validate (a process I call judging). An iOS server you might say.


Achievement Brain Chemistry

June 4th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

One crucial aspect of my game that I have been thinking of for a while has been that of in-game achievements. There is just something about the hormones that get secreted in your brain the first time that sound or notification goes off that hooks you like the first line. I have come up with an initial set of 40 achievements that I will hopefully have implemented by the next seed. Your challenge: tell me what you think in the comments below, let me know of any cool ideas you have for achievements and bonus points for anyone that can name all the movie, video game or cultural references below.


When Bullets Move Too Fast…

June 1st, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Did you know that bullets (and other quick moving objects) in video games sometimes exhibit magical properties if they move too fast? If they gain enough speed, sometimes they can even pass completely through other objects without leaving a scratch or affecting them at all! You might have seen this happen occasionally in games that have a lot of complicated physics simulation. Sometimes fast moving objects just seem to pass through the ground or other objects. Unfortunately this is not a desirable user experience and it quickly breaks the illusion the game is trying to convey. This phenomenon is called “tunneling” and game developers attempt to deal with it in a variety of different ways. I thought I would share my unique combination of techniques to deal with it that I used in Cannonade. I have not seen this specific combination of techniques explained or suggested anywhere and so I thought it might be beneficial to share what I have learned with others who might also be suffering from object tunneling woes. First lets explain how most modern game physics simulation works and investigate why this problem crops up.


Cannonade 0.5.9 (Primer) is now seeded

May 23rd, 2011
Spencer Nielsen Follow snielsen42 on Twitter

I have decided to give names to all of my alpha updates going forward. I have chosen to follow a movie theme naming convention. I am therefore proud to announce the “Primer” update (Cannonade 0.5.9). Aptly named, this update finally adds the timeline scrubbing feature! This feature allows you to pause and restart the game at any point in the past by dragging the timeline slider and hitting the play button. Perforated glass doors quickly shut and you hear the low hum of time travel occurring in the background. Once the universe has temporally moved to your desired point the doors open and you can watch history repeat itself!

Complete Changelist:

  • Bumped engineCompatibility to 0.5.9. (this means all games previously created by versions <= 0.5.8 will be deleted)
  • Got the timeline scrubbing working!
  • Added a neat glass door progress indicator when you jump through time.
  • Moved auto-camera to only be active during opponent’s turns.
  • Did a top to bottom redesign of the cluster menu
  • Added basic OpenGL lighting to blocks.
  • Added an initial pass of the intro sequence.
  • Moved the castle picking view to one-quarter height up.
  • Used glPolygonOffest to correct decal the friction splatter.
  • Changed the editor so that it moves the camera to the half-height everytime the blocks change.
  • Baked the current levels and fixed some bugs related to baking.
  • Added history grabbing functionality.
  • Fixed a lot of bugs related to observing various points in the timeline.
  • Modified the project so that I could submit a dummy IPA to iTunes Connect so I can keep my identifier (I hope).
  • Made a new Pad+Phone based experience.plist.
  • Changed the level’s info format from a serliazed file to an NSDictionary/plist.
  • TONS of changes aimed at making it easy to integrate art.
  • Removed the individual block textures now that the atlas is working everywhere.
  • Pulling demo/intro values into the experience.plist.
  • Initial demo intro game type implementation.
  • Added a dummy account loging pragma (LOGINASAORENTEST1).
  • Minor tweaks.

Alpha Testing List

Would you like to be one of the awesome alpha testers that help make Cannonade great? Send an email to: [email protected] and I will reply with instructions on how to get onto the Trac server, Testflight list and tester forums.

Cannonade 0.5.8 is now seeded

May 9th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

The focus of this update is the new in-game tutorial! Now when you first launch Cannonade if you have never run through the tutorial it will prompt you to do so. The tutorial level is meant to teach new players how to use the battle interface and get them some target practice with the fundamentals. Give it a whirl and let me know what you think!

Complete Changelist:

  • Bumped engineCompatibility to 0.5.8. (this means all games previously created by versions <= 0.5.7 will be deleted)
  • Initial implementation of the tutorial game type and level.
  • Made some menu refinements and added a “Wiki/File A Bug” menu option.
  • Made it so that you are prompted to run through the tutorial if you havn’t before on that device.
  • A few quick menu sound effects.
  • Added detailed statistics gathering.
  • Fixed lots of little simulation execution bugs.
  • Tons of leak hunting.
  • Added friends info to the game server packets and cleaned up the server code a bit.

Alpha Testing List

Would you like to be one of the awesome alpha testers that help make Cannonade great? Send an email to: [email protected] and I will reply with instructions on how to get onto the Trac server, Testflight list and tester forums.

Cannonade Tutorial

May 6th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

For the past week I have been working on creating a gameplay tutorial mode for Cannonade. I am pretty pleased with how it has come out! There are still enhancements to be made and polish to be applied but I think it is good enough to put into the next seed. It is meant to explain the interface and get you some basic gameplay practice before you go up against real people online. It reveals the interface step by step, explains how you use it and lets you get some hands on experience with each concept as it is introduced. If you have never completed the tutorial before then it is the first thing that runs when you launch Cannonade. Previously the only way to figure out how to play was to just press buttons and experiment around after you had already entered a game with a real person. Hopefully by adding the tutorial I can help teach people about how to play the game before they play for reals.

Entries (RSS) and Comments (RSS).