Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Made windmills able to grind up dried rice, cooked acorn meal, and roasted cattail rhizome into flour #47881

Merged
merged 5 commits into from
Jul 3, 2021

Conversation

Malorn-Deslor
Copy link
Contributor

Summary

Balance "Made windmills able to grind up dried rice, cooked acorn meal, and roasted cattail rhizome into flour"

Purpose of change

To allow dried rice, cooked acorn meal, and roasted cattail rhizome to be milled in windmills and watermills. They could previously be made via the recipe, manually ground using a quern, but could not be put into a mill. With these added, all items which can be ground up to make flour manually, can also be put into a windmill.

Describe the solution

Added the milling entry into the respective json item entries, properly adjusted for the amount that would normally be possible to make via the recipe.

Describe alternatives you've considered

...I can't think of another solution to this problem, honestly.

Testing

Inserted files into CDDA, ran CDDA, attempted to insert new items into windmill. Items were inserted properly, and ground into the proper amount of flour.

Malorn added 2 commits March 5, 2021 06:43
…hizome. This brings them into line with all the other items which can be made into flour via the recipe.

(cherry picked from commit 78eaf1d)
(cherry picked from commit 23f5607)
(cherry picked from commit 3ab301e)
(cherry picked from commit 75108e6)
@Malorn-Deslor
Copy link
Contributor Author

I'm... a little confused by one of the failed checks here.

The JSON Validation I figured out relatively easily, just notepad++ adding a tab instead of spaces when I added a line. I've corrected on my own copy, and if I could figure out how to amend this PR with the formatting changes, I'd do the same here.

The General build matrix error I don't understand, however. Unless it's just because of the JSON validation failture, cascading? The details would seem to indicate that.

@Malorn-Deslor
Copy link
Contributor Author

There, I think that should solve it, hopefully.

@Salty-Panda
Copy link
Contributor

Salty-Panda commented Mar 5, 2021

I specifically didn't allow roasted cattail rhizome to be directly milled into flour
I think that I added some intermediate recipe for that ( to make starch you can mill I think), but the roasted version is like pretty big lumps consisting in 1/4 of charcoal so I don't think you could mill it directly

@anothersimulacrum anothersimulacrum added the [JSON] Changes (can be) made in JSON label Mar 5, 2021
@Malorn-Deslor
Copy link
Contributor Author

I specifically didn't allow roasted cattail rhizome to be directly milled into flour
I think that I added some intermediate recipe for that ( to make starch you can mill I think), but the roasted version is like pretty big lumps consisting in 1/4 of charcoal so I don't think you could mill it directly

No argument on my end, but currently you can go directly from roasted cattail rhizome to flour, via the normal recipe. So that was changed at some point, obviously. I remember back a year ago, you had to make the rhizome into starch to make flour, just as you say, but it doesn't work that way currently.

Perhaps find out why it was changed, then when it's switched back to requiring starch as an intermediate step we can remove the milling option at the same time? My main goal here was consistency, since if you can mill it with a hand quern, a wind/water mill should be all the able to do it. I really do think that while it remains as an option for the direct manual recipe, it should be possible via automation.

@Salty-Panda
Copy link
Contributor

Salty-Panda commented Mar 5, 2021

#45911
Nvm. In that PR I allowed putting starch into the mill and added "roasted cattail to flour" recipe.
If you have any idea how does rhizome behaves while cooked or if it makes sense to mill it, feel free to add it directly to millable objects.
Just check if calories gained from milling it directly are the same as when through the recipe.

@Malorn-Deslor
Copy link
Contributor Author

Malorn-Deslor commented Mar 6, 2021

#45911
Nvm. In that PR I allowed putting starch into the mill and added "roasted cattail to flour" recipe.
If you have any idea how does rhizome behaves while cooked or if it makes sense to mill it, feel free to add it directly to millable objects.
Just check if calories gained from milling it directly are the same as when through the recipe.

Hmm, good question. So currently quern-made cooked acorn meal provides 225 calories over 15 flour, made out of 2 acorn meal which contain 114 calories each, so basically 228 down to 225. The mill produces 15 flour with 15 calories each, for a total of 225. So the exact same conversion.

