space-wizards / space-station-14

A multiplayer game about paranoia and chaos on a space station. Remake of the cult-classic Space Station 13.
https://spacestation14.io
MIT License
2.57k stars 3.18k forks source link

Implement slot-based storage #21134

Closed metalgearsloth closed 10 months ago

metalgearsloth commented 11 months ago

ss13 is designed around backpacks having ~7 slots of storage. You'll also need to implement sizing so for example backpacks can't go into backpacks. This also gives stuff like toolbelts / multi-purpose engineer tools more uses due to slot economy.

This will lead to greatly reduced storage across the board but should balance a lot more.

Aisu9 commented 11 months ago

RE4 inventory my beloved :flushed_crying:

Carolyn3114 commented 11 months ago

should only really be for toolbelts

keronshb commented 11 months ago

Storage is highly important so it depends on how this implementation is:

Aisu9 commented 11 months ago

Storage is highly important so it depends on how this implementation is:

* You definitely don't want to be able store the entire medbay or armor on a single person

* But some jobs will definitely require higher storage (Med, Atmos/Engie, Sci come to mind)

Ahem Botany and Cargo... you don't want to delivery 7 items at a time

metalgearsloth commented 11 months ago

Storage is highly important so it depends on how this implementation is:

* You definitely don't want to be able store the entire medbay or armor on a single person

* But some jobs will definitely require higher storage (Med, Atmos/Engie, Sci come to mind)

Most of that should be balanceable around per-department toolbelts being whitelisted.

Cheackraze commented 11 months ago

I dont see any reason why a more restrictive and convoluted storage system would solve any of the issues mentioned that the existing, more generic and robust system can't already solve. Tradition is a terrible excuse to implement something.

metalgearsloth commented 11 months ago

mentioned that the existing, more generic and robust system can't already solve. Tradition is a terrible excuse to implement something.

How do you propose solving the shortcomings of the current system.

Cheackraze commented 11 months ago

mentioned that the existing, more generic and robust system can't already solve. Tradition is a terrible excuse to implement something.

How do you propose solving the shortcomings of the current system.

You haven't mentioned any, this seems like a pure change to appease tradition

metalgearsloth commented 11 months ago

mentioned that the existing, more generic and robust system can't already solve. Tradition is a terrible excuse to implement something.

How do you propose solving the shortcomings of the current system.

You haven't mentioned any, this seems like a pure change to appease tradition

Size balancing being a mess which is pretty clear cut.

Cheackraze commented 11 months ago

mentioned that the existing, more generic and robust system can't already solve. Tradition is a terrible excuse to implement something.

How do you propose solving the shortcomings of the current system.

You haven't mentioned any, this seems like a pure change to appease tradition

Size balancing being a mess which is pretty clear cut.

The existing system takes that into account

LordEclipse commented 11 months ago

Resident Evil inventory based system (I love Jenga)

deltanedas commented 11 months ago

Size balancing being a mess which is pretty clear cut.

whats wrong with it already you cant carry 20 stacks of steel in a bag

metalgearsloth commented 11 months ago

Size balancing being a mess which is pretty clear cut.

whats wrong with it already you cant carry 20 stacks of steel in a bag

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

I think most ss13 players would think the ss13 system that's been there for a long time is better than our placeholder one from 5 years ago.

Cheackraze commented 11 months ago

Size balancing being a mess which is pretty clear cut.

whats wrong with it already you cant carry 20 stacks of steel in a bag

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

I think most ss13 players would think the ss13 system that's been there for a long time is better than our placeholder one from 5 years ago.

Most SS13 players think that tile based movement is better, and that you should be able to fart as an action. Tradition is a terrible excuse.

The solution is to balance the healing items so they are larger volume in containers, using the existing system that already implements the restrictions you're looking for

deltanedas commented 11 months ago

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

you already made pr to nerf healing items so why nerf storage on top of that

metalgearsloth commented 11 months ago

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

you already made pr to nerf healing items so why nerf storage on top of that

Bandaiding the bigger issue.

deltanedas commented 11 months ago

i only put bandages/ointment in med belt and leave bag for jugs, is this really a big issue

Cheackraze commented 11 months ago

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

you already made pr to nerf healing items so why nerf storage on top of that

Bandaiding the bigger issue.

Its not a band-aid if its literally using the system as designed to accomplish the desired goal. By definition, not a 'band-aid', its working as intended.

Carolyn3114 commented 11 months ago

I think most ss13 players would think the ss13 system that's been there for a long time is better than our placeholder one from 5 years ago.

most SS13 serves use a system similar to wizden's, also, having seven flat slots would just allow people to hold 70 meds in a bag.. which uh, isn't that extreme

Carolyn3114 commented 11 months ago

