AOH :: DFEDIT11.TXT
Technical docs for editing Dark Forces
|
DARK FORCES EDITING DIRECTIONS Version 1.1
The DARK.GOB file consists of many files. Within the GOB are three
files that make up a levels definition, (<level>.inf, <level>.o &
<level>.lev). There are 14 levels in the full game.
DARK FORCES latest update: 03/28/95
CONTENTS:
1. AVAILABLE OBJECT CODES (.O FILES)
2. EXAMPLES OF SPRITES & FRAMES (.O FILES)
3. CHANGING / ADDING OBJECTS TO A LEVEL (.O FILES)
4. ADDING NECESSARY GRAPHICS NAMES TO ALLOWABLES AREA. (.O FILES)
5. CHANGING / MAKING LEVEL ARCHITECTURE (.LEV FILES)
1. AVAILABLE OBJECT CODES FOR DEMO:
LOGIC / TYPE NAMES: GRAPHICS DATA FILES OBJECT:
ENEMIES:
TROOP STORMFIN.WAX Storm Trooper
STORM1 STORMFIN.WAX Storm Trooper
INT_DROID INTDROID.WAX Interogation Droid
PROBE_DROID PROBE.WAX Probe Droid
D_TROOP1 PHASE1.WAX Dark Trooper 1
D_TROOP2 PHASE2.WAX Dark Trooper 2
D_TROOP3 PHASE3X.WAX Dark Trooper 3 (mohc)
BOBA_FETT BOBAFETT.WAX Boba Fett
COMMANDO COMMANDO.WAX Commando
I_OFFICER OFFCFIN.WAX Imperial Officer
I_OFFICER1 (Code Key 1) OFFCFIN.WAX Imperial Officer
I_OFFICER2 (Code Key 2) OFFCFIN.WAX Imperial Officer
I_OFFICER3 (Code Key 3) OFFCFIN.WAX Imperial Officer
I_OFFICER4 (Code Key 4) OFFCFIN.WAX Imperial Officer
I_OFFICER5 (Code Key 5) OFFCFIN.WAX Imperial Officer
I_OFFICER6 (Code Key 6) OFFCFIN.WAX Imperial Officer
I_OFFICER7 (Code Key 7) OFFCFIN.WAX Imperial Officer
I_OFFICER8 (Code Key 8) OFFCFIN.WAX Imperial Officer
I_OFFICER9 (Code Key 9) OFFCFIN.WAX Imperial Officer
I_OFFICERR (red key) OFFCFIN.WAX Imperial Officer
I_OFFICERY (yellow key) OFFCFIN.WAX Imperial Officer
I_OFFICERB (Blue key) OFFCFIN.WAX Imperial Officer
KELL KELL.WAX Kell Dragon
TURRET Laser Turret (3D)
G_GUARD GAMGUARD.WAX Gamorean Guard
REE_YEES REEYEES.WAX ReeYees
BOSSK BOSSK.WAX Bossk
SEWER1 SEWERBUG.WAX Trash Compactor Creature
REMOTE REMOTE.WAX Remote Droid
WEAPONS:
AUTOGUN IAUTOGUN.FME Auto Gun
CANNON ICANNON.FME Assault Cannon
CONCUSSION ICONCUS.FME Concussion Rifle
DETONATOR IDET.FME 1 Thermal Detonator
DETONATORS IDETS.FME 5 Thermal detonators
FUSION IFUSION.FME Fusion Cutter
MINE IMINE.FME 1 Claymore Mine
MINES IMINES.FME 5 Claymore Mines
MORTAR IMORTAR.FME Mortar Gun
RIFLE IST-GUNU.FME Blaster Rifle
IST-GUNI.FME Blaster Rifle
AMMO:
MISSILE IMSL.FME 1 Missile
MISSILES IMSLS.FME 5 Missiles
PLASMA IPLAZMA.FME 10 Plasma cartriges
POWER IPOWER.FME 10 power cells
SHELL ISHELL.FME 1 Mortar Shell
SHELLS ISHELLS.FME 5 Mortar Shells
SUPERCHARGE ICHARGE.FME Weapon Supercharge
ENERGY IENERGY.FME 15 Energy Units
OBJECTS:
SHIELD (ANIM) IARMOR.WAX 20 Shield Units
INVINCIBLE (ANIM) IINVINC.WAX Invincibility
REVIVE (ANIM) IREVIVE.WAX Revive
LIFE (ANIM) ILIFE.WAX Extra Life
MEDKIT IMEDKIT.FME Medkit
PILE IPILE.FME Pile of Gear
BATTERY IBATTERY.FME 1 Battery Cell
CLEATS ICLEATS.FME Ice Cleats
GOGGLES IGOGGLES.FME Infrared Goggles
MASK IMASK.FME Gas Mask
RED IKEYR.FME Red Key
YELLOW IKEYY.FME Yellow Key
BLUE IKEYB.FME Blue Key
MISSION COMPLETION OBJECTS:
DT_WEAPON Dark Trooper Weapon
D_CODE DET_CODE.FME Detention Block Code
I_CODE Imperial Code
NAVA (ANIM) INAVA.WAX Nava Card
PHRIK IPHRIK.WAX Phrik Metal
PLANS (ANIM) IDPLANS.WAX Death Star Plans
**If it has an ANIM extension it is supposed to have a line added; LOGIC: ANIM
There are many more codes in the full game not yet added to the above list.
2. EXAMPLES OF SPRITES & FRAMES:
Every object has a class determined by whether it is a sprite, frame or 3d object. All sprites have a .WAX graphics extention and all Frames have a .FME extention. The data number is determined by counting down in the allowables are starting with 0 (this is explained latter). Please read the area for adding objects to a level, it explains changes you will need to know .
This is an example for a sprite object that is animated, this would apply to the Death Star Plans (Correction necessary in demo), Invincible, Shield, Revive, & life (notice the type is LOGIC).
CLASS: SPRITE DATA: 3 X: 228.79 Y: -20.00 Z: 343.90 PCH: 0.00 YAW: 90.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: ITEM SHIELD
LOGIC: ANIM
SEQEND
This is an example of a frame object. (Note the type is LOGIC):
CLASS: FRAME DATA: 9 X: 94.84 Y: -21.81 Z: 393.36 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: AUTOGUN
SEQEND
This is an example of a sprite character (Note the type is TYPE).
CLASS: SPRITE DATA: 4 X: 272.22 Y: 20.00 Z: 247.35 PCH: 0.00 YAW: 274.96 ROL:
0.00 DIFF: 1
SEQ
TYPE: TROOP
SEQEND
** Actually LOGIC can be used instead of type with no effect but that is the way it is set up for many chacters in the demo. SEQ & SEQEND must be present, it is the start and end of any sequence of information for an object.
3. CHANGING/ADDING OBJECTS TO A LEVEL:
Using the UNGOB editor extract the DARK.GOB file. To make any changes to a level there are only three files in this area that you need to work with (<level>.o,<level> .inf &<level> .lev). The .O file is for all characters and objects in a level, .INF is an information file for elevators, doors etc. (I will explain that information latter), and .LEV is a text version of the level architecture. You can insert any of these in your harddrive startup directory and it will load that file up before it goes to your GOB file. All that you need to do to change any object within DARK FORCES is to Associate the .O File with any text editor or Windows Write. If you add any objects you will need to go to the very top of this area where it says OBJECTS 216 and change it by whatever number of objects you add. For the example change below I had to change it to OBJECTS 217 because the Gamorean Guards did not replace anything. If you do not make this change it will drop objects starting from th
e bottom (ie. I noticed that one mine had disappeared). If you want to change the start position of an object you will need to understand X,Y,Z coordinate system, The X & Z are the floor plane where the Y number is for height (ie. -42.00 is the roof, -20.00 is the second floor and 20.00 is the basement). If you have any difficulty with this just use some grid paper and lay out a X & Z diagram for each level. YAW and ROL are start possition angles. DIFF works with difficulty levels (A #0 difficulty level will place the object on all settings) . The below example gives regenerating Reeyees, Gamorean Guards, Probe Droids, Stormtroopers, Commandos, Interogation Droids and Officers, everyone but the remote.
/* name: Generator */
CLASS: SPRITE DATA: 7 X: 338.11 Y: 6.00 Z: 123.39 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR REE_YEES
DELAY: 0
MIN_DIST: 60
NUM_TERMINATE: -1
MASTER: OFF
MAX_ALIVE: 3
INTERVAL: 15
MAX_DIST: 400
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 10 X: 335.00 Y: 6.00 Z: 120.00 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR G_GUARD
DELAY: 60
MIN_DIST: 60
NUM_TERMINATE: -1
MASTER: OFF
MAX_ALIVE: 2
INTERVAL: 30
MAX_DIST: 400
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 4 X: 204.50 Y: 0.00 Z: 410.20 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR STORM1
DELAY: 300
MAX_ALIVE: 8
MIN_DIST: 60
MAX_DIST: 200
NUM_TERMINATE: -1
MASTER: OFF
INTERVAL: 15
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 4 X: 183.50 Y: 4.00 Z: 205.54 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR STORM1
INTERVAL: 10
MAX_ALIVE: 8
MIN_DIST: 60
MAX_DIST: 200
NUM_TERMINATE: -1
MASTER: OFF
DELAY: 60
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 1 X: 157.84 Y: -20.00 Z: 294.17 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR COMMANDO
MAX_ALIVE: 6
MIN_DIST: 60
MAX_DIST: 200
NUM_TERMINATE: -1
MASTER: OFF
DELAY: 600
INTERVAL: 30
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 0 X: 292.58 Y: -20.00 Z: 293.58 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR I_OFFICER
INTERVAL: 30
MIN_DIST: 60
MAX_DIST: 200
NUM_TERMINATE: -1
MASTER: OFF
DELAY: 0
MAX_ALIVE: 4
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 4 X: 245.33 Y: -0.08 Z: 332.07 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR STORM1
MAX_ALIVE: 8
INTERVAL: 20
MIN_DIST: 60
NUM_TERMINATE: -1
MASTER: OFF
DELAY: 600
MAX_DIST: 300
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 8 X: 246.00 Y: -5.00 Z: 333.00 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR INT_DROID
DELAY: 0
INTERVAL: 30
MAX_ALIVE: 2
MIN_DIST: 60
NUM_TERMINATE: -1
MASTER: OFF
MAX_DIST: 300
SEQEND
CLASS: SPRITE DATA: 11 X: 538.20 Y: 5.00 Z: 196.39 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: LIFE
LOGIC: ANIM
SEQEND
CLASS: FRAME DATA: 11 X: 502.45 Y: 5.00 Z: 232.22 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: SUPERCHARGE
SEQEND
/* name: Generator */
CLASS: SPRITE DATA: 13 X: 401.23 Y: -40.00 Z: 198.48 PCH: 0.00 YAW: 0.00 ROL:
0.00 DIFF: 0
SEQ
LOGIC: GENERATOR PROBE_DROID
DELAY: 0
MIN_DIST: 60
MAX_DIST: 200
NUM_TERMINATE: -1
MASTER: OFF
INTERVAL: 30
MAX_ALIVE: 4
SEQEND
4. ADDING NECESSARY GRAPHICS NAMES TO ALLOWABLES AREA:
I changed my allowable Sprites & Frames area to match the modified and added a concussion rifle, assault cannon, missiles, etc. If you do not change this area the graphic for the weapon or sprite will not appear. You will need to change the SPRS or FMES number to math the number of entrys you have. When placing an object now count down in this area starting with 0 and place that number in the DATA: area of the OBJECTS information(ie. REEYEES would be 7, not 8 as if you started with 1). For allowable codes see what is in section 1.
original:
SPRS 14
SPR: OFFCFIN.WAX
SPR: COMMANDO.WAX
SPR: IDPLANS.WAX
SPR: IARMOR.WAX
SPR: STORMFIN.WAX
SPR: ROCK.WAX
SPR: REDLIT.WAX
SPR: REEYEES.WAX
SPR: INTDROID.WAX
SPR: REMOTE.WAX
SPR: GAMGUARD.WAX
SPR: ILIFE.WAX
SPR: IREVIVE.WAX
SPR: PROBE.WAX
FMES 14
FME: IENERGY.FME
FME: IGOGGLES.FME
FME: IMINE.FME
FME: IFUSION.FME
FME: IMORTAR.FME
FME: IDETS.FME
FME: IST-GUNU.FME
FME: IDET.FME
FME: IMEDKIT.FME
FME: IAUTOGUN.FME
FME: IPOWER.FME
FME: ICHARGE.FME
FME: IBATTERY.FME
FME: ISHELL.FME
modified:
SPRS 15
SPR: OFFCFIN.WAX
SPR: COMMANDO.WAX
SPR: IDPLANS.WAX
SPR: IARMOR.WAX
SPR: STORMFIN.WAX
SPR: ROCK.WAX
SPR: REDLIT.WAX
SPR: REEYEES.WAX
SPR: INTDROID.WAX
SPR: REMOTE.WAX
SPR: GAMGUARD.WAX
SPR: ILIFE.WAX
SPR: IREVIVE.WAX
SPR: PROBE.WAX
SPR: IINVINC.WAX
FMES 24
FME: IENERGY.FME
FME: IGOGGLES.FME
FME: IMINE.FME
FME: IFUSION.FME
FME: IMORTAR.FME
FME: IDETS.FME
FME: IST-GUNU.FME
FME: IDET.FME
FME: IMEDKIT.FME
FME: IAUTOGUN.FME
FME: IPOWER.FME
FME: ICHARGE.FME
FME: IBATTERY.FME
FME: ISHELL.FME
FME: ICANNON.FME
FME: ICONCUS.FME
FME: ICLEATS.FME
FME: IPLAZMA.FME
FME: IMASK.FME
FME: IMINES.FME
FME: IMSL.FME
FME: IMSLS.FME
FME: IPILE.FME
FME: ISHELLS.FME
5. CHANGING / MAKING LEVEL ARCHITECTURE (.LEV FILES)
Example of <level>.levfile:
LEV 2.1
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# This file has been converted from AutoCAD file 'SECBASE'.
#
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
LEVELNAME SECBASE
PALETTE secbase.PAL
MUSIC AVENGE.GMD
PARALLAX 1024.0000 1024.0000
#`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~
# T e x t u r e T a b l e
#
#`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~`~
# Lowercase textures are from the 'Extra' list.
TEXTURES 95
TEXTURE: HOLOGRAM.BM # 0
TEXTURE: ICFUEL1.BM # 1
TEXTURE: IDDOOR1.BM # 2 ........
The pallette may be changed as well as the music in the above area. If you add textures or remove textures you must change the "TEXTURES #" to reflect the numbers of textures in the allowables list. The number beside the texture name is the number of the texture to be used in the sector.
NUMSECTORS 222
To add sectors you must find and change this number near the top of the level file to reflect the number of sectors you have.
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# S e c t o r D e f i n i t i o n
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SECTOR 0 #ACAD: 978520 ** sector number (0-1-2-3...) ACAD # not necessary
NAME name necessary if door, etc. for .inf file
AMBIENT 20 lighting number, how bright/dark area will be
FLOOR TEXTURE 15 -0.38 -0.06 2 floor texture # from allowables list and its adjust.
FLOOR ALTITUDE 0.00 self explanitory (Y coordinate)
CEILING TEXTURE 31 0.00 0.00 2 ceiling texture # and adjustment
CEILING ALTITUDE -12.00 self explanitory
SECOND ALTITUDE 0.00
FLAGS 0 0 0
LAYER 1 **floor layer
VERTICES 00004 **total number of vertices...
X: 252.00 Z: 224.00 # 0 Points at which a texture, adjoining sector or
X: 236.00 Z: 224.00 # 1 direction change may occur. Plus vertices #.
X: 236.00 Z: 228.00 # 2
X: 252.00 Z: 228.00 # 3
WALLS 4 #ACAD: 978525 978524 978523 978522
WALL LEFT: 0 RIGHT: 1 MID: 31 0.00 0.00 0 TOP: 31 0.00 0.00 0 BOT: 31 0.00
0.00 0 SIGN: -1 0.00 0.00 ADJOIN: 57 MIRROR: 0 WALK: 57 FLAGS: 0 0 0 LIGHT: 5
WALL LEFT: 1 RIGHT: 2 MID: 31 0.00 -0.06 0 TOP: 38 0.00 0.00 0 BOT: 38 0.00
0.00 0 SIGN: -1 2472.27 2089.79 ADJOIN: -1 MIRROR: -1 WALK: -1 FLAGS: 0 0 0 LIGHT:
65534
WALL LEFT: 2 RIGHT: 3 MID: 38 0.00 0.00 0 TOP: 8 0.00 2.31 0 BOT: 38 0.00
0.00 0 SIGN: -1 -2945.47 11.02 ADJOIN: 1 MIRROR: 0 WALK: 1 FLAGS: 0 0 0 LIGHT: 0
WALL LEFT: 3 RIGHT: 0 MID: 31 0.00 0.00 0 TOP: 38 0.00 0.00 0 BOT: 38 0.00
0.00 0 SIGN: -1 2688.04 2337.53 ADJOIN: -1 MIRROR: -1 WALK: -1 FLAGS: 0 0 0 LIGHT:
0
Explanation:
WALLS # must be number of walls in a sector.. will match number of sectors usually, but not always if you have a lot of free standing areas.
WALL LEFT: number of vertices for left point of wall .
RIGHT: number for final vertices/point of wall.
MID: Texture of wall or at middle of wall if wall is cut by window, etc. it will be texture at center in the case of a nitch. Plus its x & z coordinates adjustment to fit it into wall properly. the first number is the left/right adjustment, the second number is up/down adjustment.
TOP: If wall is cut it will be the texture at the top, plus its adjustment numbers.
BOT: if wall is cut it will be the texture at the bottom, plus its adjustments.
SIGN: as of yet unknown..
ADJOIN: wall sectors can be joined together, this is the sector number that this wall adjoins to. ie they have the same x & z numbered vertices and follow same line, basically they overlap.
MIRROR: the sequence number of the adjoining wall, ie. if the adjoining wall of the other sector is wall left: 2 right: 3 the mirror number is 2 for this wall sector.
WALK: if you want to be able to go from an adjoining sector into another this must be the number of the adjoining sector , if it is -1 it will be like a glass wall, you can see in but not go in.
FLAGS: as of yet unknown..
LIGHT: lighting adjustment.
All sectors must close!
One common problem I have run into is laying out two adjoining sectors and getting the mirror number correctly but the wall ends up looking like a wall of mirrors. When I reversed the direction in which vertices are joined it corrected the problem. If obviously matters the direction you make walls go. E-mail me If you figure out any other bugs or feel I have left any important information out.
If you have any problems or question E-Mail me at DSielke@AOL.com
explanation of the .inf file coming soon!!essary if door, etc. for .inf file
The entire AOH site is optimized to look best in Firefox® 3 on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986- AOH
We do not send spam. If you have received spam bearing an artofhacking.com email address, please forward it with full headers to abuse@artofhacking.com.