CleverRaven / Cataclysm-DDA

Cataclysm - Dark Days Ahead. A turn-based survival game set in a post-apocalyptic world.
http://cataclysmdda.org
Other
9.95k stars 4.08k forks source link

Farming Improvements: QoL issues that need solving #24294

Open mlangsdorf opened 5 years ago

mlangsdorf commented 5 years ago

This a meta-issue for the farming improvements project: https://github.com/CleverRaven/Cataclysm-DDA/projects/11

I am developing a list of things that make farming and ranching annoying, so hopefully they can be turned into tasks and fixed.

I. Ranching: A. Acquiring and relocating livestock

  1. Farm livestock only spawn in a few places (farms, dairy farms, sometimes ranches). They should probably spawn a little more often than that - an infrequent dogpack or moose could be some feral cattle instead. a. Similarly, cattlefodder should spawn at ranches and farms. Currently, the one place you'd expect to have food for cattle does not have it.
  2. Livestock spawn sites may not be good sites for the survivor to set up a ranch - a dairy farm next to a mall, a farm too far away from anything interesting to make scavenging practical. It is possible to relocate friendly livestock, but it's a huge hassle. a. Animals can't be transported by vehicles, so you have to walk them to wherever they're going. This may or may not be feasible, depending on distances and monster density. See #11381 . Probably the best solution is to make a vehicle part with the CAPTURE_MONSTER_ACT action and monster_size_capacity LARGE. Livestock stalls exist and are sufficient for transporting animals. b. Animals can detect danger, often at a greater distance than the PC's effective line of sight. It is a huge hassle to herd cattle any distance, because they just stop following the PC for no obvious reason. This might be resolved as part of the fix for #11381.
  3. Moving while at a fortified ranch or similar concept is a huge pain, too. a. Animals will follow the PC at a random distance but often adjacent. It is nearly impossible to walk out of a barn that has 3+ sheep in it and close the door behind you, because the sheep will crowd the door, and when the PC pushes one away, another takes up the space. The PC has to build "airlocks" out of wire fence (because the PC can climb over a wire fence but livestock can't) but wire fencing takes a huge amount of wires and time to build. Making animals not enter a door space if the PC is adjacent to the door would probably solve this problem and is relatively straightforward. b. A short rope can be used to tie an animal in place, and then the PC can swap places to get controlled movement, but this is tedious. Leading animals by a long rope or something would be great.

B. Interacting with livestock

  1. The interface for milking is a huge hassle to use. Examine an animal, select milk, choose a container, repeat 9+ times... and if there isn't a suitable container, that unit of milk is lost. Milking should probably become a recipe that requires livestock with milk, or should reuse some of the logic from the siphon or unload liquid container code. Siphoning seems to be the preferred approach. Single long action that doesn't lose fluid if there isn't a container: #24665 b. milking is too quick in game time (roughly 2 minutes for 2.5L, should be about 3x that) and needs to be written as a player_activity after #24684 goes in.
  2. With the new animal waste and carrion system, animals produce a huge amount of waste. It's slightly depressing to think of your post-apocalyptic mutant cyborg zombie slayer going around with a shovel and bucket, cleaning up cow-patties to prevent being overwhelmed by mutant cockroaches while fermenting hard cheese. In practice, it's hugely tedious. Much like milking, this needs to become a recipe or long action or something where the player presses a button or two, some time passes, and the waste is dealt with. Instead of requiring the player to walk the survivor to each cow-patty, grab it, and then drop a huge stack on a fire pit. I don't object to the ingame time, I object to spending my time pathing to cow-patties. a. I just realized that if you tell an NPC to pick up items, and put animal waste on their pick-up list, they'll go around picking it up as you walk around. That's a quick 70% solution.

C: Keeping livestock alive

  1. The half-life of livestock in a world of roving zombie hordes is about 2 weeks. Sooner or later a zombie spawns with the reality bubble while the PC is far enough away to not see or hear it, and it kills all the livestock. This has happened on almost every farm I've ever made (except the one on the rooftop of the large firehouse) and it's really, really annoying. a. The new rockwheel helps a bit here, and letting rockwheels or an excavator dig full pits would help a lot. Adding an engineering machine that can set fence posts and string barbed wire would also be really helpful. b. There's still the fundamental problem that any time the PC performs a long action when he's 45-55 tiles away from his livestock, there's a risk of a zombie spawn on the edge of the reality bubble next to the livestock and killing them. There really needs to be a system for understanding barricades/fortifications and preventing monsters from spawning inside of them.

Farming A. Single tile model of farming

  1. C:DDA requires the player to plow, plant, fertilize, and harvest plants one tile at a time. Powered farm equipment helps some here, but the fundamental equation is a bunch of actions per tile. Driving a tractor across a bunch of tiles is not very interesting but needs to be done by hand. Again, this needs to turn into some kind of recipe or long action where the player designates a zone, selects the seeds to plant or crops to fertilize/harvest, presses a button (craft recipe? construction menu?) and game time passes. The player spends less time doing boring bits, and can get back to raiding labs and hunting jabberwockies or whatever. Hopefully being addressed #24826

Comments? Additional issues? Suggested fixes?

ItsJustAlexC commented 5 years ago

for number 4 you could do the same thing you did with the vehicle menu. This time -->examine cow --> milk --->choose container ---> cows milk capacity decreases while your container increases, have the menu refresh (but keeps you on the present menu w/o exiting) --->and keep milking. This is similar to when you use a water pump, or using the water extraction CBM to quickly fill up any desired containers and if no container is available keep the remaining charge in the cow

Night-Pryanik commented 5 years ago

These are all valid points, but please split them into one point per issue.

FulcrumA commented 5 years ago

I am slightly unsure about some of the issues.

  1. I am fine with livestock being relatively rare. Given the scale and severity of the cataclysm, only rare and remote places would have unaffected, alive and not escaped livestock.
  2. I was always under assumption that often it's because livestock places are in remote areas it was believably given to reason the animals have a chance to survive. The farms can be taken over but the distance makes much sense. 2a. I agree though it should be easier to transport animals. At least smaller ones should be transportable (a cat in a car turns into wrecking ball to be crushed by the car's own seats) possibly behaving like NPCs in that regard. For cows and other bigger livestock, probably cargo containers or similar such tiles should work as livestock-only belted seats. Maybe new vehicle part/tile - a cage? 2b. I didn't notice animals detecting danger from further than the player's line of sight. At least with random wildlife it was often even possible for me to herd them between myself and some other predator, thus making it easier to stop their escape, aim and hunt myself some meat. I will look further into this.
  3. Yes, it'd be nice to be able to have animals stay nearby but not cling directly to the PC, again - similar to how it may be with party NPCs. Being able to push/shoo them would also be helpful.
  4. I wouldn't like for it to be a crafting recipe but the something based on siphoning fuel (select cow, choose to milk, milk to selected container - if available - till container is filled or the udder runs dry) seems alright.
  5. For me it is more of a matter of balance of the carrion system itself rather than something that require implementation of a new feature for cleaning. Decreasing rate of spawns per every portion of feces rotting away and ensuring more creatures like flies and regular predators rather than huge cockroaches spawn would help here.
  6. didn't happen to me though I dealt with crops far more than with a livestock so it's possible there's a difference there. Part of it should be importance of fortifications/solid barn but I'd very much appreciate changing spawn in that the carrion/predator spawns always in tiles deemed outside and always at the edge of the bubble, away from crops/predators but already homing on them. That way walls, fortifications and other such stuff would make more sense isntead of being more of a decoration/preventing predator escape as it magically shows up inside.

