It has been a while since my last blog post :(. If you’ve been following my twitter account though you’d know it’s still been a busy last couple of months. I’ve been developing things on several fronts lately. For one, I’ve been busy developing some supporting code to hook Opensteer into C4 in a more seamless matter and work with C4’s constructs in mind. It’s a project related to some school work, which has proven to be challenging and fun. Hopefully the students in the video game design class that I did this AI library for will find my work at least useful for their games.

In other news, I had a inspirational fever lately as I’ve come to understand a lot more of how physics and animation work due to a class I’m attending. I decided it’d be a fun spring break project if I could apply what I’ve learned to a simple 2D physics demo. Maybe it’ll grow to something more, but for now it’s more of an exploration and an excuse to work in Blitzmax again.

I’ve started the registration process for developing on the iPhone and it’s proven to be rather headache inducing lately with trying to get all the paperwork in order. After yet another delay, I won’t be able to start deploying apps on my iPhone for at least another 2 weeks. Damn. The iPhone game development venue seems promising, but the window is closing fast for anyone wishing to make a decent amount of money with minimal marketing effort. With the announcement of iPhone OS 3.0, and all the new features it’ll boast it makes the platform even more exciting to develop for. One of the more interesting development I think is the ability to ‘subscribe’ to apps and also buy additional content for particular apps. This type of business model would maybe give way to the first true ‘MMO’ (and I use the ‘Massively’ M loosely here) on the iPhone that can sustain itself? Interesting indeed.

Finally, I’m still chugging away at my Xbox Live Community Game. No idea when it’ll be done and there is no name for it yet. All I can pretty much say is it is a stylistic platformer. I recently got a parallax system working that I’m finally satisfied with. Also spent a couple of hours with Adam browsing music sites for potential audio soundtracks and we came up with some interesting possibilities. A lot of our musical choices leans more towards the ‘classical’ genre, so it’s not your typical uppity/pop/techno game music. I really hope as things solidify I’ll finally be able to post some media to show off the progress of my games. Until then, I’m focusing on finishing my last semester in school, looking for a developer job (preferably game industry related), and working on these game projects in the meantime.

I was made aware of a serious issue with detecting collisions between TGeom’s recently. While it did not affect anyone who was using the engine and letting the TPhysicsSimulator run and manage collisions and dynamics, anyone who wished to use Farseer.BMX’s collision routines separately by calling TGeom.CollideWithGeometry() ran into issues. The code has since been fixed and updated. Please update your Farseer.BMX module so you can continue using it without this annoying bug.

Download: Farseer.BMX v1.1

What if I made customizations to the Farseer.BMX code already?

Well thankfully, the bug was isolated to only one file, and in particular one method. If you wish to keep your custom build of Farseer but want to fix the issue then simply download this new version and take the Collisions/Geom.bmx file from it and place it in your corresponding Farseer.BMX directory.

If you happened to make changes to the Geom.bmx file itself, then simply search for the method ‘CollideWithGeometry()’ in the new version and place it in your current version. For those that simply want the code that’s changed (since this is a small change) I pasted it below:

[blitzmax2]
Method CollideWithGeometry:Int(geometry:TGeom)
For Local i:Int = 0 To _worldVertices.Count() – 1
_vert = _worldVertices._vecArray[i]
If geometry.Collide(_vert) Then
Return True
End If
Next

For Local i:Int = 0 To geometry._worldVertices.Count() – 1
_vert = geometry._worldVertices._vecArray[i]
If Self.Collide(_vert) Then
Return True
End If
Next

Return False
End Method
[/blitzmax2]

This was a minor update that I thought was critical to getting out there for those that may be experiencing problems, so there aren’t any ‘extras’. Documentation is still a WIP.

Yes, yes I know the documentation is lacking at the moment for Farseer.BMX. I’m still working on it on a few fronts. First, I’m trying to do api documentation (bbdoc mostly). Secondly, I’m trying to write tutorials/guides that help show how to use some of farseer’s features. I had hoped that releasing the demo application source code would’ve covered this aspect as the demos cover pretty much each feature, but I guess since the demo source is a bit more complex in design (handling a lot of graphics related mumbo jumbo), the actual ‘needed content’ wasn’t particularly easy to find. So I’m going to try to write up very simplified versions of some of farseer’s basic features (minimal graphics, minimal code).

I’ve uploaded the first of these tutorials to the articles section. It covers creating concave polygons in farseer :). More to come soon…