Vehicle Cargo Volumes

I made a pull request (https://github.com/CleverRaven/Cataclysm-DDA/pull/3935) for boards that support storage (think like a ambulance, firetruck, or utility truck with compartments built into the side of the vehicle).

As the comments bought up (and I had been thinking about before when balancing my proposed storage), all forms of cargo space are currently identical volume. This doesn’t make sense and reduces the potential strategy to selecting storage options. Currently seats, beds, trunks, floor trunks, boxes, RV kitchens, FOODCO Buddies, and Welding rigs all support 400 volume. Other than flavor, and minor durability differences seats, beds, boxes and trunks are the same. Floor trunks offer unencumbered passage at no cost, and the mounted tools offer no storage penalty (excepting the mounted forge).
Variation would more realistically reflect the actual storage and balance the usefulness of installed devices (eg: Kitchen and Welding rings) against storage capacity.

My proposed values:
[tt]
Seat 400 -> 200
Bed 400 -> 350
Trunk 400 -> 600 (50% increase to offset reduction in seats and other storage options and gives a reason to pick it over a floor trunk)
Floor Trunk 400 -> 400
Box 400 -> 350 (raise durability making this a better option for external mounting)
RV Kitchen 400 -> 200
Mounted Forge nil -> 200 (It would gain some storage to put it on par with the other mounted devices)
Welding Rig 400 -> 200
FOODCO Kitchen Buddy 400 -> 100 (It is immensely useful with just the dehydrator and purifier alone)
MiniFridge 400 -> 300 (This is in anticipation of it offering refrigeration in the future preserving food, maybe even freezing foods)
Aisle nil -> 50 (You should be able to drop a little in one w/o obstructing it, but not much)
Stow-Boards (new part in my PR, basically boards with built in racks/compartments) nil -> 300 (I intend to balance this at “half a trunk”)
[/tt]

Trunks would get a 50% boost in capacity, floor trunks would remain the same (so the mobility you gain now costs you storage space).
Mounted fixtures would be halved or less (200, 100 in the case of the Kitchen Buddy) to balance their immense usefulness (combined with a solar panel and a large battery you are saving thousands of batteries in the long term).
Boxes would hold less than trunks (this slightly nerfs a loot cart, but they would gain durability).
Aisles would gain a tiny bit of space: while they are not meant for storage, you should be able to drop a tire + jack on one, or a plastic jerry can.
Seats and beds lose space as they are intended to hold people, not stuff. Beds lose less as I imagine they are slightly raised platforms over what amounts to a floor trunk. Seats hold just what you can shove under then or right behind them.
My proposed stow/storage compartment boards shouldn’t have a ton of capacity, but they should be a decent option, 300 sounds fair (1/2 a trunk, 3/4 a floor trunk, and 50 less than a box). They are less durable than a standard board.

Most pre-made vehicles end up with about the same or less capacity overall. Trucks, which are intended to haul stuff are the notable exception. As for player built vehicles, I don’t think the increased capacity of trunks would be a particular balance issue.

While more complex and would involve adding another mechanic, I would think that you should be able to overload seats, beds, and aisles at the cost of losing some use of them. An overfilled bed or seat becomes unusable (you can’t sleep or drive from them) and an overfilled aisle or floor trunk becomes harder to pass though. I would propose only allowing 50 or 100 volume of over-capacity. Trunks, boxes, fixtures, and storage compartment boards would not permit overfilling.

Excepting the last part of an “overfill” mechanic, it would just be a simple patch to vehicle_parts.json

Well I agree with most of the changes exept with reducing the cargo space of the vehicle utilities (kitchen, Foodco, welding rig, forge) which i think should remain in 400, the justifications are somewhat like this:

-These pieces are not build by survivors to serve as containers and balancing them with the other containers is senseless as they also require advanced skills and materials to be constructed instead of just the level 3 you need to install frames.
-We currently have no way to label containers inside vehicles and using this utilities to store the relevant items is as close as we can get to organized storage and installing more kitchens for storage space is a waste of materials .
-A character with high enough skills to make and repair the utilities has no problem installing more trunks on its vehicle rendering the balance moot.
-Reducing the space a vehicle part can store makes is not justified by that part having additional usefull functions (i am looking at the Foodco)
-It is easy to suppose that at least a box is included when installing the unit

Rather than trying to consider what “balances” the game, just consider how much volume it makes sense to assign for a component. The previous total amount of vehicle storage was totally arbitrary, so there’s no reason to make changes based on keeping them the same. I mostly agree with your proposal other than that concept part.

Proposals for what makes sense IMO.
[tt]
Seat 400 -> 50
Bed 400 -> 100
Trunk 400 -> 400
Floor Trunk 400 -> 200
Box 400 -> 350 (raise durability making this a better option for external mounting)
RV Kitchen 400 -> 200
Mounted Forge nil -> nil (it doesn’t make sense to put storage in a forge, the contents would be burned up or otherwise rendered unusable)
Welding Rig 400 -> 200
FOODCO Kitchen Buddy 400 -> 100 (has a ton of stuff crammed in it, seems like storage is secondary)
MiniFridge 400 -> 300 (space takeen up by refrigerator hardware)
Aisle nil -> 50 (You should be able to drop a little in one w/o obstructing it, but not much)
Stow-Boards nil -> 300 (structural components that block movement take up some room)
[/tt]

Seats originally complained about there being contents in them when you try to use them. Likely that has been broken since, no problem bringing that back, though I’m not sure how to enforce it offhand other than making it block movement through the square.

Having built many a rolling house (as well as having moved a painful many times in reality) I feel I have some words to contribute. XD

Seat 400 -> 300, but anything over 10 should “encumber” driving skill in a stacking manner (EG a full seat would have a -30 penalty to driving, if useable at all)
Bed 400 -> 200, but again a penalty should be instituted. If it’s anything hard (Boots, guns, etc) anything over 50 should remove the “This is a comfortable place to sleep” bonus.
Trunk 400 -> 500, I always visual “trunk” as a big empty space to store things in, perhaps mounting ‘shelves’ for storing lots of small things.
Floor Trunk 400 -> 400, but make it ‘fill’ the space that’d normally hold a gas tank or the like, this is going into the under area of the vehicle as well right?
Box 400 -> 300 (raise durability making this a better option for external mounting) I have no complaint with that but I feel there should be a bit less internal space as a “box” implies there’s some kind of internal structure.
RV Kitchen 400 -> 200 I though shelves above the whole sink & stove setup, makes sense. I used to just store drinks in it.
Mounted Forge nil -> 100 (it doesn’t make sense to put storage in a forge, the contents would be burned up or otherwise rendered unusable) Agreed. Though some kind of box under it for charcoal storage or the like might be worthwhile.
Welding Rig 400 -> 200
FOODCO Kitchen Buddy 400 -> 100 It’s described as having a drawer for loose tools, I use it to store misc crafting stuff and batteries (thread, nails, charcoal, etc)
MiniFridge 400 -> 300 (space taken up by refrigerator hardware)
Aisle nil -> 50 (You should be able to drop a little in one w/o obstructing it, but not much)
Stow-Boards nil -> 200 Should be lower to imply it’s just a cabinet on the side, not some massive box welded off the side.
Stow-Quarterboard nil -> 100 I’ve seen utility trucks driving around town in reality with little 4 by 8 boxes hanging off the rear. (They seem to hold Road-cones… can we get road-cone headgear?)

I’d also like to suggest while we’re on the subject that the “stuff inside” glow be removed from Boxes, Floor Trunks, the assorted tool-rigs, if implemented stow-whatevers, and mini-fridges on the grounds that these are closed objects with opaque covers and you shouldn’t be able to see what’s inside, if anything.

[quote=“EkarusRyndren, post:4, topic:3720”]Having built many a rolling house (as well as having moved a painful many times in reality) I feel I have some words to contribute. XD

Bed 400 → 200, but again a penalty should be instituted. If it’s anything hard (Boots, guns, etc) anything over 50 should remove the “This is a comfortable place to sleep” bonus.[/quote]
Need to be careful though, a major item you want to pile on it is blankets, don’t want to accidentally make that render the bed uncomfortable.

Agreed.

[quote=“Kevin Granade, post:5, topic:3720”][quote=“EkarusRyndren, post:4, topic:3720”]Having built many a rolling house (as well as having moved a painful many times in reality) I feel I have some words to contribute. XD

Bed 400 -> 200, but again a penalty should be instituted. If it’s anything hard (Boots, guns, etc) anything over 50 should remove the “This is a comfortable place to sleep” bonus.[/quote]
Need to be careful though, a major item you want to pile on it is blankets, don’t want to accidentally make that render the bed uncomfortable.[/quote]

Blankets are soft though, the system for checking if an object is cloth would work wouldn’t it?

That’s what I mean by “be careful”, things don’t just automatically act the way you expect in reality, we have to code in all the rules for that kind of thing manually, so the actual rule would be “bed loses comfortable status if it holds over 50 volume of non-cloth items”. Even that is going to have some weird corner cases, because you could probably sleep on a pile of sneakers, but not a leather trenchcoat, so then you add leather to the list, and now you’re fine to sleep on a pile of boots.
Stuff like this ends up being a rathole, so I’d rather not mess with it unless it’s really necessary.

[quote=“Kevin Granade, post:7, topic:3720”]That’s what I mean by “be careful”, things don’t just automatically act the way you expect in reality, we have to code in all the rules for that kind of thing manually, so the actual rule would be “bed loses comfortable status if it holds over 50 volume of non-cloth items”. Even that is going to have some weird corner cases, because you could probably sleep on a pile of sneakers, but not a leather trenchcoat, so then you add leather to the list, and now you’re fine to sleep on a pile of boots.
Stuff like this ends up being a rathole, so I’d rather not mess with it unless it’s really necessary.[/quote]

…That makes a lot of sense actually XD Oh well

The current mounted forge has zero storage because it doesn’t have anyplace to store anything. Unlike the kitchen unit, FOODCO buddy, and welding rig, which are specifically crafted to have storage space, the mounted forge is just that; a regular electric forge that’s been welded to a vehicle and connected to the vehicle’s power supply. I considered adding a recipe where you actually craft a specific vehicle forge item to attach to the vehicle, but ended up just going with the simple approach of just attaching the forge directly. I’m starting to think that was a bad move; if people would like a vehicle forge with storage space, just say so and I’ll make one.

I tried to balance realism with “balance” Based on my view of what a “Tile” is I could see trunks holding massive amounts. A bit of this comes from everything is “one tile” Our char, a full fridge… a bear. Going with pure realism, you should be able to shove insane amounts in the bed of a flatbed truck. I didn’t want to radically alter (up or down) the potential volume you can haul in a vehicle. Realism is important, but so is good gameplay. If we go with a “cube a adult human can stand in” for a tile: You end up with ~4 cubic meters (1.6m^3), that is 4000l or 16000vol (using the steel jerrycan for conversion: 100 vol = 25l). Even if we assume half of the vertical space is taken up by clearance with the ground, roof, floor, and whatever is under the floor (tanks, tires, etc). That leaves 8000vol. That is a ton of space. Even quarter that and say a tile is just enough space to stand in (80cmx80cm), you have 2000vol. Realistically a trunk should be able to hold at least half that much (1000vol). However, this vastly improves how much one can store in a vehicle. Looking up a Honda Civic (2013 model), trunk space is 354l or 1416vol (again using the 4vol = 1liter conversion rate). Given I would approximate that with two “trunk tiles” (base on the car design in-game) that puts trunks at 700vol, and that’s just a “shallow” car trunk imagine what the bed of a truck can pile up, or inside a van floor-to-ceiling (or even just “half-way up”). You should be able to store 1000-1500 easy per tile.

I guess we need to establish a bit of a baseline: What do you consider the volume of a raw tile? The maximum that you could fit assuming the bare minimum of a frame, floor and roof are there? How does this compare with what you consider the maximum balanced volume of storage?

I agree with the argument that trying to “cap” storage is rather silly. If someone is hellbent on massive storage they can make a 20x10 land-barge of trunks. Still, the revised numbers mean there is a strong incentive to modify found vehicles for more space if you want it. If you used a school bus, you would rip out the seats for more storage room. Same with other primarily passenger vehicles. I also feel that you should have to balance the utility of mounted tools against storage volume. I actually agree that 400vol in the Weldrig and RV Kitchen makes sense to me (an electric welder isn’t that huge), but I also feel that a square dedicated to storage (trunk) should hold more than 400.

Maybe trunks should be 500, with 100 overflow, but once you go over 500 the tile becomes impassable? So you can put 600 max, but if you’re loading up a truck completely, it means you can’t just walk/crawl to the back of the pile to access it.

I figured beds were raised a bit much like an RV bed. It almost amounts to a mattress mounted over a box or a otherwise raised platform for sleeping. with room beneath. Hence the relatively small storage hit. Still, 200 would be a fair value, maybe 250 and that last 50 counts against comfort?

A bucket seat should have enough space under it to slip some stuff. Maybe 100 before a penalty and they can hold up to 300? Every 10 over begins to hurt driving, everything past 200 make it a blocked tile?

An electric forge is 24vol stand-alone. Yes, it certainty needs some clearance for use and some frame/wiring, however I imagine it’s mounted at waist high and has a bit of space down there for say an anvil and crucible (both of which should survive the heat.) I admit this is a little bit of a consistency issue to me, it means all of the & have /some/ cargo space (and can be “inverted”). Even a nominal 50 would be fine, but it means a player can expect a & can hold /something/. I think a mounted smithy would be nice forge + anvil + crucible + swage & die + a frame for holding stuff in place and offering a little storage.

Stow-Quarterboards would be easy to add as well. Really the only annoyance is they require multiple items to handle the various glyph choices. That is unless I look into making a new location “on_boards” “on_qboards” and make board storage a distinct part that you install onto standard boards/quarterboards. It is a more involved change to do this (I would have to jump into the C++ and not just json), but would mean just two new parts (one for boards and one for quarterboards) and you support all of the various glyph options. I went with 300 for them because they are floor to ceiling.

Volume numbers aside, I’m not at all happy at the prospect of all the special case “things act different if they’re over a threshold” you’re asking for. A given component has a certain amount of storage space available, and it’s a hard limit. I don’t think that’s too ornerous a limitation to accept. The item handling code is already dangerously creaky without adding a bunch of special cases like this to it.

The fact that you keep flipping back and forth between a truck bed and a car trunk in the example highlights an issue, trunks are being used for significantly different things. I’d be perfectly fine with having a seperate “trunk” and “truck bed” parts with differing capacity, and yea, the truck bed would be probably something like 1000 volume, with a future risk of items being ejected from the truck bed by an impact. (likewise items on floors/seats/beds could similarly have a chance of bouncing around)

Just to take your 700vol estimate of a single trunk space as a given, the problem with looking at the sheer volume of the space is that you aren’t able to use that space efficiently, because you aren’t filling it with a fluid or a gas, you’re filing it with various odd-shaped rigid items, and furthermore you’re only filling it to a point where you can actually get at the stuff in a timely manner. Sure when you’re going on a cross-country trip you might spend an hour or more carefully packing items into your trunk to maximize usage, but we’re assuming that isn’t happening, so the volume is limited to the amount you can fill it to by casually placing items in it, while leaving enough room to pull them back out again on demand without having to unpack the whole trunk. In other words, it’s a measure of how much you can easily fit in the trunk, not its maximum theoretical capacity.

The stow-quarterboard strikes me as a bit odd, isn’t just throwing a box in there more representative?
Which reminds me, the original use for the box is a box or basket on a motorcycle or bicycle, so that’d be a greatly restricted volume, like 50 or so. Probably means rejiggering the shopping cart to use something more appropriate.

[quote=“Kevin Granade, post:3, topic:3720”]Proposals for what makes sense IMO.
[tt]
Seat 400 -> 50
Bed 400 -> 100
Trunk 400 -> 400
Floor Trunk 400 -> 200
Box 400 -> 350 (raise durability making this a better option for external mounting)
RV Kitchen 400 -> 200
Mounted Forge nil -> nil (it doesn’t make sense to put storage in a forge, the contents would be burned up or otherwise rendered unusable)
Welding Rig 400 -> 200
FOODCO Kitchen Buddy 400 -> 100 (has a ton of stuff crammed in it, seems like storage is secondary)
MiniFridge 400 -> 300 (space takeen up by refrigerator hardware)
Aisle nil -> 50 (You should be able to drop a little in one w/o obstructing it, but not much)
Stow-Boards nil -> 300 (structural components that block movement take up some room)
[/tt][/quote]

I could only see this making sense if storage is about storing things under the seat - we may decide that is the way to go, but if we make the storage that low the seats should remain usable. Just like how I assume we aren’t piling things on top of the floor trunk, we wouldn’t be piling things on top of the seat. What would be nice is if we had two storage values - an “in” and an “on” value. Things stores “on” a vehicle square blocks or at least hinders movement through that square, and can shift around with sudden acceleration changes. So a “floor” trunk could have 100 “in” storage and an additional 300 “on” storage. Beds and chairs could have 50 “in” storage (things stored in drawers and pockets), but beds could have significantly more “on” storage.

If we don’t want to do the complication of “on” storage, and we go with your values, I would definitely consider seats usable, and the 50 volume to represent things going under the seat and in the pouch in the back. Otherwise it, and the bed, have storage values that are very very low.

Basically, if we don’t want to do a complicated system, I don’t think storage should ever hinder movement, and we should just limit it to things that are “put away”.

Ok, we can drop the idea of overloading. I do agree from a coding perspective it’s a pain. We do have to find a balance between what is feasible to implement, what makes actual sense, and what makes for an enjoyable game experience.

I do agree with the trunk issue: a car trunk and a truck bed are quite different. I do support distinct items, and I agree with the bit about items being dislodged.

As for how much of the theoretical capacity one can fill, I think that largely depends on the details of the objects. Yes, we’re not dealing with fluids, but you could shove soft things like clothing in, low volume things can be packed effectively with little effort. Still. if we take 700 as a base for a car trunk (a Honda Civic’s trunk is a little on the small side for a car trunk, but lets stick with 700vol), and assume a 15% overhead/loss from rigidity and not taking time to optimize packing and you end up with ~600. I assumed that vol value of items somewhat attempts to reflect how well an item can be packed as well as its literal volume. I assumed that is how the packmule trait works, you are better able to work things more efficiently so the extra volume you can carry comes from the reduction that abstracted “awkwardness” volume. I suppose I shouldn’t bring up the packmule trait: It logically could apply to vehicle volumes. However, I don’t think it would be worth the effort to implement.

For that matter there isn’t, as far as I can tell, a volume limit on a standard tile. I can pile up 400,000vol somewhere and go though it just as fast as a single item. I am lead to believe there is a 4096 item limit, but not a volume one.

The issue with a box vs quaterboard is a quaterboard is not passable (thus it preserves IN of adjacent tiles). A box doesn’t block movement. I do agree with boxes and “baskets” being distinct. A basket on a bike is maybe 50 vol, a shopping cart is probably 300 or so, and a toolchest mounted to a trunk is likely closer to 200-250. Maybe if you could mount a box ON a quaterboard?

Remember that most cars in game have multiple trunk sections, too. A “normal” car would have two adjacent trunk sections, not one. So you’re saying that the in-game trunks are significantly more spacious than real-life ones.

I would actually very much like to add a volume limit to regular tiles, actually.

[quote=“GlyphGryph, post:14, topic:3720”]Remember that most cars in game have multiple trunk sections, too. A “normal” car would have two adjacent trunk sections, not one. So you’re saying that the in-game trunks are significantly more spacious than real-life ones.

I would actually very much like to add a volume limit to regular tiles, actually.[/quote]

I accounted for that: A Honda civics’ full trunk space is ~1400vol equiv. I halved that assuming two trunk tiles (as per the in-game car and electric car) to get the 700vol per trunk tile.

Looking up various sedan trunk sizes, 14-16 cubic ft appears to be “normal” (a Civic is actually a little undersided). Which puts us at 1584 to just over 1800vol (again 1vol = 250ml) for a trunk. So anywhere from 750 to 900 logically fits for a trunk tile. Again, I feel that the packing cost is, and should be, represented in the volume of items (as it impacts what you can carry just as much as packing and would allow you to handle on a per-item basis extremely awkward objects). However, if you want to represent it some in the cargo limits, making each trunk square 600-700 would allow for a potential 33% overhead should be more than enough.

If we’re going to differentiate between “bed” and “trunk” of vehicles I’d like to have a bed with a shelving unit that counts as secure but has a (close to) capacity of the “bed” because as it stands, items falling out of the back of a flatbed seems straightforward enough, but in an enclosed vehicle to my knowledge would be extra code-work.

Or maybe a “seatbelt” like object (1 30x rope and a cut of 1 tool?) for “secure rigging” on a part?

I’m totally for there being some differences between the various storage parts.

What’s a “shelving unit” in the bed of a truck? If you mean one of those toolboxes, that’d be a trunk.

One of the reasons I’m a little hesitant to do a full-blown vehicle smithy is that A- with the exception of the forge, the other tools gain no benefit from being hard-mounted (they don’t need power), and B- a single crafted part that has forge, anvil, crucible, swage and die, and a storage frame would be OBSCENELY heavy. I think I will redo the vehicle forge so it has it’s own item and has storage though, so we can just store all the other tools in it instead of having them in an adjacent box.

I’m thinking cheapass metal shelf you throw in there, bolt down, and have straps for shit. Very much jerry-rigged XD