Farming:

  1. It may be a bit tedious. I'd like one to specify whole farming plot or a part of it as an area and be able to deal with it like that.
Quintovir commented 5 years ago

Ranching

  1. I agree but I would expect cattle/chickens/ducks to spawn in forest/grassland tiles 10+ map tiles away from any zombie/hostile_critters and city tiles. Horses/goats(2 additional sources of fresh milk) could have the same spawn parameters as dogs, except for a reduced spawn rate. I think leaving dehydrated corn (or whatever else deer eats) by hand or using an automatic feeder like hunters do, should attract deer to the location and maybe moose to a lesser extent.

2a. I use the folding parts pack mod in my world. You could add a feature similar to the mod that let's you examine a cow to turn it into an item, so long as you have a short rope. You shift the cow item on a cargo carrier vehicle tile and it will occupy between 150 to 250 liters of cargo space. When you reach your destination and have unloaded the cow item, just activate it to get your unpacked cow and short rope back.

2b. Have an animal powered carriage construction option. Add horse/s or cattle as the "engines" (this should require a good amount of long/short ropes). For a high number of cattle (maybe 7+) you might be required to add 2 trained dogs as vehicle parts so that the cattle doesn't occasionally get unruly and/or strays from the path (the animal powered carriage version of you losing control of a vehicle).

  1. I've yet to play with livestock, so I can't imagine how much of a hassle it is to deal with their waste. What I can suggest is that if you only allow your livestock to roam over mounds or seeded/planted tiles, whenever the livestock creates waste on any such tile the waste disappears and that mound tile becomes per-fertilized or the plant becomes fertilized. Any subsequent waste dropped on a fertilized tile still disappears. Creating multiple levels of fertilization is probably not worth the developers' time.

