Phantom, the Ghost Who Walks and Mandrake, Shadow of the Vehme

My first commercial projects - two games for Gameboy Advance Platform. I list them together because they share engine and graphics style. Phantom, however was a fast paced action adventure game, while Mandrake had many RPG elements.

Phantom 1 At that time I worked at Italian company 7th Sense. Both games have been created from the scratch in about 8 months. Unfortunately, just before the release our publisher got into some financial troubles and canned both projects. Still think it's shame because they were really something at that time. On the left you can see example of chained barrel explosion.
I was responsible for most of the game related code. This meant everything except the UI and low-level engine. Things I was most proud of were optimized A* path-finding system and scripting language. We allowed about 10 NPCs at the same time and it worked smoothly at ~16MHz machine. The scripting system was really simple assembler-like, event-based, but it allowed our designers to create things I'd never thought about (my favorite were Indiana Jones style stone chasing the hero in one of the dungeons and boss fights). Phantom2
Mandrake Mandrake was a little bit more complicated because of his unique spells (but he couldn't use a machine gun :). He could, for example, summon his astral body and sneak around in this form, walk through the walls etc. I left 7th Sense in January of 2003, but I still have fond memories of the company, it was a great and very gentle start in the industry (almost no overtime! \o/).

WW II - Pacific Heroes

At the beginning of 2003 I returned to Poland and after 5 months joined some of my demoscene friends in Warsaw based company - City Interactive. I worked on two projects there - WWII - Pacific Heroes and Project Freedom.
WWII - PH was rather simple (done in 4-5 months) arcade game. I wasn't a member of game team, but it uses parts of my engine. Pacific
Pacific I was responsible for game object system, collision system, AI, parts of user interface (radars, HUDs etc). I co-authored a system for defining and controlling missions (in Lua, based on coroutines).

Project Freedom (Starmageddon 2)

My second project at City, more complicated one. Initially, it was supposed to be a space RTS (think Homeworld), but it morphed to space shooter.

PF uses modified and enhanced WWII-PH engine. Things I spent most time on were collision system and group behaviors. Collision system had to handle potential collisions between thousands of objects in 3D space (you could collide with any object in space and push it, so that it collided with another). I experimented with various algorithms and narrowed choice to loose octrees and sweep-and-prune (final implementation uses loose octrees). S2
S2 For realistic squad behaviors I employed boids algorithm (as described by Craig Reynolds). I had to modify it so that ships move in organized formations rather than as flock of birds. Other than guarding it's formation position each ship had some typical goals that could override the basic ones like chasing opponents, avoiding obstacles and so on. For this game I also had to implement AI for other kinds of objects like ground turrets and mech walkers (they used flocking algorithms as well).

The Witcher

In January 2004 I moved to another Polish company - CD Projekt Red Studio (now known as CD Projekt Red) to join The Witcher team. It's the biggest game project in Poland - a RPG game based on the stories of the most famous Polish fantasy writer - Andrzej Sapkowski.

The Witcher uses heavily modified version of Aurora engine by Bioware (used in Neverwinter Nights). We rewrote most of the components, I think only sound system wrapper, scripting language (Neverwinter Script) and parts of resource manager were untouched. (early shot on the right) Witcher Old
Witcher Speed Tree Other notable 3rd part libraries include SpeedTree for vegetation, Karma for physics (ragdolls, rigid bodies) and Miles Sound System. I started as tools programmer and my biggest tasks were porting Aurora Toolset to DirectX and coding Cutscene Editor. Currently we're creating our own toolset chain in Microsoft Visual C++ (Aurora Toolset is in Borland C++ Builder).
Later my role changed to 3D/gameplay programmer. I implemented dynamic soft shadows system, volumetric fog, normal/parallax mapping, optimized  light manager, resource caching and visibility determination system based on portals, anti-portals and BSP trees. In the "spare" time I worked on low-level/system functionality like crash reporters, stack tracers, memory management. Witcher Shadow
Witcher New Since May 2005 I've been working as a Lead Gameplay Programmer. My additional responsibilities include leading team of 4 other programmers and providing most of the gameplay related solutions. Recently I've been working on a new AI system (mix between scripted and emergent AI).
The Witcher has been released in November 2007 and turned out to be a success, especially for a game done with relatively unexperienced team. We've collected pretty much 100% of PC RPG Awards (usually beating Mask of the Betrayer by Obsidian veterans), some general RPG (beating Mass Effect) and even some PC Exclusive GOTY of 2007 (usually in front of Crysis). All in all - great feeling after 4 years of hard work.  Proud of my team and personally I'm satisfied with the 'living cities' system I implemented which has been generally praised in reviews.
Some of the most notable awards we've gotten so far:
GameSpy IGN VE Game Banshee
Gamespy's PC RPG of the Year IGN's Best PC RPG/Best Original Score Voodoo Extreme's Best PC Exclusive 
Game, Best Computer RPG
GameBanshee's RPG of the Year
Gaming Heaven RPGamer Gamespot PC Gamer
Gaming Heaven Game of the Year RPGamer  PC RPG of the Year Gamespot Readers' Choice Winner - Best RPG PC Gamer - RPG of the Year
After some weeks of regeneration we started to working on Enhanced Edition of The Witcher. I spent 5 months on this and it was rather hard work, mainly fixing some obscure Heisenbugs happening once in a blue moon and trying to take memory management under control.  Thanks to my MemTracer tool I managed to cut down memory consumption by 20%, improve usage patterns and remove some nasty leaks. On top of that I optimized our loading process, speeding it up by ~80% and reducing size of loaded data (second fix was one of the most awaited and crucial points of EE, I implemented basic version in the very first patch and sped it up even more later).
In 2010, IGN selected The Witcher as one of the 25 best modern PC games (last decade give or take), in big part thanks to EE.
In 2013, Eurogamer chose The Witcher as one of the top 50 games of the generation (~8y).

Bourne + Syndicate (Starbreeze Studios)

Sadly, cannot give much details. I was mostly working  on Bourne project, but did some engine tweaks/fixes/optimizations as well. Hopefully will be able to put some screen shots here later.
[Update] Sadly, Bourne game has been canceled in April 2010, before any official media has been released. You have only my word that it could be a really cool game.
Some of my modification/improvements/optimizations  to the engine have been used  in Syndicate game. It's been especially challenging trying to speed up a very mature engine that's been through several optimization rounds over the years. I still managed to squeeze some more blood from the stone, speeding up the main object update loop by ~20% and moving raycasting to the background trhead. I ported MemTracer to PS3, which made my job of making sure game fits in the PS3/X360 memory much easier.
The other thing I did for Bourne that has been reused was the "human airbag/body surfing" sequence (remember the movie)? You can see it roughly around  6:30 mark in this walk through (he seems to like it).


Darkness 2 (Digital Extremes)

Ironically, my next project was a sequel to a game done by Starbreeze - The Darkness II. Big part of my work was related to multiplayer. I worked on MP games before, but was never focused on the networking part so much, so it was a new and learning experience for me. I was responsible for majority of high level MP mechanisms - foundation of Vendettas game rules, mission structure (lobby), challenge manager and all MP challenges, dynamic difficulty system, MP save game/checkpoint system, weather, MP specific actions and game objects (all kinds of coop doors, triggers, events). I was pretty much acting as "the MP guy" for level designers & scripters.
Darkness 2 MP screenshot I also did lots of modifications and improvements to the lower level network code, especially the object replication system. I was responsible for making game conform to Microsoft's/Sony's networking TRC limitations (bandwidth, packet loss). Started with creating profiling & diagnostics systems for networking. Introduced a new congestion control system, new prioritization mechanism (inspired by presentation by Bungie's David Aldridge, we had a two-level scheme, though). When I started we were way over the required limit, when I was done, bandwidth was down to roughly 20% of the initial numbers and we passed TRC with no problems.
The other important part of my job was making sure game ran at solid 30 FPS on all platforms. I added new profiling features to detect bottle necks and went on a crusade to wipe them out. Probably the biggest win was converting animation update to a background job (all the way from animation blending to generating matrices for skinning). Ported the whole subsystem to SPU on PS3, created several helper classes that made similar improvements easier (allocators, container wrappers, debugging). This change alone reduced frame time by up to 15ms in the most demanding levels
Other changes include game object update loop, animation tree updates, particle systems, some boring low-level work - eliminating cache misses/LHS/etc and  wait-free structures for job manager. I also sped up animation import/preprocessing by ~50%.
Here's Eurogamer's summary of our work.
D2 screenshot
Darkness 2 screenshot I've also implemented an animation streaming system, that helped us tremendously with memory issues, it reduced requirements by close to 12mb in some levels and made it possible to use cinematics of arbitrary length (limited only by streaming buffer size) .
On top of engine work, I coded some gameplay features as well. Most "visible" were javelins/thrown blades, objective hints, objective trail, some of Jackie's abilities,some minor lip sync tweaks, save game system fixes/improvements. I also kept an eye on our input latency (measuring it "Mick West" style and making sure it's as low as possible with 30FPS game, shipped with 100ms latency).
Last few weeks were in typical "all hands on deck" mode so I was doing whatever had to be done - some more optimizations, Bink issues, last minute firefighting (tracked down nasty X360 file cache issue minutes before deadline), bug fixing obviously (not the most reliable metric, but I fixed the most bugs in the team), TCR problems (responsible for big part of PS3 issues,  if I never have to eject a disc again, it's still too soon).


Other projects

Some of my demoscene work (1994-2001) can be found here.

I also coded one game for mobile phones (Super Table Soccer, published by Overloaded) and ported over 20 titles to various phone models.
Some screens from Super Table Soccer:
STS TitleSTS gameSTS game


Valid HTML 4.01 Transitional