The COG Factory / COG Factory Experiments
Battle Tactics 2: the Squad
A squad of four Imperial soldiers built from three earlier parts: the Motion Study body (Universal Animation Library walking, running, strafing and jumping on the multiplayer skeleton), a squad brain that sees, tells its squad-mates and flanks, and the level's baked navigation graph, which tells them where the doors are and where a jump is allowed. They find you, open doors to get to you, two hold in front while two work round your sides, they shoot up and down at you, and they jump only where the graph says.
Aiming up and down needs no head and no trig. A projectile's error argument turned out to be a fixed pitch, so the gunner works out the angle to you with a polynomial arc-tangent and fires along it: every shot hit a player above or below, where flat shots hit nothing and the engine's own auto-aim missed every shot fired downward.
Every behaviour is read off the engine, with a control that fails. A door's own leaves open, or with the door messages switched off they never move. The census shows two holding the front and two behind his flanks, or, with the tactics switched off, all four mobbing him. Jumps happen only after a sprinting run-up on the graph's jump edges, and a gap without one is refused rather than walked into. Testing caught four quiet bugs on the way, among them the player's own spawn script switching test god-mode off after 1.5 seconds. The owner ran it in real JK and it worked; his two bug reports from that run (a respawn left the squad half-broken, a dying enemy kept turning) are fixed in build 3, which the owner also confirmed in real JK. Build 4 (2026-10-03) fixes a third bug, found by Battle Tactics 3: loading a saved game of the other level dragged the player to the centre of the map every frame (the speech-bubble script started with no memory); build 4 has not run in retail yet. The heap lesson behind the first one became a rule for every single-player cog.
| project | p66-battle-tactics-2 |
|---|---|
| date | 2026-10-03 |
| package | P66.GOB, UAL-LICENSE.txt, readme.txt, screenshot.jpg |
| build | 4 — 2026-10-03 (first packaged 2026-10-03) |
| sha256 | bc7eaa3310180d14b9bf3a973ca29e2e60f5a68c98f958860e63d4aac0601fd4 |
Installing it
P66.GOBis a level pack. Unzip it and drop the GOB into yourepisodefolder.- Pick it from the episode list.
The GOB carries its own levels, cogs, models, and materials.
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
The readme that ships with it
========================================================================
Jedi Knight Level
P66.GOB
A squad of four Imperial soldiers built from three parts: the Motion
Study body (Universal Animation Library locomotion on the multiplayer
skeleton), a squad brain that sees, shares what it sees and flanks,
and the outpost's baked navigation map, which tells them where the
doors are and where a jump is allowed.
[cogfactory / p66-battle-tactics-2]
BUILD 4 -- 2026-10-03 (first packaged 2026-10-03)
sha256 bc7eaa3310180d14b9bf3a973ca29e2e
This level is not made or distributed by LucasArts
Entertainment Co.
========================================================================
THIS PACKAGE
------------------------------------------------------------------------
P66.GOB the level
readme.txt this file
screenshot.jpg what it looks like
INSTALLATION
------------------------------------------------------------------------
Drop P66.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 levels, cogs,
models and materials, and reads the stock resource/ for everything else.
On a libretro frontend such as RetroArch, unzip first and put P66.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/P66.GOB inside it, and will not start
unless that folder also holds resource/ (Res2.gob) from a real install.
CONTROLS
------------------------------------------------------------------------
standard Jedi Knight controls; no new keys
LEVEL 1 (the outpost's west wing) and LEVEL 2 (its doors) each hold ONE p66 squad of four (a trooper, a commando, an officer and a second trooper, in multiplayer skins) and ONE ordinary stock stormtrooper squad in another wing, so you can compare the two
a level ends three seconds after its last enemy, stock or p66, is down
NOTES
------------------------------------------------------------------------
the p66 squad does not know where you are until one of them SEES you
(6 units, a forward cone, a clear line) or a squad-mate who did
tells them over the radio; then two hold in front of you and two
work round your sides
they open the outpost's doors to get to you (they send the door its
own 'activated' message when their route crosses it); on level 2 the
p66 squad starts behind the doors, so watch a door open for them.
They jump only where the navigation graph has a jump edge, and the
outpost has none (the jump is proven in the project's lab, not in
this GOB)
they shoot UP and DOWN at you (each shot is aimed with a pitch they
work out themselves, with a little spread); every six shots one of
them stops to reload and says so
speech bubbles: THERE HE IS!, FLANKING!, RELOADING!, MAN DOWN!, LOST
HIM, MOVING UP!
they walk and run like people (the Motion Study's speeds), so they
are slower than stock troopers. How hard they are is easy to change
(health 60 each, aim spread 2 degrees, radio range 10, flank
distance 2.2): say if they are too easy or too hard
build 3 fixes the two bugs found in real JK on build 2: after dying
and restarting, the squad now fights again (every member, guns
included), and a dying enemy no longer turns. Build 3 was confirmed
in real JK by the owner
build 4 (2026-10-03) fixes a bug found by p67: loading a SAVED GAME
of the other level pinned you at the centre of the map, because the
speech-bubble controller started with no memory and moved the wrong
thing; it now rebuilds its bubbles from the level. Builds 2 and 3
ran in real JK; build 4 has NOT run in retail yet
WHAT IS IN THE GOB
------------------------------------------------------------------------
124 episode.jk
143586 jkl\p66out1.jkl
163582 jkl\p66out2.jkl
19021 cog\bbctl.cog
10114 cog\bbtxt.cog
11926 cog\msctl.cog
2647 cog\msprb.cog
3356 cog\p44door.cog
1691 cog\p44start.cog
2112 cog\p66done.cog
9021 cog\p66xdr.cog
9116 cog\sqbrn.cog
3749 cog\sqgun.cog
15736 cog\sqleg1.cog
17673 cog\sqleg2.cog
13871 cog\sqnav.cog
11069 cog\sqtac1.cog
10771 cog\sqtac2.cog
5180 3do\bbb0000.3do
5182 3do\bbb0010.3do
5183 3do\bbb0020.3do
5181 3do\bbb0030.3do
5181 3do\bbb0040.3do
5181 3do\bbb0050.3do
1217 3do\bbg002.3do
1219 3do\bbg003.3do
1219 3do\bbg004.3do
1221 3do\bbg005.3do
1223 3do\bbg006.3do
1223 3do\bbg007.3do
1223 3do\bbg008.3do
1223 3do\bbg009.3do
1223 3do\bbg010.3do
1223 3do\bbg011.3do
1219 3do\bbg012.3do
1221 3do\bbg013.3do
1221 3do\bbg014.3do
1223 3do\bbg015.3do
1225 3do\bbg016.3do
1225 3do\bbg017.3do
1225 3do\bbg018.3do
1225 3do\bbg019.3do
1225 3do\bbg020.3do
1221 3do\bbg021.3do
1223 3do\bbg022.3do
1223 3do\bbg023.3do
1225 3do\bbg024.3do
1227 3do\bbg025.3do
1227 3do\bbg026.3do
1227 3do\bbg027.3do
1227 3do\bbg028.3do
1227 3do\bbg029.3do
1223 3do\bbg030.3do
1225 3do\bbg031.3do
1225 3do\bbg032.3do
1225 3do\bbg033.3do
1227 3do\bbg034.3do
1229 3do\bbg035.3do
1229 3do\bbg036.3do
1229 3do\bbg037.3do
1229 3do\bbg038.3do
1229 3do\bbg039.3do
1229 3do\bbg040.3do
1229 3do\bbg041.3do
1229 3do\bbg042.3do
1229 3do\bbg043.3do
1223 3do\bbg044.3do
1225 3do\bbg045.3do
1225 3do\bbg046.3do
1225 3do\bbg047.3do
1225 3do\bbg048.3do
1225 3do\bbg049.3do
1227 3do\bbg050.3do
1229 3do\bbg051.3do
1229 3do\bbg052.3do
1229 3do\bbg053.3do
1229 3do\bbg054.3do
1229 3do\bbg055.3do
1223 3do\bbg056.3do
1225 3do\bbg057.3do
1225 3do\bbg058.3do
1227 3do\bbg059.3do
1229 3do\bbg060.3do
1229 3do\bbg061.3do
1229 3do\bbg062.3do
1229 3do\bbg063.3do
1216 3do\bbg102.3do
1218 3do\bbg103.3do
1218 3do\bbg104.3do
1220 3do\bbg105.3do
1222 3do\bbg106.3do
1222 3do\bbg107.3do
1222 3do\bbg108.3do
1222 3do\bbg109.3do
1222 3do\bbg110.3do
1222 3do\bbg111.3do
1218 3do\bbg112.3do
1220 3do\bbg113.3do
1220 3do\bbg114.3do
1222 3do\bbg115.3do
1224 3do\bbg116.3do
1224 3do\bbg117.3do
1224 3do\bbg118.3do
1224 3do\bbg119.3do
1224 3do\bbg120.3do
1220 3do\bbg121.3do
1222 3do\bbg122.3do
1222 3do\bbg123.3do
1224 3do\bbg124.3do
1226 3do\bbg125.3do
1226 3do\bbg126.3do
1226 3do\bbg127.3do
1226 3do\bbg128.3do
1226 3do\bbg129.3do
1222 3do\bbg130.3do
1224 3do\bbg131.3do
1224 3do\bbg132.3do
1224 3do\bbg133.3do
1226 3do\bbg134.3do
1228 3do\bbg135.3do
1228 3do\bbg136.3do
1228 3do\bbg137.3do
1228 3do\bbg138.3do
1228 3do\bbg139.3do
1228 3do\bbg140.3do
1228 3do\bbg141.3do
1228 3do\bbg142.3do
1228 3do\bbg143.3do
1222 3do\bbg144.3do
1224 3do\bbg145.3do
1224 3do\bbg146.3do
1224 3do\bbg147.3do
1224 3do\bbg148.3do
1224 3do\bbg149.3do
1226 3do\bbg150.3do
1228 3do\bbg151.3do
1228 3do\bbg152.3do
1228 3do\bbg153.3do
1228 3do\bbg154.3do
1228 3do\bbg155.3do
1222 3do\bbg156.3do
1224 3do\bbg157.3do
1224 3do\bbg158.3do
1226 3do\bbg159.3do
1228 3do\bbg160.3do
1228 3do\bbg161.3do
1228 3do\bbg162.3do
1228 3do\bbg163.3do
1216 3do\bbg202.3do
1218 3do\bbg203.3do
1218 3do\bbg204.3do
1220 3do\bbg205.3do
1222 3do\bbg206.3do
1222 3do\bbg207.3do
1222 3do\bbg208.3do
1222 3do\bbg209.3do
1222 3do\bbg210.3do
1222 3do\bbg211.3do
1218 3do\bbg212.3do
1220 3do\bbg213.3do
1220 3do\bbg214.3do
1222 3do\bbg215.3do
1224 3do\bbg216.3do
1224 3do\bbg217.3do
1224 3do\bbg218.3do
1224 3do\bbg219.3do
1224 3do\bbg220.3do
1220 3do\bbg221.3do
1222 3do\bbg222.3do
1222 3do\bbg223.3do
1224 3do\bbg224.3do
1226 3do\bbg225.3do
1226 3do\bbg226.3do
1226 3do\bbg227.3do
1226 3do\bbg228.3do
1226 3do\bbg229.3do
1222 3do\bbg230.3do
1224 3do\bbg231.3do
1224 3do\bbg232.3do
1224 3do\bbg233.3do
1226 3do\bbg234.3do
1228 3do\bbg235.3do
1228 3do\bbg236.3do
1228 3do\bbg237.3do
1228 3do\bbg238.3do
1228 3do\bbg239.3do
1228 3do\bbg240.3do
1228 3do\bbg241.3do
1228 3do\bbg242.3do
1228 3do\bbg243.3do
1222 3do\bbg244.3do
1224 3do\bbg245.3do
1224 3do\bbg246.3do
1224 3do\bbg247.3do
1224 3do\bbg248.3do
1224 3do\bbg249.3do
1226 3do\bbg250.3do
1228 3do\bbg251.3do
1228 3do\bbg252.3do
1228 3do\bbg253.3do
1228 3do\bbg254.3do
1228 3do\bbg255.3do
1222 3do\bbg256.3do
1224 3do\bbg257.3do
1224 3do\bbg258.3do
1226 3do\bbg259.3do
1228 3do\bbg260.3do
1228 3do\bbg261.3do
1228 3do\bbg262.3do
1228 3do\bbg263.3do
1216 3do\bbg302.3do
1218 3do\bbg303.3do
1218 3do\bbg304.3do
1220 3do\bbg305.3do
1222 3do\bbg306.3do
1222 3do\bbg307.3do
1222 3do\bbg308.3do
1222 3do\bbg309.3do
1222 3do\bbg310.3do
1222 3do\bbg311.3do
1218 3do\bbg312.3do
1220 3do\bbg313.3do
1220 3do\bbg314.3do
1222 3do\bbg315.3do
1224 3do\bbg316.3do
1224 3do\bbg317.3do
1224 3do\bbg318.3do
1224 3do\bbg319.3do
1224 3do\bbg320.3do
1220 3do\bbg321.3do
1222 3do\bbg322.3do
1222 3do\bbg323.3do
1224 3do\bbg324.3do
1226 3do\bbg325.3do
1226 3do\bbg326.3do
1226 3do\bbg327.3do
1226 3do\bbg328.3do
1226 3do\bbg329.3do
1222 3do\bbg330.3do
1224 3do\bbg331.3do
1224 3do\bbg332.3do
1224 3do\bbg333.3do
1226 3do\bbg334.3do
1228 3do\bbg335.3do
1228 3do\bbg336.3do
1228 3do\bbg337.3do
1228 3do\bbg338.3do
1228 3do\bbg339.3do
1228 3do\bbg340.3do
1228 3do\bbg341.3do
1228 3do\bbg342.3do
1228 3do\bbg343.3do
1222 3do\bbg344.3do
1224 3do\bbg345.3do
1224 3do\bbg346.3do
1224 3do\bbg347.3do
1224 3do\bbg348.3do
1224 3do\bbg349.3do
1226 3do\bbg350.3do
1228 3do\bbg351.3do
1228 3do\bbg352.3do
1228 3do\bbg353.3do
1228 3do\bbg354.3do
1228 3do\bbg355.3do
1222 3do\bbg356.3do
1224 3do\bbg357.3do
1224 3do\bbg358.3do
1226 3do\bbg359.3do
1228 3do\bbg360.3do
1228 3do\bbg361.3do
1228 3do\bbg362.3do
1228 3do\bbg363.3do
4944 3do\bbl00000.3do
4668 3do\bbl00100.3do
5203 3do\bbl00200.3do
4226 3do\bbl00300.3do
3873 3do\bbl00400.3do
4767 3do\bbl00500.3do
5194 3do\bbq0001.3do
5194 3do\bbq0002.3do
5194 3do\bbq0003.3do
5194 3do\bbq0004.3do
5194 3do\bbq0005.3do
5194 3do\bbq0006.3do
5194 3do\bbq0007.3do
5194 3do\bbq0008.3do
5194 3do\bbq0009.3do
5193 3do\bbq0101.3do
5193 3do\bbq0102.3do
5193 3do\bbq0103.3do
5193 3do\bbq0104.3do
5193 3do\bbq0105.3do
5193 3do\bbq0106.3do
5193 3do\bbq0107.3do
5193 3do\bbq0108.3do
5193 3do\bbq0109.3do
5193 3do\bbq0201.3do
5193 3do\bbq0202.3do
5193 3do\bbq0203.3do
5193 3do\bbq0204.3do
5193 3do\bbq0205.3do
5193 3do\bbq0206.3do
5193 3do\bbq0207.3do
5193 3do\bbq0208.3do
5193 3do\bbq0209.3do
5193 3do\bbq0301.3do
5193 3do\bbq0302.3do
5193 3do\bbq0303.3do
5193 3do\bbq0304.3do
5193 3do\bbq0305.3do
5193 3do\bbq0306.3do
5193 3do\bbq0307.3do
5193 3do\bbq0308.3do
5193 3do\bbq0309.3do
5193 3do\bbq0401.3do
5193 3do\bbq0402.3do
5193 3do\bbq0403.3do
5193 3do\bbq0404.3do
5193 3do\bbq0405.3do
5193 3do\bbq0406.3do
5193 3do\bbq0407.3do
5193 3do\bbq0408.3do
5193 3do\bbq0409.3do
5193 3do\bbq0501.3do
5193 3do\bbq0502.3do
5193 3do\bbq0503.3do
5193 3do\bbq0504.3do
5193 3do\bbq0505.3do
5193 3do\bbq0506.3do
5193 3do\bbq0507.3do
5193 3do\bbq0508.3do
5193 3do\bbq0509.3do
5193 3do\bbq0601.3do
5193 3do\bbq0602.3do
5193 3do\bbq0603.3do
5193 3do\bbq0604.3do
5193 3do\bbq0605.3do
5193 3do\bbq0606.3do
5193 3do\bbq0607.3do
5193 3do\bbq0608.3do
5193 3do\bbq0609.3do
5194 3do\bbq0610.3do
5194 3do\bbq0611.3do
5194 3do\bbq0612.3do
5194 3do\bbq0613.3do
5193 3do\bbq0701.3do
5193 3do\bbq0702.3do
5193 3do\bbq0703.3do
5193 3do\bbq0704.3do
5193 3do\bbq0705.3do
5193 3do\bbq0706.3do
5193 3do\bbq0707.3do
5193 3do\bbq0708.3do
5193 3do\bbq0709.3do
5194 3do\bbq0710.3do
5194 3do\bbq0711.3do
5194 3do\bbq0712.3do
5194 3do\bbq0713.3do
5193 3do\bbq0801.3do
5193 3do\bbq0802.3do
5193 3do\bbq0803.3do
5193 3do\bbq0804.3do
5193 3do\bbq0805.3do
5193 3do\bbq0806.3do
5193 3do\bbq0807.3do
5193 3do\bbq0808.3do
5193 3do\bbq0809.3do
5194 3do\bbq0810.3do
5194 3do\bbq0811.3do
5194 3do\bbq0812.3do
5194 3do\bbq0813.3do
5193 3do\bbq0901.3do
5193 3do\bbq0902.3do
5193 3do\bbq0903.3do
5193 3do\bbq0904.3do
5193 3do\bbq0905.3do
5193 3do\bbq0906.3do
5193 3do\bbq0907.3do
5193 3do\bbq0908.3do
5193 3do\bbq0909.3do
5194 3do\bbq0910.3do
5194 3do\bbq0911.3do
5194 3do\bbq0912.3do
5194 3do\bbq0913.3do
5193 3do\bbq1001.3do
5193 3do\bbq1002.3do
5193 3do\bbq1003.3do
5193 3do\bbq1004.3do
5193 3do\bbq1005.3do
5193 3do\bbq1006.3do
5193 3do\bbq1007.3do
5193 3do\bbq1008.3do
5193 3do\bbq1009.3do
5194 3do\bbq1010.3do
5194 3do\bbq1011.3do
5194 3do\bbq1012.3do
5194 3do\bbq1013.3do
5193 3do\bbq1101.3do
5193 3do\bbq1102.3do
5193 3do\bbq1103.3do
5193 3do\bbq1104.3do
5193 3do\bbq1105.3do
5193 3do\bbq1106.3do
5193 3do\bbq1107.3do
5193 3do\bbq1108.3do
5193 3do\bbq1109.3do
5194 3do\bbq1110.3do
5194 3do\bbq1111.3do
5194 3do\bbq1112.3do
5194 3do\bbq1113.3do
2257 3do\p44leafl.3do
2253 3do\p44leafr.3do
299439 3do\key\msbk0.key
357673 3do\key\msbk1.key
260848 3do\key\msbk2.key
144449 3do\key\mscb0.key
183320 3do\key\mscb1.key
134905 3do\key\mscb2.key
144517 3do\key\mscf0.key
183388 3do\key\mscf1.key
134973 3do\key\mscf2.key
259733 3do\key\msci0.key
132496 3do\key\mscw0.key
193605 3do\key\mscx0.key
231366 3do\key\msd10.key
237586 3do\key\msd20.key
237478 3do\key\msdr0.key
435269 3do\key\msf10.key
222038 3do\key\msf20.key
237478 3do\key\msfa0.key
158780 3do\key\msfi0.key
194216 3do\key\msfs0.key
39712 3do\key\msh10.key
52121 3do\key\msla0.key
126358 3do\key\mslp0.key
126360 3do\key\msri0.key
546652 3do\key\msrn0.key
618481 3do\key\msrn1.key
618481 3do\key\msrn2.key
299438 3do\key\mssl0.key
357672 3do\key\mssl1.key
260847 3do\key\mssl2.key
299444 3do\key\mssr0.key
357678 3do\key\mssr1.key
260853 3do\key\mssr2.key
222234 3do\key\msst0.key
283353 3do\key\msst1.key
207128 3do\key\msst2.key
30471 3do\key\mstl0.key
30476 3do\key\mstr0.key
132569 3do\key\mswk0.key
149189 3do\key\mswk1.key
157430 3do\key\mswk2.key
16524 mat\bbart.mat
131212 mat\bbfnt0.mat
32908 mat\p44ceil.mat
32908 mat\p44crat.mat
32908 mat\p44door.mat
32908 mat\p44floor.mat
32908 mat\p44trim.mat
32908 mat\p44wall.mat
533 misc\ual-license.txt
5355 misc\pup\msky.pup
11413231 bytes in 463 entries
CREDITS
------------------------------------------------------------------------
the enemies' locomotion is Quaternius' Universal Animation Library
[Pro] (CC0 1.0, quaternius.com; the license is misc/ual-license.txt
in the GOB), fitted to the multiplayer skeleton by p65 Motion Study;
the on-foot controller is a port of the aeronauts project's (three-
player-controller 0.6.2); the navigation graph is p64's Path-Finder
bake (MIT, after Recast, zlib); the speech bubbles are p64's; the
squad logic follows p63's Enhanced AI; the outpost is p44's; the
troopers, commando, officer and stormtroopers are LucasArts' own
models; everything else was generated by tools/cogfactory.
The readme format is styled after SM Sith Lord's cog headers,
because his are the ones everybody read.
========================================================================






