New Container System

Lets cut to the chase, the current inventory system, while very nice as an abstraction (and far better than most games) still has a major flaw, and that is the separation of volume from the container.

This causes the following problems (of the top of my head):

  1. Dropping a bag with full volume (to get rid of encumbrance for a battle) immediately causes the PC to be overloaded with items; dropping the items with the bag takes too much time, much more than it should.

  2. Large items are somehow contained in more than one container, which is physically impossible. For instance, 2 messenger bags, having a total capacity of 40 can hold a single item with 40 volume, or items adding up to 40 volume. The latter is sensible (so long as none of the items have greater than 20 volume), the former is not since you cannot “divide” the item between bags.

  3. Often there is little advantage to carry a large bag as opposed to two smaller bags of equivalent summed volume, #2 is the reason for this arbitrary equivalency

Now, then, to solve these problems, a new container system/inventory system will have to be implemented. I know this is in the works, but I wanted to share some of my ideas for its implementation, as well as allow this thread to be a suggestion box for this particular issue.

A. Inventory management

In order to leave the item attributes for all containers alone as much as possible (which saves considerable time and manpower) there needs to be an adjustment to the inventory menu and how it operates. A new flag may, however, be necessary for containers to operate in the new way.

I suggest the following:

  1. Containers have individual volume (already an attribute of containers/clothing)
  2. The inventory menu is scrapped for a combined “equipment/inventory” menu, with drop down’s for any containers (explained below)
  3. Containers, upon being selected “open” and their contents are revealed for use:

+reinforced backpack

becomes:

-reinforced backpack (5/40)
category 1
-item 1

  1. In order to do this the items in the backpack need to be “tied” in someway to the back pack itself. That way, whenever something is done to the bag (dropped/picked up), it is also done to the items inside the bag.
  2. A new (M)ove command is necessary to be able to move things around from container to container. It would essentially work the same way filling liquid container’s does. i.e You choose the items to move, then choose the container to move it to, if an item doesn’t fit, you have the “Not enough room, wield?” message display.

B. Picking up items

  1. Have all items picked up, be picked up by volume (largest volume first), this item is then put in to the container with the most free volume (regardless of total volume), and so on until all items are picked up, or an item is picked up which is too “big” to carry in any bag. This adds a more realistic character to inventory management (some might argue it borders on tedium, but the above considerations should make this as painless as possible).
  2. Because the containers are separate entities, you can no longer “divide” items into multiple containers. If you want to carry that car engine, you need to empty your quarter-full backpack to do it, not just wear a trenchcoat to make up the difference.

C. Programming

