Skip to content

Archived on 2026-10-24. The Godot rewrite is cancelled. Migration decisions and work checklists below are withdrawn. Original claims, code examples, file paths, and completion statements have not all been revalidated. Use the current documentation and issue register for maintenance decisions.

Script Inventory

Purpose

This inventory lists the main first-party scripts, what system they belong to, and whether they should be migrated conceptually, redesigned, or removed. It focuses on behavior and responsibility, not line-by-line C# translation.

Inventory Legend

Status Meaning
Keep concept Preserve the behavior with a cleaner Godot implementation.
Redesign Preserve player-facing behavior, but split or replace the architecture.
Remove / tool only Do not migrate to runtime unless needed.
Confirm Unknown / needs manual confirmation.

Highest-Risk Large Scripts

Path Script Lines System What It Does Cleanliness Godot Direction
Assets/Script/Game/Entities/Player/Core/AbilityHolder.cs AbilityHolder 1512 Ability/player Stores unlocked abilities, character ability state, general ability state, cooldown activators, projectile/effect spawning, dash, shields, buffs, and many character-specific behaviors. Too large / mixed Redesign into AbilityRegistry, AbilityRunner, and one behavior script/resource per ability.
Assets/Script/Game/Entities/Player/Core/Player.cs Player 960 Player/combat Movement, input, target list, damage/shields, death, health/stamina regen, animation/particles. Too large / mixed Split into movement, health/damage, target sensor, character loadout, feedback.
Assets/Script/Game/Entities/Player/Weapons/PlayerWeapon.cs PlayerWeapon 816 Weapon/projectile/ability hooks Aims, reloads, fires, applies ability flags, calculates damage/crit, handles multishot and character weapon behavior. Too large / mixed Redesign into weapon runner plus attack modifiers/effects.
Assets/Script/Game/Managers/GameManager.cs GameManager 769 Run loop Singleton run authority, UI refs, score, rewards, game over, save updates, leaderboard payloads, stage unlocks. Too large / mixed Split into run state, score, reward, game over, UI flow, progression, leaderboard.
Assets/Script/Game/Entities/Enemies/Enemy.cs Enemy 748 Enemy Enemy health, state machine, player targeting, damage, rewards, death, CC, flee logic. Mixed Keep concept, split health/reward/state/targeting.
Assets/Script/Game/Entities/Player/Stats/PlayerModifier.cs PlayerModifier 589 Stats Calculates final stats from base, shop, upgrade, temporary, ability modifiers. Mixed Keep concept as stat model/calculator; replace direct ability checks with effect stack.
Assets/Script/Shared/GameDataCount.cs GameDataCount 546 Progression/achievements Runtime counters, save aggregation, achievement triggering. Mixed Keep concept, split run counters from achievement rule evaluation.
Assets/Script/External/Network/LeaderboardManager.cs LeaderboardManager 565 Network/platform HTTP leaderboard retrieval/posting, local cache, UI coordination, popularity. Mixed Confirm if needed; isolate platform/network outside core run.
Assets/Script/Game/GameSystem/Rewards/RewardRoller.cs RewardRoller 485 Rewards/UI Queues reward events, rolls upgrade choices, animates cards/chests, handles reroll. Mixed but better bounded Keep concept, split roll logic from UI animation.
Assets/Script/Game/GameSystem/Upgrades/UpgradeFunction.cs UpgradeFunction 468 Upgrades Giant switch applying upgrade enum effects to players. Too large / hardcoded Redesign into UpgradeEffect resources/scripts.
Assets/Script/Game/Entities/EnemySpawner/SpawnerEventManager.cs SpawnerEventManager 414 Spawn/stage Runs creep/special/boss spawn schedules, suppresses creep spawns during miniboss/special, boss transition. Mixed Keep concept as SpawnDirector; clarify event state.

Runtime Core Scripts

Path Script System Important Public Fields / Methods Dependencies Cleanliness Migration
Assets/Script/Game/GameSystem/Bootstrap/GameInitializer.cs GameInitialization Run bootstrap ImportRewardTable, PrepareSpawnAndGameManagerData, PreparePlayer; flags rewardPreparationInit, spawnerManagerInit, gameManagerInit, characterInit. GameManager, GameSession, GameDataLoader, CameraController. Mixed but understandable Keep concept as stage/run bootstrap.
Assets/Script/Game/GameSystem/GameState/GameStateService.cs GameStateService Run state IsPaused, IsRewarding, IsGameOver, IsBossDefeated, OnStateChanged, UpdateTimeScale. Unity Time.timeScale. Clean Keep concept; Godot should emit signals and control pause mode.
Assets/Script/Game/GameSystem/Player/PlayerManager.cs PlayerManager Level/XP AddExperience, EvaluatePendingLevel, OnRewardReady; applies Future Pills and RPG buff on level-up. Player, AbilityFunction, AbilityResources. Mostly clean, some ability coupling Keep concept; move ability side effects elsewhere.
Assets/Script/Game/Stage/Timer.cs Timer Time currentTime, currentSpawnerTime, currentGameTime, start/stop methods. GameManager, UI text. Clean/simple Keep concept.
Assets/Script/Game/Managers/PoolManager.cs PoolManager Pooling GetFromPool, DeactivateObject, dynamic registration. Prefab names, Unity instantiate. Simple but risk-prone Redesign with prewarm limits and metrics.
Assets/Script/Game/Events/GameEvents.cs GameEvents Events Static events for enemy death, achievement, counters, target add/remove. Many systems. Clean but global Keep concept as Godot signals/event bus.

