Graduation is over :). Real world here I come.  Anyway, going to be moving in probably a month or so. In the meantime I’ve got a lot more time to focus on some of my game projects. My main focus is finishing up an iphone game and it’s coming along great! Whenever I play it I end up playing it for a lot longer than needed for testing, so hopefully that’s a good thing :). I’m still iterating on the gameplay and the aesthetics for it using placeholders and crappy programmer art. The current build in still shots looks like a ‘mess’ more or less. Won’t make for good app store screens looking like it is now because it’s too confusing. The very first version was very easy to distinguish the player from enemies because it simply had 3 colors (black, red, white). I may have to use that principle moving forward to help keep the confusion to a minimum.

The game is a tilt-controlled shoot-em up. Except the player cannot shoot directly :). So during the game the player only tilts the iPhone and never touches the screen. Two big wins here:

  1. Intuitive controls
  2. No fingers getting in the way of the screen.

In order to destroy enemies the player must run into power ups. When they hit one it sets off an explosion affecting an area around the power up. The basic one simply kills enemies in the blast radius, while others have more interesting effects.

So here’s a few screenshots of the game from very beginning to the current ‘messy’ build.


The above screen shows the very first prototype. Green boxes were pick ups. People that played it enjoyed it despite the really simplistic look.


The next iteration had some basic placeholder graphics and a static background placeholder image. The gameplay also introduced pre-configured wave shapes for enemies to spawn in. So in addition to random spawning enemies could try to attack in lines, surround you in a circle, etc. It upped the difficulty a bit so some tweaking was needed.


This next iteration was focused on gameplay improvements and additions. I added a new power up (a type of explosion that spread from enemy to enemy), and a combo system along with a few other things. The new power up was added to counter-act the difficult spawning patterns of the enemies and it proved useful. It was almost too useful.


And that brings us to the current build. I redid a lot of the graphics and went for a simple vector-art look. Unfortunately, the overall look tends to be very messy in screenshots and the color scheme is ‘meh’. Though I like the look of the enemies, the explosions (particularly the redone viral spreading explosion) could use some work. The blue enemies are enemies that were hit with a freeze power up. There were a few more power ups added. In general, the game feels more solid but visually feels less focused.

Those that are wondering where I got the placeholder background images from:

I do not intend to use them in the final game as they will be replace by original artwork.

I’ll have more on the game’s features in the coming weeks as things start to finalize.

And there was much rejoicing! It does feel great to finally ‘finish’ something. I started out this project as something to give me a foundation to code my own game project on, and now after 110+ hours of coding there is a 2D physics library for Blitzmax :)! I hope it proves useful to those that end up using it. While the engine hasn’t been tested for ‘real-world’ use it I think the demos do a good job of putting it through its paces. It’ll very soon have a good test through a ‘real world’ application once I get it integrated with my own game project. Anyway, Farseer Physics for Blitzmax is ready for download. The zip file contains:

  • A compiled version of the physics demo application with 4 new demos!
  • Ready-to-compile source code for both the core physics engine and the demo application
  • A ‘quickstart’ application that shows someone how to setup a basic physics scene with minimal code.
  • a ‘quick start guide’ that pretty much is a walk through of the quick start application. Which can also be found online.

For those eager to get their hands on it:

Download: Farseer.BMX

Since the last update, things came together rather quickly. I finished up the last of the classes that needed to be ported earlier in the week, which I then spent the rest of the week adding in demos to the demo application. This port is a very close implementation of the original Farseer in C#. The only times the source would deviate in any major fashion were in time-critical algorithms where optimization needed to be done differently considering how different C# and Blitzmax handle things (particularly garbage collection). With that said, you may find it helpful to visit the codeplex site of the C# version of the engine if you find yourself wondering how to do something in Farseer. While the answer you get may be in C#, keep in mind the methods, functions, and variable names are similar, if not identical, in Blitzmax. I’ve also implemented additional demos on top of the standard ones that came with Farseer to show the use of most of the available types in the engine. So if you wish to know how to implement a certain feature, try looking at the source code of one of the demos that does the said feature.

Here’s just a quick run down of what was added/updated since last post:

  • Added Demo 11 – Slider and Pin Joints
  • Fixed a minor bug in the main menu causing the about screen to stick
  • Sweep and Prune Collider implemented (not completely optimized)
  • Bilinear Interpolator
  • Added the Convert Units class for easy transformation between screen and world coordinates
  • Added IFluidContainer
  • Added onEntry and onExit event handling for fluid containers
  • Added Collision event handling
  • Added Demo 12 – Fluid Drag Controller
  • Added Demo 13 – Collision Event Handling

The fluid container objects turned out to be a bit cooler than I expected it to be. Not only did it simulate buoyancy but there was a controller that simulated wave formations on the surface of a container. Cool stuff indeed…

Pictures don’t do it justice so here’s a video…

By default Farseer doesn’t come with any code that allows geometry to create disturbances in a fluid container, but it comes with a nice, easy to use Disturb() function along with handy callback events for when a object enters and exits the container. With this I threw together a basic water container class that does some very ‘rough’ interaction between geometry and the waves. It’s far from realistic, but still yields an interesting effect I think. Someone could easily take this code and improve upon it. I’ve kept it outside of the ‘core’ physics engine and put it in the demo source since it was something that was kind of thrown together last minute (you can tell that by the rather rushed rendering code).

So that’s about it for now. I hope this engine finds some use in the Blitzmax community. Thanks to those on the blitz forums that provided feedback and data to help me optimize the engine. An especially big thanks to Jeff Weber for writing such a robust 2D physics engine to begin with!

*Crosses fingers and hopes the code will compile without issue on OSX and Linux*… 😉