May 28

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!

May 16

Hurray! Finially got to a stable stopping point in porting over Farseer Physics from C# on XNA to Blitzmax! Farseer Physics Engine is a 2D physics engine originally written by Jeff Weber who develops XNA/Silverlight games over at Farseer Games. Much thanks to him for creating a great physics engine and for allowing me to move it to another language, which once done, I hope will help others create fun physics games in Blitzmax.

I’ve ported the ‘core’ features of the engine which now would allow you to use the basic features of the engine. If you head over to the Codeplex Farseer Physics Page you’ll see a list of the features in the C# version of the engine. Right now the things that aren’t implemented in the Blitzmax version:

  1. Fluid Drag and Buoyancy Controller.
  2. Slider (Prismatic) Joint
  3. Pin (Distance) Joint
  4. Broadphase Colliders: SweepAndPrune, BruteForce
  5. Collision Callback Mechanism

Currently, the Blitzmax version is using the ‘SelectiveSweep’ Broadphase collider that is the default collider in Farseer, and is supposed to have the best performance in a wider range of scenarios. The others have their advantages and disadvantages based on specific situations in the physics environment. I’ll be implementing those as well along with the rest of the list, but they weren’t used in the current build of the C# Farseer demo application so I chose to focus on the needed classes first to get an identical demo app running in Blitzmax.

Just some metrics you may find interesting (as I’ve noticed typical Blitzmax users have a very different way of developing their games):

- 84 .bmx files used for the physics engine and the demo application
- 7957 lines of code (blank lines not included)

Sounds like it may be a lot, but in reality it really isn’t much compared to a full relatively complex commercial Casual, Indie, or AAA game. But the reason I put that up there is to illustrate a point. I feel like if I was using the default Blitzmax IDE I would’ve have one hell of a nightmare just handling these little files. Having a project of a much bigger scale in BlitzPlus in the past, I know from experience the headaches of a large monolithic code base. You spend a lot of time scrolling and searching through files because the IDE promotes that type of behavior from the get go. Using BLIde, a very flexible editor created by Manel Ibáñez, productivity went way up and I was able to get more done on the physics engine. Not to mention built in Intellisense support is a god-send, which lets you spend more time coding instead of reading API docs. Just that feature alone I think is enough to abandon the default IDE and stick to BLIde. Anyway, if you’re a Blitzmax user I highly recommend that you take the time to learn to use BLIde and support Manel’s efforts for an outstanding product!

I’ve uploaded a demo video showcasing the same demos available in C# running in Blitzmax. I also added a new and original demo by me showing the use of concave polygons, which is one feature many 2D physics libraries lack. With other physics engines you can emulate concave shapes by putting together a bunch of convex ones, but it’s still a cumbersome and tedious task. The ability to create concave shapes with minimal hassle is a great productivity boost for content creation in your game. Below is a video of the physics demo app, along with a download link to the demo app itself so you can run it on your own PC. Hope to have more info posted with updates in the coming weeks!

To download the demo application shown in the above video click below:

Download Farseer Physics Demo

Requirements:

- Windows XP/Vista
- Direct X 7 or higher capable video card
- Minimum supported screen resolution: 1024 X 768

Known Issues:

- In Vista the fps are lower (and in some demos locked to 60 instead of 100 fps).

May 5

Wow! GTA4 is an awesome game! The amount of content in it is mind-blowing. It seems whatever gta4 lacks in gameplay departments it makes up for by sheer quantity and quality of content. It was pretty sad when I spent 20 minutes in gta4 watching TV. Watching TV inside a video game…wtf…that’s a new low for me. As if being a couch potato or an eccentric gamer wasn’t ‘bad’ enough. It just goes to show the brilliance of gta4’s design. It’s like watching a very bad reality TV show on MTV. You know it’s bad, but you just can’t look away.

I’ve never played a GTA game before this so it’s all new to me. The whole ’sand box’ idea didn’t appeal to me initially. Not having goals in a game bores me rather quickly if the core mechanic isn’t fun. Truth be told, if GTA4 didn’t have a compelling main storyline I would be bored already. The driving is ok, the mini-games are alright, the combat is so-so imo. All of these things have been done better in other more specialized games, but I guess the ability to do them anytime and anywhere appeals to a certain audience. The narrative is what drives me to continue. I keep wanting to see what happens next. And the culmination of all those mechanics to bring you a compelling narrative and gameplay experience is what makes GTA4 so great for me.

On the other end of the spectrum for me in terms of ’sand box’ games is Skate. It’s still probably one of my favorite games on the 360. While GTA4 has the story, Skate has the gameplay. I can aimlessly wander the city in Skate for hours not giving a crap about the story. Why? Because moving around the city in Skate is fun. It’s the core mechanic of the entire game. Constantly challenging yourself is inherent to the gameplay of Skate…well because that’s what skateboarding is about. In GTA4 I tend to cut loose every now and then and just wreak havoc on the citizens, but not often. I’ve actually started whoring taxis to get from one place to another quickly because walking/driving around Liberty City isn’t that exciting to me. I’m more interested in the next mission to progress the story.

I’m not too far into GTA4, but far enough to see where this is going. The 10 out of 10’s GTA4 has been getting left and right doesn’t make too much sense to me. By all means it’s a great game. Quiet possibly the best game this year. But it has it’s flaws. Mind you, very minor ones but flaws nonetheless. A perfect 10 implies the game is flawless…so wtf? For one, the controls in the tighter areas (ladder climbing for instance) tend to become clunky. I find myself constantly adjusting the camera when driving to look at where I’m heading. In this day and age the camera should be smarter than that. They probably made the camera ‘lock’ like it does to reduce disorientation from the constant swaying of the vehicle, but it’d be nice for it to look at where your going instead of where you’ve been. Anyway, those were two that just recently stood out. Maybe if the gaming media didn’t rate games on a 7-10 scale we’d actually see a more ‘accurate’ judgement of the game’s quality. Or if they re-defined what the ‘10′ means then I’d be more willing to accept it. Best game this year? possibly. Best game of this year and last? possibly. One of the best games in its genre? Probably. One of the best games ever? I doubt it. Reviewers’ scales are pretty vague on the meaning of ’10s’.

In other news, should have something of interest for Blitzmax users soon (this week if all goes well). Also going to try to update some of my samples for XNA to 2.0. Particularly, the 2D camera example. It’s still written for XNA 1.0 beta last I checked!!! So bear with me on that.

Update:

Just wanted to make sure that others are aware that I haven’t dived into GTA4’s multiplayer offerings yet, and this was just my initial impression of the game. Maybe MP more than makes up for the issues that I came across in single player :) .