Long Term Ideas
I’ve been following the development of a project from UK indie game company Introversion. The project has been long running (two years and counting) and relies heavily on procedurally-generated content, that is, content created by an algorithm rather than an artist. The terrain, roads, blocks, buildings, even the internal building structure, lift space, staircases, and structure support, all generated on the fly when required. The project is called Subversion and has a link in the sidebar over there…
This project has, for some reason, single-handedly reignited my desire to program. To begin with, I simply wanted to clone Chris Daley’s work bit-by-bit, start of with a simple terrain generation, then move on from there. Then I saw this screenshot and it blew me away. It was no longer the method of creation, but also the simplistic but incredibly stylistic presentation.
I’ve always wanted to be able to work with a windowing system within OpenGL, but the available APIs I’ve used have failed to satisfy completely. FLTK is too flat, Ogre is overly complex, most others either just aren’t polished enough or are stretching too far… I’ve used Agar in the past, but not for some time. It looks to have made some major improvements in recent times, including a full skinning\theme system with the 1.3 release. To save myself some time and effort, I will attempt you see if Agar can be tweaked and teased into my expectations, but I will always be thinking of building a system from scratch specifically to solve my curious and self-challenging nature. Essentially, if Agar can be made to let me render to texture and use said texture as windows content then great. If it allows me to have multiple ‘rendering’ windows in separate threads and a robust event system, then I’m sold.
To handle the more mundane OS windowing system, I’ve used GLUT\freeGLUT in the past and never really felt them to be flexible, or functional enough to make them worth using rather than rolling my own. I’ve used SDL (link in the sidebar) an awful lot and found it be powerful, flexible, and best of all, pretty damn easy to use. What’s more it’s still actively developed, unlike GLUT (last updated to 3.7 in Aug ’98). SDL also gives me cross-platform handling of threads and event signalling, without needing to rely on any extra libraries, again reducing complexity of the build. It also has extensions for sound, true-type fonts, and network stacks so it’s pretty fair to say that unless something really amazing shows up, I’ll be sticking with SDL.
Code::Blocks has always been a favourite IDE of mine, hooking in to all manner of compilers and quite a few interactive debuggers, plenty of features and extensibility whilst still maintaining a low running footprint. It hooks nicely into MinGW, the GNU build toolchain for Windows, but will also play well with MSVC if you want to use that.
To finish it all off I use Git for version control. It’s a fantastically quick & simple source control system, with no large overheads required of the client-server systems such as CVS and SVN. I’ve never had to use it in a massive development environment (but the Linux Kernel peeps don’t seem to have a problem) nor in a corporate setup, but for my purposes, nothing works as well.
So, it’s taken me a good day’s work just getting my build environment back up and running, and tomorrow won’t be time I have available to work on this, so it really will be a Long Term Project.
Leave a Reply