The COG Factory / Level Design Projects
Lathe Loops
Q. Can a grid-rotation loop — a profile lathed around the origin, braced at every joint and cut on the brace's own lines — be built four times over by four different orders of operation, and do the four come out the same shape? And what does each order cost?
core's end face, SED pushes them one hop across an adjoin, and the portal is two hops away — 64 of 352 adjoins congruent on one side only, consistency 0, T0.adjpair red. Four different build orders, the identical defect: that is what says it is geometry and not order. And the pure-construction pass found sixteen doorways that were solid rock while the file reported 336 adjoins and zero errors. Textured by walking the section's own boundary — nineteen faces across five sectors, inner trim to floor to outer trim, across every facet of the vault, round both ceiling beams and back to the inner wall — so SED does the hard math at every turn. Two things that cost a pass: SED's stitch COPIES THE MATERIAL, so a chain walked after the materials painted the trim over all 1768 visible faces with every check still green; and arrange_texture_by negates vn on a flipped face, so 1100 of 1136 walls shipped upside down while every read-back said otherwise. Measured off the texels, off the FILE: 0 of 1136 now.| archetype | Four stacked ring galleries |
|---|---|
| project | p45-lathe-loops |
| date | 2026-08-30 |
| built | 224 sectors · 3120 surfaces · 352 adjoins · 4 loops · 8 switches · 128 lights |
| package | P45.GOB, readme.txt, screenshot.jpg |
| build | 1 — 2026-09-05 |
| sha256 | df3855f4ddaca7a71b23a1189fb0d7741d068ccbfb57a8a0264b22d8ce545d5c |
Installing it
- Unzip it.
- Drop the
.GOBinto theepisodefolder of a Jedi Knight install — the one that already hasJK1.GOBin it. - Pick it from the episode list. On a libretro frontend, load the
.GOBitself 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
The readme that ships with it
========================================================================
Jedi Knight Level
P45.GOB
Four vaulted ring galleries stacked one above another, each one a
single cross-section lathed eight times around the origin, braced at
every joint by a rib that is exactly as deep as it is wide, and cut on
that rib's own lines so the ceiling gets its coffers and the inner
wall its recesses for free. There are no stairs. The only way between
the four is a pair of switches set into the wall of one bay: one takes
you up the stack, one takes you down, and the fourth loop's UP brings
you back to the first.
[cogfactory / p45-lathe-loops]
BUILD 1 -- 2026-09-05
sha256 df3855f4ddaca7a71b23a1189fb0d774
This level is not made or distributed by LucasArts
Entertainment Co.
========================================================================
THIS PACKAGE
------------------------------------------------------------------------
P45.GOB the level
readme.txt this file
screenshot.jpg what it looks like
INSTALLATION
------------------------------------------------------------------------
Drop P45.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
------------------------------------------------------------------------
You start in loop 0, facing the switch panels.
Two panels are set into the recess of the inner wall, at eye height.
LEFT panel = NEXT loop. RIGHT panel = PREVIOUS loop. Press Use.
Four presses of NEXT brings you back where you started.
Each loop is a closed ring -- walk either way round and you return.
NOTES
------------------------------------------------------------------------
ONE SECTION, LATHED. Every loop is one drawn cross-section swept
through eight forty-five-degree modules. Revolving a profile between
two radial half-planes gives FLAT faces whatever the profile does --
the four corners of every swept quad are coplanar exactly -- so the
whole thing is an intersection of half-planes and the editor can
cleave it. That is why a curve like this is buildable at all.
THE BRACE IS THE ARCHITECTURE. At every joint the module stops 0.05
short, the opening is cut back another 0.05 all round, and the
middle is pushed out to meet its neighbour: two modules each give
half, and the result is a square-section rib framing every doorway.
The same 0.05 band, carried along the module instead of across it,
leaves the corner gussets, the two ceiling beams and the two base
blocks -- and cutting the room on the band's own lines is what gives
the ceiling its coffer and the inner wall its recess.
FOUR LOOPS, FOUR DEVELOPERS. The same shape was built four times by
four different orders of operation -- brace-then-join-then-cut,
finish-each-module-then-join, build-every-piece-and-weld, and build-
one-and-clone-it-seven-times. All four came out the same shape:
every one of the 224 planned sectors is within 5e-9 of where the
plan puts it and all 352 planned adjoins are present. Loop 2's brace
returns are coned rather than extruded, which is the one visible
difference and it was the construction that chose it.
TOLD APART BY COLOUR, NOT BY SHAPE. Per-vertex light in this engine
is intensity only, so four identical rings are told apart by SECTOR
TINT: neutral, warm, cold and violet from the bottom up. It costs
one property per sector over geometry that is otherwise the same in
all four.
NO STAIRS ANYWHERE. The loops are stacked with 0.218 of solid rock
between them and there is no geometric connection at all. The
teleport cog is the whole transport system, and its arrival points
are ghost things that carry a yaw, so you always come out facing the
panels.
WHAT IS IN THE GOB
------------------------------------------------------------------------
97 episode.jk
633169 jkl\p45lathe.jkl
15090 jkl\p45lathe.manifest.json
2411 cog\p45tele.cog
32908 mat\p45brc0.mat
32908 mat\p45brc1.mat
32908 mat\p45brc2.mat
32908 mat\p45brc3.mat
32908 mat\p45cel0.mat
32908 mat\p45cel1.mat
32908 mat\p45cel2.mat
32908 mat\p45cel3.mat
32908 mat\p45flr0.mat
32908 mat\p45flr1.mat
32908 mat\p45flr2.mat
32908 mat\p45flr3.mat
32908 mat\p45pnl0.mat
32908 mat\p45pnl1.mat
32908 mat\p45pnl2.mat
32908 mat\p45pnl3.mat
32908 mat\p45vlt0.mat
32908 mat\p45vlt1.mat
32908 mat\p45vlt2.mat
32908 mat\p45vlt3.mat
32908 mat\p45wal0.mat
32908 mat\p45wal1.mat
32908 mat\p45wal2.mat
32908 mat\p45wal3.mat
1440559 bytes in 28 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.
========================================================================































