I’ve recently made the switch from the freeware Dev C++ environment to Microsoft Visual Studio 2005. Dev C++ has served me well during the time that I’ve been playing around with this AR project but I decided to give Visual Studio a try and it seems to have worked well so far. I was really only using a bit of the functionality of Dev C++ but one feature that it didn’t seem to have was an option for “folding” bits of code that you’re not working on. Visual Studio also seems to be creating dramatically smaller executables. However these larger exe sizes in Dev C++ might have just been down to the compilation defaults which I didn’t play with much. Visual Studio also seems to have caught a number of errors which went unnoticed by Dev C++. Again possibly down to different configurations. I’m still barely using any of the facilities within Visual Studio. An experienced programmer could probably show me lots of things I should be using to make life easier. Still not sat down and tried to familiarise myself with the debugger. I still think Dev C++ is very good and would recommend it to anyone looking for a free, easy to use option for programming. Dev C++ also has stacks of pre-packaged libraries called devpacks that can be downloaded for things like SDL, OpenGL etc. You can download these from here.
I’m not a programmer by trade though I’ve done bits of programming since I got my first computer back in the 1980s (a Commodore 64 which I wanted because it had 64k of memory which seemed to more than the alternatives at the time). I’ve also done bits of programming through study and work but nothing substantial. I did hold the job title “Programmer” for a few months but moved into a different area that I preferred. Most of the AR project code is probably not very well written. I’m planning to release the source code and VS2005 project files with the next release so if anybody wants to suggest any improvements or ways of making things easier or simpler feel free! I’m planning to spend some time tidying up the code before then. The display code in particular could probably be tidied up a lot and needs some fixes to stop ghostly arches appearing through supposedly solid walls. I know what the problem is here so can hopefully fix it without too many problems.
I’ve done some more work on the character creation gate sequence but I think it will take me a while to get it to the stage where I can say it’s completed. As you can see in the screenshot the counters are roughly in the right place but don’t look right yet.
The next thing I would like to look at is setting up “zones” on the Dungeon map. The zones will identify rectangular areas on the map where different graphic wall sets should be used. I believe this is how the original game worked. If you’re unfamiliar with the original different areas had different graphics to identify them – Egyptian hieroglyphs in the Hall of the Adept, ice walls in the Crystal Caverns and so on. I’d also like to setup different light levels for different zones as this should be relatively easy to do as I’m using OpenGL. These light levels could then be adjusted if you’re carrying a torch or wearing a Helm of Light or one of the countless other light sources in the game. Currently the demo lacks atmosphere as all the corridors and rooms have the same wall textures. I also plan to use the various zones to determine which monster encounter table should be used. A few years back Ken Jordan (one of the original programmers of The Dungeon) posted some information, maps and data files for the Dungeon and he said these contained the zone information. I’ve not decoded these but if anybody has I’d be grateful if you’d let me know – I like to use the original game data where possible.
It’s been a while since I’ve released any updated versions of the demo so I’ve been thinking about what features I’d like to add next. I drew up a list but as it has a few dozen items on it I won’t repeat it here just now – too depressing!
One of the features of the original game that I hark on about all the time is the wide variety of objects you could find. There are large numbers of weapons, magical trump cards, scrolls, wands etc – certainly more than any other CRPG of the time that I can think of. Since version 0.4 I’ve added in support for dealing with the numerous objects in the Dungeon. So far I’ve added in some basic support for weapons. This means that you can now pick up any weapons dropped during encounters, equip them, swap them from primary to secondary and also use torches as weapons (they do both blunt and fire type damage). Different weapons have different effects during encounters E.g. don’t fight a Flame Demon with a Flamesword as it makes them stronger!
There are a lot of “specials” in the original game where you stumble across a special, one of a kind item. I’d like to add some of the weapons shortly. It will take me a fair bit more work to add in all the objects and their different effects. Some of the objects are quite complex providing special bonuses or unforeseen side effects. I’ve yet to decode the macro language used in the original game in order to understand how these objects work. I’m using the real object data from the original game and hope to be able to add all the objects in one go.
I still can’t help playing around with various graphics. The really difficult ones are the encounter graphics and shop interiors. My sensible side says use the original graphics for now and concentrate on replicating the game functionality but I’m also keen to try and update the look of the game a bit. The problem with graphics is that they are very time consuming to produce, especially if like me you don’t have any artistic skill. Ideally I was hoping a skilled artist might be interested in updating them but no luck so far. Eventually I’ll have a go myself. There seems to be no shortage of tutorials on the web! I’d also like someone to smooth out the AR font as I’ve doubled its original size making it look a bit blocky. If you’re interested in helping out let me know.
The other thing I’ve been working on is the portal room with spinning counters. I had this working nicely under my original SDL demo back in the mists of time but still don’t have the counters appearing in the right place since I’ve moved to SDL with OpenGL for graphics and increased the window size from 320×240 to 640×480. I know I should really sort something out with different window sizes and scalers but I’m leaving this for the time being. Currently the counters scroll out of sight – just need to spend a bit of time getting the coordinates right. Trial and error.
Over the last year or so I’ve started from scratch this time still using SDL for sound, music and input but also using the OpenGL library for graphics. This has allowed me to progress further and produce a more flexible display than my previous efforts, though the 3D view is still very basic.