As I lamented in my previous entry, I had trouble conjuring up enough competence to make both the assets and design some decent gameplay, so I figured I'd implement a clone of some existing game for now.
In order to have some pressure on me to complete it, I challenged a friend to make a Snake game over a weekend, and the result is my very own Nibbles-inspired game, which you can download here (1 MiB).
For my next project, I've got module (music) decoding and a kick-ass sound mixer up and running. Now all it lacks is graphics and a game.
In the site migration it turns out that I have an ancient post since 2006 in my journal where I announce my intent to go up the game making ladder. As I seem to be still paying for GDNet+, I might as well make use of this here fancy journal.
Back then I immediately got swamped with proper work, so I put the game making effort on the back burner. In 2009 however, I did make both a Pong and a xtris-compatible networked Tetris clone. Three years of time from announcement to release, that sounds like the game development industry proper, heh.
After the Tetris however, I got somewhat stuck on what to do next. I fiddled around a bit with C# and SlimDX to make a 2D sidescrolling platformer, which went rather well until it became time to stop fiddling with graphics and write some proper game mechanics and physics, on which I stalled and lost interest, mostly due to not having assets or ideas for game mechanics.
Time will tell what I'm embarking on next, currently my development focus lies with a graphical seekbar component for the foobar2000 music player with Direct3D9, Direct2D and GDI frontends and a nice sqlite3 backend, but there's only so much you can do with that before it's "finished".
Optimally would be something that does not require so much competence in making assets, or something that doesn't require much in the way of assets in the first place.
For the last couple of years, most of the things I've been programming has been school assignments, tools for myself and some attempts at signal processing. Now, I've decided to cut back on that and try my hand at game programming once again as a relaxing diversion.
Since almost all I've coded recently has been quite small in scope and generally unfinished, I'm a bit uncertain on my ability to actually finish a project. Thus, I've decided to begin near the bottom of the holy game development ladder with Pong.
I set up a Subversion repository yesterday and started writing reusable libraries for threading, sound and video. So far the threads are good enough to use, the sound is still pending some design and the video lib is still empty.
All my development so far on this has been in FreeBSD, so learning how to write portable code is one of the goals I've set up for my self. In the end, I plan on having all my code compile transparently on at least GCC in Linux and FreeBSD and on Visual Studio 2005 in Windows.
I've recently started reading Code Complete and the quality of my code has gone up in my opinion. I tend to write the comments before I code, I check return codes and handle errors where they should be handled. This is a great improvement to my earlier coding style where comments were something you added while documenting after the project was finished, and errors were something that happened to other people.
Right now the big design decisions are what libraries I should pick for video and audio. At first, I was thinking of using the raw /dev/dsp device under UNIX and using the waveOut family of routines in Windows. After reflecting a bit over this, I believe that I should probably give SDL a fair chance. My past experiences with the audio part of SDL aren't that good, but it might work out better this time. As for graphics, the API obviously has to be OpenGL due to portability concerns.
It's probably time to code again now instead of babbling incoherently on the journal.