📋 315Drop Master Plan — Phases 6 & 7 (Remaining Work) #1
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
315Drop — Master Plan (Restored from 2 failed sessions)
Problem Statement
Build an Armored Core 3-inspired modular droid game: chassis/slot customization, runtime assembly, GOAP-aware NPC brains, squad orders from satellite view, morale system, and scene persistence for the player squad.
✅ COMPLETED (committed in
a16be6e)Phase 1 — Core Data Layer (ScriptableObjects)
SlotType.cs— SlotCategory, GunMountType, LegType enumsSlotDefinition.cs— [Serializable] slot descriptorChassisDefinition.cs— ScriptableObject chassis configDronePartBase.cs— abstract SO baseInternalPartDef.cs— PowerGenerator / FCS / ThermalManagement / DriveSystem configsGunMountPartDef.cs— weapon hardpoint configSensorSuitePartDef.cs— head/sensor unit configSystemPartDef.cs— radar / jammer / scout launcherDroneCaddyPartDef.cs— back-mount mini carrierDroidLoadout.cs— chassis + slot assignments ScriptableObjectPhase 2 — Runtime Assembly
SlotPoint.cs— MonoBehaviour marks physical slot transformsDroidAssembler.cs— reads DroidLoadout, instantiates at SlotPointsPhase 3 — Physical Systems (MonoBehaviours)
InternalSystemBase.cs+PowerGenerator,TargetingSystem,ThermalManagement,DriveSystemDroneSystemBase.cs+RadarSystem,JammerSystem,ScoutDroneLauncherSensorSuiteUnit.cs— installed by DroidAssembler, configures SensorClusterDroneCaddyUnit.cs+DroneAgent.cs+DroneAgentDef.cs— bay manager + coroutine FSM dronePhase 4 — AI Navigation
AIMovementController.cs— NavMeshAgent wrapper (SetDestination, Stop, IsAtDestination)Action_MoveToPosition— wired to AIMovementControllerGoal_MoveToPosition— priority by distancePhase 5 — NPC Brain Profiles
IBrainConfigurable.cs— interface: ApplyBrainProfile(NpcBrainProfile)NpcBrainProfile.cs— ScriptableObject: goal priority overrides, aggression, patrol radius, etc.NpcBrainLoader.cs— applies NpcBrainProfile to IBrainConfigurable components on Start()Phase 5b — Performance & Sensors
AIManager— persistent NativeArrays, O(1) actor lookup, zero per-frame GCSensorCluster— 4-frame stagger + _groupOffset spreadDroneSensor— attach/detach for scout dronesProjectileSimulator— Burst RocketMoveJob, DontDestroyOnLoadRocket— kinematic CCD projectileDroidPartRegistry,DroidSaveData,DroidSaveSystemPartCatalog.cs+PartLibraryDisplay.cs+ Part Library scene❌ REMAINING WORK
Phase 6 — Squad Orders & Morale
A.
MoraleStateMonoBehaviour (on Actor)float morale(0–1), initialized fromNpcBrainProfileOnMoraleChangedUnityEvent[ProgressBar(0, 1)]displayB.
OrderReceiverMonoBehaviour (on droid root)ReceiveMoveOrder(Vector3 pos)C. New GOAP Goals
Goal_FollowOrderGoal_RetreatGoal_PatrolD.
DroneEquipmentStateMonoBehaviour (GOAP state reader)HasRadar,RadarRange,HasJammer,JammerReady,HasScoutDrones,ScoutDronesRemaining,HasBioSensor,HasECMCanceler,FCSLockCount,FCSSightRange,WeaponMounts,HasWeaponInSlot(SlotType)Goal_Base/Action_Basegetprotected DroneEquipmentState Equipmentaccessor (populated in Awake)Goal_UseJammer.CanRun()→Equipment.HasJammer && Equipment.JammerReadyE.
DirectControlOverseeradditionsOrderReceiver.ReceiveMoveOrder()Phase 7 — Squad Scene Persistence
A.
SquadManager(DontDestroyOnLoad singleton)List<DroneRecord>— DroneLoadout SO + runtime GO + health stateIReadOnlyList<GameObject> ActiveDroidsPlaceDroidsAtSpawnPoints(SpawnPoint[])(finds by tag)int credits,int supplyPoints(persists across scenes)B.
SceneTransitionManagerMonoBehaviour (per scene)SceneTransitionTypeenum: Hangar | CombatZone | MachineDepotTriggerTransition(string sceneTarget)→ PrepareForTransition + LoadSceneC.
SpawnPointadditionssquadRolefield:Any | PlayerUnit | ScoutDronesquadRole == PlayerUniton loadD.
CarrierStrikeControllerMonoBehaviour (optional scene)RequestAirStrike(Vector3 target)— cooldown + VFXsupplyPointsfrom SquadManagerE. Machine Depot (forward base scene)
SceneTransitionType.MachineDepotFolder Layout for Remaining Work
Key Conventions (reminders)
[Button]only — no label string (throws compile error with[Button("label")])rogue_bolter.Scripts.Droidsrogue_bolter.Scripts.Players.GOAP