Player and Ability Scripts

Path Script System What It Does Cleanliness Migration
Assets/Script/Game/Entities/Player/Core/AbilityHolder.cs AbilityHolder Ability Central ability state and behavior for dash, character abilities, general upgrades, shields, buffs, projectiles. Too large Redesign.
Assets/Script/Game/Utilities/AbilityFunction.cs AbilityFunction Ability runtime Adds/removes abilities, checks ability presence, starts cooldown coroutines, queues visual effects/potion effects. Mixed singleton Keep concept but split into registry/cooldown/effect queue.
Assets/Script/Shared/ScriptableObjects/Ability.cs Ability Ability data AbilityType, cooldownTime, staminaCost, runtime isOnCooldown, currentCooldownTime. Data mixed with runtime state Redesign as immutable data plus per-player runtime state.
Assets/Script/Game/Entities/Player/Combat/PlayerAttack.cs PlayerAttack Projectile/hitbox Lifetime, hit detection, damage flags, CC, ricochet, explosions, vampiric, sky sword mark. Mixed Split base projectile from hit effects/modifiers.
Assets/Script/Game/Entities/Player/Combat/PlayerAttackCarrier.cs PlayerAttackCarrier Projectile carrier Rockets, explosions, airstrike carriers, delayed attacks. Mixed Keep behaviors as separate ability projectile scenes.
Assets/Script/Game/Entities/Player/Combat/PlayerAOE.cs PlayerAOE Area effects Player area damage/slow style effects. Confirm Keep concept if active.
Assets/Script/Game/Entities/Player/Companion*.cs Companion, CompanionSword, CompanionOrb, CompanionDrone Companion weapons Orbiting/following/targeting companions and attacks. Mixed Keep concept; make each companion a scene with small controller.
Assets/Script/Game/Entities/Player/Circular*.cs CircularRotator, CircularWeapon Orbit weapons Rotating weapon holder and homing/spawn behavior. Mostly focused Keep concept.
Assets/Script/Game/Entities/Player/Presentation/AbilityPanel.cs AbilityPanel HUD Ability/cooldown panel display. Small Keep concept.
Assets/Script/Game/Entities/Player/Presentation/StatusPanel.cs StatusPanel HUD Shows player stats, ammo/reload/cooldown, HP/stamina. Mixed UI/data Keep concept; bind to stat signals.

Upgrade and Reward Scripts

Path Script System What It Does Cleanliness Migration
Assets/Script/Shared/ScriptableObjects/Upgrade.cs Upgrade Upgrade data Upgrade id/name/rarity/effects/values/ability/requirements/evolve/weight/unlock. Useful data, runtime fields mixed in Keep as Godot resource, move runtime state out.
Assets/Script/Game/GameSystem/Upgrades/UpgradeFunction.cs UpgradeFunction Upgrade apply Applies every upgrade effect through one switch. Too large Redesign as effect scripts/resources.
Assets/Script/Game/GameSystem/Upgrades/UpgradeSelection.cs UpgradeSelection Reward input Card navigation/selecting for one/two players. UI/input coupled Keep behavior, rebuild with Godot UI signals.
Assets/Script/Game/GameSystem/Upgrades/UpgradeEvoFunction.cs UpgradeEvoFunction Upgrade evolution Starts counter/time-gated evolution coroutines and swaps abilities/upgrades. Hardcoded Keep concept as EvolutionCondition.
Assets/Script/Game/GameSystem/Upgrades/WeaponEvoData.cs WeaponEvoData Character weapon evolution Character weapon level effects. Confirm Keep concept; inspect manually during character migration.
Assets/Script/Game/UI/GameHUD/Upgrades/UpgradeButton.cs UpgradeButton Reward UI Holds selected upgrade data and calls UpgradeFunction.SelectUpgrade. Simple Replace with UI card node emitting selected upgrade.
Assets/Script/Game/UI/GameHUD/RewardUIController.cs RewardUIController UI placeholder TODO placeholder. Empty Use as conceptual future split.

Enemy and Stage Scripts

