IRE

IT-HE Roleplaying Game Engine



 
 
 
 
 
 

Developer Documentation

version 0.9 -10/8/2003

Made with Netscape Composer, DRDOS, Win 3.1, and Win95 when necessary
Written by Joseph P Morris
Proofread by Alan P Keane
(C) 1999 Joseph P Morris
Any trademarks in this document are the property of their respective owners.
This is free software and as such there is no warranty whatsoever.  Use at your own risk..


 


Warning : 

A large part of the documentation is out of date.













Update history:

0.9.00 - 10/08/03 - Partial update of the documentation - Alexandre Pineau

  • add a warning about the fact that the documentation is not up-to-date!
  •  support for .rar files dropped, partial update of chapter 1.2 and of chapter 6
  •  chapter 5.1 : add a link to additionnal informations on programming conversions
  •  chapter 3 : out of date, add a link to some informations about the new script langa
  •  chapter 7 : links updated
  • 0.5.03 - 11/08/99 - Corrected a critical error in the documentation

  • add_quantity and take_quantity had the last 2 parameters the WRONG WAY AROUND: this would cause a crash.
  • 0.5.02 - 23/07/99 - Documented some forgotten functions
  • Documented forgotten function object_set_behaviour
  • Documented new conversation functions [goto] (5.3.2) and [set_behaviour] (5.4.1)
  • Documented new features in flat.gam resource file (chapter 6)
  • 0.5.01 - 22/06/99 - Final checks for R 0.5
  • Documented forgotten functions transfer_to_pocket, force_from_pocket
  • Documented forgotton functions choose_member and choose_leader
  • Documented new function get_number
  • 0.5.0 - 05/6/99 - Release 0.50, totally new conversation engine
  • Inserted a new chapter 5: programming conversations (with the new script system)
  • Updated 1.4.1 so it is not obsolete anymore
  • Updated 3.2.3 to add new flags and keywords
  • Documented new Section:Rooftiles in 3.2.9
  • Added new variables game_minute, game_hour, game_day, game_month, game_year
  • Added undocumented functions transfer_object, get_first_object
  • Added new functions replace_object,move_forward, move_backward, turn_l, turn_r
  • Added new functions add_quantity, take_quantity, wait_for_animation, lightning
  • Added new functions find_object_with_tag, find_container
  • Added new functions get_pflag, set_pflag, get_user_flag, set_user_flag, get_yn
  • Updated screenshots of editor.
  • Added section 2.2.9 - setting an object's owner
  • Added section 2.2.10 - editing an object's statistics
  • Added section 2.2.11 - editing an object's behaviour
  • 0.4.1 - 28/3/99 - Release 0.41, VRM system changed to SeeR
  • Mentioned the graphical script editor in section 3.1.
  • Updated the description of VRMs and how they are compiled in section 4.1
  • Added new description of how you must use flags since 0.041
  • Added new VRM functions get_flag and set_flag, see above
  • 0.4.0 - 18/1/99 - Release 0.4, rewrite of core map system
  • Removed sections 2.2.8 to 2.2.10, about obsolete features of the editor.
  • Added new section 2.2.8, about editing objects inside containers
  • Added new VRM functions redraw_map, line_of_sight, move_to_top and in_pocket
  • Updated create_object and get_top_object, get_best_object etc.
  • Added new vrm function move_object which you must use instead of modifying the X and Y coordinates
  • Added new functions spill_contents and spill_contents_at
  • Added new flags etc to section 3.2.3 and 4.2.4
  • Added NODRIFT command to Section: Sound in section 3.2.7
  • Added Section 3.2.7 and 3.2.8 to the index (oops)
  • Added Part 5, about the .GAM file
  • Described partially-solid objects in section 3.2.3
  • 0.3.1 - 5/9/98
  • Added section 2.1.4, about cut and paste
  • Added section 2.1.5, about the tile randomiser
  • Added section 2.1.6, about bulk replace
  • Added two new .cel files to section 1.4.1
  • set_darkness changed to a single level instead of RGB levels
  • 0.3.0 - 15/6/98
  • Fixed some typos.
  • Added 'light' and 'enemy' to section 4.2.4
  • Added new function 'set_darkness' to section 4.3.4
  • 0.2.8 - 15/6/98
  • Added new function 'delay' to section 4.3.2
  • Added new function 'start_song' to section 4.3.2
  • Updated entry for 'stop_song' in section 4.3.2
  • 0.2.7 - 11/6/98
  • Added new function 'rnd' to section 4.3.2
  • Added new function 'restart' to section 4.3.4
  • 0.2.6 - 10/6/98
  • Added the 'ifHurt' parameter to section 3.2.3
  • Fixed typo in the example of section 4.3.2
  • Added 'object->stats->oldhp' to section 4.2.4
  • 0.2.5 - 9/6/98
  • Sections 1.4.4 and 1.4.5 are re-written because the music is now script-controlled.not loaded incrementally.
  • Added the overlay flag to section 3.2.2
  • Added the post_overlay flag to section 3.2.3
  • Added the wielded flag to section 3.2.3
  • Wrote about the ifDead parameter for objects in section 3.2.3
  • Added Section 3.2.7, about the new sound loaders
  • Added Section 3.2.8 about the new music loaders.
  • Added the new system variable 'victim' to section 4.2.4
  • Described new function set_object_sequence in section 4.3.1
  • Described new printxy function in section 4.3.2
  • 0.2.4 - 21/5/98
  • Wrote about the automatic object placement in section 2.2.8 and 3.2.3
  • How to put objects into containers.  Section 2.2.10
  • 0.2.3 - 20/5/98 0.2.2 - 15/5/98

    Contents

    Part 1 : Introduction

    1.1 What is the IRE?
    1.2 What do I need to edit the IRE?
    1.3 File formats
    1.3.1 - Graphics
    1.3.2 - Sounds
    1.3.3 - Music
    1.4 Where the files should be stored
    1.4.1 - RES
    1.4.2 - RES\BACKINGS
    1.4.3 - RES\CODE
    1.4.4 - RES\MUSIC
    1.4.5 - RES\SOUND
    1.4.6 - RES\SPRITES
    1.5 How the program searches for files
    Part 2 : The IRE map editor
    2.1 Backgrounds
    2.1.1 getting familiar with the editor
    2.1.2 placing tiles on the map
    2.1.3 selecting tiles
    2.1.4 cut and paste
    2.1.5 Randomising tiles
    2.1.6 Bulk Replacing
    2.2 Sprites
    2.2.1 The editor in sprites mode
    2.2.2 Creating sprites
    2.2.3 Moving sprites
    2.2.4 Changing sprites
    2.2.5 Setting the direction
    2.2.6 Deleting sprites
    2.2.7 Tagging Objects
    2.2.8 Editing Containers
    2.2.9 Setting a character's individual name
    2.2.10 Editing an object's individual statistics
    2.2.11 Editing an object's individual behaviour
    2.3 Rooftops
    2.3.1 The editor in rooftops mode
    2.3.2 Editing rooftops
    Part 3 : The IRE script file
    3.1 What is the script file and what does it do?
    3.2 Script file sections
    3.2.1 Section: Sprites
    3.2.2 Section: Sequences
    3.2.3 Section: Characters
    3.2.4 Section: Descriptions
    3.2.5 Section: Code
    3.2.6 Section: Tiles
    3.2.7 Section: Sounds
    3.2.8 Section: Music
    3.2.9 Section: Rooftiles
    Part 4 : The IRE VRM system
    4.1 What are VRM files?
    4.1.1 The VRM concept
    4.1.2 How VRMs are made
    4.1.3 A VRM tutorial
    4.1.4 Rules for writing VRMs
    4.1.5 How the example works
    4.1.6 Data Types
    4.2 The OBJECT
    4.2.1 Introducing the OBJECT
    4.2.2 Creating an OBJECT from scratch
    4.2.3 Modifying OBJECTs
    4.2.4 OBJECT Reference guide
    4.2.5 The TILE
    4.3 Function Reference
    4.3.1 Object functions
    4.3.2 IO functions
    4.3.3 Flow control functions
    4.3.4 Miscellaneous functions
    4.4 System Variables
    4.5 Keyboard Macros
    Part 5 : Programming Conversations
    5.1 Overview
    5.2 Page structure and simple commands
    5.2.1 Simple Linking
    5.2.2 Interactive Linking
    5.2.3 Images
    5.2.4 Setting the text colour
    5.3 Advanced conversations - Conditional branching
    5.3.1 Checking for an object
    5.3.2 Important tips
    5.3.3 Checking for a party member
    5.3.4 Using your own flags
    5.3.5 Personal flags
    5.4 Manipulating the game world
    5.4.1 Calling VRM functions
    5.4.2 Creating and destroying objects
    5.4.3 The theory of the conservation of money
    Part 6 : Game description files
    6.1 Crucial lines
    6.2 The text console
    6.3 Loading screen
    Part 7 : Conclusion and Contact info



     
     

    Part 1 - Introduction

    1.1 - What is the IRE?

    In 1993 I got hold of a computer roleplaying game called Ultima 6.  This game changed my life forever.
    Previously I'd seen DCworld, an Ultima 5-type game editor.  Ultima 6 was a whole new level above DCworld, like the difference between Wolfenstein and Doom.
    When I buy new hardware, the bottom line is, will U6 work?  No U6, no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\MODS might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.

    1.4.5 - RES\SOUND

    You need a place to store the sound effects.  I keep them in RES\SOUND.
    As of kernel version 0.025, the music is defined in the script file, so you can put them anywhere you like,
    RES\WAVS might be another choice.

    1.4.6 - RES\SPRITES

    You need a place to store the sprites used in the game, I called mine RES\SPRITES.
    Again, the sprites and other game images are defined in the script file, so you can put them anywhere you like, maybe RES\OBJECTS.

    1.5 - The search order

    The search order is quite important.

    When it tries to load a file, it will look for it in the following order:
     

    1. In the IRE directory, e.g. C:\IRE\
    2. In the RES directory, e.g. C:\IRE\RES\
    3. In a specified .RAR file, e.g. RES.RAR
    So, if a file is found in the IRE directory it will take precedence over a file found in either of the other two places.

    NOTE:  The map editor will ONLY load maps from the IRE directory, and not from the RES or RAR sources.  All other files, the graphics and such can be loaded from other sources.
     



     
     

    Part 2 - The map editor

    The IRE map consists of three layers:

    A Background
    Objects and characters
    Rooftops
     
     

    2.1 Editing the background

     Backgrounds are made up of tiles, which are 32x32 in size.
     These tiles are arranged in a huge grid, which makes up the map.

    2.1.1 - getting familiar with the editor

    This is a screenshot of the editor in Background mode, we will refer to it as the editor is described.

    First, look the main window.  This is the map, as it will  appear when the game is being played.
    You can pan around the map using the cursor keys, or the four arrow buttons to the right of the window.
     
     


     












    Also, note the two black panels on the far right-hand side of the screen.

    They control the screen display, and allow you to switch off the other layers of the level if you find they get in the way while you are editing.

    "SPRITES ON" means that the movable objects in the game, such as the player, other characters and similar things will be displayed.  If you click once in the black area, it will read "SPRITES OFF" instead, and any sprites visible on the map will disappear while you are editing the backgrounds.

    Similarly, "ROOFTOPS ON" means that the highest-level objects in the game, normally the roofs of buildings, will be displayed.  If you click in the black area, it will change to "ROOFTOPS OFF".  Rooftops are not displayed by default, as you are mainly going to edit the insides of buildings and that
    is generally impossible with the roof in the way.

    2.1.2 Placing tiles on the map

    At it's most simple, map editing consists of just clicking on the map, and drawing the tiles on it.

    Lis no sale.

    I spent the next few years in Ultima 6, hacking it, twisting it, folding it into new shapes.
    I wrote a set of tools which hack the program, and allow you create new worlds, but there is a limit.
    Ultima 6 has some pretty strange data structures which I never did figure out completely.

    In '94 I started an abortive attempt to make a U6 clone, which was codenamed U6C.  I couldn't draw a player and it bombed.

    After the failure of Avios to run satisfactorily on the P200 I am using, despite intense optimisation, I decided to stop working on it, and turned instead to making a 'perfect' ultima 6 type game.  This is what I have so far.

    The IRE is a Computer Role-Playing Game which takes most of its ideas from Ultima 6, and some from Ultima 7.

    The main difference between the design of U6 and IRE, is that IRE is designed from the ground up to allow someone to edit it.  Ultima 6 was not designed this way.
     

    1.2 - What will I need to edit the IRE?

    There are many features you can edit, and you will need a variety of programs to edit each different part of the game.
    Most editors are provided, but some you will have to acquire yourself.

    First, we shall look at all the resources that the game can use.

    Map files

    The map file is the world in which the player inhabits.  At present the engine can only support one map per game, although this will probably change later.

    Font

    The font is the character set used in the game.  The characters are fixed-space 8x8 letters, and are stored in the raw bit-packed format used by Arthur Barr's font editor.

    Script file

    The script file is central to IRE.  It is a description file that describes a game written using IRE.
    It tells the program which sprites will be loaded, it binds the sprites into animation sequences and defines the behaviour of all characters and objects in the game.

    The script file is described in detail in Chapter 3.

    VRM files

    Although the script coordinates everything, it is the VRM files which do the actual work.
    VRMs (or Virtual Runnable Modules) are written in C (using my library functions) and get loaded into the game as it starts.  Each game event is driven by a corresponding VRM.

    VRM programming is described in detail in Chapter 4.

    Internal graphics

    Certain parts of the IRE system have their own sprites, such as the mouse pointer and the volume slider.  These graphics are not controlled by the script file (although they might be later), and the program will attempt to load them itself.  The internal graphics are 256-colour and stored in the Animator .CEL format.  You can also use PCX if you prefer.
    If you need to convert between CEL and another format, try using PICTVIEW by Jan Patera.

    Sprites and tiles

    Sprites and tiles are all defined in the script file, and are loaded in as the script is parsed.
    They are stored in .CEL or .PCX format, and may have either 256 colours or 16.7 million.

    Backing pictures

    At present backing pictures are loaded in by the program, like the internal graphics of the mouse pointer and the volume slider.  They must be in PCX format and either 640x400 in size, or 640x480.
    They can be 8-bit or 24-bit PCX files.

    Game package

    The datafiles are loaded directly now by the engine so there is no need to pack all the datafiles into one large resource file today.
     

    Summary
     
    Property to edit
    Recommended Editor
    Comments
    Map files The IRE editor
    Font Arthur's font editor (supplied)
    Script file Any text editor This is covered in part three
    VRM files SEERC is supplied to build them This is covered in part four
    Internal graphics Autodesk Animator You can use PICTVIEW by Jan Patera to convert graphics to CEL files
    Sprites and Tiles Any PCX editor
    Backing pictures Any PCX editor
    Game package -

    1.3 - File formats

    The program uses a fairly narrow selection of file formats, so you may have to use some conversion software to get the data from your favourite package into IRE.

    1.3.1 - Graphics formats

    The IRE uses two main graphics formats, .CEL and .PCX.
    In future releases, all the loaders will be able to take either format, but at present, some will only take one or the other.

    PCX files.

    PCX files are straightforward, so any package that creates a .PCX should produce something readable by IRE.

    Here are some known caveats:

    The PCX files must be compressed using the runlength method.  This is the standard, but if you do somehow manage to make an uncompressed PCX file, the program will likely choke on it.

    The PCX files must be either 8-bit or 24-bit.  1,2,4 or 16-bit PCX files will be rejected and the program will stop with an error.

    CEL files.

    The .CEL files refer to Autodesk Animator .CEL files.  This means Autodesk Animator, not Animator Pro.  Animator Pro uses .FLI files and just calls them .CEL files.

    If you try and load a .CEL file created by Animator Pro, IRE will go back to DOS with a panic message saying that the .CEL file you gave it "is not a .CEL file".

    If you don't have the original Animator, use .PCX files instead of .CEL.

    Alternatively, get RSE 2.00, a freeware program which is able to read and write .CEL files compatible with IRE.

    Graphics sizes.

    1.3.2 - Sound formats

    The IRE sound engine can load .WAV files produced by most applications.
    The .WAV files can be 8 or 16 bit, and any frequency up to 44Khz is allowed.

    Stereo .WAV files are not supported however.

    I don't know if .WAV files can be compressed, but it they can, that won't work either.
     

    1.3.3 - Music formats

    The IRE music player uses MOD files, a digital music system originating from the Commodore Amiga's somewhat creative sound circuits.  Lack of any music chips at all gave rise to the .MOD file, a four-channel digital music system.

    The IRE's sound engine can support the following types of .MOD file:
     
     
    File name Name Channels Comments
    .MOD Protracker module 4 Generic module format
    .MTM ? 16 More obscure format
    .S3M Screamtracker III 32 Popular module format
    .STM Screamtracker II 4 PC extension to the MOD format
    .ULT Ultratracker 32 Originated on the (late) GUS soundcard
    .XM Fastracker 32 Rival format to S3M 
    Both FT1 and FT2 variants supported

    Before you race off, remember that there is a maximum of 32 channels available to the sound engine.

    If you use all 32 for the music there will be none left for the sound effects.

    The amount of channels reserved for the music and sound is set in the game's config file, not the script file.  By default it is 16+4, i.e. 20 channels in total.
     

    1.4 - Where the files should go

    It is important to understand how IRE looks for it's resources, so that you know where to put the new files.

    Each IRE game will have a directory of its own, and it will look for the files in various subdirectories
    in the tree.

    By default, IRE will look in the RES directory, so we'll refer to as the RES directory in future.
    (RES is shorthand for resources).

    Note that it does not have to be RES, and you should call your directory something else when you develop an IRE game.
    (It's controlled by your .GAM file, which is described in Part 7)

    If you've followed the previous section, you should have some idea of the resources that each IRE game will use.

    Unless the file is requested by the system itself, it can go anywhere you like, as the script file will contain the full path of each file.

    Internal Graphics and the script file itself, must go in particular places, which will be described in detail later.  Where you put the other resources is up to you.

    The files are generally organised in this way:


     
     

    1.4.1 - RES

    The RES directory must contain the following files:
     
    main.txt The script file
    arrow00.cel The mouse pointer image
    soundbar.cel The volume slider backing image
    slider1.cel The slider that has been selected
    slider2.cel The slider that is not selected
    font.dat The typeface used in the game
    eyesore.cel Used by the editor for the 'Random Tile'
    warning.cel Shown if the Random Tile appears in the game
    credits.dat ANSI credits at end, like ENDOOM in Doom
    help.txt A conversation file that is run when F1 is pressed, see Part 5

    1.4.2 - RES\BACKINGS

    The RES\BACKINGS directory must contain the following file:
     
    panel.pcx The background image of the game status area
    Additionally, I store the map tiles in this directory, but as each sprite's location is defined in the script file, this is just a matter of preference.
     

    1.4.3 - RES\CODE

    You need a place to store the VRM files used in the game, I called mine RES\CODE.
    Again, the VRMs are defined in the script file, so you can put them anywhere you like,
    RES\VRM might be another choice.

    You could keep them on another drive, or even just in the RES\ directory, although that would be untidy.
     

    1.4.4 - RES\MUSIC

    You need a place to store the music files.  I keep them in RES\MUSIC.
    As of kernel version 0.025, the music is defined in the script file, so you can put t