More Farseer.BMX

I was hoping to have an update a little earlier than this, but decided to hold off and throw together at least a bit of content with the update. I’ve added a slew of joints and controllers into the Farseer engine for Blitzmax (which I think I’ll just start referring to as just Farseer.BMX to save my poor little fingers). Below is a list of stuff I’ve added since the initial post:

  • Angle Limit Joints (featured in the youtube video below) – this allows you to do some interesting joint behaviors that could potentially allow you to create a 2D ragdoll of sorts with limb constraints.
  • Fixed Angle Limit Joints – Same as above except instead of linking two objects together, only one is used and it’s angle is limited.
  • Fixed Angle Joints – Allows you to make an object always point in a certain direction. You can think of it as a way to disable ‘rotation’ for a particular object, and it will always be set at some angle from some anchor regardless of where it is in the world.
  • Angle Springs – You can link two bodies and they will attempt to align themselves to a certain angle using spring physics to give a bouncy effect.
  • Interactive Angle Joints (untested)
  • Circular Interpolator (untested)
  • Pin Joint – This one allows you to choose an anchor on two bodies and a distance, and the two physics bodies will always stay that distance apart, but still tumble and interact with other bodies realistically.
  • Slider Joint – Same concept as a ‘Pin Joint’ except now instead of a concrete distance apart there is a minimum distance and a maximum distance these two objects will stay within.
  • Brute Force Collider – Just another broad phase collider you can use instead of the default one. I may dig up a forum post by Jeff and others that describes the advantages/disadvantages among the different colliders you can choose from in Farseer.
  • Some getters/setters for the physics debug viewer class – Makes the debugger class a little easier to use.
  • Fixed a few minor bugs

Anyway, the video I posted isn’t that impressive but shows you that Farseer makes it pretty easy to setup different types of constraints and scenarios with just a few classes. There’s no new demo application to download for this update as I’m pretty close to finishing up the rest of the port, and would rather just wrap up a few more demos and get the code out there for others to use. Hopefully I’ll have more in a week or so!

4 comments

  1. Ye me toom looks alot more promising then some of the other physics engines, Id just like to ask though… Do you think that it would be possible to do a port over to BlitzMax or Blitz3D from C++ on the library on this site?

    http://www.alecrivers.com/physical/overview.htm

    Its basically just a physics engine with a built in damage system that is pretty good and would be a good feature to have in future games…

    Leonard

  2. Almost there, just a few more classes and fine tuning :).

    Leonard, that library looks interesting, but I wouldn’t be the person to port/wrap it for Blitzmax. I’m porting Farseer because I saw use for it for my own projects in Blitzmax, and figured the rest of the community could benefit from it if I took the port all the way and added some polish to it.

    A dynamic damage system would be rather challenging to implement in 2D real-time both in regards to rendering and physics. There isn’t much stopping you from changing the geometry in Farseer on the fly, but I haven’t really done any practical tests to see if this is feasible to do in real-time. Also, the ‘constructor’ methods aren’t as heavily optimized as the run-time methods for speed.

  3. Hi, i just downloaded the BlitzMAX demo, and the farseer.zip, and followed the install instructions. But when i try to run the demo it fails and says

    Compile Error
    Can’t find interface for module ‘aco.farseerphysics’

    What to do?
    Probably i am just thick.

    I extracted the farseerModule.zip to the mod folder. Please help! This looks like great fun.

Leave a Reply

Your email address will not be published. Required fields are marked *