Robotology: Triage Part 3, Stable Condition..?

10 Mar / by: M&R / 16 comments /

To start, a reminder that today is the last day to vote in the XBLA Awards! http://www.xbox.com/en-US/community/events/xblaawards/

And now for the third and final chapter in the continuing saga of what’s up with Robotology lately: things that are working well (but may still need some tweaking/adjustments as we go).

Ironically — or perhaps not technically if you’re some sort of irony stickler — in the weeks since this post was initially written we’ve come to realize that our simulator is in need of a big overhaul. More on that below!

The Constraint Solver
The purpose of a physics solver is to act as an arbiter between the objects in the world. For instance, a small robot might be trying to occupy the same point in space as a large robot’s foot — this obviously can’t be allowed, and the solver will figure out how to move the robots’ bodies so that the illusion of physical reality is maintained. So far our solver is working well: it’s extremely stable and capable of modeling complex articulated mechanisms. More importantly, it’s easy for us to understand and make changes to. For instance, defining new types of constraints or new functionality (such as “breakable constraints”) is easy. Or, let’s say “relatively easy” 😉

The Collision System
Aside from the constraint solver, the other major part of the simulator is the collision detection system; our method is relatively expensive compared to simpler solutions (such as what we used in N), but it can handle situations which simpler systems can’t, such as concave-vs-concave shapes.

Sadly it looks like Little Big Planet stole some of our thunder, at least in terms of simulation — their collision detection and constraint solving is really great! — but we’re trying to remind ourselves that ultimately the game is not defined by these systems alone, and there’s plenty of opportunity for development.

“Fat-skeleton”-based Geometry Editing
The way this works is hard to describe — and currently we’ve only got a temporary “for testing purposes only” front-end — but the basic technology behind the editor is working well. Maybe one of these days we’ll get with the 21st century and figure out how to youtube a quick demo 🙂

Conveyor Belts and Rope
While it’s possible to simulate both of these mechanisms as chains of bodies connected by joints, we really wanted to do things differently. Or rather, we wanted to do things the same way they were done in Umihara Kawase, which is quite different from the “explicit chains” model. Thankfully the friendliness of our constraint solver made adding both of these effects fairly straightforward, and we’ve even managed to extend things a bit: belts are physically simulated, so that rather than always moving at a constant rate, they can be pushed/pulled by other objects in the world. Possibly this feature isn’t super-important — there’s a good chance we’ll end up setting them to be so strong that they maintain a constant movement as in Umihara — but it’s nice to maintain the integrity of the solver. As long as all movement in the world is simulated rather than “faked” (i.e kinematic, non-reactive animation), it decreases the chances of weird problems caused by the non-systematic interaction of physics-based and non-physics-based bodies.

At least, this is what we’re hoping for 😉

As we mentioned above, we’re in the process of rewriting of the simulator in light of a couple things. The main problem is that it’s entirely polygon-based, while it has become apparent that we really need simpler shapes (like capsules and circles) to represent smaller robots. Similarly, when a robot is only a couple dozen pixels tall, it makes more sense to model its dynamics with a simpler model — such as a few particles connected by sticks, as in N — rather than several rigid bodies connected by constraints.

The “legacy” simulator is very old, much of it was written before we had a proper grasp of the math going on behind the formulas we were using; we were trying to get things working as quickly as possible, and the result is that it assumes rigid bodies throughout the code, which makes implementing other types of things, like particles, quite awkward. At the time this was an unavoidable compromise, since we lacked the ability to abstract out the type of mechanism being simulated. We’ve since figured out the math required to let us connect two different sorts of dynamical beings (such as rigid bodies and particles) together with constraints, without having to explicitly program all the possible combinations. This in turn has given us the ability to support features like non-rigid shapes (i.e legs which telescope) and other sorts of representations that will be useful for smaller robots.

We definitely don’t want to be stuck making this game forever, but our accrued experience thus far should let us rewrite the simulator in a short period of time — we’re mostly done after only 2 weeks, so this will hopefully be chalked up as worthwhile “refactoring” of old code. The new flexibility (and especially ability to optimize hotspots) is definitely nice.

So the simulator is sadly no longer in stable condition, however the surgery should be routine and the patient is expected to make a full recovery 🙂

p.s – just for Maximo, a recent screenshot showing a test of the wonderfully smooth graphics — the actual biped model is temporary: http://www.metanetsoftware.com/robotology/screendump2009-3-10_17_57_26.png

comments ( 16 )

  • So do you “guys” have any idea of when at least some sort of demo video will be out? I realize the final product is a ways away, but do you guys have any sort of time line you’re willing to share?

  • Every time you post and there aren’t screen shots…God kills a kitten?

    I jest of course, but if one of my friends kitten’s dies to day I will be posting here again.

    🙂

  • How can it be the final chapter in a continuing saga? 😛

  • @sean: As soon as we know of any sort of vague timeline we’ll let you know; right now we’re still trying to find solutions for everything so it’s impossible to say.

    @maximo: check the bottom of the post 😉

    @squerkle: good point! ;p

  • The simulated conveyor belt thing is essential in my opinion. Can you make it so that you can burn out the conveyor belt’s engine? It’d be funny if to beat a mission, you have to latch a rope onto something solid and then jam the conveyor belt with the rope 🙂 It’d be a very creative idea I think

  • sounds great, and I’m glad you’re revamping the engine until it’s just right. It’s much better to take longer and produce a better project.

    One small concern I have though is that making everything simulated accurately on a small scale (like conveyor belts) may have a kind of snowball effect to make physics interactions a bit random. In some physics games I’ve played doing almost the same thing twice causes different results (particularly for stuff like explosions), which can be very frustrating in an N-like game where you have people going for high scores in very short levels and they don’t want to have to keep retrying for some rare effect (running through chaingun drones come to mind).

  • The randomness inherent in simulated games is definitely something we’re keeping an eye out for.. it’s hard to see how it can be entirely avoided though.

    For instance when landing on an enemy, the force they feel is going to depend on your velocity and also where on their body you hit.. both things are likely to be uncontrollable/unreproducible at a fine scale (i.e you can only aim your trajectory and control your velocity so well).

  • Woo, thanks guys!

  • The screenshot is nice; the graphics do look very smooth!

    …On a totally unrelated subject, do you have any idea when the servers for DS/PSP N+ will be up again…?

  • @Purple: Nope, we’re as clueless as you are. Atari said it would take about a month, but we’re not sure when exactly they started moving everything.

  • 🙁 Doesn’t sound like you guys will have this ready by PAX. Ah well. There’s always 2010!

  • Well, we’re hoping to enter the IGF this year, so we should have _something_ by the end of the summer. It’s really hard to say though — by then it will probably be a case of “start cutting stuff till it’s done” since we have to get it finished ASAP.

  • Alright….. You need to make a n+ number 2 with more objects in the level creator and an online level creator so u can make maps with ur friends also new ninjas and better levels and contests to make ur levels that u made be published and so u can change the color of the backgrounds.

  • Do you have any idea of when or close to when you will be able to release the game? Hope you can get all your problems fixed soon and have something for the IGF, maybe you could release a demo when you have it? Well Good luck

  • dear metanetsoftware.com,
    that would be cool if you guys could find a way for us at school to download this game without getting the website blocked. i love this game and i always play it at school. but the assholes in the admin building blocked all these websites. plaese help.

  • Wait, did they block the downloadable version? You _should_ be able to just download one of these files and unzip it to play:

Leave a reply

Archives