How I became a VikingChaosGenesisCrunch timeWill it scale?Five years in NorwayBig Troubles In Little ChinaDon't Copy That FloppyThis is the end... so far!Welcome to the fourth (and last) part of this series of articles.
The previous part was about Eden Games, this new one covers the period from when I moved from France to Norway in 2005 to join Funcom.
This article is a bit different from the others, because I am still working at Funcom. All the content of course represents my personal views, other people may disagree :)
How I became a VikingMy move to Norway was motivated by a number of factors.
My previous summer holidays in Norway had left some very nice memories; it really felt like a place where I could live.
At Eden Games things were getting worse for me: The two game projects were ambitious and the expected release dates seemed more distant after each passing month. The pressure and the competition between the teams was increasing, and ultimately I learned at a meeting that it was all because of the Tech Team spending too much time doing work for the other team. [Sic].
I resigned, and soon after realized that I would have to leave Lyon for Paris or Montpellier if I wanted to keep working in the video games without suffering a significant loss of income.
Well, if I had to move out and get a new place and new friends, I'd rather move far: I checked the job offers at Funcom and then sent my resume.
Few emails and a phone call later I was offered a tool programmer position which was not actually publicly advertised.
On May 2nd 2005, I was in Oslo for my first day at work, and I can't in all honesty say that it started very well.
ChaosThe first few weeks were a struggle, fighting exhaustion1 while trying to understand my colleagues.
At the peak, we had people from about 14 different nationalities working together on Age of Conan, each trying to speak English with varying degrees of success.
Try to imagine the Tower of Babel after God decided that everybody should speak a different language. Now try to imagine the impact on trying to build quality software.
The office building was relatively old, and had never been designed to accommodate so many persons and computers and as a result the air conditioning units were struggling. The electric system was pushed to its limits as well so it was relatively frequent to have fuses to blow.
The layout was a mix of closed room and open spaces, which kept changing to accommodate the permanent flux of new employees, until we eventually used almost three full levels in the building and totalizing about 300 persons.
The project organization more or less reflected the physical structure, with a perpetually changing team structure, people moving from a room to another, artists, coders and designers promoted to middle management positions to help spread the load.
And fatally, all that was also reflected at the actual work level, from the codebase inherited from Anarchy Online to the bug reporting system2, to the documentation3.
To call the work environment challenging would have been an under-statement, but I guess the old saying is true: What does not kill you makes you stronger.
Genesis4, the world editor tool used to build Age of Conan, and that will become the biggest software challenge I ever tackled.
Genesis started as a fork of TIDE, the world editor used on Anarchy Online.
When I joined the team, none of the original programmers of TIDE worked at Funcom anymore, my two colleagues had been there only few months longer than me and had been briefed by one of the original authors, but he left just few weeks before I arrived.
One of the first big jobs I was asked to do was to improve the assets management, which ultimately would become the Data Explorer.
Using the Data Explorer, the users could easily browse the list of datasets, explore the content of the database tables, view the entities and objects placed in the worlds with all their parameters5, and also search the entire asset depot by name or size, eventually using wildcards and multiple criteria to refine the search.
It was definitely not pretty, but it worked - considering that was the first time I used Microsoft MFC's things could have turned worse.
Another large part of the job has been to add all the features that Age of Conan required while refactoring the codebase to make it more maintainable.
And then of course, we had to add support for project dependent features and parameters so the same version of Genesis could be used by both Age of Conan and The Secret World teams.
We are now in 2015, and I'm still one of the programmers working on Genesis, but not as much as I used to because it is now much more stable, faster and less buggy than it used to be6.
In 2005 I was not only working on Genesis. I also did a tiny little bit of Game Code on Age of Conan7, and released my first Atari STe demo in more than 10 years.
Conflicts of interest was the first (and last) demo I participated to as a member of the Creators demo-group.
Originally the scrolling I wrote was supposed to be the secondary effect displayed between 3D object sequences written by Nerve, but for various reasons this did not happen, so we had to do with only the scroller, which explains the somewhat disjointed demo.
Still, it was nice to do 68000 assembler again.
2006 was mostly a repeat of the previous year, with more work on Genesis, more work on Conan, and one more demo.
Called Proof of concept 1: double buffered smooth sinus dots, this is just a small single effect demo showing that it was indeed possible to display smoothly animated effects at 50 frames per second on the Oric.
What's particular about this code, is that it 'emulates' double buffering by alternating on each frame the top of the screen between the text and graphical video modes, which required two different routines to clear the screen and draw the dots.
Nothing visually incredible, but that was an interesting intellectual challenge!
Crunch timeIn 2007 was Test Drive Unlimited finally released.
And finally in 2008 both Alone in the Dark and Age of Conan: Hyborian Adventures appeared in shops.
With Conan released, the Genesis team focused on adding the features required by The Secret World, and the Conan team started the work on their first expansion for the game: Rise of the Godslayer.
Due to the lack of time, the only demo I managed to release was Forgotten Bits, which was just a bug fixed version of a GFA Basic intro I wrote in 1993.
The demo was never actually released, and one day I found a part of the source code and spent some time on the Solskogen party place to fix it.
Will it scale?Because of the disappointing results of Age of Conan, the company had to do significant structural alterations if it wanted to survive, which lead to the subsequent relocation of most of the Age of Conan and Secret World teams to either the expanded Beijing studio or the newly created one in Montreal.
The important word was most, the teams were effectively split over three continents and expected to be able to work on the same things at the same time.
Our production pipeline and tools were definitely not designed to work well over high-latency/unreliable networks.
It took months before people on both side of the Atlantic could work efficiently, but we eventually did it and as a result the performance and reliability of the entire tool chain had increased tremendously; to the point where you can work from home or on a laptop while in a business trip without much disruptions compared to being in the office.
On the demo side I released Save The Earth, celebrating the 20 years of the Atari STe computer.
Five years in NorwayThe year 2010 marked my 5 years in Funcom and was celebrated by the release of Rise of the Godslayer, the first expansion pack for Age of Conan, located in the mythical land of Khitai.
On the oldskool side the first big release was the Oric port of the TV Show Space: 1999.
I did not write anything in the game, but I wrote the intro sequence and presented it at the Olsdkool compo at the Solskogen 2010 demo party.
I also participated to the intro sequence for 1337 (the Oric port of Elite), with a large reuse of the Space: 1999 intro code, plus some new effects such as the Star Wars scroller, the Defence Force distorter logo and the final 1337 logotype picture.
The OSDK also was updated for the first time in about four years.
2011 was a pretty calm year, the only release being a lame Oric version of the Nyan Cat internet meme animation, called NyAtmos.
Big Troubles In Little ChinaThe year 2012 was mostly spent working on the release of The Secret World, which did not leave much time to work on any serious oldskool activities.
After the game was released, I started working on my own small 2D game, and wrote my first OpenGL Shader to efficiently render a tilemap.
2013 was a big year, involving a lot of restructuring in the company as well as the launch of full production on new projects.
As usual, after the release of a big project we get more free time, so that was a quite productive year on the Oric side with no less than three releases!
My 3.5 kilobyte implementation of FreeCell made the 2nd place at the @party.
Then I celebrated the 30years anniversary of the Oric 1 with the demo Born in 1983 presented at the Solskogen party.
And then finally the Alchimiegarden mini intro coded during the Kindergarden party on the Saturday morning and presented at the Alchimie-X as a remote entry!
Don't Copy That Floppy2013 was also an important year for the Oric community as it saw the release of the Cumulus, a small hardware device emulating the Microdisc floppy drive unit, finally making it possible to a large number of persons to watch all our floppy based demos and games on the real Oric machines.
This motivated me to finally do something I had said I would do for years: A decent tool chain to make floppy based products, including an easy to use loading system.
In 2014 I released at The Payback the first demo using the FloppyBuilder system.
It was a modest slide-show called Pushing the envelope aiming at showing it was possible to load pictures while playing music at the same time.
On the work side, we released the PC version of Lego Minifigures Online, and started to work on the port to other platforms.
Later that year, I released my second demo using the new loading system, Zerofx, celebrating the 20th birthday of the Kindergarden demo party
Finally, there was a large number of changes in the Defence Force domain structure, including an entire rewrite of complete sections of the site using my new home-made tl;dr blog engine.
This is the end... so far!We have now reached the year 2015, a double milestone, celebrating 20 years working in video games, and in few days my 10 first years living in Norway and working at Funcom.
That's obviously not the end of my software history.
Few months ago I participated to the Global Game Jam 2015, and released a small Oric game called Weekend in Oslo, which I hope to finish one day :)
I already have an Atari ST demo planned for later this year: I've been invited to the STNICCC 2015, so I better have something to show.
In the mean time, I'm working on a small demo for Popsy Team for the VIP 2015, on the Defence-Force website structure, on my blog engine, the osdk bug fixes and new features, without forgetting all the stuff I have to work on at Funcom.
I don't think I will ever get bored!
1. I had a temporary place where I was barely able to sleep because white curtains and very early sunrise is a deadly combination: If you got awaken at 4am thanks to people talking out loud in the courtyard, there's no way you can manage to sleep again.↩
2. A version of Bugzilla which had so many custom tweaks that we could not upgrade↩
3. A mix of Zope/Plone and RCS↩
4. Before being called Genesis it was briefly called Tsunami. Unfortunately this new name was chosen just few weeks before the actual catastrophic events of December 2004 and then promptly changed.↩
5. Which can be easily copied to CSV format so you can later do fancy presentations in Excel if you want↩
6. When I arrived, Genesis would not work for more than two hours before it crashed, data corruption was frequent, and most operations were very slow. All that has been fixed↩
7. Mostly the game side implementation of the new tool features↩