Skip to content

Vertical Slice Plan

Slice Goal

Build the smallest real version of Andromeda:

One room, one salvage item, one scanner, one decision, one consequence.

The slice should be playable in roughly five minutes and should validate the salvage inspection loop without committing the project to large systems.

Player Flow

  1. Player starts in the salvage bay.
  2. A salvage item is available at the inspection table or near the cargo-side blast door.
  3. Player inspects the item.
  4. Player scans the item at the scanner.
  5. Scanner displays manifest and scan data.
  6. Player carries the item to the tagging bench and packages it.
  7. Player carries the packaged item to a warehouse Sell or Quarantine zone.
  8. Game displays payout or consequence when the item is physically placed in the chosen zone.

First Salvage Item

Item:

Name: Damaged Reactor Coil
Manifest Claim: Civilian power component
Radiation: Low
Mass: Expected
Serial: Valid
Correct/Safe Action: Sell or Dismantle
Alternate Action: Quarantine
Sell Result: payout, no incident
Quarantine Result: safe handling, lower payout

The first item should be mechanically simple. It exists to prove the interaction, scan, classification, and result loop.

The second prototype item is the Personal Effects Case. It should use the same Sell/Quarantine scanner flow for now, but its scan data should imply that the manifest is misleading and that the item may be evidence rather than scrap.

Required Systems

Minimum gameplay systems for the slice:

  • first-person player interaction trace
  • interact prompt hook
  • interactable interface or component
  • carry item component
  • cargo hangar salvage spawn point
  • station placement points
  • salvage item actor
  • salvage item data model
  • scanner actor
  • tagging bench actor
  • warehouse Sell/Quarantine zone actor
  • scan result UI placeholder
  • Sell action
  • Quarantine action
  • result/consequence screen

Required Room Elements

Minimum level elements:

  • salvage bay blockout
  • exterior view window
  • cargo hangar-side blast door or blocked-out connection
  • warehouse-side blast door or blocked-out connection
  • inspection table
  • scanner terminal or scanner station
  • tagging/package area
  • Sell warehouse zone
  • Quarantine warehouse zone
  • simple cart or storage drop-off marker
  • simple lighting pass

The Cargo Hangar and Warehouse do not need to be fully playable for the first slice. They should exist as visible or blocked-out adjacent spaces so the station layout makes sense and does not rely on magic item hatches.

Explicit Non-Goals

Do not add these during the first slice:

  • combat
  • ship piloting
  • inventory complexity
  • procedural generation
  • NPCs
  • multiplayer
  • station-wide simulation
  • large asset packs
  • runtime AI characters
  • complex economy
  • upgrade trees

Completion Criteria

The vertical slice is complete when:

  • the player can interact with a salvage item
  • scan data can be shown to the player
  • the player can choose Sell or Quarantine
  • each choice produces a visible result
  • the room blockout communicates the Cargo Hangar -> Salvage Bay -> Warehouse logistics chain
  • the project-specific content lives under Content/Andromeda
  • the code is structured for extension rather than throwaway prototype logic

Station Blockout Direction

The first blockout should establish the facility as a practical logistics space:

Cargo Hangar <-> Salvage Bay <-> Warehouse

The Salvage Bay remains the main playable room. The Cargo Hangar explains how bulky salvage enters the facility, and the Warehouse explains where processed, tagged, and packaged objects go after handling. Doors should be large blast doors or controlled industrial doors, not item-only hatches.

Recommended first blockout assets:

  • SM_Blockout_SalvageBayShell
  • SM_Blockout_CargoHangarShell
  • SM_Blockout_WarehouseShell
  • SM_Blockout_BlastDoor_CargoHangar
  • SM_Blockout_BlastDoor_Warehouse
  • SM_Blockout_ExteriorWindowFrame
  • SM_Blockout_Workbench
  • SM_Blockout_Package_XS
  • SM_Blockout_Package_S
  • SM_Blockout_Package_M
  • SM_Blockout_Package_L
  • SM_Blockout_DamagedReactorCoil
  • SM_Blockout_PersonalEffectsCase

