THE 3D GAME CREATOR ------------------- Contents--------------------------------------------------------------------- 1.0 Introduction 1.1 System requirements 1.2 Specifications 1.3 Playing the demo levels 2.0 Using the Editor 3.0 Designing Graphics 3.1 Graphic types 3.2 Palette conventions 3.3 Texture graphics 3.4 Object graphics 3.5 Characters 1.0 Introduction------------------------------------------------------------- 1.1 System requirements ----------------------- An AGA Amiga with 4Mb fast RAM. 030 or better recommended. 1.2 Specifications ------------------ The Cold Blood 3D system is designed for creating 3D shoot-em-up games. It features: - 1*1 resolution using fast c2p - floor and ceiling texture mapping - variable floor and ceiling height - non-orthogonal walls - bitmapped enemies and objects - advanced lighting effects (moving light sources, smoke and halo effects) A single easy to use editor is provided for creating new levels and changing game parameters. 1.3 Playing the demo levels --------------------------- To play any level just click on the icon. When the level is finished it may link to another one. Game controls: m - mouse k - keys v - vertical mouse options (locked/normal/reverse) mouse mode: move mouse to look cursor keys to move left mouse - shoot right mouse - operate keys mode: left/right cursor to turn up/down cursor to move right amiga to force sidestep right alt - shoot space - operate general: keypad 1 - look down keypad 7 - look up keypad 4 - re-centre shift - run keypad 0 - jump keypad . - crouch t - torch s - gun sight (in four different flavours) 1-9 - change weapon screen mode: keypad + - increase screen size keypad - - reduce screen size keypad ( - vertical resolution keypad ) - horizontal resolution Enter - toggle full/quarter screen Playing hints: There are two ways to play this: either go through the level stealthily using the silenced pistol, shooting out lights and drawing the enemies into traps, or just wade in with the assault rifle and send them all straight to hell. In practice you need to do a bit of both. You must remember that the enemies can both see and hear you. You can creep up behind one if you move very slowly, otherwise he will hear your footsteps. Use the assault rifle and enemies from all around will converge on your position. They are smart enough to plan a route to get to you even from the other end of the level (though they probably wouldn't hear you from that distance). They can hear other enemies firing on you as well as explosions, doors opening, lights breaking and in fact any other sound that you can hear in the game. Shooting out the lights has two effects. First of all the enemies can't see very well in the dark - you can go undetected more easily. Also, their shots lose accuracy as the light level goes down. Be careful with the torch, it makes it easy for the enemies to see you. They can also see the torch light even if they are not looking in your direction. Catching enemies in chain reaction barrel explosions is a very satisfying way to kill them, although difficult to do. Don't stand by a barrel yourself during a gunfight: the enemies' shots can set them off too (and they can shoot each other, which can be helpful when you're being attacked from two directions at once). Use the gunsight for better targeting and the vertical mouse option for a faster response to attacks from above and below. Use a good stereo system or headphones, then you can hear where sounds are coming from. 2.0 Using the Editor--------------------------------------------------------- 2.1 Introduction ---------------- The editor allows you to: - Create entirely new levels with your own layouts - Import graphics for textures and objects from iff files - Define new weapons and enemy types 2.2 Explanation of the file system ---------------------------------- The main game executable is player.exe. To start a game: from the CLI, type player.exe levelname Or click on the level's icon. File types used by the program are: - map files, created using the editor (see section) - textures, converted from iff pictures using the editor (see section) - images, grabbed from iff pictures using the editor (see section) - enemies, which are a collection of image files (see section) - sounds, which are raw samples. No sound editing facilities are provided. All textures, objects, enemies and sounds refered to by the level must be contained in their respective drawers in the same directory as the player. There are a number of other files that are not refered to in the map file but must be present. These are stored in the 'game' drawer. By replacing these files you can change certain aspects of the games not covered in the editor, such as the weapon graphics and sounds, title screen and panel. Also needed is the font 'dbib' which must be in the main fonts directory. 2.3 Editor screen layout ------------------------ The title bar ------------- As you perform functions within the program, instructions often appear here, such as 'select section' or 'select wall'. You can either do what it says or cancel by clicking the right mouse button. Windows ------- Map window This shows a top down view of the current level. Useful keyboard controls are: arrow keys scroll map +/- magnification keypad 7 raise eye level keypad 1 lower eye level To select an item in the map window, left click on it. To select multiple items, left click on each while holding down shift. Sections are shown plain (usually black), selected (usually white) or ghosted (some other colour). Objects are shown as small circles, enemies as little men and lights as stars. Button bank This contains a number of buttons for manipulating the map. See below for details. Detail window Once opened from the menu, this window shows some information on whatever item you click on in the map window. Menus ----- Project /New Allows you to either start an entirely new level or clear just the map and keep the definitions for textures, objects etc. /open Loads a level from disk. /save /save as Save the current level. /crunch Redundant since files are crunched automatically. /about Information about the program. /quit Quit the program. Will prompt if not saved. View /detail Opens the detail window. /grid Toggles the map grid. /zoom Choose zoom factor. /eye level Enter a new eye level. (see section) /eye level check Toggles eye level checking. (see section) Off by default. Textures /Convert texture Converts an iff picture to a texture file. /Add texture Adds a texture to the list for the level. You should miss off the extension '.chk' when naming the texture. /Remove texture Removes a texture from the list. Objects /Grab image Grab an image from an iff picture. /Add image Adds an image to the list for the level. You should miss off the extension '.chk' when naming the object. /Remove image Removes an image from the list. /Select picture Changes the picture to grab images from. /One point grabbing Toggles the grab method. One-point means that images will be grabbed with a single click. In this case the image must be drawn with a crosshair in colour 2 around it, pointing at the handle, i.e. | image with handle at centre / of crosshair ~~~ |/ / \ - - | . | - <--- crosshair in colour 2 \ / ~~~ | The alternative is rectangular grabbing which does not need a crosshair but takes a click and drag movement to draw a rectangle around the area to grab, plus an extra click to place the handle. One point grabbing is off by default. Enemies /Add enemy Adds an enemy to the list for the level. /Remove enemy Removes an enemy from the list. /Properties Sets a number of parameters that govern the enemy's behavior. Weapons /Add weapon Adds a weapon to the list for the level. /Remove weapon Removes a weapon from the list. Sounds /Add sound Adds a sound to the list for the level. /Remove sound Removes a sound from the list. Buttons: Add section Delete section Raise floor * Lower floor * Raise ceiling * Lower ceiling * Raise all ceilings Lower all ceilings Set floor texture * Set ceiling texture * Set wall texture Set all wall textures * Add light Delete light Set start point Section effect Add object Delete object Add enemy Delete enemy Object damage Object pick-up Add door Delete door Add lift Delete lift Add switch Delete switch * works on all currently selected sections 2.3 Creating sections --------------------- All levels, however complex they may appear, are built from simple builing blocks called sections. The player will be able to walk around inside the sections. There are a few rules governing how you may define sections, which are as follows: - A section is a closed polygon made up of up to 10 walls. - Sections are drawn clockwise. - No internal angle between two adjacent walls in a section may be more than 180 degrees. Put another way, no wall can ever obscure any part of another wall in the same section. You can add a section by clicking on the 'new section' button and clicking the left mouse button to draw the walls. Clicking the right mouse button cancels, and the space bar comletes the section. You can also complete the section by drawing a wall that completes the shape. If the section disappears after completion, it did not follow the above rules. To join two sections together to make a larger area, just draw the second so that it shares a wall with the first. The player will then be able to walk between them. Again, there are rules for joining sections: - Two sections may share one, and only one wall. They cannot share part of a wall. - The sections must not overlap. Sections inside sections are illegal. - A wall can be joined to only one other wall. - Ghosted sections cannot be joined if eye level checking is on (see section). If the first wall that you draw is shared with another section, the new section will take on the characteristics of the old one, such as floor and ceiling height and textures. This saves you the trouble of setting these things later. Steps can be created by changing floor and ceiling heights (using the buttons). One click produces a small step, two clicks a larger one. More than two clicks and the player will have to jump. The default height of sections is 16 clicks. This corresponds to textures 128 pixels high. Changing textures ----------------- Any texture in the texture list can be applied to any wall, floor or ceiling. Textures will be stretched horizontally to fit walls, but tiled vertically. Walls can have an upper and lower texture in the case of steps in both floor and ceiling. To change a wall texture, click on either 'set wall texture' or 'set all wall textures'. The latter will set every wall texture in all selected sections, the former a single wall texture which must be chosen with the mouse. Walls are selected with a single mouse click on the furthest clockwise point of that wall. Floor and ceiling textures must be 128*128 pixels, and are tiled. One grid square corresponds to one tile. Note that the placement of floor and ceiling tiles is independent of the walls. The 'set floor texture' and 'set ceiling' texture buttons work on all currently selected sections. Lights ------ If you create a level with a few sections, some steps and a few textures, then test it out, you will find that you can't see anything. With no lights, everything is dark (just like life, really). The torch is one light source, but it is not very powerful. To add lights to the level, first select all the sections you want to be affected by the light, then click on the 'add light' button, place the light and finally, set its brightness. You can add a number of lights and have bright areas and dark areas. Some tips when adding lights: - Add lights last, and be prepared to keep changing them until the level looks right. - Lights fade with distance, but shadows are not calculated. You can make your own shadow effects by choosing which sections are lit up by a particular light. - Having a visible object such as a light bulb at the same position as a light source can be very effective. - Lights can be as bright as you want, but if a wall is fully lit up, it cannot get any brighter. All that happens is that the light reaches further. Objects ------- 2D bitmaps are used to show objects in the game environment. Objects use the same bitmap for all angles, so there are some things that they can't be used for. Some examples of things that work well are barrels, plants, light bulbs and wine glasses. These things have cylindrical symmetry. Flat objects like plates don't work well because they change too much with vertical viewing angle. Players can interact with objects by shooting them or picking them up. This allows for things like ammo boxes and lights that can be shot out. To add an object, click on the 'add object' button and follow the prompts. You will set the objects position and choose the image and draw mode. You can add an object on top of another object in a different draw mode to achieve such effects as halos around lights. To change an object's damage effect, click on the 'object damage' button. The object will always vanish when shot, but it can also turn a light off or explode. To change an object's pick-up effect, click on the 'object pick-up' button. The object can be a pass, a gun, ammo or a health or shield bonus. Doors and lifts --------------- Adding doors and lifts could not be simpler. Just press the button and choose the section. If you are adding a lift you also have the option to a wall that activates it, and whether to have a switch on the lift itself. For a door you choose which pass (if any) is needed to open it. To get textures to move correctly when a door or lift is activated, do this: For a lift, nothing. Textures will move up with the lift automatically. For a door, either use a blank texture for the inside of the door frame or add a new section on either side of the door frame with the ceiling moved all the way down to the floor. A diagram might make this clearer. | | /|--------------|\ / | | \ | | DOOR | | <-- sections with ceiling at floor level \ | | / | \|--------------|/ | | | | /\ | ------------------------- To the player, the two smaller sections are invisible. All they do is force the texture to be drawn correctly. If you are interested in the details of this, textures are always fixed to the edge of a floor or ceiling step. If there is no step they are attached to the ceiling. What the trick with the door does is make the whole wall become a step, fixing the texture to the 'floor' instead. Switches -------- Switches can open doors, move lifts or turn lights on and off. They can be once-only switches, on/off types or reset after a short time. To add a switch, click on the 'add switch' button and follow the prompts. Graphically, there is a small trick used with switches. When pressed, they swap the upper and lower textures of a wall. This means that you can't have switches on steps. Section effects --------------- Events can be triggered when the player walks into a section. Doors can open, lifts can start, sound effects can be played or the level can end. The 'section effect' button handles this. Click and follow the prompts. 3.0 Designing Graphics------------------------------------------------------- 3.1 Graphic types ----------------- There are two kinds of graphic files, textures and objects. Objects are drawn flat and scaled. Enemies, barrels and lights are all objects. So are the player's guns. There are four drawing modes for objects: colour, brighten, darken and tint. Colour is the standard mode. Brighten can be seen in gun barrel flashes and could be used for halos around bright lights. Darken could be used for smoke effects. Tint changes the colour of pixels without changing their brightness. It could be used for transparent liquid containers and possibly explosions or fire. Different modes can also be superimposed, e.g. a colour object with tint applied to it. Textures have only the colour drawing mode. 3.2 Palette conventions ----------------------- For colour mode graphics, the standard palette (palette.iff) should be used. The palette is divided into two parts. The first 32 colours are deemed 'bright'. Bright colours are not affected by lighting effects. Hence sparks, explosions and lights are drawn in these colours. The rest of the palette contains seven 32 colour ranges. Anything drawn with these colours is subject to lighting effects. Colour zero is transparent for objects but not for textures. Brighten and darken modes use only the first 32 colours. Colour zero means no effect. Colour 1 means Brighten/darken by one shade, and so on. Tint mode uses only the first colour of each of the seven ranges. Tinted pixels will be transported directly across into the corresponding range, without changing brightness. Because it is possible to include some of the first 32 colours by mistake when using certain drawing tools in art packages, it is useful to work with the palette remap.iff and add bright colours later. 3.3 Texture graphics -------------------- Wall textures must be 128 pixels wide and a power of 2 pixels high, e.g. 128*16 128*64 128*128 128*256 They should be placed at the top left corner of an iff picture. If a texture is shorter than the wall it is placed on, it will be tiled. If this is the case, it will be necessary for the top and bottom to match. Floor textures must be 128*128 pixels in size. It is important for them to tile properly. 3.4 Object graphics ------------------- Objects can be any size. A useful hint when drawing objects is to keep in mind the angle that they will be seen from. Anything that is normally below the player's viewpoint should be drawn slightly from above. However, the player can move and look up and down, so don't overdo the angle. Keep things almost level, to minimise the distortion when the object is seen from a different angle. 3.5 Characters -------------- There are currently two types of character: walkers and floaters. They require different numbers of animation frames. Walkers require the following frames: standing walking (4) hit by player attacks player fall over (7) dead All frames except the dying animation are needed in eight directions, making 64 frames in total. Floaters only need: floating hit by player attacks player dead Again in eight directions, except for the dead frame. The size of individual frames is not important, just keep the handle in the same relative position in each frame. ----------------------------------------------------------------------------- 4.0 Bugs and future enhancement --------------------------------------------- 4.1 Known bugs -------------- The editor lists: The editor uses lists of textures, objects etc so that it knows what files to load. Getting these to work in Blitz was a nightmare. There are still occasional problems when selecting items from lists. Generally quitting and reloading will solve them. Removing items from lists: This is safe as long as you have not started using items in the list yet. If you have, later objects will be messed up when removing items from the list. It is always safe to remove the last object. Phantom walls: These 2 dimensional features can appear if two adjacent sections did not join correctly. They should be rare and easily corrected be deleting one or both of the sections and redefining them. Invisible walls: The opposite to the above; a wall that should be there is not drawn. No idea why this sometimes happens, but it is easily fixed by deleting and redrawing the section. Wobbly textures: When doors and lifts move, there can be a one pixel error in drawing the textures. The result is a strange rippling effect. Probably a days work on the code to fix, but in the meantime the effect can be minimised by using textures that are quite smooth in the vertical direction. ----------------------------------------------------------------------------- Edmund Clay 44 Finstall Rd Aston Fields Bromsgrove Worcs B60 2EA email: ec@hep.ucl.ac.uk