I've spent some of the last day thinking about both my game projects. At the moment, I'm really just working a bit haphazardly; just doing whatever I feel like at the time. While that's fine if I wish to remain a game hobbyist, but if I would like to try my hand a being a fully fledged indie I'm going to have to be a little bit more directed. Organisational ability is something I'm not very good at, but it's an important skill that I'm going to have master if I have any chance of completed a substantial project. So I think I'll spend some time over the next day or so writing out a proper plan and timetable for how I should plan my time.
At the moment, here's a few guidelines I think I need to follow:
- Firstly, I'm going to have to cut back the time that I'm checking these forums. While I love helping people with the problems and asking questions of my own, I need to be a bit more focused with my time. Since I do my research on a network with pretty relaxed Internet rules (that's a benefit of being a postgrad), I can check GameDev.Net at any time during the day, but since that's more fun than working I've been slacking off a bit over the last week. I think I'll cut back to only seriously checking the content of the forums once a day in the evenings after work.
- Secondly, I'm going to have to get serious in creating these small arcade games. I've almost got a plan together for a sequence of small games that leads into indie quality work that will gradually built up my skills to the appropriate level. I think if I set myself an achievable but close deadline for the space game, such as three months, then work as hard as possible to put as much game as I can in that time into it that will be great practice. I should thus start directing my pixel art and computer music practice away from RPGs and towards arcade space games.
- Thirdly, although I should be creatively working on space stuff, it's probably not healthy to have all my main hobbies and my work revolve around sitting in front of a computer. I also think there's a quantum leap between pixel art and the type of art required for my big project, Project Hamlet. So I should also start working on my general art skills, maybe work through one of those "learn to draw" books, maybe even enrol in a short art course. I should also start composing more at the keyboard rather than staring at a screen (besides, writing music is fun!). Also there's always activities in the outside world to consider too...
Now for some specific updates on my two projects, Project Hamlet and Project Nova (my new codename for the space shmup until I think of a title).
For Project Hamlet, my questions in the design and writing forums have sparked a few ideas. I've decided to change the setting from Japanese RPGs to a more fairy-tale setting. This also means the graphic style should become less manga and more children's book, which requires a slight tweak in my artistic capabilities. This shouldn't be a problem if I plan to learn how to draw properly over the next year or two, since this project is in no rush to be completed. I should also keep an eye open for cool methods to automate my art skills, because that would save some time.
However, I think I'm focusing on the wrong part of the design. I really need to write down exactly what the gameplay would be like; all this setting stuff is secondary. Since I haven't properly decided what the player will do, there's no real game there yet.
Coincidentally, I've noticed that Fable has been released for the PC. Since the title seems similar to my game concept, and since I remember that the gameplay was touted during development to be heavily based on allowing player action to change the shape of the story I'm interested in trying it out. However, I'm a bit worried that Peter Molyneaux is involved with the design; after the fiasco that was Black and White I put his name down as the second entrant in my "Banned Blacklist of Fallen Game Development Heroes", which means I should only really consider his games once they hit the bargain bin. But I think he might have only been an advisor to Fable, so that might be used as a loophole to get around that [smile]. Although since the game seems to be published by Microsoft, that suggests there will be a budget version eventually; so maybe waiting is the best strategy here. Anyone here played Fable and wish to advise me one way or another?
As for Project Nova, I've been thinking a bit about how to start programming this thing. While as a programmer and a software architect I'd like to build my own 2D engine based around SDL, my fledgeling indie senses are suggesting that it might be more prudent to go with an existing 2D engine to save on development time. But I'm also very rusty on programming, so the opportunity to work on something like an engine would be a great learning opportunity; so I'm stuck! I think I'll post something in one of the programming forums asking for people's advice on this matter.
But I also have been digging around in the programming archives I have stored on my hard disk, which seem to go back for years and years (I keep transferring them from computer to computer, and back them up against hard drive crashes). And I found the prototype engine I was working on nearly five years ago! There's a few examples I've got compiled there for Windows 95 which still seem to work in WinXP with a little bit of effort. Here's a partial screenshot of my favourite example, a flocking A.I. demo involving little goblins sprites (click on the picture link for the full screenshot).
Now the code is a bit clunky; it was written using Andre LaMothe's "Tricks of the Windows Game Programming Gurus" book, and frankly his code architecture was not very well organised, although I guess I realised that at the time because the code is written in C++ rather than C and seems a bit cleaner than his source code. However my code was also written for the now defunct Watcom C/C++ 11.0 compiler, uses DirectX 6, most settings are hard-coded, the architecture was made up as I went along and the error checking and memory management is rudimentary, so I think I'll need to rewrite it substantially (at the least, I need to be using someting cross-platform).
But it's still pretty useful; I can't figure out why I forgot I had this here, or why I never finished a game using it. While it's all very simple, everything's there; there's singleton classes for managing video, audio and input. There's even mouse support, a font manager, and even a tile based scrolling map in that A.I. demo. That things getting smooth frame rates of over 70 FPS for 1280 goblins running around a map; that should be enough for a RTS! Plus reading through the source code, it appears my software engineering background paid off and I remembered to comment everything, so it's pretty clear what everything does.
This should give me a big boost if I decide to write my own engine, although there's a danger there's some big flaws in the architecture I chose. The system seems to be built around singleton classes acting as wrappers around each major component; Video, Audio, Input and World (the gameworld controller; handles all the game logic). But I think a class to handle all the memory would be better, as would one for handling errors and logging. But I'm also not a very good C++ programmer, and my object oriented design skills are rusty, so I might be overloading on the singletons there. I've got a few books on 3D engine design (such as the ones by Eberly that I bought during my last book buying binge), so maybe I should check to see what they use. Or maybe I should think about using someone else's well-designed and tested engine? Now I'm back to that question again...
Well, that's it for now. It's always useful to try to think these things through in writing.