Package category should eventually be expressed through a shared parent material, category-specific material instances, and signage, not separate meshes for each category/size combination. Current Blender blockouts remain material-free.

  • M_Blockout_Package
  • MI_Blockout_Package_Normal
  • MI_Blockout_Package_Quarantine
  • MI_Blockout_Package_Freezer
  • MI_Blockout_Package_Radiation

This keeps the asset workload contained while supporting many gameplay variants later.

Current Implementation Status

Implemented C++ scaffold:

  • first-person interaction trace
  • interact prompt widget creation and update
  • interactable interface/component
  • carry component for non-physics item pickup and placement
  • salvage spawn point for cargo hangar item arrival
  • salvage item actor
  • salvage item data model
  • scanner actor as an item placement station
  • tagging bench actor for package assignment
  • warehouse zone actor for final Sell/Quarantine processing
  • scan result widget behavior
  • shift/processing result widget behavior
  • Sell/Quarantine-capable processing data path
  • scan/result UI input mode transitions
  • C++ screen/log debug message when salvage is inspected

Implemented editor/input setup:

  • Content/Andromeda content folder scaffold
  • Content/Andromeda/Input/IA_Interact
  • Content/Andromeda/Input/IA_Jump
  • Content/Andromeda/Input/IA_MouseLook
  • Content/Andromeda/Input/IA_Move
  • Content/Andromeda/Input/IMC_Player
  • E mapped to IA_Interact
  • Andromeda player controller adds IMC_Player
  • Andromeda player character has input actions assigned
  • Content/Andromeda/Data/DA_DamagedReactorCoil
  • Content/Andromeda/Blueprints/Items/BP_DamagedReactorCoil
  • Content/Andromeda/Blueprints/Station/BP_Scanner
  • Content/Andromeda/Maps/L_SalvageBay_Prototype
  • prototype map contains a floor, light, player start, one reactor coil, and one scanner
  • scanner accepts a carried salvage item at a placement point; the old overlap scan volume has been removed
  • Content/Andromeda/Blueprints/UI/WBP_ScanResult
  • Content/Andromeda/Blueprints/UI/WBP_ShiftResult
  • scanner UI displays scan data
  • scanner UI displays the salvage item's required/recommended package handling
  • tagging bench assigns the current item's required package as a non-final handling step
  • Sell/Quarantine warehouse zones create the final processing result through C++
  • Content/Andromeda/Blueprints/UI/WBP_InteractPrompt
  • player character creates the interact prompt widget and updates it from focus changes
  • scan/result UI flow shows mouse cursor, uses UI input mode, and suppresses interaction prompts while UI is open
  • closing the result widget restores game input and allows interaction prompts again
  • Content/Andromeda/Blueprints/Core/BP_PlayerCharacter
  • Content/Andromeda/Blueprints/Core/BP_PlayerController
  • Content/Andromeda/Blueprints/Core/BP_SalvageBayGameMode
  • prototype map uses BP_SalvageBayGameMode
  • movement, look, prompt, scanner UI, and Sell/Quarantine result flow work through Andromeda-owned core Blueprints
  • widget Blueprints use Designer layout and named widget bindings; maintained vertical-slice logic lives in C++
  • starter template dependencies were removed by recreating the project from the Blank template

Next Implementation Steps

Next steps in Unreal:

  1. Fix redirectors after asset renames and confirm old duplicate assets are removed through Unreal.
  2. Commit the naming/folder cleanup separately from future gameplay work.
  3. Continue vertical slice polish: processing feedback, bay blockout, scanner station presentation, and result flow clarity.
  4. Block out the Cargo Hangar and Warehouse connections before building detailed salvage bay props, so the room scale and logistics path are correct.

Last Verified Build

The C++ scaffold was compiled with:

AndromedaEditor Win64 Development

The build succeeded. There was an XGE license warning, but no project compile error.