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.


Cannonade 0.5.7 is now seeded

April 25th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

The two most note worthy changes in this build are SPEED and WEAPONS! After spending two days on physics performance optimization and a week and a half on graphics performance optimization Cannonade now runs a lot faster on both the iPhone and the iPad! There are still speed gains to be had but the framerate difference is like night and day. Thanks to your voting, in this build we also have the debut of the Gravity Bomb, Fire Bomb and Friction Bomb weapons. They still need to be tweaked and balanced but they are still fun to play with. Give them a shot!

Complete Changelist:

  • Bumped engineCompatibility to 0.5.7. (this means all games previously created by versions <= 0.5.6 will be deleted)
  • Did a lot more investigation into physics performance. Content with how much I have for now.
  • A HUGE graphics performance related commit.
  • Added the Gravity Bomb, Fire Bomb and Friction Bomb weapons.
  • Added powerSlider tuning buttons
  • Added a block override fade timer
  • Added all sorts of neat effects to the gravity, fire and friction bombs.
  • Added a new lava island level to design around the !FOGENABLED and NONBLENDEDLAVA speedups.
  • Initial “connection-less” Game Center implementation. Initial support for key-based communication (added libcrypto.a)
  • Added a label toggle button in game and removed the reticle label fade.
  • Reworked the visual styling of the shootMenu.
  • Abandoned scrolling on weaponScrollView because UIScrollView is too buggy.
  • Added BlockAttachements.
  • Added CANNON_IMPACT and BLOCK_POOF emitter types.
  • Tweaked Gravity Bomb effects.
  • Removed old levels.
  • Fixed a bug where resetCollisionFilters was not being called (killed replay).
  • Extended ASGlassButton to handle corners.
  • Fixed some ASGlassButton issues that were causing uneccessary redraw.
  • Added a biased decal shape as a hack until http://aorensoftware.dyndns.org:8000/TRAC/ticket/145 gets fixed.
  • Refined convex sweep tunnel protection even further.
  • Added convex sweep querying to block movements as well.
  • Added LOCALMODELVIEW so that we don’t stall OpenGL everytime we need to read/update the camera matrix.
  • Added more benchmarking oriented functionality and updated libbullet.a.
  • Tweaked build settings and switched compilers to llvm-gcc4.2.
  • Fixed the editor back into working shape.
  • Fixed cull and texture state for projectiles until they get their real objects.
  • Fixed big in terrain removal code that was smashing memory.
  • Fixed some block label override bugs.
  • Fixed key loading.
  • Fixed projectile state dirtying.
  • Added an in-game fps counter.
  • Added server games auditing to the ADMIN_MENU.
  • Checks first before copying into history now.
  • Misc bug fixes.

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.


OpenGL Game Optimization for iOS

April 22nd, 2011
Spencer Nielsen Follow snielsen42 on Twitter

For the past month or two I have been lightly seeding to Cannonade to testers. I have gotten the strong impression that the “fun” of my game was unfortunately getting lost in the low framerate. There is a certain reaction in the human brain that I am trying to evoke by making the blocks explode and collapse in physically realistic ways. However, when the framerate is too low the perception of motion is lost and so is my core game mechanic. I first spent a lot of time optimizing the execution of the Bullet physics engine and found a significant speed increase by tweaking compiler settings. I found that the execution of the physics simulation on iOS devices was very strongly locked to CPU performance. Now the time had come to start attacking the performance of the graphics engine. I was hopeful that I would be able to find even more significant speedups in this area because the graphics engine was custom written by myself and I could also employ device specific optimizations to take advantage of specific strengths or avoid specific weaknesses. Many of the techniques I tried out were nothing that hasn’t already been done before but I thought it would be worthwhile to document my experiences executing them in my specific situation. These are the results of a week and a half of aggressive performance benchmarking, exploration and experimentation. It goes without saying that my results are very data set specific and so they could perform better, worse or the same when applied to a different iOS app.

Read More →


And the next game weapon I design is…

April 18th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

the one that gets the most votes below!
[poll id=”3″]
Got a good one that I havn’t thought of yet? Let me know below and I will add it!

UPDATE: Voting is now closed! Looks like it was a 6-way tie! I have decided to deal with this by designing 3 of them, the Gravity Bomb, Fire Bomb and Friction Bomb. Check out their debut in Cannonade 0.5.7!


Introduction to Cannonade

