The COG Factory / Level Design Projects

Droid Bay

Droid bay — the enemy that never moves
DOWNLOAD ZIP · 314 KBBUILD 12026-09-05
Droid Bay

Q. What does a level do for jeopardy when its enemies cannot hurt you? Stock droids are unarmed and their only combat instinct is Flee — so the turrets have to carry the level, and a turret never moves.

A turret's threat is not a behaviour, it is a fixed set of floor points — so it can be COMPUTED rather than playtested. All 4699 walkable cells in about a second, exactly, because the exact-overlap carve rule makes the walkable volume literally the union of the sector boxes. The first layout measured 95.5% exposed and 4.5% cover — a shooting gallery that validate, thinwall and geom.py were all green on. Restaggering two rack blocks to overlap in y and not in x shipped at 84.9% exposed, 15.1% cover in eight islands, worst 1.95 units to break contact; the hazard trim band is then painted from the same computation. And the jeopardy is proven rather than argued: neither probe player nor probe thing prints health, so a watcher cog read 100 → 96 → 81 → 57 → 36 in a turret's fan and zero drops in the same 200 frames in cover — a positive and a matched negative control.
archetypeDroid bay — the enemy that never moves
projectp47-droid-bay
date2026-08-30
built14 sectors · 348 surfaces · 4 turrets · 7 droids · 84.9% exposed · 15.1% cover
packageP47.GOB, readme.txt, screenshot.jpg
build1 — 2026-09-05
sha2560831a1ff39511086cb54132ea6b6bf6d5a607a3ac139210d39b25b15e7e7e497

Installing it

  1. Unzip it.
  2. Drop the .GOB into the episode folder of a Jedi Knight install — the one that already has JK1.GOB in it.
  3. Pick it from the episode list. On a libretro frontend, load the .GOB itself as content.

The GOB carries its own level, cogs, materials and sounds and reads the stock resource/ for everything else. There is no retail game data in the zip.

These are living projects, not finished releases. A level is rebuilt whenever something is learned — a lighting rule, a texture orientation, a whole detail pass — and it keeps its filename through all of it. The build number is how to tell which one you have: it is printed in the readme inside every zip, and it only moves when the level's bytes actually change.

Screenshots

Textures generated for this project

p47wallp47floorp47ceilp47trimp47doorp47rack

The readme that ships with it

========================================================================
 Jedi Knight Level

 P47.GOB

 An Imperial droid maintenance bay, four turret emplacements and seven
 droids that run away from you. The bay is one open deck 4 by 2.4 units
 broken by two staggered rack blocks, and every piece of cover in the
 level is one of their shadows. Destroy all four emplacements to secure
 the bay.

 [cogfactory / p47-droid-bay]

 BUILD 1  --  2026-09-05
 sha256 0831a1ff39511086cb54132ea6b6bf6d

 This level is not made or distributed by LucasArts
 Entertainment Co.
========================================================================

THIS PACKAGE
------------------------------------------------------------------------
  P47.GOB          the level
  readme.txt       this file
  screenshot.jpg   what it looks like

INSTALLATION
------------------------------------------------------------------------
Drop P47.GOB into the `episode` folder of a Jedi Knight install (the one
that already has JK1.GOB in it) and pick it from the episode list.
Nothing else needs to change: the GOB carries its own level, cogs,
materials and sounds, and reads the stock resource/ for everything else.

On a libretro frontend, point the core at the GOB itself. It needs a
folder beside it holding `resource/` from a real install -- that is
where the retail data lives and none of it is in here.

CONTROLS
------------------------------------------------------------------------
  PLAY IT: New Game, and pick COG Factory p47 Droid Bay.
  You start with fists, a Bryar pistol, and a RAIL DETONATOR with 40 charges.
  The stormtrooper rifle is in the access corridor on the way in; the repeater
    is in the repair shop, past the third gun.
  DESTROY ALL FOUR TURRETS to secure the bay. Nothing else in here can hurt you --
    but a turret's death blast does 10 damage inside 0.45 units, so do not stand
    next to one when it goes.

NOTES
------------------------------------------------------------------------
  A TURRET IS A FAN, AND A FAN IS ARITHMETIC. Turrets never translate
  -- only the head turns -- so their threat is not a behaviour, it is
  a fixed set of floor points: the ones with an unobstructed line to
  the gun. That set was computed offline for all 4699 walkable cells
  of this level before the editor was opened, and the level was laid
  out to it. 84.9% of the deck is in some gun's fan, 15.2% is in two
  or more, and there is NO zero-exposure route from the airlock to the
  control room.

  THE WHOLE BAY TURNS ON A 0.20-UNIT OVERLAP. Two solid rack blocks
  break the open deck: one hangs from the north wall and reaches down
  past the midline, the other stands on the south wall and reaches up
  past it. They overlap in y by 0.20 without overlapping in x, so no
  horizontal line crosses the bay at any height -- and exactly one
  DIAGONAL slot survives, which is why every sightline that crosses
  this level has a slope steeper than 1 in 3. Give the two blocks a
  gap instead of an overlap and the first version of this table
  measured 95.5% exposed and 4.5% cover: a shooting gallery.

  THE PAINT IS THE MAP. The red-and-white hazard band is not put where
  a designer felt like it: a wall gets it when the floor in front of
  it is in the CROSSFIRE -- seen by two guns or more. The level tells
  you where the killzone is, in paint, before it shoots you.

  THE DROIDS CANNOT HURT YOU, AND THAT IS MEASURED. None of
  powerdroid, r5 or mousebot carries a weapon; the mousebot explodes
  when killed and its explosion inherits damage=0.000000, so it only
  shoves. Their AI files -- read out of retail JK's own Res2.gob --
  have exactly one combat instinct between them and it is Flee. Four
  guns with 360 health between them are the entire threat budget of
  the level.

  A GUN THAT NEVER MOVES STILL PROJECTS. The turret in the repair shop
  shoots up through a 0.35-wide service crawlway into the bay above
  and across it -- three sectors from a floor it is not standing on.
  36.8% of all turret-to-cell coverage in this level is in a sector
  the gun is not in.

WHAT IS IN THE GOB
------------------------------------------------------------------------
        95  episode.jk
    119226  jkl\p47droid.jkl
      2621  jkl\p47droid.manifest.json
      3075  cog\p47done.cog
      2243  cog\p47start.cog
     32908  mat\p47ceil.mat
     32908  mat\p47door.mat
     32908  mat\p47floor.mat
     32908  mat\p47rack.mat
     32908  mat\p47trim.mat
     32908  mat\p47wall.mat

    324708  bytes in 11 entries

CREDITS
------------------------------------------------------------------------
  Generated by tools/cogfactory in the openjkdf2_libretro tree.
  Geometry authored through SED (github.com/smlu/SED) over the
  cogfactory bridge.
  LucasArts did not make this. Jedi Knight is theirs; this is a fan-
  made level.

  The readme format is styled after SM Sith Lord's cog headers,
  because his are the ones everybody read.

========================================================================