Hello again!
Join the Discord! to see updates as they happen.
So since restarting the games development, I've actually managed to put a good chunk of work into it, and I've gotten a lot done, and I want to write some dev blogs about it, so over the coming weeks I'm going to be retroactively talking about the content I've added in periodic dev updates.
So in this post we're going to talk about farming and items.
Items
Items are interesting in games because pretty much every game has them but no two implementations are the same. In Peasant Simulator, I've implemented what I'm calling "partial items" - meaning that instead of 1x Raw Meat, you have 1.25lb's of Raw Meat. If a recipe calls for 0.2lbs of Raw Meat to create some Jerky for instance, you would be able to create many bits of jerky from a single item of 1.25lbs of Raw Meat.
Farming items are treated the exact same way. When you fill your bucket up with water, the bucket contains an Item called "Brackish Water", and has a capacity to hold say 2lbs of water.
Your seed bag can hold up to 10lbs of any ONE type of seed. So you can't fill it with all sorts, you need to be specific.
I think this could be a neat idea to handle the games many item needs, so I'm going to roll with it for a while and see if it is fun, boring and tedious.
Farming
I've written a lot of the backend features to support farming in the game, and the steps to engage in the mechanic at the moment roughly are as follows:
- Equip your Hoe - Right now all players start with all tools, and cannot remove them, so for now all players will have access to a hoe.
- Find a patch of farmable soil - The map has varying splotches of different color, and they represent either farmable area, or non farmable area.
- 2. Till it with your hoe - This spawns a "plot" actor into the world, that can be interacted with to conduct farming. You can remove them by striking them with your hoe.
- Equip your speedbag, and fill it with seeds found in the wild. - The idea here is that you will need to fill a "bag" item with seeds, and then empty that bag into your field. So you might fill it with 20 pounds of barley seed, then plant that seed into say 50 plots.
- Pour the seeds onto the tilled soil - This embeds the seed type into the tilled soil, and it begins to grow, if watered.
- Find a source of water - The map has many sources of water. They have a natural capacity, and a natural replenishment rate. If you drain them fully, it will take some time for the water to return to that water source.
- 6. Use your bucket to draw water from the source.
- 7. Haul this bucket of water to the soil to water it. - The idea here being that players will need to make risk reward decisions based upon how close they can find tillable soil patches to water sources, as they wish to mitigate the travel time hauling water. Eventually they will be able to irrigate and build wells, etc.
- Wait for the crops to crow - A crop will receive growth progress provided its watered. Currently there are no seasonal factors, crops simply grow. Its very basic
- When fully grown, cut them down with a scythe - Equip your scythe, and attack the crops! They will destroy themselves and their seed plot, and dump their fully grown crop onto the floor. I haven't thought about how to interact with tubers etc yet.
- Haul the crops into storage bins either by hand or pitchfork. - By default you can pick some wheat up with your hands, but you cant haul much of it, its sort of like water in a bucket.
But with a pitch fork, you can carry up to 20 lbs of wheat. In future players will receive movement and exhaustion penalties based on what they are carrying in their hands etc, and there will be a hygeine and filth consideration there, but its early days atm.
That's the roughly farming as it currently stands.
Crops only gain growth progress provided they are watered. They cannot die to not being watered yet. Something that I will be experimenting with later is the progression of blight and disease, and how it can propagate through crop fields.
Handling anything that needs to propagate at scale will need a lot of investigation into on the CPU, GPU, and networking sides because its very prone to rapidly scaling out of control performance wise. The same goes for fire, and disease spread between animals.
Labor and time
The goal with this farming method is for it to actually be quite laborious. That way, each "break point" will feel fulfilling. The idea is that the player will progress like so:
1. Hand farming
2. Better tools
3. NPC assistance
4. Animal / beast of burden assistance (ploughs etc)
5. Full farming automation.
And hopefully at each break through the player will feel as if they have really taken a load off their back.
Future optimizations
I also haven't performed any major optimizations on these yet, and the systems are very heavy in performance. I have several ideas for major optimizations, both in the GPU, CPU, and network side.
Something I want to experiment with is streaming "big data" down Unreals networking stack in a way that doesn't choke out the connections, and allows for late joiners. It's a tall order - but Unreal can do it.
Community!
Thank you for reading.
Join the Discord!.
Changelist
Going forward I want to include the change list with each dev update post. These changes are old, but I'm including them here for the especially curious.
e95c68 Added palisade walls - Sepha
0f447f Added a rough starting player area - Sepha
bd7a8a Adding things which can be grabbed with player hands - Sepha
1233fd added apple mesh and apple world items - Sepha
89a301 World items now spawn QTY 1.0 by default - Sepha
4c049e starting to hook up multi teired interaction system - Sepha
17eb91 expanding item code to be trait based - Sepha
e5df52 adding in item traits from lyra - Sepha
23ec57 Consumables can now apply gameplay effects when they are consumed - Sepha
bf9b00 Fixing trait type querying - Sepha
ee7348 Added thirst trait to the game, but its not in the UI yet - Sepha
03c49a Fixing up death code - Sepha
ac07f8 Drinking brackish water now kills you - Sepha
c8d2e8 wolves now spawn at night and annihlate the player - Sepha
01a9a0 Sleep deprivation will now kill you - Sepha
a2e65d Fixed bug where sleep deprivation stacked Fixed bug where sleep deprivation cleared after 5 seconds - Sepha
26f81b Added "Satiety" stat - Sepha
8107bd about to do a massive inventory rework - Sepha
da93b1 Significant refactor to item instances - Sepha
74c4d2 Fixed old item redirection bug on nodes but some are still bugged - Sepha
b3324e Removed null interaction message - Sepha
46a1c6 Adding interaction target names to interact popup - Sepha
1c5dfe Interactables now return their name - Sepha
5e2c73 Food is now no longer wood - Sepha
74a784 Fixing up interactions but about to move them to GAS - Sepha
129cea adding gameplay abilities to food that is eaten - Sepha
6d1880 Seeds are now more capable of determining what they grow - Sepha
1bec5f FIXED THE [quack]UCKING STATS FINALLY - Sepha
b8a57a stats bars are now more generalized - Sepha
7bbf4b can now press T to break own ankles - Sepha
648ac5 Added encumbered gameplay effect for when hauling heavy items - Sepha
ad1ba0 can now take specific water items from watersources - Sepha
2ff08d Added bed mesh - Sepha
3090ba categorized blueprint interfaces for easier navigation - Sepha
a8a9c3 beds are now interactable - Sepha
ed99f4 Added sleep interaction tags to game and bed - Sepha
ea0798 big refactor of interactable display names - Sepha
5d4b11 Fixed bug where lakes wern't drinkable - Sepha
c0e3fa Corpse nodes wern't correctly spawning flesh - Sepha
ad3454 Doubled length of time between wolf spawns - Sepha
7dd938 Increased TOD duration - Sepha
bc9c50 refactoring how items can water crops - Sepha
4adc1b Fixed bug where crops were unwaterable - Sepha
9fc5b6 Fixing seed plots to be able to accept water AND seed - Sepha
6e23ed Fixed half of tilled soil wateirng - Sepha
1934cd Farming is fixed! - Sepha