Path Script System What It Does Cleanliness Migration
Assets/Script/Game/Entities/EnemySpawner/SpawnerData.cs SpawnerData, SpawnEvent Spawn data Time windows, spawn rate, enemy prefab, spawn directions, runtime flags. Data mixed with runtime flags Split data and runtime state.
Assets/Script/Game/Entities/EnemySpawner/SpawnerEventManager.cs SpawnerEventManager Spawn director Creep/special spawn loops, boss transition, stage/battle state. Mixed Keep concept, redesign state machine.
Assets/Script/Game/Entities/Enemies/Enemy.cs Enemy Enemy core Health, state machine, target finding, damage, rewards, death, CC. Too broad Split into components.
Assets/Script/Game/Entities/Enemies/EnemyCore/*.cs EnemyBaseState, EnemyAttackState, EnemyAttack, EnemyMechanic Enemy state/attack Base state machine and enemy attack primitives. Mostly focused Keep concept.
Assets/Script/Game/Entities/Enemies/EnemyState/*.cs ES*, EAS* Enemy states Chase, idle, spawn, stroll, suicide, warp, normal/ranged/mortar/boss-style attacks. Mostly focused but prefab-coupled Migrate concept per enemy behavior.
Assets/Script/Game/Entities/Enemies/Boss/*.cs SAGoblinKing, SAHydra, SAMinotaur Boss behavior Boss-specific special attack states. Mixed Keep behavior; rebuild as boss state scripts.
Assets/Script/Game/Stage/*.cs CameraController, MapGenerator, EndlessTileMap, ScreenBounds, SkillIndicator, DamagePopUp Stage helpers Camera follow, procedural ornaments/tilemap, indicators, popups. Varied Keep concept as needed.

App, Save, UI, and Platform Scripts

Path Script System What It Does Cleanliness Migration
Assets/Script/App/Core/AppInitiator.cs AppInitiator App boot Initializes static managers, data loader, Steam id, services, save, settings, main menu load. Reasonably clear Keep boot flow concept.
Assets/Script/App/Core/SaveManager.cs SaveManager Save Loads/migrates/saves encrypted player data and config. Mostly clean Keep data model; rewrite platform file handling.
Assets/Script/TinyChaos/Services/Save/SaveService.cs SaveService Save IO New/legacy paths, JSON/binary read/write, backup. Mostly clean Keep concept.
Assets/Script/App/Data/Save.cs Save Save facade Static shortcuts into SaveManager and Steam nickname. Convenient but global Replace with explicit service/autoload.
Assets/Script/App/Managers/AchievementManager.cs AchievementManager Achievements Unlocks achievements, rewards, Steam sync, popups. Mostly clean but static Keep concept.
Assets/Script/App/Managers/ShopManager.cs ShopManager Permanent upgrades Loads/saves shop levels, buys/refunds, applies modifiers to GameSession. Mostly clean but static Keep concept.
Assets/Script/App/Managers/InputManager.cs InputManager Input Keyboard/joystick mapping and images. Mixed Rebuild with Godot InputMap; preserve bindings.
Assets/Script/App/UI/** Controllers/views/buttons/shared UI App UI Main menu, shop, achievements, collections, leaderboard, tooltips, pages. Varied Rebuild UI flow conceptually.
Assets/Script/External/Steamworks.NET/* SteamManager, SteamScript Steam Steam init and helper glue. Platform-specific Confirm Godot platform plan.
Assets/Script/External/Network/LeaderboardManager.cs LeaderboardManager Leaderboard HTTP get/post, filtering, local cache, UI population. Mixed Isolate from run; confirm service endpoint.
Assets/Script/External/Tutorial/* Tutorial scripts Tutorial Separate tutorial player/enemy/manager/spawner. Separate implementation Confirm whether to port or replace.
Assets/Script/External/Editor/* Editor tools Editor only Cheat window, upgrade/spawn editors. Tooling Remove from runtime migration unless useful as reference.

ScriptableObject Definitions

Path Script Key Data Migration
Assets/Script/Shared/ScriptableObjects/Character.cs Character id, weapon, animator, icon, ability, base stats, footstep, UI/lore/unlock/price Godot CharacterResource.
Assets/Script/Shared/ScriptableObjects/Ability.cs Ability type, cooldown, stamina, runtime cooldown fields Split AbilityResource and AbilityRuntimeState.
Assets/Script/Shared/ScriptableObjects/Upgrade.cs Upgrade id, rarity, effect enum list, values, ability, stage filters, requirements, evolution, weight Godot UpgradeResource plus effect resources.
Assets/Script/Shared/ScriptableObjects/LevelData.cs LevelData, StageMap stage index/name, boss, music, per-difficulty map/spawner data/dialog Godot StageResource.
Assets/Script/Shared/ScriptableObjects/ShopUpgrade.cs ShopUpgrade shop type, value/cost list, current level Reference/save-conversion data only. Do not rebuild the old shop system as-is.
Assets/Script/Shared/ScriptableObjects/Achievement.cs Achievement id, title, rewards, icon, secret/unlocked Godot AchievementResource, runtime unlock in save.

Open Questions

  • Some class names were hard to infer from simple inventory because comments contain the word class; use source files as authority during detailed porting.
  • External/Tutorial appears separate from main gameplay. Unknown / needs manual confirmation whether to migrate it.
  • InDevelopment, Testing, Need Revamp, and Draft assets should be triaged before data conversion.