I started programming when I was 14 years old, back in 1985.
The first computers arrived at my school, and I was immediately
fascinated by the possibility to create everything I could imagine. My sister and I succeeded in convincing our parents to buy a
Thomson TO7-70
(a French machine with 48Ko of RAM) for Christmas, it was a very big expense for a present indeed.
I quickly learnt Basic, then because it was so slow to draw pictures I moved to assembler, hexadecimal to be more precise (the only book
I could find was written in this obscure language, with things like C6 and B9 everywhere).
I coded a small 2D fighting-adventure game called Samourai
(the kind where you punch enemies and collect keys to open doors) with beautiful backgrounds drawn by my sister, and we won the 2nd
prize in a regional competition (only 2nd because the jury didn't believe we made it without any help from adults).
In 1987 our parents bought an Amstrad CPC 6128 (128 Ko RAM),
the computer with an integrated floppy disk (in the keyboard) ! I learnt
its Basic, and Z80 assembler (this time real assembler, with add hl,de). It was really a wonderful machine, I did a lot
of things with it, the biggest being a full
2D action game in 1991 called Dedalis using a hardware trick known as "overscan"
(the black borders surrounding the screen are removed, so you have a display area of 46*23 characters instead of 40*20,
and different drawing modes
were used at the same time : mode 0 (160*100, 16 colors) for the game level, mode 1 (320*200, 4 colors) for the texts below). It took me
14 months to complete it, the source code is about 26k lines of assembler long for the game, plus about the same amount for the title
screen and hall of fame (which was a demo of what I could do with the hardware, hence the length). I tried to make a deal with a publisher
to sell this game, unfortunately at that time they were all leaving the 8 bits machines for more powerful ones, and I was told it would
be OK if I could make the same thing on a PC (but I didn't know anything about PC programming).
At the end of 1992, I was studying in a college of engineering and we had several projects to do for the computer science course, and many
reports to make each year ; so I bought my first PC, a 386DX40. I started coding in Turbo Pascal and assembler,
making routines to draw sprites and various shapes in mode X. Then I discovered the
demoscene with Unreal
(the demo from Future Crew, not the game !) and Second Reality, and at the same time I met a fellow student doing the same kind of things
as me in his spare time. We decided to join our forces, coded together during 3 years (1994-96), and attended several competitions in
different european countries. Screenshots of our demos are available
here. Notice the date : of course these programs are DOS
executables, they don't use any 3D hardware, they were designed to run on 486DX2 or P90 machines, and they are coded mostly in assembler,
with some Turbo Pascal or C (when there was no size limit).
What is your highest degree ?
I'm a general engineer, with a last year specialization in
computer science. I graduated in 1995.
Why did you choose to work in the videogame industry ?
I think it is the logical continuation
of my activity as a demomaker. I was happy to get paid to do the things I was doing during my
spare time before, and to work on subjects I'm interested in (see next question). In my opinion video games are one of the most complex
and complete thing you can work on in computer science, with many different tasks and problems to solve. And finally I probably like the
idea that one day or another your product is going to be on shelves in stores, with people buying and enjoying them, rather than being used
in a bank or whatever (no offense).
Which fields are you interested in ?
I'm mainly interested in graphics and 3D (including physics),
I was attracted by 3D even when my CPC
did not have enough power and fill rate to rotate and draw more than 3 or 4 cubes. I like optimizing too, it
seems perhaps less necessary today than it was before when the CPU was slow and did everything, and however it's still very important and
often underestimated (the truth is, a new hardware is always available before you have finished optimizing for the current one ;
that's where consoles are great).
Another field I like more and more is developing tools. A great engine is nothing without tools, whereas you can
do top-notch games with an average engine if you have a good gameplay and productive tools. I also think developing custom tools is
important to show artists and designers that you care about their needs, because at the same time you're giving them a lot of
technical constraints to respect which is probably frustrating.
I've worked on sound (playing soundtracks for different cards before DirectSound was here) and it was
interesting, but I'm not a specialist. One thing I don't like is network programming, I did it once for Intel, and I remember it was a
nightmare to debug (and even reproduce bugs).
What was your job at Haiku Studios ?
My first task was to add hardware acceleration for the 3D Blaster board in an almost finished MS-DOS game called
Demon Driver. It was a cartoon motorbike racing game with up to 5 players (LAN), never released because of Philips Media financial
difficulties. The code was made of 60k lines of assembler plus some C files, and it already had support for the S3 Virge.
A few weeks later 3Dfx visited us and gave us a few Voodoo cards, so I made a 3Dfx version with Glide.
I then worked with the lead programmer of Demon Driver on a prototype of another racing game using the same engine, with more
special effects. When the company began to have cash problems I was asked to develop a
3D 3rd person game prototype in a hurry,
because I was doing such a thing at home and that's what publishers wanted to see after the success of the
first Tomb Raider. Unfortunately Haiku Studios closed in October 1997 after a petition in bankruptcy.
What was your job at Winwise ?
After a 1 week training course on MFC, I worked on a software for the French General Direction of Armies. This program was an SQL
database with an MFC user interface, intended to manage the different equipments (tanks and so on) and their maintenance. My job was to
write the technical documentation (more than 400 pages), to program various
user reports with a dedicated software, and (more surprisingly) to make a tool to obfuscate the source code.
Then I worked in the office of a big client (Bouygues), to prototype the UI of its next software intended to be used on
building sites. This was an MFC-intensive job, with the use of the Objective Grid component from Stingray.
Finally, I did some R&D on DirectPlay, to answer a call for tender from France Telecom (they wanted to create an
internet gaming zone, called Goa).
What was your job at Duran ?
I joined Duran to be the lead programmer of a demo for Intel. They were preparing to launch the Pentium 3
(at that time called Katmai), we had some of the first chipsets in our computers, and we had to show that the new SSE instructions
could improve performance in various CPU intensive routines. The principle of the demo was the following :
two or three people on different computers could communicate through headphones, see puppets representing them move and speak
(lip-synch) on the screen, and interact with the puppets' shapes. These shapes were made of splines surfaces, so we could change the
resolution of the puppets (and for example have more details on a Pentium3 than on a Pentium2 at the same framerate).
My job on this project was to make the different parts work together
(I was not in charge of the sound, animation, or splines
calculations) as a standalone application or in Internet Explorer,
to write the network code (using DirectPlay), the rendering stuff
(DirectX and Glide), and to manage the inputs
(mouse+keyboard with DirectInput). I also added a few special effects, and coded some
procedural textures to increase the speed difference
between the P2 and P3 (because this kind of routine is a good candidate for parallel optimization). The SSE specific code was written in
inline assembler, and compiled with the Intel compiler.
The other project I worked on at Duran was the game Virtual Skipper :
it's a 3D online sailing game, the most realistic that was available at that time (now it's Virtual Skipper 2
I guess ;). I designed the whole object oriented architecture of the game, I wrote the
file system and the accompanying tool, I rewrote some code from my demos to handle the
3D transformations and lighting (no TnL cards at that time, only accelerated triangle drawing), I coded the
DirectX and Glide rendering (OpenGL support was done by somebody else), and I helped in other areas such as
the boats' trails on water or general debugging.
This game was almost completely coded in C++ with Visual 6. It received good press reviews in France (I don't know about other areas)
when it was published by Ubi Soft at the beginning of year 2000, and there are many websites dedicated to it in various countries.
What was your job at Microids ?
My first position at Microids was an R&D lead programmer position. The company had just licensed the 3D engine
NetImmerse from NDL,
and I had to build an additional layer on top of it to handle the specific needs of our future adventure games.
The goal was to better integrate real time 3D characters in precalculated environments (with fixed cameras)
by enabling prerendered and real time objects to light and shadow each other dynamically. There are screenshots in my
online resume where you can see for example that a dynamic
multicolored spot can light the pre-rendered walls and columns of a room (right picture).
For those who are interested, this part works basically this way : I have two shots from the same camera, one with the "normal" lighting
conditions, and the other with a very brighter situation. I also have a low polygon 3D scene representing the room and the objects
inside (see left picture), necessary at least to perform collision tests
(I use it to fill the z-buffer too, so that nearest objects can mask the real time 3D characters). I render this untextured scene to a
texture, with the image I want to use for the spot being projected on the objects ; with the correct setup the result is that parts of the
room not lighted by the spot are black, and parts falling in the spot's cone are drawn with the spot's picture on them. Then I use
multitexturing to render the background, with the formula : pixel = Dark + Mask*Diff. Diff is the difference between the brighter
and normal pictures (precomputed by a tool), Mask is the texture I've just built and Dark is the normal picture. So you see
that for black pixels (= not lighted) of Mask I get the "normal" color, and for lighted pixels the brighter color (notice that for a red
pixel of the spot's image, only the red component is brighten, that's why not only white spots work).
When the R&D Director left the company I took his place, and hire another guy to help me continue this work.
At the same time I was responsible for the technical support
for NetImmerse at Microids, that is to say I tried to answer questions and
resolve problems for the different games in progress, and I was the one in contact with NDL to ask questions (technical or about future
versions and so on), report potential bugs or fixes, and suggest modifications. As a Director I was sent to GDC 2001 in San Jose, to
attend the most technical conferences.
What was your job at BSF335 ?
I owned the title of Director of Programming, which means that I would have been responsible for all decisions and schedules
regarding code development. Actually this never happened, because the studio did not have the time to grow as expected, and there were never
more than 6 people (two coders) working here.
My first task was to take an existing engine and the corresponding editor developed by our head office
Bits Studios, and modify
them to fit the needs of a new game prototype. After a
few months the CEO decided that the game idea could never be sold to a publisher, he fired half of the team and admitted we had to
develop some new technology for the future. So the other programmer started to work on the rendering, animations, Max plug-in, and
gameplay, while I was building an MFC tool on top of the engine to allow the remaining designer to modify and
fine-tune the levels in real time while playing.
Again after a few months the board of directors of Bits took the decision to close the French studio for financial reasons. During the
3 months notice period I was asked to do some R&D work on
image based lighting for the GeForce3 hardware, and then to take
care of the moving of the computers and furniture from Toulouse to London (sounds weird but it's true !).
Why did you leave the different companies you worked for ?
Unfortunately I didn't leave so many companies, some of them closed.
- Haiku Studios closed in October 1997 after a petition in bankruptcy.
The company was 5 years old, I worked for it during
the whole last year.
- I joined Winwise because I needed to earn money again quickly, but this company has
nothing to do with videogames. I learnt many things
there, especially when I was working for Bouygues, but when some of the former managers of Haiku Studios contacted me to work with them
for Duran, I accepted immediately.
- Duran is
not a game company either, its primary activity is to make special effects for television and movies. The boss was attracted
by the Mendel technology developed by some Haiku Studios guys, he hired them to work on a real time 3D storyboard tool, and
concurrently we managed to sign a demo for Intel and make a game or two. But is was never a real game company, I left because I was not
interested in doing Virtual Skipper 2 or some R&D stuff that would never get used, and since summer 2002 Duran
has completely stopped to develop games or internet software.
- I had a good position at Microids, and I still have a lot of contacts there.
I wanted to leave Paris one day or another and live
in a sunny and quiet place, and I got the perfect opportunity when former employees of Haiku (once more, but these are not the same
guys) working for Bits Studios told me their company was going to create a studio in the South of France. Furthermore
I wanted to work on a console game
and thought it would be easier in a company making only console games (this is not the case of Microids, which has a
well established tradition of strategy and adventure games for the PC). I knew some guys I was going to work with, in theory we had the
freedom to do exactly the type of game we wanted, so... I couldn't resist.
Note : since the middle of year 2003, Microids has stopped any development in France and only pursues there its activity as a publisher.
- BSF335 closed for financial reasons at the end of August 2002.
What are you doing at the time being ?
After my notice period at BSF335 I took some holidays, then I tried to get a job in a game company on the US west coast.
I went to California in November to see how the living conditions look like
and to meet one or two companies, unfortunately this didn't lead to anything.
Now I'm coding a personal project to keep the good habits while looking for a job in France.
I'm also writing an article for the forthcoming book Game Programming Gems 4 to be published in 2004,
and I worked on the virtual visit of an abbey for a museum in June
(see this page).
According to you, what are your strengths ?
This is the most difficult question ! I think I'm well organized, autonomous,
and above all persevering. I like to solve problems,
find tricks, and optimize. I don't like to spend too much time debugging, so my code is quite clean and operational from the beginning.
Other people say I'm clear when I explain them technical things, which is good news because it's something I will continue to do
at the office or on my website.
According to you, what are your weaknesses ?
I like the calmness of night, it's easier for me to go to bed and wake up late than early.
I'm a bit touchy if I feel people in front of me are aggressive or think they're always right.
I'm having a hard time if I need to spend the whole day in internal meetings.
What kind of games do you like and play ?
I mostly played action/adventure games
in the past on my PC, Tomb Raider being a good example of what I like, plus of course a lot of
Counter Strike and some Quake or Unreal in LAN with my colleagues. When I had a CPC 6128 I tried all types of games, and this is quite
the same thing now on Xbox : I play FPS, fighting games, sport and racing games, and even RPG. But my favorite category is definitely
the action/adventure genre.
Is your website still up and running ?
Of course it is !
I don't have much time to update it and write material for it, but I hope I'll have something big and interesting
to release in a few weeks. Anyway, I'll try to continue to write
articles from time to time, when I think I've coded something that
could be of some help for other people. I really enjoy it indeed, but it's very time consuming.