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.