Why Game Developers Should Finish What They Start
Michael writes "Too often, hobbyists and open source programmers take on game projects that they can't hope to finish. Freshmeat is rife with games from developers who have bitten off more than they can chew. So I drafted an article which takes a look at the major roadblocks to successfully completing open source and hobbyist game projects."
There are times when I'm working on my personal project (a game, not surprisingly) that I just stop after getting one feature debugged, and I end up doing anything but work on it for weeks on end.
The way that I get myself back on track is by concentrating only on the code that must get done and then I worry about making it more robust later on. I sometimes find myself worrying about the content. This is A Bad Thing(tm) to do while programming a game engine. It's a lot better just to focus on the code and the functionality first.
Obviously, there are times when I physically am unable to program for various reasons (real life and all that). But, no one said that being an open source game developer was easy.
I'd love to post my game URL here, but I'd rather not have my ISP think there's a DDoS attacking me. It's called Ether though, it's a web-based MMORPG. (there's a very uninformative page for it on SF.net [projectname: ethermmorpg])
Amen to that. I'm guilty of this too, and I'll do it again.
:)
You learn so much from doing partial projects. This time around, I learned:
LibSDL, SDL_Net, SDL_Console, and INI_Parser.
Granted, I don't have a product to give away, but I just made the game for myself anyway
More than enough BS
And that's always been the case... of course, being more of a tinkerer of code than a real programmer, there wasn't much chance of it ever happening professionally. I've had so many ideas, and quite original, I'd think. Some go back to the early 90s, and they don't seem dated yet.
Well, the last few weeks in particular, I've been working on my first game for real. Allegro, gcc on linux. I'm doing the mundane stuff first, menuscreens, trying to get libmpeg to do cutscenes, not that I'll ever actually have any rendered.
Maybe it was the years of starting to doodle around with code, and never accomplishing anything, but I did realize that I needed placeholder images/video. Done, grabbed random mpegs, doodled out so laughable stuff in gimp. My game will use very little in the art dept, being SVGish in many aspects. At the moment, only the opening menu screens would seem to need any.
The point is, why does this guy think this is a revelation? I can't imagine that there is anyone out there that isn't using Allegro or SDL, or has io needs so simple that a keyboard routine is all they need. His first requirement, therefor, hasn't been an issue in at least 5 years.
His second issue, art/graphics. I can see this as contentious. Even so, those who really want to program, to author the game, they give up on it soon. (In some respects, at least... if I were doing a 3d game, I'm decent enough at 3d modeling). So people either finish this part, or they don't. Does he expect them to design games that don't need any, or would he just rather not see any unfinished games?
It sounds more discouraging than encouraging.
Offtopic: What in the hell do I do with my game, assuming I do finish it?
If you're going at the programming by yourself, I would strongly recommend you use a library to save you from having to write your own low-level access routines (unless you just want to learn about how all these whiz-bang effects are done, but that may distract you from the goal of getting a game finished). Unless you have commerical backing, or are absolutely sure you have the willpower to stick to the project (by "absolutely sure", I mean you've done it before right to the bitter end and want to do it again), I would recommend using as hing-a-level library as possible.
There are several out there with their advantages and dis-advantages. Some of them are Microsoft DirectX., OpenGL, Allegro and SDL. High-level libraries are good for beginners and are useful for rapidly developping games. You can accomplish a lot with a few lines of code, but they can make the executable size bloat, and sometimes, you may want more control over the system. Low-level libraries are useful for control-freaks who want more control of what's going on.They let you access the system with little overhead, but require a lot of work to get to work. DirectX and OpenGL are low-level libraries, Allegro is a high-level library, and SDL is somewhere in the middle.
Also, check to see which platforms the library is available for. DirectX is only available for Microsoft, whereas OpenGL, SDL and Allegro let you write programs that can be ported to a multitude of systems and OS's.
Personally, I use Allegro, but other people may have different requirements or desires to dig down deep into the hardware.
> The reason why people give up is quite simple.. it's fairly easy to get a 80% complete game, and see what it's like. The last 20% however takes 50x longer to do
Yeap, the standard joke in the industury is that the first 80% takes a linear 80% of your times, and the last 20% takes an exponential 80% of your time. i.e. ~160% total time.
Why do you think id, Blizzard, etc. keeps polishing their games before they declare them good enough to ship?
--
Original, Fun Palm games by the Lead Designer of Majesty!
http://www.arcanejourneys.com/
About two days ago, I shipped Demon after a year of development. It's a mod for Neverwinter Nights, the sequel to Shadowlords and Dreamcatcher. Both are in the Hall of Fame on the Vault and the Dreamcatcher series was Module of the Year. Yadda, yadda, yadda.
The closest I've come to understanding why I keep making these things is a comment made by a writer. They didn't write because they wanted to write, they write because they had it.
I make games because there are these stories inside me that keep wanting to pop out. Characters that demand being brought to life. Making the games can occasionally be fun, but the bugtesting and release is usually grueling and unpleasant.
So, I think I'll keep my day job of code wrangling and tip my hat out of respect to professional game developers. It's a tough job, putting something you've invested so much of yourself out there for the world to poke at.
Modular design is important for big projects, and it's something I strive for in most projects, but it should be seen as an end and not a means.
One thing I've noticed with my own hobby apps is that the most sucessful ones (in terms of actually getting something running somewhat decently) are ones where I just sit down and code. The ones which I spend a lot of time "architecting" tend to be the ones where I have less enthusiasm, and code more tentatively, almost like I'm afraid of making mistakes. Even if I don't lay down a good framework if I can just get a lot of good code written quickly I might find my mistakes sooner and be able to refactor effectively, rather than putting a lot of effort into an architecture that may not be optimal (after all, most hobby projects are about learning, so if I already knew what I was doing I might not be doing it).
It comes down to psychology. Effective hobby coding requires continuous enthusiasm for the project. If the motivation isn't there, the project will stagnate, so the best approach is the one that makes every step enjoyable. For me this means seeing new results every day. If the project turns into something worthwhile it will be worth refactoring later. If not, then the beautiful framework was all for naught anyways.
The ultimate plays for Madden 2006
From 92 to 96 I was working on and off on a 3D driving game. At the time, I was driving a truck and the frustration with the barrage of idiots I constantly had to avoid got me thinking, "Wouldn't it be great if I could just run them off the f*cking road" or worse... (yeah, real healthy, I know)
:(
So my idea was to make this driving game where you had to race across country, but that was just the plot for plot sake. (It was about as much plot as Doom had in the readme.txt)
The race didn't matter. It was just an excuse for the different locales. The actual purpose of the game was to race, rob, carjack and maim everybody and anybody you felt like with your vehicles. I thought most drivers could identify with this on some level and the idea at the time was "out there" and sure to make some controversy.
I was working around anywhere between 1000 ~ 2000 hours a year on this. (Depends which years) Every time it got close, a new game would come out and raise the bar. Like an idiot, I'd start all over because I wanted it to be as good as anything out there. Well, seeing the target for this 3D game was originally a 386DX, later 486DX DOS/32, mostly everything had to be done in assembler. (Actually, in hindsight, I probably could have gotten away with a little less optimization) it took forever for it to go anywhere. Just when I'd get the renderer in order and start adding the other elements of the game, a new game would drop and it didn't look so slick anymore.
Anyway, I took a break for almost a year. I decided to finally just finish it and get it done. Thought it would be easier in some ways now that base targets were lot more powerful. Well shortly into it, as I'm coding, I see on the television a story about Carmegeddon and GTA.
F*CK! I gave up right there, my thunder sapped. The first GTA was alright, but what I was envisioning was a lot closer to what the GTA series has become. It's weird looking back at notebooks with drawings of golf carts and cars dodging planes on the runway. (Though some of it would be dated, like the LA segment during the riots)
I've had a PS2 now for over a year and outside of trying a rental or two, there is only one game I own and play. Vice City. Though it's missing a few elements, (Where's the steam roller?), it's pretty much, for me, the ideal game. (Might change my mind after I play Doom3 though)
I try and take it with a grain of salt when I see how fantastic it panned out for them. Though it's hard not to think, if I hard only gotten that second 90% done, if I had just got it out and didn't keep revisioning it.
Oh well
-William Shatner can be neither created nor destroyed.