I do agree with belts being slot based, that'd be kinda nice, and makes more sense

Carolyn3114 commented 11 months ago

I do agree with belts being slot based, that'd be kinda nice, and makes more sense

which is also how most ss13 servers do it

metalgearsloth commented 11 months ago

most SS13 serves use a system similar to wizden's,

Which ones use a numerical size? tg and cit don't but I didn't find out about others.

Carolyn3114 commented 11 months ago

I don't remember off of the top of my head, but I definitely have played ones like that.

Carolyn3114 commented 11 months ago

they just don't tell you the space of objects and the size your backpack can hold

Carolyn3114 commented 11 months ago

and I'm pretty sure TG has the "slots" but still has a space limit, and you can get more than 7 slots by putting in small items

Qulibly commented 11 months ago

You can carry 100 healing items in backpack alone and toolbelts are largely invalidated.

you already made pr to nerf healing items so why nerf storage on top of that

Bandaiding the bigger issue.

Its not a band-aid if its literally using the system as designed to accomplish the desired goal. By definition, not a 'band-aid', its working as intended.

Won't perhaps increasing space taken by medicine while increasing medical toolbelt storage fix the issue?

EmoGarbage404 commented 11 months ago

ngl item sizes are an absolute pain for balancing. Juggling the values between different items with such a high degree of control over the "size" manages to encompass the worst of both worlds. It not only is an annoying numbers game, where storage is defined by upper size thresholds that they are able to contain, but it also invalidates alternative storage options, as concepts like volume are not super compatible.

Throwing things into general classifications small/medium/large/very-large and then just having slots makes the whole process a lot simpler. Coders and players don't need to consider the intricate differences of a few points of size when it comes to balancing. It simplifies down the logic a lot while allowing greater variability in functionality between containers like toolboxes, which right now are extremely irrelevant.

metalgearsloth commented 11 months ago

Relevant tg code btw:

https://github.com/tgstation/tgstation/blob/ef566627d267529d4637e570ed0019ab8c738afa/code/datums/storage/storage.dm#L330

Much easier to manage with:

  1. weight classes (and relevant whitelist for maximum weight class that fits).
  2. max slots
  3. max storage.
Helicaste commented 11 months ago

Tradition doesn't matter to a game's functionality. "SS13 does it this way" yeah, who asked.

Medical capacity is irrelevant because its something resolvable within the current system.

Medical capacity is also irrelevant because a certain slot-based system allows dufflebags to store full medkits inside, making it MORE efficient at doing the one specific thing this post was made in conjunction with. As is also relevant, spears.

It is not "easier to balance" slot capacity versus item weight, they both require proportions and comparisons for what you can actually use whatever "quantity of capacity" for.

Current "Weight" can encompass both mass and volume through comparison. 10 Steel < 20 Steel, Fireaxe is too large, ect.

Current system can use container whitelists and individual item weight to emphasize storage for specific item types.

I do agree with belts being slot based, that'd be kinda nice, and makes more sense

If you wanted to emphasize toolbelts even further as THE way to store tools, just increase tool weights and increase toolbelt storage capacity.

"Slot-based" system cannot accurately represent volume, item stacks, changes to in-inventory item weight as a whole (foldable items, ect), and is approximately equivalent to a children's wooden shape game; triangle in the triangle hole, ect.

NancokPS2 commented 11 months ago

A way i've seen it done in SS13 is that some storage has "free slots", where if a compatible item is inserted into the storage, their weight does not contribute to the capacity, up to a certain amount of items.

This system allows both to co-exist and is still flexible enough to allow slot-only stuff (like a bandolier or tool belt) where they have 0 capacity, but have a certain amount of free slots for tools. All without putting arbitrary limits like "you can only clip ONE of each tool to a belt"

In the same vein, it allows for mixed storage where a belt may have slots for clipping small items AND a small pocket for general storage.

LordEclipse commented 11 months ago

Don't we uh, have whitelists and blacklists for inventories?

metalgearsloth commented 11 months ago

It is not "easier to balance" slot capacity versus item weight

Manually whitelisting items vs using size classes is not easier.

Helicaste commented 11 months ago

It is not "easier to balance" slot capacity versus item weight

Manually whitelisting items vs using size classes is not easier.

Multiple parts to that, which you're mashing together, or the post just isn't specific enough to tell. It also doesn't mention anything else I said.

It is not "easier" to redo the entire existing system.

It is not "easier" to balance each individual item's numerical carry weight when compared to giving each item an "appropriate" size class. They both require about the same effort -except for items that are physically "small" but "robust" or otherwise require special attention- as either way it's one-line changes to .yml files.

It's not "easier" to add items to a whitelist. It's still .yml changes, and so about the same between the two.

EmoGarbage404 commented 11 months ago

