The COG Factory / COG Factory Experiments
Battle Tactics 3: Smarter Tactics
The squad from Battle Tactics 2, smarter, in LucasArts' own level 12. They hide behind pillars and crates and lean out to shoot, flank round your line of fire instead of across it, leave a man holding the doorway they came through, fall back and regroup when half of them are down, and crouch through passages too low to walk upright. Built first: every earlier AI and speech-bubble script now rebuilds its memory after you die and restart or load a saved game.
Loading a saved game of another level starts a script with no memory at all. Testing the save-game rule found a real bug in the shipped Battle Tactics 2: load a save of level 1 while level 2 is running, and the speech-bubble script, finding nothing in its memory, dragged the player to the centre of the map every frame. Every script that keeps a memory in the AI projects now checks for a load and rebuilds itself from the level as it is, and Battle Tactics 2, the AI Training Facility, the bubbles and the Motion Study were all rebuilt with it.
Every behaviour is read off the engine, with a control that fails. Members in cover are hidden from the player 56 to 63 percent of the time and visible in every peek, against 7 percent for a squad with no cover; a member told to route round the player keeps 2.4 away on a path that would otherwise pass within 0.1 of him; one member holds the doorway for 18 seconds while the others fight; two killed, the survivors fall back together and come back at once; a member walks a 0.17-high tunnel crouched all the way, where a standing member stops at the mouth. The fights were also re-run with the test's own clock shifted, and every one held. Flanking in a live fight is proven as a mechanism only: in the full fight the flankers still sometimes pass close. Real JK has not run any of it yet.
| project | p67-battle-tactics-3 |
|---|---|
| date | 2026-10-03 |
| package | P67.GOB, UAL-LICENSE.txt, readme.txt, screenshot.jpg |
| build | 1 — 2026-10-03 |
| sha256 | 343856e36e6ef36729222be5cd49c5d14c2b07c6d1532744bcdc1eb8928cab09 |
Installing it
P67.GOBis a level. Unzip it and drop the GOB into yourepisodefolder.- Pick it from the episode list.
The GOB carries its own level, cogs, models, materials, and text.
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
P67.GOB
p66's squad of four, smarter: they fight from cover and peek out to
shoot, flank round your line of fire instead of across it, leave a man
holding the doorway they came through, fall back and regroup when half
of them are down or one is badly hurt, and crouch through low passages
-- in a stock Jedi Knight level re-shipped with the kit.
[cogfactory / p67-battle-tactics-3]
BUILD 1 -- 2026-10-03
sha256 343856e36e6ef36729222be5cd49c5d1
This level is not made or distributed by LucasArts
Entertainment Co.
========================================================================
THIS PACKAGE
------------------------------------------------------------------------
P67.GOB the level
readme.txt this file
screenshot.jpg what it looks like
INSTALLATION
------------------------------------------------------------------------
Drop P67.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, materials and text, and reads the stock resource/ for everything
else.
On a libretro frontend such as RetroArch, unzip first and put P67.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/P67.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
one level: LucasArts' own level 12 (12escape.jkl), re-shipped as p67esc with its own cogs; the p67 squad of four (a trooper, a commando, an officer and a second trooper, in multiplayer skins) waits in the two rooms north of the hangar's ring, two in each, and the level's other stock enemies are where LucasArts put them
the level ends the way the stock level does
NOTES
------------------------------------------------------------------------
COVER: in a fight a member picks a pillar or crate near his place in
the squad's line, goes round to its far side from you and checks you
cannot see him there; he hides 3.5-4.5 s, steps 45 degrees round its
side (90 round a big crate) to shoot for 1.5 s, and steps back; if
you can see him at his cover he takes another
FLANKING: the two flankers each take the flank on their own side of
you, and their route keeps out of a 1-unit circle round you (0.6 if
that is impossible), so they go round you rather than across your
line of fire
THE DOORWAY: when the squad comes through a door to fight you, the
member nearest that door stays in the doorway, watching you, while
the others fight
FALL BACK! / REGROUP!: when half the squad is down, the survivors
fall back together to a rally point (the doorway they came through,
or cover away from you), regroup there and come back at you; a
member hurt to 20 health of 60 falls back on his own
CROUCHING: the navigation map marks passages too low to walk
upright, and a member crouches through them (the crouch is proven in
the project's lab, not needed in this level)
speech bubbles: p66's six (THERE HE IS!, FLANKING!, RELOADING!, MAN
DOWN!, LOST HIM, MOVING UP!) plus FALL BACK! and REGROUP!
after a death and restart (or loading a saved game) every squad cog
rebuilds its memory from the level as it is, so the squad fights
again
retail JK has NOT run this GOB yet: every test so far is the
project's own engine fork; how hard they are (health 60, aim spread
2 degrees, the retreat at half strength or 20 health) is easy to
change: say if they are too easy or too hard
WHAT IS IN THE GOB
------------------------------------------------------------------------
88 episode.jk
1576828 jkl\p67esc.jkl
1269 cog\10_damagefloor.cog
991 cog\10_thinglight.cog
1004 cog\12_cargogenerator.cog
830 cog\12_conveyor.cog
677 cog\12_doorlocked1side.cog
3373 cog\12_endlevel.cog
2723 cog\12_ffieldswitch.cog
1166 cog\12_goals.cog
2496 cog\12_keyedcatwalk.cog
491 cog\12_officerkey.cog
680 cog\12_quickpower.cog
1414 cog\12_sectordamage.cog
2226 cog\12_slantelev.cog
814 cog\12_thinglight.cog
1240 cog\12_trooperelev.cog
19075 cog\bbctl.cog
10114 cog\bbtxt.cog
11926 cog\msctl.cog
2647 cog\msprb.cog
3749 cog\sqgun.cog
11943 cog\t3brn.cog
21312 cog\t3leg.cog
15417 cog\t3nav.cog
29043 cog\t3tac.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
5181 3do\bbb0060.3do
5184 3do\bbb0070.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
4567 3do\bbl00600.3do
4239 3do\bbl00700.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
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
16765 misc\cogstrings.uni
533 misc\ual-license.txt
5355 misc\pup\msky.pup
12521580 bytes in 468 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 is p66's (its brain after p63's Enhanced AI); the level, its
cogs and the troopers, commando, officer and stormtroopers are
LucasArts' own; 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.
========================================================================




