have been coding games professionally for over 14 years (started in
2002). Shipped titles for 7 platforms - Gameboy Advance, J2ME,
Windows, Xbox 360, Playstation 3, Playstation 4 and Xbox One. During my
career, I worked as
tools, engine, rendering, gameplay and network programmer. I have also
been a lead programmer for several years (and learned I'm more
interested in coding than managing). These days I'm usually going back
and forth between game and engine teams. Permanent resident of Canada,
citizen of Poland (EU passport).
April 2010 - present, Digital Extremes, London, Canada
- Programmer on Warframe (23+ millions players on 3 platforms)
responsible for 95% of the mid/low-level networking code on all 3
platforms (replication, compression, congestion control, stability, protocol design).
Responsible for tuning the networking code so that game can be played
and enjoyed in China (limited bandwidth/high packet loss scenario).
of the Xbox One strike team (5 programmers), game available 4 months
after receiving devkits. Responsible for all things related to MP
(except VOIP), transition to IPv6, profile management, save
data, parallelized parts of the perception system.
of the PS4 strike team (5 programmers, responsible for porting the game
to the Playstation 4, playable hands-on E3 demo ready after few weeks).
Matchmaking, networking, player profiles,
save data, build infrastructure (crash handler, custom Perl
Bug fixing, profiling and optimization - low-level rendering API (50%
speed up), occlusion queries, parallelized parts of lighting pipeline
(~3ms gains) and replication system (no performance impact with up to 8
players). Warframe shipped as a PS4 launch title, ~6 months after
(player rating system, QoS, region detection, host
election, one of
the authors of our custom NAT relay server code),
host migration system (for a cooperative game with constantly changing
world state controlled by scripts). Went live after ~5 weeks, way ahead
of schedule, disconnection rate dropped 10x (to 0.7%).
- Other - gameplay
features, a little bit of UI code (enemy markers), DX11 driver
fixes and improvements, borderless full screen mode, fixing
all kinds of ultra rare bugs/crashes, usually relying only on crash
reports/logs from users (includes patching external binaries by hand in
some cases), helping with recruitment (authored our test harness),
project prototype - implemented seamless MP technology (each player in
own world, instantly connecting to other players, no loading screens)
- Generalist programmer on Darkness 2/Evolution
- Responsible for majority of high level multiplayer
mechanisms (game rules, mission structure (lobby), challenge manager
and all MP challenges, MP checkpoints, weather system, MP
specific systems & game objects), acting as "the MP guy" for
improved and enhanced low level replication system. Responsible for
making game conform to Microsoft's/Sony's networking limitations
(bandwidth, packet loss). Created profiling/diagnostics systems for
networking. Introduced new congestion control system and per-client
object prioritization, reduced required bandwidth to 20% of the
original value (on average).
- Converted animation update to a background job (all the
way from blending to generating matrices for skinning), ported to the
SPU on PS3, created several helper classes making moving other systems
much easier (allocators, container wrappers). Reduced frame time by up
to 15ms in most animation-heavy levels.
- Implemented animation streaming system (helped to reduce
memory requirements by close to 12mb in some levels), made it possible
to use cinematics of arbitrary length,
- Low level profiling + optimizations (game object update,
animation tree, particle systems, wait-free structures for job manager,
better cache usage, sped up animation import by 50%),
- Random stuff (gameplay features, memory
optimizations, Bink issues, keeping an eye on input latency, last
minute firefighting), TCR (responsible for big part of PS3 issues).
May 2009 - March 2010, Starbreeze Studios, Uppsala, Sweden
- Senior gameplay/engine programmer on Jason Bourne
game for Electronic Arts (canceled)
- AI/gameplay/low-level optimizations. Shaved about 20%
from object update loop time. Significantly reduced number of per-frame
cache misses, improved memory usage patterns, eliminated low-level
problems found with PIX/SN Tuner, tweaked threading primitives,
parallelized ray queries,
- Ported MemTracer to PS3, responsible for fitting game in
memory on X360/PS3,
- Worked on gameplay related unique selling points (more
details on request)
- Parts of my code have been later used in Syndicate game
Jan 2004 - March 2009, CD Projekt Red, Warsaw, Poland
Feb 2009 - March 2009, senior programmer,
confidential project, details on request
Dec 2008 - Feb 2009, senior
programmer, The Witcher 2 Technology
- integrated beam-tree based visibility system,
- experimented with multi-threaded rendering system (two
different approaches, DX9).
May 2008 - Nov 2008, senior programmer, The Witcher: Rise of the White
- "Guest" appearance, in 1.5 month, working with unknown
- integrated WWise sound system, including editor support
with WWise tool chain (gained basic experience with wxWidgets),
- optimized game on X360 (reduced hitches by parallelizing
costly operations, cut per-frame L2 cache misses by over 20%),
- ported MemTracer to X360 and found a way to save over
70MB of memory,
- helped in developing an ambient occlusion baking tool
(wrote KD-tree based ray tracer, multi-threaded for maximum efficiency),
Jan 2008 - Apr 2008, senior programmer, The
Witcher Enhanced Edition (PC)
- Sole programmer on CD Projekt Red side.
- Coded prototype/participated in designing a new
combat/movement/enemy behavior system.
as a consultant on all programming related matters. Spent 1.5 month
working in Lyon helping and consulting Widescreen Games before crucial
Jan 2004 - Dec 2007, tools/gameplay+AI/3D programmer, lead gameplay
programmer since May 2005, The
- Using tool
developed in spare time tracked and fixed memory related issues
(reduced memory usage by ~20%, fixed leaks, improved usage
- Optimized loading process, shortening load times by about
- Fixed some other obscure (heisen)bugs occurring once in a
blue moon (memory corruptions, multi-threading).
a team of 4 other programmers dealing with all kinds of gameplay/AI/GUI
related issues, responsible for scheduling/work balancing, mentoring,
- Ported existing tool set chain (Bioware Aurora) from OpenGL
to DirectX9, extended its functionality, created Cutscene Editor,
for parts of rendering system - dynamic soft shadows, visibility
system, resource caching, normal mapping, volumetric fog etc. Gained
basic experience with MAX plug ins.
major gameplay systems: NPC behavior/AI (eco)system ("living cities"),
control, parts of game combat/mechanics/quest system, economy,
recoded and optimized object processing framework.
various low level system utilities like crash reporters/stack tracers
that proved essential in the later stages of development.
- Tied up loose ends: optimization, memory management, copy
G15 support, Games For Windows, minor physics modifications (stability,
decapitation), low-level utility classes, GUI controls no one else
wanted to code and so on.
- Took part in the recruitment process (hiring new
May 2004 - Feb 2005, CSP Mobile, Germany (outsource)
over 30 games to various phone models (e.g. Nokia S40, S60, Sharp GX20,
Sony Ericsson Z1010, Motorola T720/V525, Samsung E700)
Oct 2003 - May 2004, Overloaded, The Netherlands (outsource)
- Coded/participated in designing Super Table Soccer game
(Nokia S40, S60, Alcatel).
May 2003 - Jan 2004, City Interactive, Warsaw, Poland
AI system, efficient collision detection system (hundreds of objects),
mission scripting system (coroutines in Lua), low level
(profilers, object model).
May 2002 - Jan 2003, 7th Sense s.r.l., Palermo, Italy
most of the game related code except for low level engine and UI
AI, combat, path finding, event system, scripting system).
- Phantom, the Ghost Who Walks - Gameboy Advance, finished,
- Mandrake, Shadow of the Vehme - Gameboy Advance,
finished, not released,
- In 2005 parts of my game engine have been used in a GBA
conversion of Paper Boy.
1994 - 2001: Independent work
- Coded object oriented demo framework (C++, DirectX),
- Created demo/game engine for Gameboy Advance (C++ and ARM
- Experimented with graphical effects in Java applets,
- Had fun as programmer on so called demoscene
since 1994. Created several demonstrations, some 3D engines (most of
them software based, some in 80x86 assembler, some in C/C++, one in
Visual Basic (sic)), module player, custom "flat-real" mode
More info about my (selected) past projects can be found here
Most interesting are probably MemTracer
, RDE STL
(including one of the fastest hash_map implementations out there) and Cruncher#
in C/C++, assembler (x86/x64 mainly/some ARM7/PPC), Java (J2ME),
Python, Lua, NWNScript, Perl, C#. Dabbles in Go & Rust.
- Experience with PS4/Xbox One/Windows/Xbox 360/PS3/GBA/J2ME
development environments (shipped games for those platforms),
Economic Sciences and Management, Nicholas Copernicus University in
Poland, department of Econometrics and Statistics, 2002. Master thesis
Networks for Stock Market Forecasting.
Included Matlab program for stock market predictions (neural networks +
genetic algorithms for selecting most efficient network topologies).
- 2nd place at General Probe 1996 (real time graphics
demonstration, software rendering)
- 1st place at Gravity 1996 (real time graphics
demonstration, software rendering)
- 3rd place at General Probe 1997 (real time graphics
demonstration, software rendering)
- 3rd place at CFXWeb Java Applet Coding Contest #2 (2001,
applet theme: Light Rays).
Polish (native), English, basic understanding of German, Italian,
Russian and Swedish.