A roasted cattail rhizome contains 280 calories, two of them quern-made create flour with 555 calories over 15 flour. So again a slight reduction, but quite reasonable. Milling the flour produces the exact same amount with the same calories.

As to the other half of your question: the current recipe for making flour out of cattails uses a quern. A quern is literally just a manual version of the grinding stone a mill uses. If a quern works, a mill works.

That said, every modern thing I can find on preparing cattails involving pounding the rhizome with a hammer. But I did find a paper about ancient man consuming cattails, and the proof presented was traces of rhizome found on a paleolithic grinding stone (otherwise known as a quern!). So... yeah, I think the quern (and thus also a millstone) is the proper thing.

@Salty-Panda
Copy link
Contributor

Salty-Panda commented Mar 6, 2021

At first, you could only process the rhizome by hammering it to a paste/starch. Then you could make something with it.
PR I linked provides link to some blog about how to roast it so you can eat it. But I'm actually not sure how viable is to mill it.

@Malorn-Deslor
Copy link
Contributor Author

At first, you could only process the rhizome by hammering it to a paste/starch. Then you could make something with it.
PR I linked provides link to some blog about how to roast it so you can eat it. But I'm actually not sure how viable is to mill it.

Hey, I think there's some confusion. I have no opinion on a rhizome being possible to grind into flour or not. If someone wants to remove that recipe, making it so you have to render it into starch again in order to eventually make flour, I'm fine with that. I did a quick search and found some indications that ancient humans used a quern to grind rhizome, but if that's not something someone wants, I have no real desire to argue.

Right now, currently in the game, you can grind rhizome directly into flour using a quern. A quern IS a mill. It is literally a millstone, in miniature, rotated by hand. Anything that can be milled via a quern can be milled via a windmill. My goal is only to have consistency across recipes. Right now, you can use a quern to render cooked rhizome into flour, directly, with no intermediate steps. Since a quern can do it, a mill ought to be able to do the same, or neither can, in which case the recipe should be corrected.

@kholat
Copy link
Contributor

kholat commented Mar 9, 2021

cornmeal pls!

@Malorn-Deslor
Copy link
Contributor Author

cornmeal pls!

Really, corn isn't already a thing?

...yeah, it's not a thing. That's really weird. Easily fixed, however.

@Malorn-Deslor
Copy link
Contributor Author

There we go, nice and tested. One piece of corn can be milled into 3 cornmeal, 99 calories into 33 calories. Same conversion rate as the normal recipe.

@Salty-Panda
Copy link
Contributor

Salty-Panda commented Mar 9, 2021 via email

@Malorn-Deslor
Copy link
Contributor Author

Uhh... it failed a check... and I don't understand how my commit could have done that.

(~[slow] [.])=> -------------------------------------------------------------------------------
(
[slow] [.])=> ../tests/field_test.cpp:337
(
[slow] [.])=> ...............................................................................
(
[slow] [.])=>
(
[slow] [.])=> ../tests/field_test.cpp:357: FAILED:
(
[slow] [.])=> CHECK( fields_test_duration() < time_limit )
(
[slow] [.])=> with expansion:
Error: (
[slow] [.])=> {?} < {?}
(
[slow] [.])=> with message:
(
[slow] [.])=> Terrain should be irradiated under 5 minutes
(
[slow] [.])=>
(
[slow] ~[.])=> 0.271 s: radioactive field

So as far as I can follow, radioactivity is too slow now? But I only changed raw_veggy.json? Can someone please help me understand what I did here?

@anothersimulacrum
Copy link
Member

Millable corn has already been merged #46254

@Malorn-Deslor
Copy link
Contributor Author

You can't mill raw corn. If you want to add this you should add dried corn. I recall there was some initiative to mainline mod extending dehydrated vegetable into multiple versions for specific vegetables but no idea whether it's worked upon. Actually starch shouldn't be millable neither to be exact about that.

Hi salty... ok... I agree, you can't mill raw wet corn. You can mill raw dry corn. And I agree that 'corn' as it is listed is certainly wet corn, since it only lasts 5 days.

