The COG Factory / COG Factory Experiments

Kraken Wave

2026-09-30
DOWNLOAD ZIP · 4 MBBUILD 32026-09-30

These are 640×480 working frames — the HUD and the cog's own on-screen readouts are part of the picture. This project has not been re-shot yet.

A hall with a pit, Gnarly's giant four-armed kraken over it, and seven buttons. Make it wave its arms, smash the floor in front of it with a hand, fire concussion bolts from its eyes at you, sink into the pit and rise back up a stage at a time, turn to face you -- and do the Harlem Shake. The model came with no rig at all; every motion is a generated keyframe on a hierarchy rewritten around the author's own meshes. The groundwork for the kraken boss fight (p59).

A community 3DO with no rig can be animated without touching a vertex. Gnarly's kraken hangs every one of its 25 meshes straight off $$DUMMY with every offset and pivot zero, so a rotated node swings about the model's origin. The engine builds a node as parent * T(-parent.pivot) * R T(pos) * T(pivot) (rdThing_AccumulateMatrices), so a joint at model-space J is pos = J - J_parent, pivot = -J: rewriting HIERARCHYDEF alone reproduces the model to 1e-9 per vertex offline and 1 pixel in the engine, and consecutive pieces of the one pre-cut arm share a ten-vertex ring whose centroid IS the joint. A key's entries are ABSOLUTE pos and pyr per node INDEX, and a model needs a puppet only a template's puppet= gives -- stock ra.pup, LucasArts' blank one. The located control that earned the checker its keep: the same key on Gnarly's flat hierarchy flies the kraken apart and still passes a motion and loop test; only a one-connected-piece silhouette against an empty-room plate catches it.

Iteration 2, a boss's moves. One-shot keys (PlayKey flags 0x20) layer over the wave loop and hand their nodes back on fade; gameplay is timed off the key (an impact at 1.60 s), because markers are engine events. A huge thing moves by SetThingPos from a pulse, which never re-sectors it and pushes a value jkspec calls void; its eye bolts fire from ghost things placed on the eyes, because FireProjectile births a bolt at the shooter's origin. And the stage heights are derived from the poses: the smash's hand lands on the floor, the eyes sit at the player's eye height.

The Harlem Shake (button H): a 6.4 s loop on a 150 BPM grid -- a beat is exactly six key frames at 15 fps -- an opener, a hunched shoulder shake and a full-body drop, each section enveloped so the loop opens and closes on rest. Its lesson is a STEP BUDGET: the first drop moved an arm 93 degrees in one key frame, which reads as a limb teleporting, not shaking; capped at about 4 Hz with a beat for every big swing, the worst step is 40 degrees. Gate 16 of 16 with three located controls, GOB build 3; retail JKDF2 has not run it.
projectp58-kraken
date2026-09-30
packageP58.GOB, readme.txt, screenshot.jpg
build3 — 2026-09-30 (first packaged 2026-09-30)
sha2564d08fd07c15f5d2c5c63bd3290b4c82162715fc66a5011626f479e350c81e279

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, models, and materials. Everything else is read from the stock resource/, and 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

All 9 tiles are harness working frames (640×480), flagged on the tile: not yet re-shot at 1280×720 with the HUD and dev text off.

The readme that ships with it

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

 P58.GOB

 A hall with a pit, a giant four-armed kraken over it, and six buttons.
 Make it wave its arms, smash the floor in front of it with a hand,
 fire concussion bolts from its eyes at you, sink into the pit and rise
 back up a stage at a time, and turn to face you. The groundwork for a
 kraken boss fight.

 [cogfactory / p58-kraken]

 BUILD 3  --  2026-09-30   (first packaged 2026-09-30)
 sha256 4d08fd07c15f5d2c5c63bd3290b4c821

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

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

INSTALLATION
------------------------------------------------------------------------
Drop P58.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,
models and materials, and reads the stock resource/ for everything else.

On a libretro frontend such as RetroArch, unzip first and put P58.GOB in
the episode folder of your Jedi Knight folder, then load it from there.
The core treats the folder above the GOB's folder as the game folder,
reads the episode from episode/P58.GOB inside it, and will not start
unless that folder also holds resource/ (Res2.gob) from a real install.

CONTROLS
------------------------------------------------------------------------
  six button posts in front of the kraken, left to right: W wave (on/off), S smash, E eye bolts, U up a stage, D down a stage, T turn to face you (on/off)
  Use (Space) on a post; the posts are low, so look down at them
  the stages are sunk (all of it in the pit), eyes (its eyes level with yours), torso, and full (where it starts)

NOTES
------------------------------------------------------------------------
  the smash lands on the floor in front of the pit at the TORSO stage;
  at the other stages the hand comes down in the air

  the eye bolts are aimed at you when they fire. They are the stock
  enemy concussion bolt; stand clear of the posts or the post you
  pressed takes the hit

  the smash throws rock chunks and dust and its blast shoves anything
  within about a kraken's hand of where it lands

  the kraken is Gnarly's krakityasshoe.3do with ONLY its hierarchy
  rewritten: the same meshes, vertices and textures, given joints at
  the shoulders, wrists, neck, jaw, waist and down the tail

  the animations are generated keyframes in 3do\key: krkwave (a 4 s
  loop), krksmash (3.3 s) and krkeyes (2 s). The smash and the volley
  play OVER the wave if it is running

  the kraken uses the stock blank puppet ra.pup, so the GOB carries no
  .pup

  krakrig.3do points its eyes at crackereyes.mat, the file handed
  over; Gnarly's original names krackereye.mat

  cracker.mat is 2048 x 2048. OpenJKDF2 draws it; whether retail JKDF2
  does is part of the retail test

  tested in OpenJKDF2 only; retail JKDF2 has not run it

WHAT IS IN THE GOB
------------------------------------------------------------------------
        90  episode.jk
     12686  jkl\kraken.jkl
     11599  cog\p58krak.cog
    644367  3do\krakrig.3do
      2254  3do\p58bdanc.3do
      2254  3do\p58bdown.3do
      2254  3do\p58beyes.3do
      2254  3do\p58bsmas.3do
      2250  3do\p58btn.3do
      2254  3do\p58bturn.3do
      2248  3do\p58bup.3do
      2254  3do\p58bwave.3do
    501080  3do\key\krkdance.key
     46760  3do\key\krkeyes.key
     64838  3do\key\krksmash.key
    141870  3do\key\krkwave.key
   8388748  mat\cracker.mat
    131212  mat\crackereyes.mat
      8332  mat\p58bdanc.mat
      8332  mat\p58bdown.mat
      8332  mat\p58beyes.mat
      8332  mat\p58bsmas.mat
      8332  mat\p58bturn.mat
      8332  mat\p58bup.mat
      8332  mat\p58bwave.mat
      8332  mat\p58ceil.mat
      8332  mat\p58floor.mat
      8332  mat\p58pit.mat
      8332  mat\p58wall.mat

  10052924  bytes in 29 entries

CREDITS
------------------------------------------------------------------------
  The kraken (krakityasshoe.3do, cracker.mat, crackereyes.mat) is by
  Gnarly. The rig, the animations, the cog, the buttons and the hall
  were generated by tools/cogfactory in the openjkdf2_libretro tree.
  The sounds, the bolt, the rocks and the dust are stock JKDF2.

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

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