I’ve been away because I don’t want you to see me like this
Posted by: whaledawg on
Jan 19th, 2009 |
Filed under: general
Well the project is finished. Has been for over a month. And it’s a total failure.
Which is probably why I haven’t been posting. It’s something I’ve been a bit embarrased to address. But it’s done(that phase of it anyway) and I think it’s time for a little post-mortem. Examining why it was a failure is the first step to figuring out how to succeed.
- Too Much: The scope was just way, way too broad. I wanted to create a solid, reliable, simple, cross-platform OpenGL based game engine coded in it’s entirety by me. What the hell? Even if I just picked one of those goals, “game engine” is just way too much for one person.
- Too Little: I had no idea how much time anything would take, so I assumed it would take very little. I think this topic has been addressed before.
- Rejected Libraries: I spent the majority of my time trying to kludge together my crappy GUI because I didn’t wan to use GLUI or GLUT. That was retarded. Code reuse is the cornerstone of good software development and I ignored it just so I could say “mine.”
- Wrong Goals: Did I expect to make a game engine the open source community embraced and used to make 3D games? No. I wanted a good code sample to take to game companies to show them what I can do. Then why did I try to make a whole game engine? Are they going to look at all 10k lines? Of course not. I should have focused on a succession of smaller projects that could contribute to a larger one like a game engine.
- Working != Progress: It’s difficult to measure progress in software engineering, so I fell into the trap of confusing working on a program with a program that works. That(combined with the next point) led to too much code and all of it clunky.
- Not Enough Design: I was so eager to get going with each part of my game engine that I didn’t stop to think about it. How will this whole system work? How will it fit in with the rest of the game engine? What technical challenges will it have to overcome? Consequently I ended up with code that was clunky, inelegant and big. More time spent with the pencil and less with the text editor would have made my life much easier.
So, what now?
Well I’m restarting my project with some leaner, more focused goals. I want:
- Something cross-platform
- Usable by the software community at large
- A good code sample
One thing that I did like about my project is it’s inclusion of .OBJ files. They are a standard that every 3D editor can output to but there’s very little open-source support currently. Now as it’s currently implimented my .OBJ support is horrible. It’s large(5k lines) and directly pluged into my other code so as to make it very difficult for an outsider to use.
So my first project is write a flexable, elegant .OBJ toolkit. It should read in .OBJ files and store them in a simple data structure that a calling program could easily convert to their own and it should have multiple “hook points” that another system could use to make it output exactly what they want. I’m currently still desgning it. My goal is actually a 5 to 1 design to code ratio. I’m hoping that will produce better results than I’ve had before.
When complete I’d like to get this project on sourceforge or some other open-source project site. I think these more modest goals are more in line with what I should be focusing on right now and will get me closer to my goal of a programming job in the game industry.


Tags:
Add A Comment