That SAID... again, the base recipe for making cornmeal, uses a quern(which is a MILL) and thus the cornmeal recipe is 'milling' the corn. In fact, you cannot make cornmeal out of wet corn, even with a hammer at least as far I am aware, you can only make corn paste. So currently the entire method for making cornmeal doesn't work.

So how does one get dried corn, you may ask... well you don't stick it on a smoking rack. In fact corn is quite fun, in that it dries itself, if stored in a warm well ventilated area. Of course, most people in the ancient world took a shortcut and spread corn out under the sun to dry, making sure to take it in if it rained.

...none of that is currently modeled in the corn system in CDDA. And frankly, I wouldn't know how to go about modeling that, honestly. Corn should just turn into dried corn over time, if not left on the ground. And equally putting things out under the sun is not something currently modeled in any part of CDDA crafting code.

So... basically, you are telling me that in order to fix a small oversight with mill recipes, I should rework the entire way all corn recipes work, including the way that preserving corn works, and how cornmeal can currently be created.

That is not really within the scope of this pull request, and I don't think I am actually capable of adding any sort of 'sun drying' method to CDDA (obviously not a normal recipe, since you don't have to work with the corn to dry it). And I certainly don't know how to add any sort of 'time change' method to corn, which took into account the location it was stored in.

Could you explain why it is acceptable that cornmeal is currently created from 'wet' corn via the recipe, but it is not acceptable to have the same abstraction used for another, nearly identical, creation process? Remember, a quern IS a muscle-powered mill. If we were being truly accurate here, then we also need to thresh the wheat we harvest, separate it via sieve, and carefully dry it, as well.

And if that is something CDDA really wants to do, that's all well and good. It's not something I am really capable of coding. Is there a reason 'realism' is being applied very strongly on one method (the windmill) and very weakly on another method (the quern)? Shouldn't the same standard of realism apply to all methods, just as it does with quern, mortar and pestle, and food processor?

@anothersimulacrum
Copy link
Member

Please look at the PR I linked, that has already been implemented in large part.

So... basically, you are telling me that in order to fix a small oversight with mill recipes, I should rework the entire way all corn recipes work, including the way that preserving corn works, and how cornmeal can currently be created.

If you're doing something, do it correctly, or don't do it.

Could you explain why it is acceptable that cornmeal is currently created from 'wet' corn via the recipe, but it is not acceptable to have the same abstraction used for another, nearly identical, creation process? Remember, a quern IS a muscle-powered mill. If we were being truly accurate here, then we also need to thresh the wheat we harvest, separate it via sieve, and carefully dry it, as well.

Neither should be acceptable, and yes, we should improve our processes for grain processing.

And if that is something CDDA really wants to do, that's all well and good. It's not something I am really capable of coding. Is there a reason 'realism' is being applied very strongly on one method (the windmill) and very weakly on another method (the quern)? Shouldn't the same standard of realism apply to all methods, just as it does with quern, mortar and pestle, and food processor?

Nobody gave it proper attention when it was added. Yes, the same standards should apply.

@anothersimulacrum
Copy link
Member

Uhh... it failed a check... and I don't understand how my commit could have done that.

(~[slow] [.])=> ------------------------------------------------------------------------------- ([slow] [.])=> ../tests/field_test.cpp:337 ([slow] [.])=> ............................................................................... ([slow] [.])=> ([slow] [.])=> ../tests/field_test.cpp:357: FAILED: ([slow] [.])=> CHECK( fields_test_duration() < time_limit ) ([slow] [.])=> with expansion: Error: ([slow] [.])=> {?} < {?} ([slow] [.])=> with message: ([slow] [.])=> Terrain should be irradiated under 5 minutes ([slow] [.])=> ([slow] ~[.])=> 0.271 s: radioactive field

So as far as I can follow, radioactivity is too slow now? But I only changed raw_veggy.json? Can someone please help me understand what I did here?

Random test failure, not your fault.

@Malorn-Deslor
Copy link
Contributor Author

Malorn-Deslor commented Mar 9, 2021

Please look at the PR I linked, that has already been implemented in large part.

If someone else is handling corn, I am more then happy to let them. I'll amend the commit to remove the corn element, I didn't know something like that was in progress.

