ShaolinGhost Posted 1 hour ago Posted 1 hour ago (edited) KOTOR ACADEMY Jedi Academy's movement and lightsaber combat inside Knights of the Old Republic II, with KOTOR keeping the rules Development journal · October 2026 Hey everyone, This one is quite different from my usual art and world-building posts. It's got far enough that it needs a proper write-up rather than the odd clip. Kotor Academy brings Jedi Academy's movement, acrobatics and live lightsaber combat into KOTOR II. KOTOR still does what it does best: your stats, the dice rolls, the Force powers and the story. First, where it stands. Everything in this post runs in a single test arena. It isn't playable in the campaign game modules yet by design, there's no download, and I won't give a release date. What I can show is that the core idea works. There are two videos of it running, and the rest of this post covers the larger design and the route from here to something you could actually play through. 01 · What Kotor Academy is Kotor Academy lets you play KOTOR II with Jedi Academy's movement and live saber combat, while KOTOR's d20 still decides every blow that gets through. You run, jump, flip and Force-jump the way you would in Jedi Academy. You swing your saber in real time, and your opponent blocks, parries and fights back using Jedi Academy's own AI. Your character is still your KOTOR character, though. The model, equipment, feats, Force powers, HP and FP all come from KOTOR. When a blow gets past the enemy's guard, KOTOR rolls for it the same way it does in vanilla combat. If that isn't for you, there's a single checkbox in the options menu that turns it all off and puts you back in standard KOTOR. One caveat: switching it off while you're on a platform or mid-air isn't safe yet. The hand-off that puts you back on solid ground is built but not tested. 02 · How it works Two engines run at the same time. KOTOR II is the game you see and play, and a hidden Jedi Academy handles movement, collision, saber combat and enemy AI behind it. Two games, one experience The inspiration is chasmlol's SkyCraft, which pairs Skyrim with a hidden Minecraft running underneath. Kotor Academy does the same thing with KOTOR II and Jedi Academy. KOTOR II is the visible game and renders the world, characters, effects and GUI. Behind it runs a fork of the open-source OpenJK single-player engine, which loads Jedi Academy's base assets from your own install. A patch DLL inside KOTOR II talks to the hidden Jedi Academy through shared memory every frame. KOTOR sends your input and your equipped weapons, so Jedi Academy only ever carries what KOTOR has equipped. Jedi Academy sends back your position, camera and skeleton pose, and KOTOR applies them to your KOTOR character model. The result is your KOTOR character, in your KOTOR gear, playing Jedi Academy animations. Every key has exactly one owner, so overlapping binds never fire twice. KOTOR keeps the rules KOTOR II handles: dialogue, quests, scripts, saves, inventory and equipment, party, XP and level-up, feats, alignment, HP and FP, Force power costs and saves, and all of the d20 combat math. Jedi Academy handles: player movement and acrobatics, collision against a Jedi Academy copy of the area geometry, saber swings, blocks and parries, the third- and first-person camera, and Reborn AI for the enemies handed to it. Hand-offs: dialogue, menus, pause and death all hand control back to KOTOR. Who decides a hit Jedi Academy detects saber, melee and other contacts. If Jedi Academy blocks or parries a swing, it never lands and nothing is rolled. Every contact that does get through goes to KOTOR, which makes its own attack roll (attack bonus against Defense, natural 20s included) and applies its own damage and death. The result goes back to Jedi Academy for presentation. This works in both directions, for your hits on enemies and for theirs on you. The patch is off by default and locked to one exact game executable. If anything doesn't match, it falls back to vanilla behaviour. 03 · Movement and acrobatics Your KOTOR character now moves like a Jedi Academy character, running, flipping and Force-jumping through an arena built for verticality. Showcase1.mp4 Jedi Academy movement on the KOTOR character in the test arena: running, flips, Force jumps up the red-topped towers, stepping stones and balance beams, saber lit. The test arena (plcaa) has purpose-built stations for exactly this: stepping stones, towers, balance beams, stairs and tables. The running, jumping, flips and Force jumps all come straight from Jedi Academy and drive the KOTOR model. Force Jump follows your feats How high you can jump depends on your character's own KOTOR II Force Jump feats, so it depends on your build. The cap is configurable and defaults to level 2. A data file can also set caps per area and mark no-jump zones, so an area that was never designed for a Jedi going over the walls doesn't have to allow it. Being honest: my test character got those Force Jump feats from a save edit, and plcaa is the only area that exists so far, so per-area caps haven't been tried anywhere else yet, and no-jump zones haven't been live-tested yet. The acrobatics also aren't polished on the KOTOR body yet. There's still foot sliding to clean up. 04 · Saber combat and the first duel The first real opponent is a Sith duelist driven by Jedi Academy's own Reborn AI and fighting under KOTOR's rules. CombatShowcase.mp4 The Sith duel: Reborn acrobatics and flips, saber exchanges, Force powers and Lightsaber Throws, with KOTOR's HUD throughout. The Sith is a KOTOR character spawned into Jedi Academy as a Reborn fencer. He fights with Jedi Academy's attack chains, flips, kicks and knockdowns, and he blocks and parries on his own. He also Force-jumps onto platforms to follow you, and in the video he follows me onto the teal table platform. He has since been levelled up to make the fight harder. The logged duel numbers below come from an earlier, lower-level version of him. The numbers behind it Across the logged duel runs, 12 of his contacts reached KOTOR's roll and only one hit, for 20 damage. Eight of mine reached the roll and all eight hit, and one run included a critical on a natural 20 for 33 damage. (My test character was levelled by save edits for testing, so don't read those numbers as balance.) In a separate test, 16 contacts went through the whole hand-off with zero faults. Two duels ran all the way to a native KOTOR death. When he goes down, KOTOR handles damage and death natively (and XP, as an earlier kill showed). His hits on you go through KOTOR as well, with Jedi Academy's pain reactions, and if you lose you get KOTOR's own death screen with control handed back to the game. Weapons Lightsabers: single, double-bladed, short and dual sabers render on the KOTOR model and follow Jedi Academy's swings, with the ignite and retract animation every time you toggle (key 1). The hilt stays in your hand through attacks, jumps, a back-flip and a cartwheel. With dual sabers, each hand's hits get their own d20 roll. Melee and unarmed: these work under KOTOR's rules too. A vibrosword landed 4 contacts on a droid with 2 crits (60 to 14 HP), and unarmed landed 10 punches (25 to 7 HP). Kicks: they roll the d20 and knock the target down but deal no damage. That's by design. Grenades: thrown with Jedi Academy's physics, then KOTOR takes over with its frag explosion, smoke, scorch mark and damage number. A direct hit took a droid from 60 to 40 HP. Stims: a quickbar stim (Adrenal Strength) worked in Live Combat with no round wait. Hostiles only Only enemies can be hurt, using KOTOR's own hostility check. KOTOR's queued, round-based attacks are blocked for the player while Live Combat is on, so the old attack queue can't fire on top of live combat. Scripted scenes are exempt. What's still rough Block and parry feedback: visible sparks, sounds and a Jedi Academy-style attacker bounce on misses aren't in yet. Block rates haven't been measured or balanced either. Hurt reactions: a short torso flinch that never interrupts movement or saber moves is in the build and waiting on my retest. Flourish: the X flourish plays real flourish motion, but one press still showed a brief body turn. Tuning: the Sith's FP pool and level still need tuning. 05 · The Force, KOTOR's way Force powers are KOTOR's own powers, cast through KOTOR's own system, while Jedi Academy keeps your body moving as you cast. You press F to cast from an interim selector bar at the lower right, which shows KOTOR's own power icons and scrolls with the mouse wheel. Push, Stun, Lightning, Lightsaber Throw and self powers go through KOTOR's native cast, with KOTOR's FP cost, saving throws, effects and visuals. Out-of-range or busy casts are refused the way KOTOR would refuse them. As in Jedi Academy, you can cast on the move: you keep running and a torso gesture plays. Two changes are specific to Live Combat. Armor no longer blocks Force powers (my call), and targeted powers auto-aim at the nearest enemy in front of the camera. Lightsaber Throw This is KOTOR's own Lightsaber Throw with its native damage, which is half your caster level (rounded down) in d6. The saber item's damage doesn't factor in. My level 15 test character rolls 7d6 and hit for 17, 27 and 29 in testing. It works from platforms and aims with the crosshair. If you haven't learned the power, right-click keeps the saber in your hand. Right now you stand still while throwing. Throwing on the move, with the saber returning to wherever you are, is on the list. The Sith casts too Jedi Academy's AI decides when he uses a power. KOTOR decides whether it works, based on the powers he knows, his FP and your saves. He cast Push on me and I resisted it on a KOTOR save, and he has cast Stasis too. Later in the fight his casts were refused because he'd run out of FP, which is how it should work. Not there yet Untested powers: plenty of KOTOR's powers, haven't been tried live in a fight yet but ill be testing every power in the game in depth. Built but not live-tested: Force Speed affecting Jedi Academy movement, stun and stasis freezing the target (or you), and a native KOTOR-HUD Force selector to replace the interim bar. Physics: powers don't use Jedi Academy physics yet (push knockback, grip lift and hold). That's planned, not done. 06 · Making it feel native to KOTOR The goal is for Kotor Academy to feel like an option KOTOR always had, not a different game bolted on top. The Live Combat option There's a Live Combat checkbox in KOTOR's Gameplay Options. Turning it on gives you Jedi Academy movement and live combat with KOTOR's d20. Turning it off gives you vanilla KOTOR movement and round-based combat, with the platform and mid-air caveat from section 01 still applying. It's a native checkbox added to the existing panel at runtime, with no .gui file replaced, and your choice is saved in swkotor2.ini under [Kotor Academy]. HUD In Live Combat, KOTOR's combat-queue and target action buttons are hidden (26 controls in all). The enemy you're aiming at gets a compact name and HP panel above its head, clear of the crosshair. Pausing brings back the native HUD. Pause, dialogue and camera Tactical pause: middle mouse uses KOTOR's own pause and gives you the free cursor, native UI and quickbar. Dialogue: conversations hand control to KOTOR, and Live Combat resumes afterwards. First person: F7 switches to a view from the eyes with the head hidden. Arms and saber in first person, and camera collision with walls and props, are still to do. Camera and input fixes: the camera no longer stops on bodies, and clicking with your saber holstered in combat draws it. Lightsaber forms The first pass of form rules is installed in the test build. Soresu works with any saber setup, and its Obi-Wan guard stance plays only with a single blade. All other forms are single-blade only, and dual and double-bladed setups get style buffs instead. This works in the test build but isn't final. I plan to author the final stance animations for each form myself, starting with the Soresu guard, and the buff numbers are first-pass values that still need tuning. Feats and d20 numbers Every contact that gets through is resolved from your character sheet. Your attack bonus and Defense decide hits, natural-20 criticals roll as in KOTOR (seen live), your Force Jump feats set your jump height, and every power costs KOTOR FP. Full KOTOR critical rules, shields, resistances and sneak attacks are still to verify. Stability A recurring crash when loading from the in-game menu or quitting was the big blocker. I traced it to a resource-teardown bug in KOTOR itself, which the arena's station models triggered because they're packed inside the module file (module-local models). A guard now handles it: 5 out of 5 in-game loads and a clean Exit Game, with no new crash dumps. To be clear, this is a fix for the case the arena triggered, not a general KOTOR crash fix. 07 · Shaped by the community A lot of these decisions came out of conversations with other modders, and the project is better for it. I've been sharing progress and asking questions on Discord, and that feedback has shaped the design in a few clear places: Verticality: Jedi Academy movement could carry you over a lot of KOTOR's level design. The discussion around that fed directly into jump height coming from your Force Jump feats, with a configurable cap, per-area limits and no-jump zones. Forms: conversations about how forms should behave with different saber setups helped settle the current form rules. Enemies: the point that the real fun is in fighting enemies, not just moving around, pushed enemy AI up the list, starting with the Sith duelist. Mod compatibility: the discussion made full compatibility with other mods a hard rule rather than a nice-to-have. Jedi Academy required: for legal reasons, owning Jedi Academy is a requirement rather than anything being bundled. Thank you to everyone who has weighed in. Please keep it coming, especially on how the combat feels. 08 · What's next Blasters come next, with more of the Force in parallel, then more enemy types, companions and, eventually, real modules. Blasters Blaster vs blaster: player blasters with Jedi Academy bolts and a KOTOR d20 for every shot. An early pistol prototype fired KOTOR's own red bolt and impact effects, and the d20 decided each hit on a training droid. The muzzle flash doesn't attach yet, I haven't checked the shot sounds, and repeaters, disruptors, bowcasters, ion and sonic weapons are all untested. Blaster vs lightsaber: deflecting and reflecting bolts, decided by the d20 and shown on screen. This isn't in yet. More of the Force Lower tiers (in progress): lower tiers will stay selectable as separate slots, grouped by family: Push/Whirlwind/Wave, Stun/Stasis/Stasis Field, Lightning/Storm, Drain/Death Field and Choke/Kill. Other power chains will show only their top tier. Presentation: every KOTOR Force power will get Jedi Academy presentation. That means KOTOR's visual effects by default, Jedi Academy body animation blended with KOTOR's cast animation, and Jedi Academy physics where it fits. For example, Choke will stay a KOTOR cast and Kill will become a hold-and-move grip. Enemies and companions Enemies: every enemy type driven by Jedi Academy AI and movement under KOTOR's rules, with Force users fighting as Jedi or Reborn and everyone else as troopers. Right now the Sith duelist is the only one. Blaster troopers on Jedi Academy AI and melee enemies who aren't Jedi are both in progress. Companions: party members fighting in Live Combat, with party AI, switching and follow. Combat depth Blocking and parrying: today Jedi Academy's own defence blocks first. The plan is for block skill to scale from KOTOR stats, and for blaster deflection to be decided by the d20 and shown on screen, with every balance number in ini and data files. KOTOR rules: energy shields, resistances, on-hit properties, sneak attacks and the full critical rules behaving as they do in KOTOR. These aren't verified yet, and neither is medpac healing in Live Combat. Dismemberment: Jedi Academy-style dismemberment for every KOTOR creature and character. Jedi Academy decides the cut, KOTOR confirms the death, and an offline pipeline pre-builds the stump caps and severed limbs. So far this is telemetry only. Real modules This is the big one. Jedi Academy collision has to be generated for each KOTOR area and loaded on area transitions. After that comes the campaign from Peragus to the ending, with cutscenes, scripts, puzzles, saves, party changes and mini-games all working. Longer term, I want to remake areas so they reward verticality, with jump rules tuned per area. That's my own level-design project, and it will take a while. Also on the list: merging character creation, visual polish (acrobatics on the KOTOR body without foot sliding, an optional first-person saber), and an additive, reversible installer and uninstaller. 09 · Requirements and compatibility You'll need both games, and Kotor Academy is being built to sit alongside other mods rather than replace their files. Both games: you need to own KOTOR II and Jedi Academy. No Jedi Academy assets are redistributed. The OpenJK fork stays under GPL-2.0, and its base assets load from your own Jedi Academy install. Your JA folder is untouched: Kotor Academy reads the base assets (assets0-3.pk3) from your install and never modifies it, and it doesn't load your Jedi Academy mod pk3s. Tested build: Steam KOTOR II with TSLRCM 1.8.6 installed. The patch is locked to the exact executable I tested with, so GOG and other versions are untested and currently wouldn't activate. Compatibility rule: no wholesale replacement of base 2DA, GUI, dialog or script files. KOTOR data is read at runtime through the game's own resource lookup, so your Override mods win, and Kotor Academy's files are namespaced kja_*. Installs are meant to be additive and reversible. GUI mods: the Live Combat checkbox is added at runtime, and a custom optgameplay_p.gui is accepted. A heavily rearranged GUI overhaul may make it back off safely, leaving the panel as it is without the checkbox. I'm not claiming support for every GUI overhaul. Other patches: its hooks are checked against the other patches in the shared patch_config.toml so nothing gets hooked twice, and it only edits its own section. With Live Combat off, the game is meant to behave like vanilla. My custom animation patches: they coexist. Single-saber custom clips now play only with a single saber, and a fix that hands the X flourish to Kotor Academy in Live Combat is in, waiting on my retest. Still to test: a broader live test with TSLRCM and M4-78EP and an install-manifest audit are planned. Only the test arena has Jedi Academy collision so far. Performance: two engines run at once, and I haven't done any performance or frame-rate testing yet. 10 · Credits Kotor Academy builds on other people's work, and they deserve credit up front. JACoders and the OpenJK project: the open-source (GPL-2.0) Jedi Academy engine that the hidden half of Kotor Academy runs on. chasmlol's SkyCraft: the idea of pairing two games, with one running hidden underneath the other. The TSLRCM team: TSLRCM is part of my test setup and the baseline this is built to respect. The community: for the design discussions that shaped a lot of this. The makers of KOTOR II and Jedi Academy: the two games this is built on. So that's where Kotor Academy is today: one arena and one opponent, and the foundation is doing what I hoped it would. I'm happy to answer questions about the design, and feedback on the combat feel is welcome below. — ShaolinGhost AI DISCLOSURE & FEEDBACK I use AI often in my workflows to assist with creating my mods, including handling monotonous and repetitive tasks. You should assume that anything I post has had AI assistance in some way. As I stated in my Dathomir WIP post, I expect discussion of my projects to remain professional and focused on the actual artwork, performance, and gameplay. Constructive criticism that helps improve the art or gameplay is welcome. Derogatory statements about AI will be ignored. I am here to improve the finished product, and I will not change my workflow to accommodate personal objections to AI. Edited 1 hour ago by ShaolinGhost 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.