Skip to content

BreakSalv Implementation Roadmap #43617

@SlamBamActionman

Description

@SlamBamActionman

This issue tracks the progress of implementing BreakSalv, the new Salvage gameplay loop. This is a living issue and much of what exists here will be changed based on development feedback and split off into sub-issues in time, with changes after discussion in the Salvage workgroup.

BreakSalv will be implemented in stages parallel to old content. This is to reduce disruption to the normal gameplay functions and avoid mixing old content with new content until the game is ready to fully transfer over to the new gameplay.

Stage 1: Non-Intrusive Changes

The first stage focuses on content that does not conflict with existing gameplay systems and can be implemented without too much concern how they tie into other systems codewise.

Grid pulling

Grid pulling has relatively little impact on old gameplay (not much point for it) and can be implemented alongside old content.

Grid pulling can reuse a lot of the code from the prototype.

  • Bugs must be identified and accounted for. Known bugs in the prototype:
    • Grappling hook displaces the user when destroying the final tile of a grid.
    • Still allows for infinite distance afaik.
  • Some other systems rely on grid mass to work. The grid pulling changes the base grid mass to a more representative value; these other systems must have their values updated to account for that. Known systems:
    • Shuttle thrusters

Note that grid pulling needs to be refined as well; it's not fully certain we want the hook + magboots combo to be the way to do it (maybe a dedicated towing gun instead).

Smelters

Smelters can be implemented as admeme first; this will allow us to find edge case bugs.

PR: #43651

Smelters can reuse a lot of the code from the prototype.

The prototype code has the following features:

  • Can destroy tiles.
  • Can destroy entities (reuses the entity recycler component).
  • Can conveyor items (reuses the conveyor component).
  • Has signalling support (reuses devicelink components).
  • Grid whitelist support.

The following must be improved:

  • Entity deletion whitelist.
  • A lot of entity protoypes must be changed to:
    • Allow for collision with the smelters.
    • Be pullable when not anchored.
  • New sprites, showing when active, destroyed, and which direction the machine is conveying entities.
  • Some system to support whether an entity should give its full material amount or only partial when recycled by the specific entity.
    • This is to make .e.g walls give their full value when in the smelter (and be unrecyclable in the regular recycler), while valuables only give partial in the smelter.

Separation Charges

Separation Charges do not touch any old Salv systems and can be implemented on their own.

Issue: #43632

Safes (Entities)

Safes do not touch any old Salv systems and can be implemented on their own. Also allows for good admeme playtesting.

Issue: #43634

Distributed Spawners

Distributed Spawners are a general gameplay feature and separate from old content.

Issue: #43635

Spawned Grid Variant Passes

This system is intended to be applied selectively to grids and should therefore be safe to work on in parallel to old content.

Issue: #43636

Stage 2: Reliant Changes

The second stage focuses on changes that rely on the features of Stage 1.

Grid Resource Calculation Command

Dev-only command, does not touch old Salv code. Necessitates that the Smelters are implemented.

The Gridcalc command is a command that shows how many resources a grid and its entities will provide when fully recycled.

Salvage Magnet

The Salvage Magnet rework has a lot of the functionality of old content. Rather than remove the old magnet and remake it, or make changes to the old magnet code, it's recommended to instead create a new system in parallel and remove the old one during the transfer. This will result in some copy/pasted code, but this is temporary until the old system is removed.

The magnet is a connecting point for several of the previous systems. The prototype can not be reused for this system. The magnet should support the following:

  • Spawn selection of grids that apply:
    • Variation passes
    • Randomized elements
  • Tracking grid completion
  • License upgrades
  • UI for the views

Magnet chips can also be added to safes with this issue.

Wreck grids compatible with the Salvage Magnet

With everything else in place, new wreck grids should be possible to create and balance.

Distributed spawners and variation passes will do the heavy lifting, but there should be randomized room elements that are compatible with these systems.

Stage 3: Breaking Changes

Mob & Weapon rebalance

A full balance pass should be done on all armor, weapons and tools to ensure it fits with the BreakSalv roundflow. This includes the equipment Salvage has access to via lockers & vendors, which need to be changed. Mobs and weapons should be rebalanced to discourage Salvage using/buying ballistic weaponry.

Mapping changes

Maps need to have Salvage Bays created, following guidelines the workgroup creates. It should be possible to have an intermediate situation where the Salvage Bay is mapped for BreakSalv but old Salvage system is still available, but preferably this should be done very close to the full Transfer.

Stage 4: Full Transfer

Deletion of all old Salvage content

Removal of:

  • Space debris
  • Expeditions & dungeon gen (note: planet generation is a desirable feature to have from the admin side)
  • VGroid
  • Old Salvage magnet

Enable the BreakSalv magnet

And we're a-go.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A: Cargo/SalvageArea: Cargo department or Salvage.D2: MediumDifficulty: A good amount of codebase knowledge required.Holy ShitHOLY SHIT!Issue: MegaissueThis issue is a megaissue. Create issues out of points raised, if they don't exist already.P2: RaisedPriority: Item has a raised priority, indicating it might get increased maintainer attention.S: Help WantedStatus: Requesting additional help for this to be completed.T: RefactorType: Refactor of notable amount of codebase

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions