It all started years ago when I wanted to get back into game programming. My past was exclusively focussed on coding in Blitz/Amos/C hen Assembler on the old Amiga computers; so as such I was used to having a whole load of stuff pre-made for me (with the exception of C/ASM, but I didn't spend too long on that). I got myself a C++ compiler (Borland C from a PC magazine) and decided that I wanted to make games on the PC. At the time there wasn't any kind of BASIC that was ready for games, or at least I never saw it. I spent a while learning the very basics of C++ from my friend's lecture notes and then decided to jump into making PC games again. I coded up a basic Win-32 text adventure and it all seemed to move along nicely. I liked C++ and I realised I could leverage it in many ways to achieve what I wanted. The text adventure got boring and was never completed, I'd found GameDev.net by then and seen the number of people coding up cool games on their own, so I set about 'head planning' my dream game, a game called 'Kosmos' which was intended to be an Elite style games. I downloaded the DX7 SDK and thought that it'd take me a couple of weeks to build the basic game; bear in mind I was used to everything being done for me in the past; I assumed that DX would be no different.
Kosmos / KosmosEngine
So I sat down with my DX SDK and decided that I could make cubes spin around and do all sorts of cool stuff. From there it all looked nice so I figured out how to load in some basic models from Milkshape 3d (which was fairly new). I sat back and looked at my spinning yellow models and thought that I'd done all the hard work, the rest would be downhill riding from here - and I was right, it was downhill but not in the way I wanted. People were raving about their engines on the GDNet forums so I thought that I needed to code up an engine. I was a PC gaming n00b, I knew shite about the whole process of making games and I did have my spinning cubes and models. I read a few articles and got to work on my 'engine'... The problem was I was working towards an engine but knew nothing about what an engine was. In the real-world, this is suicide - you can't try to code something that you have no idea about and succeed. The KosmosEngine project died very quickly after that without any real progress from my spinny yellow cubes.
Lessons from KosmosEngine (retrospective) I guess the main lesson here was that I tried to jump in at the deep end and failed. One lesson that I didn't learn until later but should have learned here was that 3d is a bad idea for a beginner's project. I thought that my 2d experience with the Amiga would make it an easy step up to 3d on the PC. I didn't even address the differences between not only platform, but language and tools too. It was a stupid assumption to have made.
I realised that I didn't have a cue about where to really start in making an engine or even a game so I decided to hook up with some random project on SourceForge. The project seemed exciting and the people behind it seemed to know what they wanted, all they needed was people to help them with it and code up the game and engine to power it. This was the first time and actually sat down and thought about what I'd need from a project - I wrote some simple engine feature specs that I thought we'd need to make the game work. The first problem here was that my feature list was completely graphics and 'candy' orientated. I was thinking about game features that would have looked 'cool' in a game but in reality made very little difference to how the game would be played. I was thinking as a game player, not a game-designer. I also had stupid notions about how grand the project would be; I'd not learned my lessons from the previous failure and tried to bite off more than I could chew.
This project was good in the fact that we spent some time looking at other open-source graphics engines. At the time I remember looking at CrystalSpace 3d and thinking that we could easily use it in our project - except I couldn't get the damned thing to build and gave up pretty quickly after that. Whilst I was looking over some other technologies the project leader vanished and nobody could reach him via email. The rest of the team began to argue about the direction of the project and a few fractured off to make their own similar project. I became disheartened with it all and quit the team which by then was down to myself and someone else. The project ended up rotting in the SF archives with not a single line of game or engine code being committed.
Lessons from WarCity(retrospective); again this is another retrospective lesson - I should have continued looking at existing solutions to game engines. The whole failure of this project left me feeling as if we'd done everything wrong and so I went back to my old ways - I thought I needed to code it all myself, probably because of the 'cool' factor. The GameDev.net forums were still buzzing with people showing off their engines and I thought I needed to do that. Yeah, peer-pressure, it's a bitch and is pretty unconstructive when you have no idea about what you're supposed to be doing. This project also made me think that I should keep working alone, mainly because the blame would lie squarely on me if things screwed up. I've only recently learned that this isn't the case...
Coming up next: Manta-X, the first failure