Class Overview
Game objects
House of the Dying Sun primarily uses prefabs with components already attached to them, and their "isActive" state turns on and off by the game. All components are treated like features; disable what isn't going to be used, enable what is. Components are never added or taken away for any reason. Most objects (like ships and projectiles) are made inactive on destruction to be cached for re-use.
Unit Modifiers
See UnitModifier
The game will spawn UNITMODIFIER objects in the hierarchy root on scene startup, and act as objects to duplicate from. They contain a component that extends UnitModifier, and a variable that links to the associated ship.
Active modifiers follow this format:
- "# UNITMODIFIER_UnitModifierName target_ship_type"
Each modifier spawns per ship.
Landmarks
See Landmark and LandmarkScenery
Landmarks determine the layout of the mission, including enemy spawns. They are needed for terror missions.
Terror Mission Objects
See TerrorMission and TerrorMissionBonus
A terror mission object defines text to be displayed during the mission, the landmarks used, and the voice clips to play on certain events. Needed for a sortie template.
Spawners (Flights)
See Flight and FreeFlight
The game uses spawner prefabs to spawn ships, named Flights. FreeFlights are used in landmarks.
Fleet spawner prefabs exist in "## FLEET PREFABS," but do not seem to have any use.
Starmap objects
The starmap is a part of the mission select screen. It is under "#GALAXY_ROOT/GALAXY_ROTATOR/ROOT_Overworld".
Starmap Fleet Widgets
See StarmapPlayerFleetWidget
The only component on "ROOT_PlayerFleet", it determines what direction the model should be facing. The method "PointModelRootAtOverworldNode(OverworldNode)" points to the selected node's transform, and is called in "Update()" if OverworldNode's static variable, selectedNode, is not null.
Nodes
The basic node for a mission has OverworldNode and HUDIconOverworldNode. These objects always have their name in caps, following the format "NODE_MISSIONTYPE_xxx" where x is a number used to separate similarly-named nodes.
Starmap Locations
See CUIStarmapLocation
This regards the large title and subtitle text over the major and minor locations in the galaxy, updated when "Awake()" is called.
Scenes
The game only uses one scene to minimize load times, and to smoothly transition between the mission screen and everything else. Things like generators, the GameSpawner, and asset loaders already exist here.
Menus
All menus are located under "# CUI_2D/Camera/ROOT_Menus", with a GATE object (containing a MenuSubstateGate component) and an ANCHOR child object.
Audio
This game uses AudioSource primarily for sound effects, but uses FMOD for music. The objects can be found under "# AUDIO".
Cryptography
An object called "# CRYPTOPLAYERPREFS" is used for encrypting game progress by a later-generated "# GAME".
Units
Units all use, or inherit from, the class Unit. Ships use a class that inherits from Starship.
AI
AI-capable ships have a component that inherits from the AIAgent class, named similarly to their unit type (AI<starship>Agent). Agents use a new AIBlackboard instance to identify hostiles and landmarks, which is primarily adjusted by AITask classes.
Drones use the AIFighterAgent class.
Unused Content
You may find unused or vestigial content throughout the game. This includes, but is not limited to:
- Salvaging
- Unseen ship descriptions
- Team factions
- User sorties
If you choose to revive any existing code and want to publish it, credit Mike Tipul, the original creator. Do not package content that you are not permitted to in your mod.