Archive: : 2007

  1. N+ XBLA Coming So Soon We Can Almost Taste It.

    28 Comments

    Okay, it doesn’t really taste great, but it’s *looking* amazing. You probably already know about the official website of the N universe, which currently features a tiny bit of N+ content but will soon feature much, much more: https://www.thewayoftheninja.org.

    But did you know that IGN is now featuring N+ screenshots? Yes, it’s true! Check them out! We also noticed a post on Gamasutra today which mentions the stellar N+. This helpful definition just popped up in the Computer Dictionary. Okay that last one might be unrelated. The point is, the internet is literally abuzz with N+ goodness.

    The certification process is agonizingly slow, but we are very slowly getting through it. And this can only mean one thing: N+ for XBLA is very nearly here!

    NOTE: We just received email from the N+ legal team, who requested we add this:
    Please do not try to taste N+.


  2. Games in Rotation

    16 Comments

    We’re still struggling with trying to write something here more than once a damn month.. there are dozens and dozens of semi-fleshed-out topics waiting patiently in a text file, but converting these from point form into our typical nice classy posts takes way more time and energy than we can usually muster.

    Today, as a break from all the “hating on games” — there’s always Zero Punctuation if you’re desperately in need of some cheeky reviews — we figured we’d mention some of the games that we’ve been playing lately rather than doing work. By that we mean both that we play these games rather than doing work, and also that we’re writing this very post rather than doing work. But since we also play these games rather than post on this blog rather than doing work, this way you’ll know who to blame for this blog never being updated! Assuming you’ve managed to even read this far, which is doubtful given the previous two sentences.

    Zelda DS

    We’ve been waiting for Zelda for the DS for a long time. In the meantime, Raigan started replaying Zelda II on the Virtual Console, so the office is currently a-buzz with Zelda goodness. In fact, just yesterday Mare smashed all of the potted plants in the hopes of uncovering a few rupees. The graphics are enjoyable, the music is decent, and some of the minigames are even worth playing more than once.

    Overall, Phantom Hourglass is as fun as we were hoping. In terms of the changes to the gameplay mechanics, drawing a path for the boomerang (etc) is a fantastic concept, and a the use of the stylus feels perfect in this game — it doesn’t feel tacked on, as is so common among DS games. Though the game is a little repetitive (each time it’s necessary to return to the Temple, a collective groan erupts) and sometimes having to tap a tool currently in use to put it away so you can move (I’m looking at you, bow & arrow) is a little frustrating, but overall it’s a delight. The dialogue is often hilarious, and there are several jokes and digs at players and the history of the series.

    We’d really like to boot up the Gamecube version again, but the thought of navigating the seas without being able to label the islands onscreen is a daunting one. Plus, it would be easier to continue rather than restart; if only someone hadn’t ruined the Gamecube’s memory card, crushing our save progress and our hearts, all in one mighty step.

    Portal

    There’s no point in really writing anything here, as everyone is already raving about this game. Hooray!!

    Although, we really want to know how it took like 3 years to make this, considering they sort of started with a finished game.. we’re envisioning the Narbacular Drop team all trying hard to work and stay focused while being pelted with a never-ending torrent of Nerf projectiles.

    We’re not sure why the rest of Valve would spend all day, every day having Nerf fights, but it’s the most likely explanation.

    DoomRL

    Raigan’s addiction to this perverse-yet-perfect game mash-up has tapered off a bit since the summer. The biggest problem with this game is that it can take a long time to play, and it’s a bit too random — not a good combination. Often you spend an hour making it to the later levels, only to run into ammo and/or health and armour problems simply due to the extreme randomness of the levels.

    Still, every release of this game just gets better and better; now if only Derek Yu would use his famousness to somehow get John Carmack drunk enough to allow a DS version featuring Derek’s awesome tileset (which used to be posted here).

    Pacman CE

    The ActionButton.net review says it all. Especially the part about Toru Iwatani’s balls. Sadly, the last time we played this, we ran into this horrible problem. The short version (for any link-averse readers) is: because our 360 has died and been replaced twice, the games we have purchased will only work when ye olde Xbox360 is connected to the network.. ??!?! What’s impossible to comprehend is why Microsoft don’t just migrate all of one’s data/licenses to the replacement console.. can it really be that hard? If you’re so paranoid about digital piracy to the point that you’re using the console’s serial number as a key, why can’t you simply update the key when it changes?! Since they own the database where this info is kept, and administer the replacement process, it’s really incomprehensible.

    On second thought, perhaps it makes perfect sense — from their point of view, there is absolutely no downside to waiting as long as possible to fix this sort of thing. If you just ignore the problem long enough, there’s always the chance that no one will notice and you won’t have to do anything. If after a couple years the public finally become aware of the problem, to the point where you can no longer deny or gloss over it any longer, then you fix it. That way you can look like you’re doing the right thing! It’s win-win!

    Being totally F’d in the A by a gigantic corporation has never felt better.

    Crypts of Despair

    So simple, and yet so addictive and fun. The graphics are terrific. The sounds are perfect. This is exactly how all DS roguelikes (Pokeman MD, Izuna, Shiren “if-it-ever-comes-out-over-here” The Wanderer) should be, but sadly aren’t.

    This also makes us wonder why there hasn’t been a single startup based around the idea of making commercial games out of freeware/shareware. The games are slowly leaking into the commercial marketplace anyway: Every Extend, Everyday Shooter, Gish Loco Roco, Tumiki Fighters, *cough* N+ *cough*.

    The authors will most likely be more than happy to at least license it, or preferably take an active role in porting. The whole reason sequels and movie licenses are popular is that they’re known quantities, right? Same with freeware — you don’t need to worry about the game being crap, because you’ve played it already before production has even begun! There are currently dozens of really, really fun and smart games being missed by almost everyone. And for the cost of just licensing the name “Spiderman” you could probably bankroll Cave Story and Lyle in Cube Sector! Damn it business people, pull your heads out of your asses!

    Trilby’s Art of Theft

    As with many games made by a single person, this has a few problems. The controls are a bit awkward, there are occasional logic/behaviour glitches, etc. Thankfully, this game shares another trait common in games made by a single person: the problems are completely overwhelmed by the sheer and obvious passion of the author.

    There is style dripping from every aspect of this game.. this title is literally vomiting character all over the place. The charm spews forth abundantly. It’s like a magical gem which somehow gushes unrelenting torrents of pure class and personality straight into your mind-grapes. The graphics are amazing (“corking”), the way that the side-view stairs/depth issue is handled is genius (“brilliant”), the game itself is really fun to play (“spot-on”), the presentation is just perfect (“stonking”), and the author is totally British (“cheery pip”). The way that the plot/story is incorporated without getting in the way of the actual game is great. There are cutscenes, and yet we don’t hate them. Possibly because they’re artfully done rather than “bog-standard”?

    The only complaint we have with this game, and it’s a big one, is that we were planning on making a stealth-platformer at some point. Curse you, Yahtzee!

    Liberal Crime Squad

    After giving up on ever having the patience to get anywhere in Dwarf Fortress, Raigan tried this earlier game by the same people. Like the rest of their games, it has terrific amounts of personality, an intelligent sense of humour, and a palpable aura of creative energy — three traits sadly lacking in most games. Unfortunately, as with their other titles, the Adams brothers seem committed to burying terrific, genuinely fun games beneath the most god-awful, nigh-unuseable interfaces possible.

    For instance, their action game WW1 Medic, while brilliant in so many ways, has one absolutely unbearable problem.. it uses the same “press arrow key to start moving, press again to stop moving” interface found in mid-80s Sierra games. This control scheme wasn’t always a huge problem in the early Quest games, because moving around was only a peripheral part of the game. But remember Kings Quest 3? That mountain path? There was also a part near the start of Space Quest 2 if we recall correctly.. point being: as soon as moving around with the arrow keys becomes important, toggling movement with them starts to suck in a big way.

    Maybe we’ve totally missed the point — maybe, by digging up a horrible abomination that’s been dormant for 20 years, and proceeding to ruin their game with it, the authors were making some sort of artistic statement about the suffering and grief caused by armed conflict in the 20th century. Regardless, it is one manifestation of the tragic pattern present in the other Bay12 games: terrific game, crotch-kneeingly bad interface.

    Which brings us back to the game we’re supposed to be writing about: Liberal Crime Squad (LCS). Or at least to Dwarf Fortress, which is a step towards the game we’re supposed to be writing about, which is LCS. Before we become deluged in flaming comments, please note that we adore ASCII-based games, and roguelikes in particular. It has nothing to do with the ASCII or the cryptic key commands “per se”. It’s just that certain user interface idioms are inherently more or less well-suited to certain tasks.

    For instance, imagine if word processors were mouse- or gamepad-only. That would suck, right? Writing an essay with only a mouse would be like trying to program Portal while being repeatedly blasted in the face with foam darts: it would take forever, and what’s worse, throughout it all nothing would be more frustrating or glaringly obvious than the agonizing truth — that you know it doesn’t have to be this way, that there are better solutions! This is what it feels like to play Dwarf Fortress, and to a lesser extent LCS. Sometimes the game is fun enough to somewhat overcome the perpetual screaming-baby-on-a-plane of the interface, and when it does so it’s like the sun has peeked between stormy clouds to blast wonderful, irreverent and quirky sunlight on your face. But then it slides back behind the clouds and other, less savoury things start hitting your face.

    Again, maybe we’re clueless and totally off the mark here — maybe whatever strange country the Adams’ are from has outlawed mice, and thus the two are staging a noble and valient protest — in game form — against such a draconian policy, by making us all feel what it must be like to live there. If you can even call that living. Sadly this doesn’t change the fact that both games would be much more enjoyable if the interface was transparent, rather than a substantial impediment to actually experiencing enjoyment.

    Whew, and that is all for now! We’ve actually played many more games in the past couple months, but most of them would be filed under the “complain about how they sucked” type of review rather than the more positive tone we were going for here. Rereading the above, this tone may not have come through fully. To clarify, we definitely recommend checking out all of these games! Maybe next time we’ll get back to that good old-fashioned hating. For now, it’s back to work on the grant application we’re supposed to be doing. And then, we have to arrange 100 DS/PSP levels. Then we need to tweak 50 new ones, and arrange them. And then do lots of DS/PSP testing. And then, Robotology.

    But maybe we’ll just play a quick game of something instead 😉


  3. meta-review: Bionic Commando remake

    26 Comments

    Wow.. this is exactly what’s wrong with commercial games.

    When we first heard of this project, we were worried that yet another grappling/physics-based game would be coming to take on Robotology. After watching the video, all we could think was “this is the sound of a great game being F’d in the A”.

    They couldn’t possibly have just stuck with the original story which, though corny, would have at least had an sense of humour about itself? Come on! You are Radd Spencer, a soldier with an experimental bionic arm, sent on a mission to save Super Joe from the clutches of the evil Badd. That’s hilarious! And anyway, no one’s going to really care if they’re having a great time grappling all over the place.

    Instead, it’s apparently better to mash together terrible movie cliches. “Radd Spencer” has become “Nathan Spencer”. Why not just call him “Blandy McBland” or “Egg”? Is there a more generic tough-guy name in all of history? It at least matches his background story: yet another heroic soldier locked up for crimes he didn’t commit, or, crimes he did commit clearly in the name of justice, only to be set free as a risky, last-ditch super-weapon. “Bio Rain” just sounds like “Trying to be Metal Gear Solid”. And “Ascension City”, nice touch — apparently “Climbsville, West Tallington” was too obvious.

    Why, WHY does every action video game have to pretend it’s the most bad-ass, super-tough thing ever? Doesn’t anyone realize that that just comes off as very lame? They must have assembled a writing team consisting of the 4 people on earth who played through Max Payne 1 and 2 without ever feeling embarrassed by the dialogue. Even action movies tend to have at least some self-awareness.

    It’s worrisome that they spent over three months designing the bionic arm, and it still wasn’t good enough. And the degree to which they agonized about what the hero should look like is another concern. If you had spent the past 7 years of your life fighting to get this game made, why wouldn’t you care more about, say, how running/swinging/shooting feel (i.e the actual game) rather than this sort of trivial superficial crap? It’s almost like these sorts of totally-irrelevant-to-actually-playing-the-game details are what’s important: for example, the anecdote about how Nathan Spencer is just soooo bad-ass, they had to ship him and his arm in separately. WOW.. Can’t WAIT to play this game, it sounds amazing!

    Here’s an idea: rather than waste millions of dollars developing a pathetic, tired, over-worked plot, why not keep the old story — it’ll have a nice, unique, “ironic nostalgia” vibe the 25-35 year old gamers will love — and put that money into making the game more fun to play? The sad thing is that no matter how much money is sunk into the writing, it’s never going to get better because for some reason the idea that video games should aspire to be more like film has become prevalent. The type of people who subscribe to this ideal can’t seem to make the mental shift from “this is the most epic, cinematic story EVER WRITTEN” to “we’re making a video game, why not make it fun to play and then worry about writing a plot that fits in with the game?”.

    We’d rant about the fact that this remake is of course in 3D rather than 2D, and how incredibly unsurprising and boring that decision is, but by doing so we might have made the same mistake ourselves. Here’s hoping that, despite all the worrying points listed above, Bionic Commando is still a great game! Or, wait, no, here’s hoping it stinks, and Robotology is great! Hahaa! In your face, classic game much loved by nostalgic gamers everywhere!


  4. We Love Japan

    10 Comments

    The bad news is that, yet again, we have to halt work on Robotology in order to work on N+. After a couple weeks of DS/PSP level work, we should be able to return to it yet again, for good this time. Hopefully.

    The good news is, we went to Japan!

    It was fantastic. Japan is a wonderful country filled with amazing things, and the best cell phones we’ve ever seen. Wow that’s futuristic. Curse you, North American cell phone network, which refuses to support other systems!

    Tokyo Game Show was inspiring. We met several cool people, including a few from Q? and Nintendo of Japan. Sweet! We were even able to provide people with a chance to try out N+, alongside Everyday Shooter at the hastily prepared Sherpa Games booth at the Canada Games Pavilion.  Maybe next year the XBLA version will be ready to show 😉

    We gave a brief presentation about Metanet Software and our games at the Canadian Embassy, which went very well. We had a chance to meet several Japanese business-people, and really enjoyed speaking through a translator.

    We tried to see a lot of Tokyo while we were there, and glimpsed many hilarious things on the way. Being in Tokyo was ultimately very inspiring. It’s such a huge city, which we really missed when we returned to the very tiny (comparatively) Toronto. You may already know that when making N levels, we’re often inspired by architecture, much of which can be seen in and around Toronto. We would love to go back, and do a Tokyo-inspired set of N levels; the architecture of Tokyo is especially well-suited to N levels. It was seriously breathtaking.

    Arcades are very popular in Japan, and we visited a bunch. It was hard not to! We kept looking for the really strange, eclectic games, but our search was unfortunately fruitless. We did see some cool games, and though we didn’t necessarily understand every game we tried, we had a great time trying them out. Arcades are few and far between here in Toronto, and usually populated by crappy games generally in a state of disrepair, so it was great to hang out at a decent one!

    We also visited two video game bars, 8bit and 16shots. These bars are so cool. The atmosphere is amazing — casual yet tangibly artsy, and fiercely reverent of video games and their aesthetics. They had some crazy games, too! We’re tossing around the idea of opening such a place in Toronto (when we’re fantastically rich, of course), but are not sure it would work so well. We brought some N+ stickers and asked if we could leave them for people to pick up, and with the help of Jason, who is awesome, gave out some N+ shirts too. We met a Japanese fan of the original N, which was so cool — we really hope N+ is well-received in Japan. Oh, and thank you to the people at 8bit — we love our shirts!

    Tokyo is such a vibrant, disparate city. It’s like nothing else… So busy, and so beautiful. We can’t wait to go back!


  5. A Quick Word.. Plus a Walking Robot!

    11 Comments

    Sorry for the lack of updates.. we had a big XBLA milestone on friday, and now we’re off to the Tokyo Game Show. Once we get back, things should settle down quite a bit — we’ll finally be able to return to working on Robotology!

    Since we’re travelling to the land that’s all about the robots, it seems only fitting to put up our walking robot demo. We were originally saving this for after a few more physics demos, but what the hell..

    (if you fling it around violently enough, you might encounter some problems — the legs can turn inside-out! we’re flying in 4 hours, and we didn’t have time to add angular constraints to keep the knees bending the right way..)

    This is only a first step (ugh) towards having lumbering robots to run around on and interact with — the biped is simply playing back a pre-recorded walking animation. The next step is to add some procedural animation so that the robot tries to stay balanced, etc.

    Anyway, enjoy!


  6. N+ and PAX

    14 Comments

    We just got home from attending PAX2007; it was exhausting, but fun!

    The two of us and Nick had a booth where we were showing the XBLA version of N+. We were sort of hidden in the far-left corner of the expo floor — but luckily right next to the men’s room, ensuring lots of traffic. Nick built this awesome stand-thing that held two monitors and two Xbox360 testkits, and for three days we were on our feet, explaining what N+ was and letting people try it.. and the reaction was really positive! Our booth was a bit low-budget compared to the nearby THQ and Atari booths, but our signs and stuff turned out pretty well. Mare whipped up a classy page with some of our pictures, check it out!

    Tons of people stopped to try N+; about half had played N, the other half had no idea what this weird game was all about. Usually if there was someone playing, other people would stop to check it out just because of how different-looking N+ was compared to the rest of the games there (which were mostly 3D photo-realistic-style AAA titles). It was really great to see people enjoying it, and we got a lot of positive comments about how great it is to see games that are focused on fun instead of “next-gen” stuff like shaders. It was also nice to see parents playing N+ with their children. There were a few groups of gamers who came back every day to play, that was really great to see — the first N+ addicts! The multiplayer modes were especially popular, but probably we can’t say any more about that yet..

    Anyway, it was very tiring but definitely worth it; everyone was really excited about N+ coming out on XBLA. Hopefully it will sell well — but it seems impossible to predict people’s tastes, especially on a platform where the most successful game is.. UNO?!

    We were also handing out all sorts of N-related goodies; we didn’t have too many so we tried to limit these to people who seemed to genuinely like the game (instead of the apathetic greedy people who just went booth-to-booth demanding free stuff). We’ll be mailing out more of this stuff to SUBLiME participants. Mare made yet another stylish page of pics, check em out!

    The only somewhat disappointing part of PAX was the total lack of media attention.. curse you, Leipzig! What little blog coverage N+ has received has been focused on the DS/PSP versions that Atari is making, which is a bit frustrating since:

    • we were right next to the Atari booth — you could literally watch people playing the XBLA version from their booth! And yet few bothered to saunter over and check it out.
    • the XBLA version is pretty much complete, while the DS/PSP versions are pre-alpha
    • the XBLA version is much more the version of N+; the proper self-published, we’re-in-total-control version!

    The handheld versions should of course be great — there aren’t very many good platformers available on DS/PSP, these days the only decent platformers seem to be coming from freeware developers — but we really feel like the XBLA version is much more ours.

    Also, while PAX in general was awesome, compared to the rest of the game expos we’ve been to — very few booth babes, and lots of actual gamers rather than bizdev people walking around — it still had the same “booths staffed by interns and/or morons” thing that seems endemic to game expos. People were shocked that we, the actual developers, were in attendance.. but isn’t that how it should be? Otherwise you might as well just read the press release, since that’s all that the actor(s) staffing the booth will be parroting back to you.

    In other semi-tangential news, the Mega64 guys were a couple of booths away from us, but we may have scared them a bit.. we’re big fans and were hoping they might want to do some sort of promotional video for N+. That would be so awesome.

    Anyway, it was really great to see people having fun with N+. We may not have gotten all that much blog-type coverage, but we did get tons of gamers super-excited about N+. We really can’t wait for it to come out!! But it won’t be for a while yet! GLARGH!!! The suspense is killing us.

    In the meantime.. When we get a chance to finish it, this site will be the official new home of the N games: The Way of the Ninja. Plus, stay tuned to Metablog for more indie-gamedev-related goodness. It should only be a couple more months until we’re able to get back to working on Robotology full-time.. Hooray!


  7. Robotology: Metaphysical

    14 Comments

    Apologies for the continued infrequency of posting, it’s been non-stop deadlines for the past several weeks. woooooo! exhausting. By mid-September we should be able to move N+ work to part-time and return to Robotology in earnest.. finally! Writing this post is somewhat frustrating as it just serves as a reminder of what we should have spent the summer doing — there are so many interesting Robotology-related things we’d rather be working on right now..

    Anyway, to continue where we left off: our simulator is based on this paper (by Matthias Muller), which is in turn an improvement of the method presented in this paper (by Thomas Jakobsen), which is what we used in N for the player’s movement and ragdoll.

    While the Muller paper presents the solver in the context of cloth (and other soft/deformable) modeling, we’ve found a fairly straightforward way to apply it to 2D rigid bodies; we definitely plan on releasing some tutorials to cover the technical details, much as we did with N, because this method is magical in both simplicity and power. (Sadly this won’t be for many months, as we’d like to get Robotology off the ground before starting any new projects.. alas.)

    And so we present to you: MetaPhysics! (at least, until we can think of a more clever and/or sillier name)

    You may notice that the demos are rather soft-/spongy-feeling; the constraints are pretty easy to violate. This is the case for two reasons: we’re only using 4 constraint iterations (more on this later), and we’re allowing the user to interact with the bodies directly via an infinitely heavy mouse (rather than using a more well-behaved solution which would prevent you from really screwing things up). One exception is the second demo, which is identical to the first scene but uses 32 iterations.. resulting in a much more stiff or solid-feeling chain. So, if more stiffness is required it’s just a simple matter of upping the iterations.

    We decided to leave things at 4 iterations because it demonstrates the best properties of this solver: stability and convergence. Most rigid-body constraint solvers require a far higher number of iterations to converge on a solution, and (worse) can fail miserably if the iteration count is too low, or if the system is unsolveable — as can be the case when you’re pulling things around with the mouse. In contrast, our solver will converge no matter what — at least, we haven’t been able to break it yet! You can violently drag and shake the boxes around as much as you like, but the solver will always pull them back together. Nice! We’re not quite mathy enough to properly prove guaranteed convergence, but it’s much more solid-feeling than anything else we’ve made.

    We tried to show a good assortment of constraint-types, from simple joint/pin constraints, to joints with limits on how much the boxes can rotate with respect to each other, to rigid “weld” constraints which lock two bodies together, to “slider” constraints. As well, we’ve included both tree-type and looping mechanisms. A really nice property of this solver is that it’s quite simple to define any sort of constraint imaginable — as long as you can describe it as an equation, you can solve it.

    Calling it a “simulator” is somewhat misleading as it barely has any dynamics-related code in it — it would more properly be called a “geometric constraint solver”. In fact, if you disable the integration step (which moves the system forward in time, updating velocities based on accelerations, and positions based on velocities) you can use the solver as a really awesome IK solution.

    The illusion of physics is achieved (as in the two papers linked above) by using a backwards difference on the positions to approximate velocity, also known as the ubiquitous Verlet integration. This method is really pretty neat — instead of having to track position and velocity separately, you simply look at the vector from the previous position to the current position, and use that as the current velocity. This sort of little mathematical trick is simple, clever, and quite useful — you can apply it anywhere you have a value that’s changing over time.

    At a very high level, the simulator works in a pretty simple way: you start by defining a bunch of bodies, and a bunch of constraints between the bodies. These constraints are simply formulas which relate the position and/or orientation of the bodies to each other — for instance “body A should be no closer than 10cm from body B”.. in other words, each constraint describes a rule which must be obeyed by the bodies involved.

    Then comes the magic part, the solver calculates a “solution” — a set of body states (positions and orientations) which obey all of the constraints, while at the same time being as close to the initial (pre-solved) state of the bodies as possible. This last condition ensures that we move the bodies by the smallest amount possible in order to satisfy the constraints, so that their motion is coherent — otherwise the states of the bodies could jump all over the place erratically!

    The way in which the solution is found is a process of optimization or minimization (those two terms mean slightly different things to mathematicians, but we’re not really clear on the distinction… What we want to do here involves finding a solution which best fits a set of rules or conditions). Specifically, the Gauss-Newton method is applied to the system. At least, as far as we can tell, this is what’s going on! 😉

    We sort of cheat — proper Gauss-Newton requires that you build up a big matrix which describes the entire world (each row of the matrix represents a single constraint), and then solve this matrix to find a solution. This is often the approach taken by more mathematically sophisticated solvers, such as David Wu’s.

    Unfortunately, implementing this sort of “big matrix” solution is quite complex and well beyond our mathabilities, so instead we adopt the approach presented by Muller in the aforementioned PBD paper: rather than solve all the constraints at once, we apply the Gauss-Newton algorithm to each constraint individually. This means that rather than finding a set of body states which satisfies all of the constraints, we’re finding a set of body states which satisfies a single constraint at a time. This process is repeated again and again, the bodies gradually moving towards the solution which would have been found had we solved all constraints together. Iteratively solving constraints one-by-one is also called “relaxation”, and just like finite differences it’s a deceptively simple but incredibly useful idea.

    So, that’s it for now — there is a ton more work to be done on the solver, but it mostly consists of little things such as figuring out how to implement certain behaviours (such as conveyor-belts). One big disadvantage that comes with using a position-based approach is that you lose the ability to easily enforce velocity constraints such as friction and “bounce”. We’ve found a decent solution to this using motorized position constraints, and if worse comes to worst we could always use a two-phased approach: solving position constraints using our current method, and then solving velocity constraints using a more traditional impulse-based method. Luckily motors are a snap to implement in this solver — but that will have to wait for another post!

    An even larger complication (which we’ve avoided mentioning here) is collision detection: since object positions are adjusted at each iteration, bodies which aren’t initially colliding can end up being pushed into each other by the solver. This is something we’re still working on — we have a pretty decent solution that works well (and, excitingly, even supports concave-vs-concave collision!), however it’s quite slow. Probably we shouldn’t worry too much about speed until we’ve ported things into C++, but we’d still feel more comfortable if we had a more optimized solution — a faster method which was limited to convex shapes would be a great complement to our existing solution.

    At any rate, we’re really excited about Robotology, and can’t wait to get back to work on it. We’ve strayed quite a bit from our initial plan — we had originally intended to use a vastly simplified “fake physics” solution — but now that the simulator is up and running we’re completely psyched about the possibilities. Hooray!


  8. It was the best of times, it was the blurst of times..

    18 Comments

    ..and somehow it’s August already! Keeping this blog from collecting too much dust is becoming increasingly difficult lately, due to some unforeseen circumstances, however we’ll do our best — we have so much more to give!

    This past month has been a bit hectic.. the original plan for N+ on DS/PSP was that we would only “consult” about level design, leaving us enough time to make all the levels for the XBLA version as well as getting something Robotology-related ready for the Independent Games Festival in October.

    (Aside: it may seem like we’re working on a single game called “N+”, but in reality it’s two separate projects: one that we’re in charge of (XBLA), and one that Atari’s in charge of (DS/PSP), with us providing “direction”).

    Sadly, the original plan was flawed in that it contained the implicit assumption that just anyone could make N levels that were as good as ours. “As good as” seems arrogant — the quality of our levels is subjective, but regardless we definitely have a distinct style/aesthetic which we think is an important part of N. Aside from matters of taste, we’ve also got years of experience, so we know what works and what doesn’t…

    To cut a long story short (for once ;p), we realized that the only way to make sure that the DS/PSP version of N+ would be just as good as the XBLA version was to make the levels ourselves, which is what we’ve been doing for the past few weeks. We’ve actually been coming up with a lot of new/weird ideas too — it’s amazing how much room for creativity and invention there is in the level design for a simple tile-based 2D game. After 4 years we’re still finding new tricks and concepts to play with. Crazy! Why anyone would jump to 3D when there’s still so much to figure out in 2D is beyond us 😉

    Anyway, the titular “best of times” good news is that we’ll be making single-player levels for all versions of the game; we’re actually doing all the levels for the XBLA version (single- and multi-player), while for DS/PSP we might not have time to make all of the multi-player maps — but since we’ve never made multi-player maps before, it doesn’t seem like as much of an issue.

    Sadly, the blurst of times is that as a result of all this level-making, Robotology has been languishing of late… aside from the odd day or two of tinkering we haven’t done any real work on it in the past month, as we’ve been too busy with these damn levels — in total, across all versions there should be over 1000!!

    As a result it looks very unlikely that we’ll be able to get something ready for the IGF deadline — this is itself another best/blurst scenario as it means we’ll (hopefully) be able to judge games for a third year, which is always very exciting/rewarding/inspirational. Still, it’s very demoralizing and spirit-crushing to have to sit idly by when we have so much energy and motivation to put into Robotology. However, we really want to avoid having N+ be a blemish on our immortal souls, so we made the agonizing decision to put the new game on hold for a bit, yet again.

    By mid-September all of our milestones will have been completed and we’ll be able to return to Robotology in full force; currently it’s little more than a collection of design/graphics mockups, gameplay prototypes, and one bitchingly awesome simulator. We still need to do a lot of work in many areas, especially AI and animation (which are usually intertwined anyway). Damn it, writing this just makes us want to work on it all the more!! CURSE YOU, DELICIOUS N+!!!

    In the meantime we’ll do our best to keep this blog going with more “development backstory” posts — now that we’ve finished covering the history leading up to our physics system we can get to the really good part: the simulator itself (which is fanatically awesome-tastic if we do say so ourselves).

    But that will have to wait for next time… there are still more levels to be made!


  9. Robotology, the end of the end of the beginning of the story thus far.

    9 Comments

    Assuming you’ve read the first post in this gripping two-part tale, we’ll just get straight to the goods: how things went.

    After some very brief tests, we rejected (1) methods altogether. To be fair we didn’t really give them an honest chance, as past experience with (1a) made us feel that that sort of system is great for very quickly getting something decent but simple working, but extremely difficult and time-consuming when you want to add more sophisticated features (such as angular constraints). Having said that, Alex Austin has been using an approach similar to (1b) with great success; those sorts of systems are also pretty flexible in that they can easily model deformable/destructible materials. Pun!!

    So, next on the list are impulse-based methods. We implemented both (2a) and (2b); in order to avoid the complexity of collision detection, our test case was a simple chain of bodies linked together. We also wanted to see how well these methods supported “snap-together” type behaviour (i.e if we start the simulation with the bodies randomly scattered, can the solver find a solution, or does it just explode?). Here are two test cases: a limp chain, and a rigid chain (which should behave like a rod).

    As you can see, the results were somewhat disappointing; while impulse-based methods are great for simulating loose objects (as demonstrated by Erin Catto’s Box2D simulator), joints just don’t behave as well — chains of bodies felt gushy and weak, and often the solver would fail to converge to a solution. There are definitely things we could have added to prevent the more extreme problems (and Catto has since revised his method so that it better deals with joints), but we didn’t really feel it was worth pursuing — things just felt fragile compared to our experiences with (1a)-type simulators. If you can screw things up just by grabbing something with a mouse and yanking, how are you ever going to avoid problems in a game?! (In hindsight the implementations may have had some bugs.. but, too late now ;). Regardless, these simulators were a great place to start learning “real” physics stuff, since they required a bit of linear algebra which we needed to re-learn, but didn’t require anything beyond a first year university text (which is good since that’s as far as either of us got!).

    That brings us to the final batch of potential solutions (3). Both methods have two things in common: they were both developed by the same person (Matthias Muller, who must be some sort of genius), and neither was originally developed to simulate jointed rigid bodies — we just thought they had promise and could be adapted to suit our needs.

    The first of the two (3a) is a paper that somebody really needs to base a game around; ignoring the deformable part (which has anyway been superceded by this awesome FastLSM method), it presents a method for simulating a rigid body made up of a bunch of particles. This idea isn’t new — in fact it’s the basis for the (1) methods — but the actual process presented is brilliant: instead of connecting each of the N particles to each other (which requires N*N springs) so that they move as a single solid body, you update them in two steps. First, move them in isolation from each other (i.e not considering the fact that they should remain connected to each other); then, given the final position of all of the particles, you “average” them all to generate a single rigid position+orientation for the body. Of course, the process of “averaging” these particles together requires a bit of tricky matrix math — we were finally forced to develop a working knowledge of those two complicated bastards we avoided in school, the eigenvector and eigenvalue. This was another great learning experience since we were forced to actually learn and apply some linear algebra in order to figure out how to implement this paper.

    Despite the somewhat tricky matrix manipulations required, Muller’s shape-matching technique is absolutely terrific because it allows you to simulate a world made of clumps of particles, without running into the two usual problems: needing wayyy too many springs (N*N springs gets really slow as N increases) and things being too soft/squishy when you want them to be nice and rigid. This is why it’s begging to be made into a game: it lets you take a bunch of particles, lock them together rigidly, and add/remove particles however you’d like, in a very simple and straightforward way. This is custom made for a city-type world that can be blown into and/or build out of pieces!

    Despite its awesomeness, it wasn’t exactly a perfect fit for what we were doing — we didn’t want or need destructible shapes, so the major benefit was lost, while at the same time things like angular constraints were (yet again) hard to figure out. You can check out our little test simulation right here.

    This leaves us with the last method, good old (3b). This is actually a generalization of (1a), which is what piqued our curiosity: over the years we’ve attempted to extend Jakobsen’s method in various ways, with little success. In fact, it wouldn’t be an exaggeration to say that applying Jakobsen’s solver to other sorts of constraints is Raigan’s “Moby Dick”: since the beginning of time he’s been trying to figure out how to do it, and each year several ideas are attempted and inevitably end up just not working.

    One idea that did work, however, was to use a single stick (two particles + one distance constraint) to model a 2D rigid body — rather than using a triangle as in the original paper. Many years ago we discussed this idea in a thread (on the sadly-defunct Flipcode) with a few like-minded programmers; in a bizarre twist of fate one of the contributors was none other than Jamie Cheng, who managed to develop this crazy idea into a proper method (which I think is actually what’s being used in Eets!). This is one of those terrifically weird things because years later, when he was meeting with Microsoft about Eets on XBLA, one of the producers asked if Jamie knew the people who made a game called N — this may be the first time in history that the stereotypical “do you know Bob from Canada?” situation has actually resulted in a yes! Anyway, that’s a different story for another time.

    The point is, “Jakobsen + Stick-Based Rigid Bodies + SomeFantasticMagicGoesHere” was an oft-pursued, ever-elusive goal around here, which led to a few successes; aside from Jamie’s method, we also had some success implementing an alternate method of collision response (the method in (1a) only works for triangles, not for sticks) based on an obscure thesis written by Jeroen Wagenaar — who worked with Jakobsen on his method.

    So after many years of off-and-on tinkering, and countless pads of graph paper, you can only imagine our speechlessness when Muller came along and published what deserves to be the most heralded game-physics paper of all time, the glorious Position Based Dynamics. In a very straightforward way he demonstrates exactly how to generalize Jakobsen’s solver to deal with any imaginable sort of constraint or mechanism.. genius!