-
Notifications
You must be signed in to change notification settings - Fork 187
Oak and Birch Tree Generators #1382
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't like this exact structure you shown here, I seriously doubt that none of the birch models can be reused as oak models - block substitution is a planned feature - so I would suggest to prepare blueprints for that - blueprints don't exactly care if they are made of birch or oak wood, but they care if they are a stem or something else + they care about child block layout. Neither of those information is encoded clearly in ID of that asset. Take a look onto my PR blueprint layout in #1377 . I first group asset by tree type, then by what part of tree they belong too, then I have variants with just number or with encoded child block layout (applies to stems) I don't expect you to copy that 1:1, but I suggest you consider eg. separating that birch_1 into birch/1. I will give a better review and possiby more concrete suggestions tomorrow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As for child block placement, It is really annoying that there is no simple way to view those blueprints or spawn SBBs on demand with fixed seed. Both of those features should get high priority alongside QOL features like masked set command.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very well
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think us having different file structures for this is not really an issue (if anything, it tells you who made what structure XD)
|
Oh, so you don't feel like I'm only criticizing - these are really cool trees, good job! C: |
|
Bless |
|
And I also have to say: They look amazing in-game! |
|
Birches like these: Really remind me of Acacia more than Birch trees, but I guess it might be just the style choice, noone said Birches have to look like birches all the time. Although I would suggest adding few hanging leaves, so they don't have that obviously flat bottoms, I have same problem in #1377, In my case I will probably try chaning some of the leafed branches into normal ones so they stand out more, but here I would suggest this: Don't get me wrong - I don't want the leaf balls back, I just want few hanging leaves, a bit like here: |
Yeah, the degradable concept is not really working for everything. Ideally it would probably give each block a priority instead of being just a bool. |
I can work on that at some point. Also oof, I didn't notice the hanging bottoms on the leaf blobs. I will be fixing that. |
|
*flat bottoms |
|
Alr so first lets tackle SBBs because in their case it is a bit simpler. Firstly, I would suggest moving all the trees into For example: Now for coniferous trees I decided to build everyting with pine, but have one
But I understand that grown up oaks can have intentionally different, unique design than birches. However, I am pretty sure that for example young trees could reuse same models or parts of same models. In such case I think it is reasonable to have unique birch and oak designs separately, but everything that is not unique and can be reused should end up in Now lets go lower, to tree parts and trees themselves. Every part that is reusable, again, yeet to So, for example:
Mind few things:
When you are declaring full tree design, I would suggest grouping them in For example:
Now why? Because we should have variable trunk height and simplest way to achieve that is have variable height trunk segments, so you specify tree as few segments:
I know that my coniferous trees make much better use of that, becuause they are build around that idea that you stack identical trunk segments on top of each other, but in your case it will also allow for quickly adding 1-3 block variation to tree height without actually modifying assets. Just leave yourself as much options for doing stuff via Now for blueprints, I would apply same rules where possible, if you have common part of name for multiple assets, extract that to be directory name, bacause you will have easier time chaning it later. Group stuff as much as possible, preferably mirroring structure of SBBs. |
|
Now, I understand where you're coming from with that file structure, and I have to agree that it's very organized and everything... but. That is way too many file paths. Keep in mind that I have to type that all in manually every single time. That is a lot my brother. Plus it would be very intimidating for anyone who wants to dabble into custom structures. Plus, don't get me started on all the dependencies if we ever have to change one blueprint. |
|
I will try my own file structure later, see if we can't meet in the middle somewhere about it. |
|
|
I would kind of like to separate trees by style as well. |
|
Thats up to you. But don't duplicate identical componets if only difference is block type used. |
|
Or rather, be ready to remove duplicates, because I suppose until we have substitution we should keep different variants...? For substitutions I need masks, then I can work on generating necessary assets during loading, since I already have |
|
I don't have duplicates XD |
|
You can check this file structure out. My reasoning for not putting these in folders is because I save my blueprints as "???_1" when saving them, so it's easier to go in and do small changes. |
|
I will go in shortly to remove the "tree" prefix from some of these blueprints, as those are leftovers from experimenting |
|
If you want to change the file structure yourself, you're free to do a PR (I cannot wrap my head around it) |
|
I think your file structure method is good for general trees, but my trees are more stylized and particular |
|
Flat bottoms are now fixed |
@Argmaster another argument for #1387 |
|
I guess, but for now I have few other things queued up and limited time. |
IntegratedQuantum
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
one thing to change, the rest are just suggestions for future changes to the underlying system.
If @Argmaster doesn't have any other complaints then we can merge this.
| .{.structure = "cubyz:tree/oak/1/trunk_3"}, | ||
| .{.structure = "cubyz:tree/oak/1/trunk_4"}, | ||
| .{.structure = "cubyz:tree/oak/1/trunk_5"}, | ||
| .{.structure = "cubyz:tree/oak/1/trunk_6"}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Argmaster should we add some kind of wildcard system?
Then here it would just be a single entry:
.{.structure = "cubyz:tree/oak/1/trunk_*"},There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, but what are the rules?
The obvious matches:
cubyz:tree/oak/1/trunk_0
cubyz:tree/oak/1/trunk_1
cubyz:tree/oak/1/trunk_453
But, does that match to?
cubyz:tree/oak/1/trunk_/0
cubyz:tree/oak/1/trunk_/1
cubyz:tree/oak/1/trunk_/234
Do we go full glob with ? and **?
What do we do with cubyz:tree/oak/1/trunk_*/foobar_1, do we even allow this?
Where is the wiki explaining what is and what is not allowed C:
Maybe instead of wildcards we would allow specifying directory-like syntax and we would take everything starting with cubyz:tree/oak/1/trunk/
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The last one creates grouping that is visible both in code and in directory structure with no tricks and minimal amount of edge cases. That trailing slash is mandatory do remove all the ambiguities.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Generally speaking I am not happy with the generator structure types, they are clever trick but not indented use, it would be best to solve both those problems at once.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, but what are the rules?
In my opinion it should only match one directory at a time, just like in bash.
Do we go full glob with ? and **?
Let's stick to the simple things, and extend when we need it.
What do we do with cubyz:tree/oak/1/trunk_*/foobar_1, do we even allow this?
Sure, that doesn't seem too difficult.
Maybe instead of wildcards we would allow specifying directory-like syntax and we would take everything starting with cubyz:tree/oak/1/trunk/
That would be another option, I guess. It does however limit your freedom for organizing things.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You know what I think about freedom.
|
I really dislike redundancy present in file names, stuff like @IntegratedQuantum can we create a contribution guideline for whatever path style you and @ikabod-kee choose for those particular assets so to stop every new contributor from inventing their own path style? |
|
Working on this as we speak. |
|
There, I did the changes you wanted @Argmaster |
Please also then make a PR with the corresponding changes to the contributing guidelines. |
|
Where is that? |
|
If you can't find it, then tell me where you searched for it, so we can put a link there. Also https://github.com/PixelGuys/Cubyz/blob/master/CONTRIBUTING.md |
|
I'm not exactly sure what to make of this. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are few small things, but I consider them negligible for that PR:
.children = .{},should be omitted, but #1403 is more general fix for that, so lets not waste more time on that- contribution guidelines should be updated to inform what is the preferred layout of SBBs and blueprints. Techincally also could be affected by #1403, not sure yet, lets have this as separate PR too
You have my blessing, now its @IntegratedQuantum turn.
IntegratedQuantum
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Alright, let's do it then! Time for some new lag biomes trees!
* Added Blueprints and SBBs for oak and birch trees * Whoops! Added .zig to .zon * Format Change (agh) * Fixes to generators * Changed nulls and put trees in Tree folder * Removed Treefixes * Update leaf_1.zig.zon * Omitted chances * 5 years * Changed the two oak roots I had neglected






Now, I know what it looks like with all those changes, but in reality you don't have to check half of those, as they're just blueprints.
I also included "deco" and "null," which are for small decorations and nothing respectively.