The Map Editor

First thing I’m planning to work on is putting together a simple map editor. This will allow me to outline some of the main data structures in the game – maps, tiles, items and monsters. It will also give me some hands on experience of working with SFML. I’m intentionally going to keep the game and editor designs and layouts very similar to minimise creating different sets of code for very similar functions. I quite like the idea of building the editor and game engine as a single program so that I can switch between designing and playing with a couple of key presses, hopefully speeding up game development. Editor features will likely include:

  • Variable map sizes (max. 256×256) – plenty big enough in my opinion
  • On-screen tile display for tile selection
  • Map links – link overworld to towns etc
  • Load, Save, Play options
  • Small tile versions available for overview mode
  • Properties for tiles?

I’m in two minds as to whether tile/object properties should be editable through the editor – this might be too much work for me. I’ll have a think about it anyway. Game data will be stored in simple text files for the time being – probably comma separated.

CPRG Outline

Before I start attempting to code this I thought it was worth listing the type of features and stylistic elements that I’d like my Ultima-style game to have. I’m sure some of these features will change over time but here’s a rough outline to begin with:

  • Single player character rather than party (this may change)
  • Individual maps for overworld, towns and dungeons (as opposed to the Ultima 6, all one scale/one map model)
  • Detailed, non-generic maps that aren’t too big
  • Combat on current map rather than separate “combat” maps
  • Simple to use interface (both keyboard and mouse ideally)
  • Player character and encounter inventories
  • Quest journal to keep track of current tasks and quests etc
  • Graphical inventory
  • Tile graphics (using David Gervais excellent tiles)

There are loads of other features that I’m wanting to include but these should give you a rough idea of what sort of design I’m aiming for.

Ultima-style CRPG

For many years I’ve been a big fan of the Ultima games and have always wanted to create a game of my own in a similar style. A couple of recent events have finally made me decide to actually start coding one of my own. The first was the release of the Simple and Fast Multimedia Library (SFML) which I think will be ideal for the sort of games I’m trying to create. The second was reading this article on Retro Remakes. The article is about writing an Ultima style game in a fixed 40 hour timescale. The game is called Inaria and further details can be found here.

I’ve always had a preference for the earlier Ultimas such as IV, V and VI. For some reason I’ve never really got into VII which is generally considered to be the best. With my own game I’ll be looking to incorporate what I think are the best features from the various ultimas along with ideas from more recent commercial RPGS and home brew roguelikes. I’ve always liked the style of these games which are usually characterised by simple 2D tiled graphics, a large world map and numerous towns and dungeons to explore. Other similar games include Wasteland, Phantasie and Questron.

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:

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.