Simple and Fast Multimedia Library 1.0

I’ve been having a look at the Simple and Fast Multimedia Library (SFML) and it seems quite interesting. You can find out more about it at:

http://sfml.sourceforge.net/

To quote from the website:

SFML is a portable and easy to use multimedia API written in C++. You can see it
as a modern, object-oriented alternative to SDL.SFML is composed of several
packages to perfectly suit your needs. You can use SFML as a minimal windowing
system to interface with OpenGL, or as a fully-featured multimedia library for
building games or interactive programs.

I’ll keep my eye on this one as it looks very promising and has some nice built in features. I’ve been looking for something that offers a balance between the low level of SDL and the higher level of say Allegro and SFML looks about the right balance for me.

Rogue’s Gallery

Spent some time at the weekend collecting more Encounter images and preparing them for use in the current release. My method for capturing these is pretty tedious but doesn’t take too long as there aren’t too many different encounter graphics and some are reused for different types of encounter. I basically save screenshots from within the Atari800Win emulator, cut out the encounter image, double it’s size to fit a 64×128 pixel OpenGL texture and then remove any unwanted background. In future I’ll need to capture the additional animation frames that many encounters have but for now encounters aren’t animated.


I also had a play with some of the Eye of the Beholder graphics I’ve used previously but I think I’ve decided not to use these as they are limited in number leaving many AR encounters without updated graphics. Here are a couple of examples anyway.

Currently I’m creating black and white masks for each encounter image but I’m hoping that I might be able to do away with this possibly by using OpenGL’s display lists. The AR font is drawn using this method and seems to work fine and doesn’t require any manually created masks. Browsing round the web I found a program called GraphicsGale Free Edition which is a sprite editor that might be useful for hand editing of the original AR encounter graphics.

I’ll need to set aside a lot of time if I end up hand editing all these original images…

Gate Sequence Fixed

Finally managed to get the counters appearing in the right place on the gate sequence. Basically there are a number of different counters spinning round at different speeds. Pressing a key freezes the numbers and these become your character stats within the game. It also determines how much silver you start the game with.
It didn’t take very long to fix once I managed to understand the code – that’s the problem with using my old code from a few years back. I also tweaked the random numbers for the stats as they seemed a bit low and added in the “You are now joined.” message. Added in the original sound effects for this sequence. I will come back to this part of the game in the future but now feel that I can move onto something else.

Development Tools


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.

Next steps

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.

Welcome

Welcome to my Game Development Blog. Alternate Reality (AR) was a series of computer role playing games (CRPG) games back in the mid 1980s. The Alternate Reality games were originally intended as a series of seven scenarios – The City, The Dungeon, The Arena, The Palace, The Wilderness, Revelation and Destiny. Only the first 2 games in the series were ever completed, though plans for the Arena scenario were outlined.

Alternate Reality: The City was designed and programmed for the Atari 8bit by Philip Price with music by Gary Gilbertson and graphics by Craig Skinner. This original installment was intended to include the content of both The City and The Dungeon but was split into 2 games at the request of the original publisher. Numerous 8bit and 16bit versions exist, some better than others. The original Atari 8bit version is widely thought to be the best version.

Alternate Reality: The Dungeon was designed and programmed by Ken Jordan and Dan Pinal who worked for Datasoft with design notes left by Philip Price. 70% complete 16bit versions of the Dungeon for the PC and Amiga were in progress but were eventually cancelled. Versions exist for the Atari 8bit, Commodore 64 and Apple II. All copyrights for Alternate Reality have now returned to Philip Price.

Though not as well known as say the Ultima series of CRPGs, AR still has a small but dedicated following of fans who are keen to see the series revised. There is an AR mailing list which is still active and sometimes has the original series’ developers posting to the list. There have been various attempts from fans and the original developers to redevelop the series for modern systems but unfortunately none of these have come to fruition.
Originally I started playing the Commodore 64 version of The Dungeon whilst I was still at school and it’s remained one of my favourite games ever since. I’ve been interested in producing my own modernised version of the game for a number of years and a few years ago produced a simple C++ and SDL demo version which allowed you to explore a level of the Dungeon map and fight a few monsters. I eventually gave up after struggling to make progress with the 3D engine.

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.

My intention here is to record my progress on the development of the remake as well as give those who are interested in it the opportunity to comment and assist with the development of this project.