Farming

  1. Something along the lines of what RimWorld uses would be nice. Multiple colored zones to quickly differentiate your plots. An examine plot function to start/stop/change work on the plot and maybe auto-pause parameters for whenever neutral (wild animals and NPCs) or hostile critters get within a certain range while your farming.

Is it intended that using the reaper destroys around 1/2 of the harvest and using the scooper destroys 1/4 of the harvest compared to manual harvesting/picking?

Off-topic: Since I already mentioned it, it would be nice if an auto-pause for neutral entities is added alongside the current one. I don't like it when NPCs steal as much of my stuff as they can carry in a few seconds of real time while I'm crafting or doing something that lets the time fly by.

mlangsdorf commented 5 years ago

I don't think livestock as folding parts is a good model, but animals as vehicleparts in general is a good idea. Let me poke around at the json for that.

mlangsdorf commented 5 years ago

FulcrumA: try leading friendly cows along a road through a forest. They will stop well before you can necessarily see the danger. Which is realistic, I guess, but makes it hard for the player to go shoot the bear or dogs or wolves or whatever that is causing the problem, 20-30 tiles away in the trees.

You can already push animals, but if 4 sheep are vying to get next to you while you try to close a door, you can push one and then one of the others will step into the space.

mlangsdorf commented 5 years ago

Added a livestock carrier, a vehicle mounted pet carrier for large animals: https://github.com/CleverRaven/Cataclysm-DDA/pull/24391 When that gets merged, 1A2 will mostly be resolved.

mlangsdorf commented 5 years ago

Milking is 90% fixed: #24684

Lorith commented 5 years ago

Issues for farming with the new update: Need a way to water large areas at once (sprinkler vehicle part, or using water cannon maybe? I can easily see spraying water in the air to make artificial rain) as well as fertilize large areas. It would also make sense to have similar for weedkiller (and have weedkiller to begin with)

Additionally it appears nothing was done for NPC camps, according to the author of the change, meaning they are basically worthless now for farming.

I have not personally tested it, but this appears to be the case from reading the change itself.

l29ah commented 4 years ago

It would be awesome if the player could be interrupted from reading or cooking by attacking the tamed creatures. This is especially nasty when the player uses horse-driven wagons to move around.

ghost commented 4 years ago

Milking part of this addressed by https://github.com/CleverRaven/Cataclysm-DDA/pull/37523