April 2nd, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Even though many of you already know about my current project (I have also written a few blog posts about it) it is time to officially announce it and give it a quick introduction. The first project that I have chosen to work on since going indie again is an iOS game called “Cannonade”. It is a turn-based physics game with an emphasis on multiplayer and creativity. So far I have the core engine up and running. I have chosen to use the Bullet3D engine for physics simulation because of it’s general support and stability, iOS support and iOS performance. The rendering and effects engine, UI, networking engine and everything else I am writing from scratch myself. I am basing enough crucial functionality on iOS specific components (like UIKit and Game Center) that I can say with good confidence that it is going to be an iOS exclusive (although some parts of the engine may make it to other platforms). It is currently in early Alpha and there is a lot of game design and asset creation left to do. Things are still very malleable and everything is still placeholder (please keep that in mind when playing test versions and viewing screenshots 😉 ). I have a comprehensive testing plan, work schedule and timetable which I am hoping will ensure that Cannonade becomes a polished, high quality product by the time it hits the App Store.

Read More →


Bullet physics optimization for iOS

March 31st, 2011
Spencer Nielsen Follow snielsen42 on Twitter

In evaluating the core fun mechanic of Cannonade, one thing I realized was that a large part of the fun comes from just watching the blocks fall down and fly apart. However, it isn’t enough to have the simulation run and produce natural looking results if the framerate is not high enough to give your brain a good sense of the motion. After seeding Cannonade 0.5.6 and playing a few games with the significantly more complex test castles, it was evident to me that some of the fun was being lost in the low framerate. So I decided to take some time to work on performance now as opposed to further down the road where it usually happens. From the very beginning I knew that the physics performance was going to be a major issue, maybe even the primary bottleneck in Cannonade. I decided to take 2 days to concentrate on nothing but the performance of the bullet physics engine itself. There are many things I could do to lower the amount of work that bullet has to do but ultimately there is always going to be a substantial amount of work that it needs to crunch and so it should be well worth the time to get it to run faster. This is an account of my adventures in this area and my knowledge of the subject at this point.

Read More →


Help Name My Game!

February 8th, 2011
Spencer Nielsen Follow snielsen42 on Twitter


Testing out some new explosive weapons in the editor.

So after a month and a half of heavy development I am almost ready to unveil my game to the world and start alpha testing! There are just a few things that need to happen first though, the most important of which is that I need to find a name for this thing!

This game is a creative 3D physics game in which players take turns trying to destroy each other’s fortresses with different weapons and strategies. Players need to be clever in their choice and use of weapons, strike a balance between spending and saving resources, and have a pinch of luck to succeed. Players can even take their game to the next level by creating their own castle designs and pitting them against their friends.

Thematically I have been thinking that I want it to have a light-hearted, silly and fun tone to it but also have tons of big explosions and loud weapons.

So what should such a game be called? (pick up to 5)
Got an idea for name? Let me know in the comments!

UPDATE: Voting is now closed. I have decided to go with Cannonade! Thanks for your input everybody!

[poll id=”2″]


Determinism in Games

January 28th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

One day while I was hard at work a couple weeks ago I hit a really difficult technical snag. I stood up from my desk, let out a sigh and declared to the other person working in the office that “I’ve lost my determinism!”. He then inquired how I had lost my motivation while visibly wondering if I had used the word correctly. Although I had hit a significant roadblock, my determination to overcome it and make progress on my game was higher then ever. The “determinism” of my game however, had been lost. Now I needed to take it back.

Read More →


The Startup Grind

January 20th, 2011
Spencer Nielsen Follow snielsen42 on Twitter

Interested in startups or startup culture?  If you live in or around the Bay Area you should come to a monthly event that my friend Derek and I started a couple months ago called The Startup Grind.  The event is held on the last Thursday of every month (except when holidays conflict) at 7:00 at the Vaporware Labs office in Mountain View.  It has two main purposes.  The first is to hear talks and presentations by experienced entrepreneurs, VCs and others involved in startup culture or business.  The second is to network and chat with other people just like you who may be in the thick of starting a company, provide services to entrepreneurs or just like to discuss cool projects with interesting people.

The Startup Grind Meetup is free and there is always pizza and drinks (although if you are so inclined you can make a donation for the pizza).  The next meetup is exactly one week from today and will feature a talk by the CEO of Smule, Jeff Smith.  And in February we have Jason Calacanis on the schedule to speak. All are welcome so feel free to drop on by!  When Derek and I started the event it was just a couple of friends brainstorming interesting ideas.  Now as of the latest count we have 126 committed to attending the next meetup!  It has grown faster than either of us would have guessed and it looks to have a really bright future!


Entries (RSS) and Comments (RSS).