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:
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.
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.
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:
The following must be improved:
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:
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:
Enable the BreakSalv magnet
And we're a-go.