LyleSY commented 4 years ago

Only just now seeing this, but I have chickens and turkeys occasionally spawning on house roofs with #39696 , that helps 1 a little.

dom4op commented 3 years ago

When it comes to ranching, utilizing cow pies is not the biggest issue from my experience. You can always tie your animals to one spot so that they don't shit all over the place. You can also turn off cockroaches in game options and forget about cow pies entirely.

What really needs to be addressed is bird eggs. The player who keeps a stock of, let's say, chickens needs to collect eggs fairly frequently, otherwise they rot. It can be a bother even with auto-pickup enabled. A solution I would suggest is expanding NPC autopickup functionality to look something like this: "Pickup these items (chicken eggs, manure) from this zone (specify zone), drop off collected items in this tile (minifreezer for eggs, brazier for cow pies, etc.)". NPC will then proceed to scan the area for specified items and, once the items are located, move them to corresponding areas.

At the moment you can tell your NPCs to autopickup stuff, which they will until they run of inventory space. But the player will have to manually take those items from them, which is no less tedious than doing ranching personally.

PatrikLundell commented 3 years ago

0.E2 stable experience... A1. I've had no problem finding horses, and cows (found where you'd expect them, plus one horse on the outskirts of a town still there after I've removed the nearby zombies). Sheep have been a little harder, and only two non zombiefied pigs being seen (one still in a stall at the Tacoma farm, the other last seen chased by zombies in a town). All animals locked in together with zombies have been killed, except for some cats. A1.a. Cattle food hasn't been an issue, and I believe the ingredients for making it have been available in the locations where animals have been found. A3. Leading livestock by a rope would be quite useful. Horse carriages seemed useful until the horses started escaping from their harnesses (possibly scared by horrible chicks breaking out of eggs) time and time again. It can also be noted that animals following the PC is rather sporadic. Sometimes it works fine (until spooked), and sometimes they just won't follow (and forum reports seem to indicate mixed experiences). Cows and horses can be ridden to the destination (assuming the PC strips down to get under the weight limit), while sheep require the tied rope swapping trick when they don't cooperate. I tie down all my livestock even within the stalls eventually built to prevent hassles with them escaping or blocking the gate.

B1. Milking takes a set amount of time, after which you get access to the "stored" milk. This is fine if your container (a canning pot is what I've used) is large enough to take it all, but if all you wanted was a bottle, it's a lot of time for little milk, and even worse if you then find that the container isn't accepted (a bucket or canning pot in the inventory rather than wielded, or you forgot to pick up the container). I can't swear on it, but I think only a single container is accepted per "session", as opposed to a well that keeps asking for additional ones. B2. I believe it should be possible to use the zone system to get NPCs (or the PC) sort out the (literal) crap with just a single order (I haven't bothered as the build doesn't spawn nasty stuff). I believe you need to set a up custom stockpile for the garbage. Egg collection ought to be possible using the same system. However, the zone sorting order suffers from the 60 tile distance rule, so the PC has to make sure to keep all relevant locations within the reality bubble, or the companions will "finish" their work, so the PC can't participate if work is needed at opposite edges of the camp (or do it in two sessions).

C. It would probably be a pain to implement, but having multiple reality bubbles, where one is centered on the PC and one at the center of each (player only?) camp, and, as a future extension, one centered at each companion would make defensive structures actually keep critters out as they'd have to spawn outside of the camp and walk in. Having a camp centered bubble would allow a companion to clear up cow patties while the PC is repairing a parked vehicle just outside of the camp's borders, or even doing a short errand away from the camp, regardless of where the livestock (or, rather, their waste products) are within the camp. Companion centered reality bubbles would permit abstracted companion activities to be replaced by actual ones (the companion actually moving through the terrain foraging [and depleting actual resources there] or patrolling).

github-actions[bot] commented 1 year ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. Please do not bump or comment on this issue unless you are actively working on it. Stale issues, and stale issues that are closed are still considered.