Archive for the ‘Zooble’ Category

Engines, Names and Evolution – Part 1

Saturday, March 1st, 2008

Over the years, I’ve given names to game engines I’ve worked on. Most of my professional experience has been working on platformers and mini-game collections. Mini-games rarely share much in common, so by engines I’m referring to platformers, or engines for games very much like platformers.

I’d like to start talking about what I’ve been thinking about whilst designing my next engine. I need to set some context though, so I’ll be walking through some of more significant engines I’ve worked on.

Going way back, I really didn’t start naming my engines until after Secret Agent Barbie (Gameboy Advance). I did name my GCC driven Gameboy Advance tool-chain “ATK” for Advance Toolkit, but my priorities eventually changed. As a team we used the interal code name of “Bond“, but I’m sure that was just us wishing we were doing a James Bond game instead. :)

Bond“, like each of my platformer engines before it, was a “Megaman Physics” engine. Megaman Physics are what I call platformers that solve moving characters against static scenery, but do something artificial to solve object vs. object collisions. Pretty much every 2D Megaman games sets you to an injured state and gives you a brief constant velocity opposite your facing direction, followed by temporary invincibility. That meant you could walk right through the enemies after that brief interruption. In retrospect, I’ve started to think Megaman Physics might be superior for playability, but that’s a topic in itself.

Before I left DICE, I was working on a project with a coworker that we referred to as “Brown Box“. The name was a play on the idea of a black box, with a cynical inside joke a handful of us had. The essense of the joke was, if you came in one day and found a brown cardboard box on your desk, you were fired. Pleasant. :)

Brown Box was a 3D R&D project. On my own time, I was working on some 2D physics experiments. My early efforts became the Zooble prototype (with it’s very wrong physics), a verlet testbed Phiz, and a series of further physics experiments adopting such strange names as Popcorn, Cactus, and Canadianese Simulator.

Phiz
Phiz, where my verlet fascination began

Canadianese Simulator
Canadianese Simulator… isn’t it obvious… they’re red.

Destructure was conceived as my “Post DICE” engine effort. The name was chosen ’cause it sounded cool. I left in June 2004, just over a year after making the original PuffBOMB prototype. I left with the intention of building an engine for the PuffBOMB remake (and other projects), and eventually to help out a friend at his new company. I left as quickly as was appropriate, hoping to get a couple months of work on Destructure in. Alas, all I had time for was a couple weeks of R&R, and to start a compo game before I was called upon.

Destructure eventually became the engine for Atomic Betty (Gameboy Advance). I was well versed in classic and verlet physics at this point, and was using that experience to build a low spec cross platform game/physics engine. Beefy goals as usual. We landed the Atomic Betty project, so I re-purposed my design to suit the game. A fun aspect of Destructure is it, for a while at least, it compiled both on the PC (with Allegro) and for the Gameboy Advance. As the project kicked off, the GBA specific code grew so fast, it wasn’t practical (or necessary) to concurrently develop.

Destructure
Early PC version of Destructure. Red boxes are the overlap.

Some technical notes. Objects in Destructure used circles and axis aligned rectangles for collision, though Atomic Betty only used the rectangles. Objects were moved and solved with a bare bones verlet/relaxation solver. The rectangles were actually the 2 corner points, with a pair of verlet spring constraints (width and height) keeping it from collapsing in on itself. No square roots required :) . Solving two rectangles was rather novel. I took the overlap/union rectangle of the two, and used it’s shape to determine how to solve. If the overlap was wider than tall, I’d push them each half the height up/down out of each other, and vice versa. Unlike moving a center point, this actually squished the rectangles. Then the next frame, the springs restored it’s size to normal.

The next engine’s name and story is a little complicated, so we’ll save that for next time.

June, can’t forget June

Friday, June 23rd, 2006

It\Well, I’m not going to let the month go by without posting something. After all, I have been doing much stuff. Not so much round up, but many many other things.

The project progresses. We’re busy preparing a pitch-able playable of the game that we’ll be pitchely pitching to potential pitch-able people pretty pitching soon. I’ll have less riddles and more to say about that in a few weeks.

Also, I’ve silently (and finally) put together a MacOS X version of PuffBOMB. Sadly, it’s only for Power PC based Mac’s running Panther (10.3) or better. I don’t have an Intel Mac, so I don’t know if it runs under Rosetta. I’ve also done some minor bug fixing with the Windows version (Dual Core friendly now), and made a slight improvement to the background (subtle teaser to your right, can you tell the difference?). This was inspired by and for something I’ll talk about soon (NDA).

As for other fun things, I’ve been toying with videos! I recorded gameplay demonstration movies of the infamous PuffBOMB, and one of a other lesser known prototype game of mine, Zooble.

Zooble – 2004 Game Prototype

Classic PuffBOMB – 2003 Game Prototype (revised in 2005)

I’ll probably encode more historic game videos later. I do have a couple prototype progress videos of the current stuff, but I’m sitting on those until we sign something.

And now I’m off to see if I can safely upgrade and “fix” my spam problem here. I temporarily disable commenting,that way I wouldn’t have wake up every morning and delete Viagra, Home Insurance/Mortgages, Casinos, Poker, and whatever other crap I’ve been manually filtering. Manual sucks.