Recently I found myself lost in some memories about my start with game programming. So I took the time and visited the good old sites I used to in the past. I found an interesting article about ION Storm or to name the title Knee Deep in a Dream: The Story of Daikatana. Wow what a time we had that times. Ok I have to admit that I grew up with Wolf3D and Doom and that for me personally the guys at id Software are the only gods on game heaven. I can highly recommend to read the article mentioned above.
I don’t want to start a discussion on why ION Storm failed. There are enough sites and forum threads which cover that. What makes the article so interesting is that it covers both: the thoughts of the project managers and the thoughts of the employees. As some of you know I started myself more than one big projects. While it was easy to get a team to design, create and realize a complete game engine, the blueEngine (info’s are available at G-Productions) it was nearly impossible to form a team to realize a game with this. I thought of why this could be so difficult. I’m a programmer, I’m a developer, what I love is endless lines of codes not thinking of how a character should behave in different situations of a game. I more then once recruited a team consisting of artists for sound, graphics and of course some guys for the storyline. We had about 50 people within 5 years and about four (in my opinion) really good design documents covering some games which would be really good. Here are some details with that.
At the start we all were blue
In early 2002 I was very active in game programming. I earned my money doing the daily database and web development but my passion had always been the game programming stuff. I remember the good old Amstrad CPC times (most people had have Commodore C64, me not) where you had no chance to get new games here in Germany (game stores were rare) so the only solution was to make your own games. Ok we talk about text adventures but let’s get back to the year 2002. That time I thought that as a game developer you had two choices. The first is to continue trying to develop some 2D games on your own and release or at least try to release them if they would ever get finished. The second is to get some guys to make something big. I had been very active in the community of www.gamedev.net and watched day by day the releases of new graphic engines. Some of them really good others dedicated to get forgotten. Engines like the Irrlicht project had been very advanced, easy to use and most important open source. The dream of making a game and we talk about a real game with story and all that stuff was so close now. Experiments with the Irrlicht graphic engine showed how powerful this engine really is. The developers focused on the API so it’s a dream for a developer. After I had have some beers one evening and after some lines of Irrlicht API later I thought to myself: “Hey you wouldn’t call you a developer if you could not do something like that yourself”. Just kidding 🙂 The main cause why I decided to develop my own game engine (notice the word game engine NOT graphic engine) is that no matter how powerful open source engines are, no matter how many features they have and how extensible they are you will always find something which is not supported. So if you design your engine yourself you know exactly the limits of your engine and can include any feature you want to have in it. That’s the point what made me spending about a month over a document with the title “The blueEngine”.
Gentlemen start your engines…
What was important for me was the fact that I didn’t want to have an Irrlicht 2 or a Quake map viewer engine. I wanted to have a complete game engine covering the graphics part, a sound module and not to forget a network module. It was easy to write down all features I wanted to have in my engine. Yes Sir. My engine would be the best. A good friend of mine from the USA, a game programmer pro, received a copy of this design document for his opinion. After two days I received an email with the following words: “Dude looks good sounds good and well written but do you really want to have all that stuff in there? You would be working more than 5 years only for coding the engine. Keep it simple. Just include only the stuff you really need and which you really will use” Some time later I should realize that he should be right. Work started, and it should never end…
Time for some sidekicks…
The design document was in version 1.0 and the forums should be the place I should reside the next 4 weeks. The good thing on programmers is that they get motivated even without a reason as long as they have the freedom to give a project their own touch. The bad thing on programmers is that they are arrogant enough to think a project manager would allow them to do this ;). Finally I got four skilled developers who were willing to help me and work started immediately. I had been busy earlier that times creating a DirectX DevPak to use the DirectX API with Dev-Cpp and the MinGW compiler (also available on www.g-productions.net) and also an OggVorbis DevPak since I wanted to support the ogg file format with my game engine, so the basic work was done. The developer team was good. I mean really good. In game programming the most important thing is the time. No matter how good you are in C++ how good you design your classes, you will be judged in frames. And those guys understood this essence of game programming what made the development real fun. After a while the team split. It split for the reason that this guys where students and had have exams or stuff so sadly the group split and I had to finish the rest myself since most work was done. The engine was to 80% complete that time since the complete team did a good job the past 17 months. At this point again thanks to Markus (Germany), Scott (USA), Steve (USA) and Mike (USA) for helping me out. The guys did a very good job so it wasn’t difficult to put the pieces together and complete the engine myself.
The bread and the butter…
When you finish something you want to show it right? It took us about 20 months to create the blueEngine (a game engine which would never be released). So I wanted to start for a game right now. The damn thing on this was that I needed something for presentation. Something like a level, some animation and stuff like this. Don’t roll your eyes. Would you join a team to develop a game with a game engine without knowing even what this game engine is capable of? NO you wouldn’t. So again some days, weeks, months went away without any progress. I had to build a level, to look for some models and sounds to get all work together for a demo. In my daytime job we got so much work to do, that it took me about half a year to create a playable demo. Finishing this I went again to forums for recruiting people. The problem now was that I didn’t only need programmers, but also the artists for this and most important someone who leads the project. The bread and the butter of a game is not what the game engine is able to do but the people who push the engine to their limits. After posting my “job offers” on different forums many people called me willing to join the team. They sent me some demos of their work and I have to say that great potential was available on the market. I was lucky getting a guy which was something like a story writer. This guy (I name it John right now) had not only great ideas for games but was also a competent project leader I thought. The best thing on that guy was that he was, in my eyes, a visionary. So much great ideas, which I didn’t heard of even in professional projects. Let’s get to work guys I thought.
The work begins and so the problems…
I set up a project management tool to be able to distribute the work. The coders should build up a framework for a demo, the sound artists should think of a music theme, the graphic artists should look for textures for the demo map, the mappers should create the demo map and the modelers should get started making the characters and other models for the demo. All was based on a design document which was presented by John and I wont go deeper into it. The demo should include a full playable map with our main character and some breadcrumbs to wake up the interest of the public. Real-time lightning and physics and of course high detailed textures should be the goodies we wanted to be in there. The game should be played like a film-noir with a dark atmosphere. The design document was very complete and that was the only good thing to that time. What I didn’t know was that it takes more than some skilled people to create a game. So all the teams went to work and the fun began…
After a short time artists, mappers, coders began to mail me with questions about the engine. What textures sizes should be used? How many triangles can be rendered the same time, how will physics work etc. I always had the same answer. Please refer to the engine documentation. Silence. After a while the mappers started mailing me, they had been disappointed how the graphic artists would create the level textures. So the graphic artists complained about the way the modelers would create the models. Skinning would be impossible the claimed. Wow. Keeping a team together could be really hard work. After a while (or to be more precise: after a few months) the first graphic artist told me he would leave the team. It was the start of something bad. He complained about the way John was talking to him. Some days later one of the mappers did the same with the same complain. I called John to talk to him why people are so disappointed. “I don’t know” he said. “But if they want to leave, let them leave. They are not professional enough”. The next mapper wanted to leave because of the same reason the other to guys did and I asked him what was going on. In fact John was the self-announced project leader and I was happy about this fact because he would do the job keeping the team together, a fact that allowed me to do what I loved much: coding. As the mapper told me John understood his job too serious and was more a dictator than a project leader. Nearly the whole mapping team left that days and some of the graphic artists. I called John again and told him that I was very disappointed about the fact how he was talking to the people. Soon I realized that our philosophies on how a team is to be led where very different. In my opinion fun should be the most important what people should have. John thought that the most important are the results. So he pushed the people more to the limits, forgetting that those were people which had have a daytime job and did the game project in their spare time just for fun, which was OK for me. We didn’t have a deadline nor shipping dates. We did this for fun. He wanted to get fast and perfect results for what case ever.
Again recruiting, again explaining how everything works, again introduction into our tools and again the people left after short time. I wondered why this happened again. We recruited nearly five to six completely new teams but there was no progress in our project because the people just were not able to work with a project leader who thought he was god. I asked John to leave. That was the last solution. No matter how good and skilled he was, he was not able to keep a team together. A fact that makes it impossible to call him project leader any more. John did not acknowledge his mistakes. He still believed that a team needed a strength hand to succeed. He left and I thought it was the best decision that time. This time I was wrong. I was now the interface between all the teams and so I became the project manager. This was cool at the beginning but I realized soon, that it was a full-time job. No time to help the coders any more, something which made me getting more and more disappointed. Leading a team can be very time intensive but trying to fix what a previous team manager did wrong is a full time job. The moral of the team went again downwards. The reason for this was that mainly the complete team had finished its job but the coders did not. While we had been four coders, two of them were busy to finish the tools and the other two (one of them me) should build the framework. The framework was at about 20%. No intro, no menu, no nothing. Just the basics were finished. There were so much things missing since John left and I now was alone with a framework for the demo, some textures, a basic map (untextured) and a design document which was cool but seems would never be realized. Two years had passed since the start of the first team to the end. The funny thing was that the end wasn’t really an end. It was the decision of the complete team to leave the project as is and to split the team.
What did we learn? Nothing!
I tried to keep the story short and so many passages may be confusing. That is not important. Important is that I learned much and I think I wouldn’t do the same mistakes again. I think the most important question is not “What did I do wrong?” but “Why did the project failed?”. If we keep the question more general we will be able to specify the mistakes done. The positive aspect for me personal is that the whole project, as any other projects too, is a learning process. If you won’t try to start something, no matter how far you’ll get, you’ll never learn. As in any other project you learn so much, because you’ll have to do so much yourself. Trying to get a team is not that difficult. Keeping the team together is the most difficult task of all. I’m a professional software engineer and I work for a long time as a freelancer now. Amateur projects like the blueEngine or a game fail in most cases because of the lack of time and the motivation. I’m to 100% sure if this had been a commercial project and the people had been paid we had already released the game, but that is no excuse for failure. One common mistake of all of us was to leave the teams competing against each other instead of working with each other. Today I lead many projects (sadly not game development ;)) and it shows how harmonic and as a result more efficient all the teams of a project can work. There are a bunch of other amateur projects where the progress can be seen on daily basis. In my opinion, still fun should be on first place and should be motivation enough to work on something. If fun is missing who would really sit down and work on something in his spare time?
You cannot create a game on your own. You cannot be programmer, mapper, texture artists, storywriter and stuff yourself. You will need too much time to do all that stuff yourself. My projects failed of two reasons. I was egoistic enough to think it’s enough to provide the game engine, a design document for a game, the tools and have only to recruit some people to start work. That’s wrong. If I had heard some more on the needs of my team(s) and talked more to them instead of closing my door and continue programming, allowing a guy to lead a team which was more like a imperator than a project manager, things would most probably look different know. I would have released a game with my very own engine. I would have created something I could be proud of. All the people we had have recruited were very skilled people. That showed me that there is enough really good potential out there even in the amateur game development scene.
The only message to you who is reading these lines here, is “If you have a dream you wish to realize. DO IT!”. The worst thing which can happen is that you fail, but that’s OK. As I said it’s a learning process. The next time maybe you will succeed and don’t forget about the fun you’ll have during all that time. Whether you are a programmer, a sound artist, a graphic talent, a story writer…. Try and you will see how much fun it is to work something with a team. Again, of course the goal is to create a game but even if the whole project fails no matter for what reason, you can learn so much during the development, and that’s worth doing it.
To the two or three regular readers of my blog: Thanks for reading this.
Dimi (ZoE) about the blueEngine story of G-Productions.