My name is Pascal van Stekelenburg. I was born in The Netherlands, and have always had two main passions in life: music and games.
At the age of 6, I started playing the piano, and programming little text programs on the Commodore64. When we got an Amiga500 with integrated PCPowerboard a few years later, I got my first 3d experience, learned the AmigaBasic language, and with the PCPowerboard my first PC/DOS Basic language QBasic. During the Amiga500, I also started composing music on the computer for the very first time with the program “Deluxe Music” from Electronic Arts. Before this I always composed music in my head and on the piano.
A few years later when I was about 12 years old, I started trying to find a real programming language for a change, instead of all those Basic languages. I tried a bit of Java and Pascal (no, it wasn’t me who invented it…), but didn’t really get into it much. After all, I’ve been using Pascal for several years, but never went into anything spectacular like graphics or sound.
When I graduated Music College in 2001, I actually wanted to get into game development education. But there was no game development education available in The Netherlands at that time. So I just went to open houses at regular computer education schools, and asked if they taught programming languages. The answer: Minor to none. Most of those schools taught in the regular way with lessons and teachers in front of class with some practical computer exams and exercises. But one school explained to me that they were different. They called it “Project Education”.
Project Education was run through what was known as TI Mon3aan in Voorburg back then, but 2 years later they moved to Delft, where they are currently located. At their open house they told me that they put the students in little groups of 2 to 4 people, and they all have their own project they must develop themselves. And the teachers will only help when the students ask for help or make an appointment for criticism. At that open house I literally asked a teacher, ”Might it be possible to do a game project here?” And the answer was, “Yes, we have a lot of various projects and still meet the goals of graduation.” I immediately applied for that school.
Education at TI Mon3aan
I believe it was the very first day at school that I already started asking about doing a game project. They told me to have patience, because they had a few pre-chosen projects in the first year to determine the hardworking guys from the slowpokes. A bit disappointed, I started working that year on the regular websites, databases and networking, most of which I already had some experience with. But personally I still continued my search looking for the right programming language for games. And I found it: C/C++. When I found out that C/C++ was being used for almost every game, I started doing a C/C++ course.
In the beginning of the second year of the education, I was done with the C part of my course, and started asking again about a game project right at the first day. That teacher told me that I should have patience and just do the first project and then they’d separate the projects by each team. Somewhat frustrated I agreed and met my new team. One of them I already knew from the first year, but the other teammate was Mark Bertelink, who I had just met at that time.
As we were working on a Windows2000 Server project during those months, Mark and I started to learn more and more about each other. He really wanted to be a game graphics artist. And as I was learning a bit of Win32 SDK at that time, we started making little visual interactive animations. One of those interactive animations of us looked so much like a game that a teacher passing by came to us kind of angry and said, “We’re not playing games now, are we?!” Alarmed, we replied, “B-but... we made that ourselves!” All that the teacher said was “Oh…” and walked away.
I think this was a very important event. As that teacher didn’t know my desire for a game project, he had probably spoken about it with the other teachers, and they did know. So now they knew that the game project desire didn’t just fall out of the sky, it was something I really wanted.
Before every new project, we got into a meeting with a few teachers and talked about what should be done. It was at this meeting for the second project in the second year of the education that the head of the school was present at our meeting. At that meeting they were assigning us to a Linux project. But then they asked how we thought about that project. I furiously replied, “I don’t want a Linux project, you people promised me a game project, now I want that game project!” Then they promised me that after this project, they’d start talking with me about that game project.
And I agreed again, not knowing how to feel about it. I was furious, relieved, and anxious at the same time. But I just put my feelings aside, and started working on that Linux project. And of course, next to working on the Linux project, I was creating little games on Linux.
And then the meeting with the head of school came. That was one difficult quarrel, but eventually the result was that I was assigned to a project that would test my skills for them to see if I was really able to do such a difficult game project. That was the third and last project of the second year, which contested my skills in OpenGL and vector Math (bouncing ball simulation with correct timing).
After successfully completing that project, they asked Mark Bertelink and me what proposal for a game project we had for them. Probably this was just to keep us busy, because when we had our full project proposal ready, they ignored it and said that they had other plans for us…
In the third year of the education, after they moved to a new location, there was a bit of chaos. But Mark and I knew what to do. They had finally assigned us to a game project. Mon3aan has this special relationship with the management of the famous Dutch catamaran race “Ronde om Texel,” so they wanted us to create a 3d sailing simulation of it.
This was far more difficult to accomplish than what our initial game project proposal was, since we had proposed just a simple 2d fantasy strategy game. But it couldn’t bother our excitement; we finally had what we wanted. We did calculate that a regular game developer’s team consists of about 20 people. It regularly takes such teams about 2 years to create a game. We on the other hand, only had the 2 of us, and had to deliver a full game and engine in the last 2 years of our education. But we knew we could do it.
So we had one year for the engine, and one year for the game to develop. At this time we had no teacher with any knowledge of game development at our side, so we were definably all alone on this. All our knowledge came from books, our own experience, or trial and error.
So before we started working on the engine, we first defined what the engine really needed to do. We didn’t want to take unnecessary development time for things we didn’t even need.
Our engine was dependant on the Console. The Console decided what the System should do, send it back to the Console, and send it on screen with the class Window.
This idea has been both a blessing and a curse to us. The blessing was that everything goes through the console in and out. When you need information about a Model or a Camera, you can type it directly in the Console, and you get your information back in your Console. There was no unnecessary access to the system to subtract information from the engine. The curse, however, was that you have to program every possible function within the System and in your Console as well.
When we started working on the development of the engine, we worked with loading models from 3dStudio Max into our realtime 3d running environment. We used the textfile .ASE extension from 3dStudio Max, and loaded every single vector ourselves. Of course we did it step by step, but only the polygons were implemented correctly. There was only a little bit of lighting which wasn’t quite correct at that time yet. There were no textures or animations yet, we just constructed a solid model. Our engine was based on the DirectX8 SDK.
Later we had our ModelLoader loading textures, and our graphics engine rendered more than one boat. At this time the engine was able to create animation paths for the boats and the sea waving a little bit. We used this as demonstration at the Open House at the end of the third year. There we met a teacher from another school, André Hanegraaf, who saw our demonstration and was quite impressed. André is an artist himself and knows a lot about 3d art and gaming technology. He then applied for a job at Mon3aan to assist us in the rest of our development.
After a year we indeed had an engine that at least loaded our models, and could move some stuff around. The engine missed some parts that were developed during the development of the game, like sea animation and rotation of the sails.
André assisted us in designing the game. The game was going to be an arcade sailing race game with powerups and money to buy new boats, upgrades, and unlock levels. Money could be won by either winning the race, or picking up money powerups.
With the mouse you could steer your sail into the wind so that you would make speed, and with the arrows on your keyboard you could use your rudder to steer.
Initially, we were testing the A.I. to see if they would steer towards the checkpoints they had been given. And indeed they did. We could also see that the sails rotated. The sea had not been animated yet, as we did that last of all.
In our first design, every boat had its own hull damage points. We wanted to be able to bump into another boat and make it sink when its hull points reached zero. However, this became impossible to implement when we decided to use the free-to-use ODE SDK for collision detection. We were not able to find a way to know which two boats collided and how hard they were colliding. Since there was not much time left to create such functions in the game or engine, we decided to leave the hull damage out of the finalization.
We initially tried to make the sea simulation as real as possible. We found a document about Fast Fourier Transformation which could accomplish this. But neither we nor any of our teachers could understand how to apply Fast Fourier Transformation. So after many months of trying to investigate that FFT algorithm, I finally decided to make my own algorithm that created quite a nice sea simulation.
Finally, we graduated with this project. The game was nice to play and quite a prestige for 2 guys in 2 years. And it all started with that one guy complaining to ignorant teachers.
The only problem that consisted after the release: We made the game on just 2 development machines. Those 2 machines ran the game smoothly and without crashing. But we got a lot of support questions asking why it kept crashing so many times. After the fact, we discovered there’s a bug in the game or engine which crashes on hardware other than the development machines.
After graduation at TI Mon3aan, I started building my new studio, Shade Music Studios, where I currently work as a fulltime composer of high-quality music primarily for games, but also for films and other media.
After those two hard years of game programming, I realized that programming wasn’t really my main passion, but that music is. There’s a difference between wanting something, and doing something. While I always wanted to be a game programmer, I always was a music composer. While I was programming some little things at school while still wanting a game project, I was doing great compositions at home in the few different studio environments I’ve worked in.
My advice to people out there “wanting” to be a game developer; either start “doing” it, or start doing something else, because game development is about passion and commitment. Without the passion or commitment, your talent doesn’t count. As for me my passion and commitment lies in composing music.
And if people don’t give you a chance to prove yourself, make a chance yourself to prove to them. Make your own future; it’s your life. Make your own decisions; it’s not they who should decide for you.
|Mark, André, Pascal|