I'm a bit surprised that I never wrote anything about Rifts before. This was a game that I worked on a few years ago for the Nokia N-Gage. Unfortunately the game never had a major release, it was finished right around the time that Nokia realized that the N-Gage wasn't as popular as they had hoped. Well we did at least get some reviews (see here, here, and here) with an average Gameranking score of 74%.

So I was basically involved in the game from the start. I came in just after some initial prototyping. We developed the game engine and editor from the ground up. At the start I was working a lot on the framework of the engine. We ended up developing a pretty sophisticated object oriented engine, considering it was for a cell phone game. We had a pretty robust editor made in C#. I ended up designing a lot of the file system and file format. I also designed the scripting language and the networking strategy. I worked on the combat systems, movement and special attacks. I also got to some of the rendering code. 

The scripting language was designed to be just that: A language for scripting situation. It was pretty simple and only intended to describe a series of events to get the timing correct. For this the primary benefit of using was the ability to 'wait' for commands to finish. For example: you could make a series of calls to move a bunch of people around, mark them all for wait, then just call one wait function which will pause the script until all movement was complete. The script was also used to time all the combat attacks so we could properly time when the damage would show up and how each attack behaved since there was a lot of variety to the attacks.

The movement ended up being its own complicated beast. The game is a turn based RPG, similar to Final Fantasy Tactics. You can move around on a 2D grid with 2 levels of height. This wouldn't be so bad except we added interesting things like:
  • Doors: You could enter a door on the southeast corner of a building but come out on the northwest. This meant that pathfinding had to jump from one spot to another and then continue searching. Not too bad.
  • Flying: Now you can basically move anywhere except through things that are in the air blocking you... although you can still go through doors, a neat combination.
  • Jumping: Now you have a minimum/maximum range for your movement and in addition you can jump up to second level.

  • It ended up taking quite some time getting the movement right but in the end all the different types of movement worked pretty well and felt 'right'.

    Special attacks were very fun to work on. We basically used a full screen renderer for the effects with all sorts of different blends and effects for different attacks. Some were simple 'videos', some were overlays over the whole screen, and some were lot of particles bombarding the screen. All were impressive.