This is going to be a huge undertaking (if implemented), even reading over this, with my laughable understanding of python, I can see this is going to take some work. This is what I see with my limited eyes:

  1. There needs to be a new attribute/flag that is “on” if the item has any volume (if there is a universal item class, this shouldn’t be too hard to do, I think.) which allows the container to be “linked” to any item which it contains (this part is harder).
  2. The “link” flag/attribute needs to be defined (/associated with a function which is defined) so that any thing that happens to the container, happens also to the items “linked”. Destruction of the container is tricky, either the items contained are also destroyed (makes sense with things like acid/explosions, but not so much with zombie attacks) or simply dropped. The way it could work is, any item dropped into a container has its own “link” flag turned on, this way even containers can be put in other containers (bags inside a bag), though it would serve little purpose (since it doesn’t add any additional volume), it can be used as an organizational measure. When the item is dropped or moved, the link flag is turned off.
  3. The (M)ove command needs to be defined; it can work like this: the link flag is turned off for items to be moved, then turned on again once they are moved to a new container (the container will turn it on).
  4. Picking up needs to be changed. Items that are picked up, need first to be sorted by volume, then put into the container with max volume until all items chosen are picked up, or until space runs out (in which case the usual “no space, wield?” message runs.
  5. Special containers, which I didn’t really talk about, should stay the same (I don’t see a need to change them differently than any other normal item)
  6. The inventory screen should be changed to combined the equipment and inventory menu into one cohesive whole (with the above suggested tabbed drop-downs), rather than two separate lists

Sorry, if anything here is too idiotic to even consider; ignorance is bliss, but whoso loveth instruction, loveth knowledge.

Interesting read.

[quote=“bahihs, post:1, topic:7984”]2. Large items are somehow contained in more than one container, which is physically impossible. For instance, 2 messenger bags, having a total capacity of 40 can hold a single item with 40 volume, or items adding up to 40 volume. The latter is sensible (so long as none of the items have greater than 20 volume), the former is not since you cannot “divide” the item between bags.

  1. Often there is little advantage to carry a large bag as opposed to two smaller bags of equivalent summed volume, #2 is the reason for this arbitrary equivalency[/quote]

This is problem that I am not going to eliminate completely in my hybrid inventory system, will be reduced though.

Kevin plan system where everything is container and there is no general storage area, so his / official / “unified” container inventory system will eliminate this problem.

[quote=“bahihs, post:1, topic:7984”]B. Picking up items

  1. Have all items picked up, be picked up by volume (largest volume first), this item is then put in to the container with the most free volume (regardless of total volume), and so on until all items are picked up, or an item is picked up which is too “big” to carry in any bag. This adds a more realistic character to inventory management (some might argue it borders on tedium, but the above considerations should make this as painless as possible).
  2. Because the containers are separate entities, you can no longer “divide” items into multiple containers. If you want to carry that car engine, you need to empty your quarter-full backpack to do it, not just wear a trenchcoat to make up the difference.[/quote]

Most likely, this is how “unified” container inventory system will work. Problem I see with it is that you will end with items somewhere else than you want all the time. If you don’t care where your items are stored, it will work.

[quote=“bahihs, post:1, topic:7984”]1. There needs to be a new attribute/flag that is “on” if the item has any volume (if there is a universal item class, this shouldn’t be too hard to do, I think.) which allows the container to be “linked” to any item which it contains (this part is harder).
2. The “link” flag/attribute needs to be defined (/associated with a function which is defined) so that any thing that happens to the container, happens also to the items “linked”…[/quote]

Every item has ability to hold any number of items inside of it already, so these flags are not really necessary.

Thanks for your input Roblok, good to know the “link” flags are already in there, it should makes things considerable simpler.

Could you or Kevin, elaborate on the unified inventory system? (Or point me somewhere where this info exists).

Thanks

[quote=“bahihs, post:3, topic:7984”]Thanks for your input Roblok, good to know the “link” flags are already in there, it should makes things considerable simpler.

Could you or Kevin, elaborate on the unified inventory system? (Or point me somewhere where this info exists).

Thanks[/quote]

Would have to be Kevin.

I know about his view of inventory overhaul only from heated discussions we had in the past. If there is any official description of it, I don’t know about it and while I think I know how he wants the system to look like, I don’t want to misinterpret something.

[quote=“Robik, post:2, topic:7984”][quote=“bahihs, post:1, topic:7984”]B. Picking up items

  1. Have all items picked up, be picked up by volume (largest volume first), this item is then put in to the container with the most free volume (regardless of total volume), and so on until all items are picked up, or an item is picked up which is too “big” to carry in any bag. This adds a more realistic character to inventory management (some might argue it borders on tedium, but the above considerations should make this as painless as possible).
  2. Because the containers are separate entities, you can no longer “divide” items into multiple containers. If you want to carry that car engine, you need to empty your quarter-full backpack to do it, not just wear a trenchcoat to make up the difference.[/quote]

Most likely, this is how “unified” container inventory system will work. Problem I see with it is that you will end with items somewhere else than you want all the time. If you don’t care where your items are stored, it will work.[/quote]

What about having like, a “choose where you want to put this in” popup? It would work with all the group of things you tried to take. That way, you’d have to pick up everything in different groups at different times but it would be easier. If one gets full while loading it there, just put everything you can and then a “bag is full” popup, and the first popup again saying where you want to put the rest of the stuff.

[quote=“StopSignal, post:5, topic:7984”][quote=“Robik, post:2, topic:7984”][quote=“bahihs, post:1, topic:7984”]B. Picking up items

  1. Have all items picked up, be picked up by volume (largest volume first), this item is then put in to the container with the most free volume (regardless of total volume), and so on until all items are picked up, or an item is picked up which is too “big” to carry in any bag. This adds a more realistic character to inventory management (some might argue it borders on tedium, but the above considerations should make this as painless as possible).
  2. Because the containers are separate entities, you can no longer “divide” items into multiple containers. If you want to carry that car engine, you need to empty your quarter-full backpack to do it, not just wear a trenchcoat to make up the difference.[/quote]

Most likely, this is how “unified” container inventory system will work. Problem I see with it is that you will end with items somewhere else than you want all the time. If you don’t care where your items are stored, it will work.[/quote]

What about having like, a “choose where you want to put this in” popup? It would work with all the group of things you tried to take. That way, you’d have to pick up everything in different groups at different times but it would be easier. If one gets full while loading it there, just put everything you can and then a “bag is full” popup, and the first popup again saying where you want to put the rest of the stuff.[/quote]

Yes, some form of user override - popup, or something, is planned. Don’t know details though.

I personally don’t like popping popups too much.

Yeah… Hm. We could have a toggle button when you go to the Inventory. Where you change the “popup based inventory” to the old “grab and it goes anywhere” inventory. What about that?

First, a few nits:

  1. Dropping 40 volume of items with a backpack takes the same amount of time as just dropping a backpack already. Or it should, at least.

  2. The stacking encumbrance penalty is the major thing against multiple smaller containers. You CAN wear three backpacks, but you suffer 5 encumbrance for doing so. One duffel bag only gives you 3 encumbrance for the same storage space.

Frankly, I don’t see a more granular inventory system as actually contributing in any degree to gameplay, and only kicking simulation elements down the road in regards to realism. I’ll address the second part of that first:

If you’re applying ‘realism’ in the sense of pockets to objects - for the sake of realism - you need to be consistent or else it’s self defeating. An example problem item is the trenchcoat. It provides a pile of storage (24), but in reality that storage is broken up over several pockets across the trenchcoat, none of which is large enough to hold a single size 12 manhole cover. So for each item, you would need to specifically consider the number of pockets and size, which would be a massive amount of actual brainpower expended on an item-by-item basis in addition to the tedious data entry aspects. Then you need to consider the nature of the ‘pockets’ listed - storing a couple handfuls of oatmeal in a jacket pocket is certainly possible, but storing the oatmeal in helmet netting is not. So you would need to have special flags on storage items to determine what kind of containers can hold what kinds of objects, and corresponding flags on all the different objects out there. And you’d still run into the volume issue of individual dimensions - a two by four is about six feet long, but only has a volume of 6, so it could fit in a larger trenchcoat pocket unless you also specifically look at individual item dimensions and check container dimensions along all axes. There’s more issues with a realistic reflection, but addressing the above are part of the baseline for a ‘realistic’ inventory simulation.

Which is only really the ‘cost’ aspect. The ‘benefit’ aspect would be incredibly, incredibly tiny, because it wouldn’t significantly change player behavior on a macro level. Players would still be able to carry the same amount of volume, players would still prefer a military rucksack to two backpacks, and players would not gain any new or interesting inventory behaviors that can impact day to day play. The primary benefit that I can see would be organization of items on the ground, in that you could make your own go bags or toolboxes or whatever on the fly, but that’s minuscule and I really haven’t run into a case where I’d actually ever need to use one. In practice, it would just be persistently annoying as you would have to reshuffle everything you own constantly to ensure that your largest volume ‘pocket’ was as empty as it could be. It would actually reduce the fun of playing the game.

I have serious issues supporting something that would have serious cost in terms of effort while providing negative value to the game. And keep in mind - because it’s negative value, even if the necessary code/data to implement it fell from the sky because ~magic~, I couldn’t see how it would be worth doing because it would be Not Fun. The reason the current system works is because it assumes the character figures out all of the above on their own without the player needing to come along and tell them where to put their loose oatmeal, which works for any other tedious and stupid thing that you would have to do in reality, like buckling/unbuckling your seatbelt, taking off jackets before taking off shirts, or . And it’s not really important if you keep your comic book or candy bars in your cargo pocket, your backpack, or webbed to your forehead. Even games like Nethack, with its almost neurotic levels of micromanagement, doesn’t see value in individual storage locations beyond those that provide direct gameplay benefits (fireproof bags for scrolls, bottomless bags for heavy things).

There’s definitely improvements to the inventory system that I can see, but I just don’t see how this kind of granularity could possibly be a solution and haven’t heard any real arguments for it other than ‘realism’.

I think he was referring to when you drop your backpack without dropping its associated storage thus overloading the player, and the turn afterwords you drop that overloaded volume it takes an absurd amount of time. I could make several arguments why this is bad and unrealistic, and that dropping this volume should take one turn. Theres also this thread complaining about an unfair death associated with this inconsistent mechanic: http://smf.cataclysmdda.com/index.php?topic=8433.0

Yeah, but that is quick hack fix, lame at best, even for people who actually knows that

I mostly agree with what you are saying.

That is why I am working on hybrid inventory, where only few worn items will work as containers, mostly backpacks. Rest of worn items will still only contribute to general inventory space. All systems have their pros and cons of course, but I am hoping that my system will take best of both extremes and not their worst.

Congrats this is the thread that made me sign up for this forum. I could not stand idly by and not give input on this subject. A genuine Thank You for putting me over my threshold for laziness.

[quote=“bahihs, post:1, topic:7984”]1. Dropping a bag with full volume (to get rid of encumbrance for a battle) immediately causes the PC to be overloaded with items; dropping the items with the bag takes too much time, much more than it should.

  1. Large items are somehow contained in more than one container, which is physically impossible. For instance, 2 messenger bags, having a total capacity of 40 can hold a single item with 40 volume, or items adding up to 40 volume. The latter is sensible (so long as none of the items have greater than 20 volume), the former is not since you cannot “divide” the item between bags.[/quote]

  2. I can agree with.

  3. Makes sense but would be a pain in the *** as MormonPartyboat said. We are better off with the current system.

On a side note, have you been playing a lot of NeoScavenger recently.

I think he was referring to when you drop your backpack without dropping its associated storage thus overloading the player, and the turn afterwords you drop that overloaded volume it takes an absurd amount of time. I could make several arguments why this is bad and unrealistic, and that dropping this volume should take one turn. Theres also this thread complaining about an unfair death associated with this inconsistent mechanic: http://smf.cataclysmdda.com/index.php?topic=8433.0[/quote]

If it takes the same amount of time then there is the solution. I don’t know if it does but if not then it should.

If you mean dropping your backpack and forgetting to drop your items. Then a simple solution would be a popup to let you know you are about to do so. If you mean that it doesn’t do it all in one turn, then refer to the sentence above.

A good addition to this also would be for picking up your dropped items. We can assume that the backpack or rucksack or whatever you choose to carry items with will have the items inside it. So it would make sense for those items to be picked up with the bag. Of course this would require a bit of code dictating that player dropped items, when dropped with a container in the same turn (or separate turns, up to devs), are picked up just as fast as the container. This would essentially allow for your own kind of emergency bags too.

With this I put to simple vote even though I lack any authority to do so. Yay or Nay.

Thanks for all the input guys.

First @Mormon, I actually did consider the whole “hyper-realistic pockets” system when i was writing up my suggestion. And for the same reasons you stated, I rejected it. However, I still believe that separation of containers and volume is a necessary change. Even if there is still a level of abstraction (i.e individual pockets are not simulated) if only to allow the player to sensibly drop backpacks/containers/clothing with items inside them (the idea of dropping a rucksack and manually selecting 120 units worth of volume seems a bit much to me.)

In any case, you also say “There’s definitely improvements to the inventory system that I can see”; would you mind sharing them? :slight_smile:

Also, at the time of writing the op, I didn’t know that you could drop backpack and items with equal volume at the same time without a time penalty (In fact, even now, I’m not so sure this is the case), but if true, then it is a good temporary solution. Also, yes to the notification asking to drop items with a bag, that makes sense.

Robik, I think your middle approach is going to work best until whatever inventory system Kevin decides to implement.

Perhaps the possibility to preselect items to be dropped if a certain item is dropped.(and vice versa)

Preselecting would still leave me manually moving objects along with the bag that’s supposed to intuitively contain them. At that point you’re just “putting” them in that container anyway, just without it technically behaving like a container from the code’s perspective.

Since I already mentioned my planned Hybrid Inventory System in this thread, I would like to proudly announce that the deed is done. If you are interested in trying it out, check the link in my signature.