Overview
A comprehensive guide to creating maps, models, and new game types for Alien Arena: Warriors Of Mars.
Overview
Alien Arena allows for the creation of a variety of custom content. You can create maps, textures, models, and new game modes from the SDK.
There is virtually no limit to what you can make in Alien Arena. The game uses free and open sourced tools to create it’s maps and models, and the engine allows for a variety of details to be placed in your maps, including terrain.
Some of our tools are a work in progress, and some other new tools are coming soon such as a terrain editor, shader generator, and more.
The Alien Arena SDK
Alien Arena’s SDK will be available on Steam, but for now you can download it directly at Official Alien Arena Website[red.planetarena.org]
The SDK includes the following:
- All Source Code(Engine, game, libraries)
- AA Radiant – A version of Radiant tailored to Alien Arena (Note – this is an older version that will be updated, and does not include IQM support)
- IQM import/export tools.
- Example player character model.
- Example shader scripts.
- Bot configuration tool.
Creating a player character
Alien Arena player characters can be created using Blender(download at [link] and exporting to the IQM model format.
An example of a working player character(Martian Enforcer) is in the SDK. It is advisable to open that and take a look at how it is put together. You can also use the skeleton as a base to begin creating your own character as well.
Main steps:
- Create the player mesh, and unwap the UV coordinates.
- Export a UV layout, and texture it. It’s advisable to create normalmaps and glowmaps as well.
- Create a skeleton and rig your model to it.
- Import all weapon objects and attach to skeleton(generally, the base point should be the right hand).
- Create the animations in accordance to the Alien Arena frame specifications.
- Export the player IQM into a new folder in “arena/players”, and export each weapon model using the naming convention Alien Arena uses(look at other player folders for examples).
- Export Level Of Detail versions(LOD1.iqm, LOD2.iqm).
- Create the .skin files for each of the skins. For the weapon models, you can simply copy the .skin files from a stock player character.
- Create shaders for your model’s skins in .rscript and place in the scripts/normals folder.
- Add custom sounds, and icons for each skin.
Skeleton:
The skeleton must use the naming convention for bones that Alien Arena will recognize. The best practice would be too examine the example model.
Bone names are as follows:
Spine (must connect to pelvis). If segmented spine, bone connected to pelvis can be Spine01
head
shoulder.r
shoulder.l
tricep.r
tricep.l
forearm.r
forearm.l
wrist.r(hand.01 – 03 can be substituted for wrists).
wrist.l
hip.r
hip.l
thigh.r
thigh.l
shin.r
shin.l
foot.r
foot.l
Animations
Alien Arena uses 297 frames of animations. They are as follows, and in this order:
Stand: 1-40
Run: 41-46
Attack: 47-54
Pain 1: 55-58
Pain 2: 59-62
Pain 3: 63-66
Jump: 67-72
Flip: 73-84
Salute: 85-95
Taunt: 96-112
Wave: 113-123
Point: 124-135
Crouch Stand: 136-154
Crouch Walk: 155-160
Crouch Attack: 161-169
Crouch Pain: 170-173
Sneak: 174-181
Rise: 182-198
Death 1: 199-220
Death 2: 221-238
Death 3: 238-260
Step Left: 261-266
Step Right: 267-272
Backpedal: 273-278
Swim: 279-285
Dangle: 286-297
Ragdolls
Creating a ragdoll is currently a difficult, and tedious process. If you wish to create one look at the example in the SDK. These are created by providing coordinates and dimensions based on the BASE frame(aka, the skeleton in “edit mode”). A ragdoll exporter will be provided in the future. If you choose not to implement radolls, the game will use your animated death sequences.
The file’s format is based on this:
#define ELBOW_X_OFF 0 //elbow joint
#define ELBOW_Y_OFF 1
#define ELBOW_Z_OFF 2
#define WRIST_X_OFF 3 //wrist joint
#define WRIST_Y_OFF 4
#define WRIST_Z_OFF 5
#define FINGERS_X_OFF 6 //base of fingers
#define FINGERS_Y_OFF 7
#define FINGERS_Z_OFF 8
#define FOOT_LEN 9 // ankles to base of ball of foot
#define HEEL_LEN 10 // ankles to hell
#define HEAD_H 11 //to base of skull
#define NECK_H 12 //to base of neck
#define SHOULDER_H 13 //to shoulder sockets
#define CHEST_H 14 //to top of chest
#define HIP_H 15 //to hip sockets
#define HEAD_W 16
#define SHOULDER_W 17
#define CHEST_W 18 // actually wider, but we want narrower than shoulders (esp. with large radius)
#define BICEP_W 19 //thickness of bicep
#define FOREARM_W 20 //thickness of forearm
#define HAND_W 21 //width of hand
#define LEG_W 22 // between middles of upper legs
#define PELVIS_W 23 // actually wider, but we want smaller than hip width
#define THIGH_W 24 //thickness of thigh
#define SHIN_W 25 //thickness of shin
#define FOOT_W 26 //width of foot
#define KNEE_X_OFF 27 //knee joint
#define KNEE_Y_OFF 28
#define KNEE_Z_OFF 29
#define ANKLE_X_OFF 30 //ankle joint
#define ANKLE_Y_OFF 31
#define ANKLE_Z_OFF 32
#define GLOBAL_X_OFF 33 //bottom(base of foot) center of skeleton from 0,0,0
#define GLOBAL_Y_OFF 34
#define GLOBAL_Z_OFF 35
//contraint section
#define HIP_LOSTOP1 36
#define HIP_HISTOP1 37
#define HIP_LOSTOP2 38
#define HIP_HISTOP2 39
#define KNEE_LOSTOP 40
#define KNEE_HISTOP 41
#define ANKLE_LOSTOP 42
#define ANKLE_HISTOP 43
#define SHOULDER_LOSTOP1 44
#define SHOULDER_HISTOP1 45
#define SHOULDER_LOSTOP2 46
#define SHOULDER_HISTOP2 47
#define ELBOW_LOSTOP 48
#define ELBOW_HISTOP 49
#define WRIST_LOSTOP 50
#define WRIST_HISTOP 51
#define HEAD_LOSTOP1 52
#define HEAD_HISTOP1 53
#define HEAD_LOSTOP2 54
#define HEAD_HISTOP2 55
Creating a map
Creating maps for Alien Arena is a process that can range from the simple to the complex, depending on your goals.
The process typically is as follows:
- Create a map using AA Radiant(similar programs could be substituted).
- Compile the map using the provided map compiling tools. Qbsp3 first, then qvis3, then qrad3.
- Create the .fog and .mus script files(for fog/weather/effects and music).
- Create the bot path files and bot player files.
- Create levelshot and info files.
Creating terrain in Alien Arena will be discussed in another section, and is a more involved process at the moment.
There are many methods and guides that illustrate good map making processes. It’s always good to look at other maps, be it in Alien Arena, Quake, or Unreal Tournament, or other ARENA shooters.
Maps should be concise in scale and layout. Quite often the new mapmaker has an urge to create something on a massive, grand scale. This winds up being a map that has poor game play and poor performance. Another common mistake is making long, tedious corridors, or levels that have no verticality to them. Make sure that the map has sufficient lighting and visibility. There should be no dead ends unless there is a reward at the end of it. Layouts should flow, circular in nature, and have a bit of complexity if possible.
Static meshes can be useful for adding detail, and even creating architecture(note, you will need to make clipping brushes for all static meshes). Vegetation can be added using rscript shaders, and you can generate hi-def lightmaps using the -refine option on a second qrad3 command after the map has compiled and tested ok. Shaders can be added for other things such as lights, lensflares, and other graphical effects like shiny surfaces, water, etc.
The weather effects file format is as follows:
0.2 //Red fog
0.4 //Green fog
0.4 //Blue fog
50 //Fog start distance
4000 //Fog end distance
0.1 //Fog density
3 //Weather effect 1=Rain 2=Snow 3=Leaves 4=Embers 5=Trash
0 //Toggle “no sun” (setting to 1 disables sun effects)
-140000 //Override Sun X position
80000 //Override Sun Y position
45000 //Override Sun Z position
0.6 //Sun intensity