tobspr-games / shapez.io

shapez is an open source base building game on Steam inspired by factorio!
https://get.shapez.io/gh
GNU General Public License v3.0
6.28k stars 1.21k forks source link

Feature Request: Replace-in-place #408

Closed Djspaceg closed 4 years ago

Djspaceg commented 4 years ago

This one should improve gameplay UX, not be too hard to implement and be intuitive to use:

Replace-in-place, Swap, or Fast-switch

I suggest that when placing a machine, you be able to drop it onto an existing machine, of a matching shape, and have the new one automatically swap for the older one. Any machine should be able to replace any other machine of the same dimensions. This includes variants that have different input directions (painter) or orientations of balancers, just like balancers can replace belts when dropped on top.

A bonus would include being able to fast-swap any machine for any other machine, of any dimension, but this introduces potential unwanted side-effects like bounds checking and potentially overlapping or replacing unintended pieces. Larger for smaller could be a compromise, but it's harder to explain to the user concisely.

Scenario Problem

I'm constantly choosing the machine I want to place, realize the old part is still sitting there, then have to right-click to dismiss, right-click again to delete, then find the machine (click the toolbar or pipette an existing one), choose the variant I want again, and then place it again. The swap-in-place function would cut out all of that, and would be generally useful for those of us that refactor our designs in-place.

Please let me know if this has been suggested already. I posted this to the #suggestions channel on 2020-07-04.

tobspr commented 4 years ago

Well, but when would you want to do this? E.g. swap a color mixer for a stacker? That generally doesn't seem to make too much sense. I'll close this until there are some better use cases (Feel free to reopen!)

Djspaceg commented 4 years ago

Well, but when would you want to do this? E.g. swap a color mixer for a stacker? Actually, that's a great example of a situation I'd like to use this for.

Example: I've just built a design I like that uses stackers. It's well-fed, balanced, and is a great model. I'd like to use this as a base structure and swap out all of the stackers with color mixers, since the busy-work of building these things is arranging all of the lines, splitters, tunnels, etc. With this change, I could copy my stacker factory, paste it, and go stamp in some mixers and boom, perfectly matching mixing factory, well-balanced, with no tedious deletions and replacements. Placing a balancer on a belt already does this.

As for balancers/splitters, it would be very nice to be able to reverse the direction of the balancer or swap sides of a compact-merger building, just by re-placing the reoriented building.

In all honesty, this is a feature in Factorio (Added in FFF-206) that I've really appreciated. In Factorio, balancers can easily swap orientations, while tunnels, inserters, and factories can be upgraded or downgraded in place, without dismissing the tool, deleting the factory and re-selecting the tool. That being said, I didn't mention Factorio initially because I feel this change stands on its own merits.

I believe the UX of this change benefits the user by streamlining their interaction with the game. It's one less barrier to refactoring layouts, using intuitive mechanics. This is, after all, the joy of the game, right?

dengr1065 commented 4 years ago

note: there are some other use cases, such as quick "resetting" buildings without blueprints and replacing distributors/balancers with belts