TL;DR

It is not "easier to balance" slot capacity versus item weight, they both require proportions and comparisons for what you can actually use whatever "quantity of capacity" for.

slot capacity is notable since the data being stored is not "arbitrary number equaling some mix of weight and volume." The benefit of the abstraction is that individual items don't need the consideration of how many can be stored in a given container.

Current "Weight" can encompass both mass and volume through comparison. 10 Steel < 20 Steel, Fireaxe is too large, ect.

Except this is basically an antipattern? A single number representing both weight and volume doesn't make sense considering the two concepts are vastly different. How do you describe an item like a mop, which is relatively light but should be too large to fit in a bag? What about large firearms? A spear is roughly equal in size to 3 pistols in terms of weight but logically this makes very little sense.

Current system can use container whitelists and individual item weight to emphasize storage for specific item types.

This also doesn't work unless you want to throw several million tags. There's also the issue of long-term maintenance. Adding tags and ensuring they're on all the relevant entities just so that a toolbox can hold certain items better than others is a pain even just a few months down the road.

I do agree with belts being slot based, that'd be kinda nice, and makes more sense

If you wanted to emphasize toolbelts even further as THE way to store tools, just increase tool weights and increase toolbelt storage capacity.

The issue is this just falls back to what I mentioned earlier about sizes not actually making any sense. So you increase the tool weights and now what? You can't fit a wrench in your pocket because it exceeds the size limit? You can only fit 2 welders in a bag because they're not arbitrarily bigger? What does this point mean for the greater relationship of item sizes?

If the way to 'balance' item sizes is to abstract them conceptually so hard to the point where relative sizes don't even make sense, then they're missing the point. It should be intuitive on some level what I can fit in any given container. Anyone should be able to pick out any item and know on some level what size it is.

The main benefit of static weightclasses vs. an item size is the ability to make that significantly easier. You don't have to waffle around with a numbers game to balance both the intrinsic ideas of how much we think something weighs and the gameplay experience of how much something should weigh. It was already a point of contention when item stack weights accurately depicted the logical preservation of mass in stack combination. Why? Because weight is such a poor abstraction that it hardly even is cognizant as anything other than a size number that you see in the storage UI.

"Slot-based" system cannot accurately represent volume, item stacks, changes to in-inventory item weight as a whole (foldable items, ect), and is approximately equivalent to a children's wooden shape game; triangle in the triangle hole, ect.

bizarre analogy aside, a combination of slots and sizes is better able to accomplish these tasks than the current system. Volume, which is currently wrapped in the bizarre nonsensical abstraction of "size," can simply become it's own property, used to arbiter the logistics of what can be stored in any given size container (Large items can only be stored in containers of a size Very Large).

As for item stacks, I've already elaborated as to why item sizes are a poor fit when it comes to being dynamically changed with stack count, as the changing value of the sizes unintentionally violates underlying balance considerations that exist outside of the logistical way in which weight or volume should work.

As for foldables--well firstly that's not how they function? Foldables move from item to structure, not from item to bigger/smaller item. Even if they did function like that, is our current system the best way of doing that? Does folding an item decrease its weight (no) or decrease it's volume (no)? It would make more sense as an arbitrary "size," like i've mentioned prior. Unfolding an item doesn't arbitrarily change a value of it, but rather reduces the "size" it takes up in the world.

Interrobang01 commented 11 months ago

if this reduces capacity "across the board" then dragging lockers would probably become a meta cause you can easily drag 60 items with 2 o2 closets, although that wouldn't be too hard to fix by increasing the friction or something (that might break cargo though)

anyway this seems like a lot of work to compress like 20 numbers into 3 numbers (5 numbers?), it would probably make inventory look better though

keronshb commented 11 months ago
  • drop weight to escape an emergency.

  • strip a downed crewmate of their suit and bags to get them to medical faster.

  • have a buddy with you on a repair mission to split up tasks and divvy the tools.

I highly disagree with these three.

1 - causes huge micromanagement issues with inventory. It doesn't need to be this complex for LRP/MRP. 2 - No. To heal them? Sure. To transport? No. 3 - NO. Do not make things arbitrarily more difficult.

be incentivised to use stretchers and the addition of carts for cargo (not lockers and chairs, for fucks' sake, that should also be fixed).

This is a (TM). Needing to use stretchers (or a firemans carry) can be introduced with forced blood loss on dragged bodies. Wait for med refactor for this.

Cargo does not need another tool to slow gameplay down.

use pockets, belts and holsters for fast access to a few small things and your bags for slow access to a lot of things.

We're not adding doafters to bags and pockets

CrigCrag commented 11 months ago

If your bag/clothes get stripped while you're being brought to medical on LRP i can guarantee you will never see them again