Fizz & Hummer

Fizz and Hummer is a scrolling shooter game. The player plays as either Fizz or Hummer two Honey Bees out to save there kidnapped queen from the evil wasps. As you fly through levels you must fight of enemies like ants, spiders, hornets ect. Two player can play as Fizz and Hummer cooperative over a network using two iPhones. It was nice to work on partly because the client had a fleshed out idea complete with story.
   We decided to use LevelSVG as the basis since I had worked with it before and liked it.

Technologies: iPhone / iOS, Objective C, LevelSVG/Cocoas2D, Network Sockets





Technologies: iPhone / iOS, Objective C, LevelSVG/Cocoas2D, Network Sockets
My Responsibly: Programming, Physics, Network, Art, Testing, 

Not my work: Concept
Description: Fizz and Hummer is a funky 2D scrolling shooter. It allow two player to play cooperatively over a network. Fighting against Wasps, Spiders and other insects.


Concept:


Fizz and Hummer is a scrolling shooter game. The player plays as either Fizz or Hummer two Honey Bees out to save there kidnapped queen from the evil wasps. As you fly through levels you must fight of enemies like ants, spiders, hornets ect. Two player can play as Fizz and Hummer cooperative over a network using two iPhones. It was nice to work on partly because the client had a fleshed out idea complete with story.
   We decided to use LevelSVG as the basis since I had worked with it before and liked it.



Network:


By far the greates challenge of the project was the cooperative gameplay. One iPhone (min req. iPhone 3) had to function as a server and allow for another iPhone to connect to it. They both had to share a common world, keep it updated. and do so over 20 times a second. Do that is much more difficult that writing a corperate server. LevelSVG does not have any network support so I had to write this from scratch. Technologies have come out since that make this easier but I wrote it using network sockets.


Physics:


LevelSVG already had coalition and was fairly good for ground physics but this was a scrolling shooter. As well as that it had to scroll upwards almost indefinitely, which as it turns out levelSVG isn't designed for this so I had to rework alot of LevelSVG at low level to allow for levels with a near infinite height and to got smoothly as you scroll up trough the level.


Graphics:


I don't always got to have art or design input so when I do I like to do a good job. I sketched out the characters screens, examples of gameplay and reworked them a few times over until I was happy before doing the Digital work.


Menu Screen Sketch


Queen Bee Sketch
A section of the first level
Heros and a Enemy, In Game


Parallax

tiled
Optimization:
This project was a masterclass in optimisation. Implementing the individual requirements of the project weren't that difficult but the combination of huge levels, large number of enemies, Parallax, human input and running a server initially proved more than the iPhone 3 could handle, at least at 26+ frames per second that games demand.
Optimizing became a project on its own. I used the tools that come with XCode to measure memory and CPU usage. That helped somewhat. Then added debugging code to all the major areas of code Graphics, Control, Physics, Network, Enemy behaviour to logged the time taken to do each under a number of contains and brainstormed to come up with optimisation that could be made. Eventually bit by bit shaving off a few milliseconds here and a few there it became more and more efficient. I learned a lot doing this.

Conclusion
the enormous challenges here. I have to be honest here, Id written network code, even write a multi threaded server but this was an challenge, far more challenging than expected. I underestimated this piece. Game Network Code is hard, very hard. Getting the two devices to communicate is simple enough but to get two phones already running on a shoe string budget of resources to transfer a little world of animated characters and get them to match in the fraction of a second between the frames is though. For me it involved upping my game hugly in the area of optimisation and resource management. That took time, whittling off a few micro seconds here and a few micro seconds there until all the characters run so smoothly that you don't notice the update. If you are ever writing network code for a real time multiply game (turn based can afford a little lag) give it the time it deserves and plan accordingly, Leave a lot of time for testing and optimization. Treat it as an individual project.

video