If you're doing something, do it correctly, or don't do it.

I need to be honest, I don't think saying that is fair. Everything in game design is a matter of compromises. I am sure you do not feel that every other part of the game that does not perfectly replicate reality is a 'failure'. Nor does it follow that everyone who coded those features, which are in many cases very good features, should have not bothered to do it, since it wasn't perfect.

I was creating, and defending, work that was up to the current standard of the game in terms of grain processing. It was literally only adding consistency for existing recipes. I don't think it's reasonable to require that every solution to an oversight should be 'current level of quality +1'. If that were the case very few bugs would be resolved, and simple problems would be allowed to persist because of the need to completely overall a system every time a single correction was needed.

Neither should be acceptable, and yes, we should improve our processes for grain processing.

We should, though at the same time we should make sure we don't add undue burden while doing so. It is one thing to require all the proper tools to handle grain, that is a good thing. But it is quite another thing to require 4 different steps in the UI just to process some grain. Consider it like sorting, you want to be able to press a single button, and have the work done, rather than having to manually do each step.

But as I said, this is quite a bit beyond me in terms of involvement. I have no desire to try to revolutionize grain processing, nor to attempt to oppose it.

Nobody gave it proper attention when it was added. Yes, the same standards should apply.

I agree, but at the moment, wouldn't it be reasonable to apply the current standards of content already in the game, not theoretical standards? As Voltaire said, 'the best is the enemy of the good'. It is better to have things consistent across the board now, then to leave it half-done in hopes of an eventual future improvement.

@Salty-Panda
Copy link
Contributor

Salty-Panda commented Mar 9, 2021

It's not "the best is the enemy of the good", it's making technological debt and giving more "inertia" to the current bad piece of the game
If we were to follow what you wrote, KorGenT would never code nested containers

@actual-nh
Copy link
Contributor

actual-nh commented Mar 9, 2021

It's not "the best is the enemy of the good", it's making technological debt and giving more "inertia" to the current bad piece of the game

Could someone explain how this creates said inertia?

@Salty-Panda
Copy link
Contributor

Could someone explain how this creates said inertia?

I meant that the more rooted something is, the harder it is to change or remove it

@Malorn-Deslor
Copy link
Contributor Author

Malorn-Deslor commented Mar 9, 2021

It's not "the best is the enemy of the good", it's making technological debt and giving more "inertia" to the current bad piece of the game
If we were to follow what you wrote, KorGenT would never code nested containers

There is a difference between you, for example, saying that you want to seriously improve and redesign something, and you saying you want me to seriously improve and redesign something, or not work on it at all. Your example would apply if I went to someone working on milling improvements, and told them to stop working on them, because my simple fix is all that is needed. I am not doing that.

Or to put it in a very real world way, it is like refusing to fix a pothole in a road, because really the whole road should be replaced. We both own houses on that road, and I have offered to pay to get the pothole patched, because I was sick of my wheel hitting it. In this example, you are saying I really ought to pay for the whole road to be resurfaced, since there will be other potholes in future years. While you are right, and there will be other potholes, I was offering to fix one pothole, not repave a road. And fixing the pothole does not make it harder to repave the road in the future. And a lot of cars will travel smoothly over that patch, until the road is actually fixed, if it ever is.

@actual-nh actual-nh added 0.F Feature Freeze <Bugfix> This is a fix for a bug (or closes open issue) labels Apr 19, 2021
@actual-nh actual-nh added <Suggestion / Discussion> Talk it out before implementing Crafting / Construction / Recipes Includes: Uncrafting / Disassembling labels Apr 19, 2021
@actual-nh
Copy link
Contributor

I am still of the opinion this is a bugfix - a removal of an inconsistency. But some form of compromise is needed on exactly how that inconsistency is fixed, and that is likely to require further changes than are suitable for 0.F. I am therefore proposing that it be put on pause until after 0.F is out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
<Bugfix> This is a fix for a bug (or closes open issue) Crafting / Construction / Recipes Includes: Uncrafting / Disassembling [JSON] Changes (can be) made in JSON <Suggestion / Discussion> Talk it out before implementing
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants