-
Notifications
You must be signed in to change notification settings - Fork 67
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
Trees. #1179
Trees. #1179
Conversation
There are few very important things to change:
|
Zon file modifications are as proof of concept only, they should be removed before merge (assuming we ever merge this atrocity). |
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 agree with storing configuration of individual structures as separate files, this was not necessary when there were just few f32 options, but with this tree model duplication of single tree design is not viable. The questions remain:
@IntegratedQuantum what do you think about the whole tree thing?
There is nothing stopping us from creating piece of code that would generate good branch series automagically on the fly. All you have to do is create tree structure of |
Something like this perhaps? |
A standard oak tree should take no more than a minute to chop, in my opinion. |
Size of the trees is not part of the PR. This PR contains tree generator and if discusing tree designs we should focus on whether the range of trees that can be generated with it is wide enough. How you use it in practice is separate matter. |
After looking at the code, I think that this model is too complicated to configure, yet too restrictive. A better solution would be to export the branches from the game (oh hey there is already a PR for this ;D #1141).
This could allow @ikabod-kee to build the structures in the game and easily export them. |
(And it could allow for some custom structures? :D) |
What would be the indented format of export of structure building block? Blueprint? |
I don't see a reason to add a second format besides blueprints for that. |
Do you want to store whole trees as structure building blocks? Or benches? |
The whole tree, only doing branches would be too limiting in my opinion. |
So I take it that your idea is this?
|
Ok, so how will that help with variability, if you have only as much trees as you hand made? With current state making 6 distinct branches for tree that spawn 6 branches total gives you 36 different trees. On top of that you can randomize how leaves are placed and how branches are spawned to even further increase variability. If you manually build whole tree, even if you make 10 of each type, it will still be obvious they are often repeating. I agree that we should have an option to automatically capture branch designs, but not whole trees and not as dumb blobs of blocks, so you can't randomize anything, as they consist of arbitrary blocks. Even capturing branches is IMO inferior and harder to maintain as now instead of human readable series of moves you have to deal with coordinate data to identify how the hell you want to offset the branch to attach it to tree body. You would need to figure out rotation code to even reuse branches on different directions than they are built in. Using blueprints also means that you can no longer modify assets without running Cubyz, as blueprints are binary, they are black boxes for git and in reviews. This is a great system for dungeons, villages, castles and whatever that has nothing to do with nature, things that can ignore that there is a wall and just overwrite it. On top of that I don't see how having a full trees as presets would help with variability. This is a tree generator, not a do-every-structure generator. |
Well, basically, but you wouldn't be limited to just 3 levels of recursion. You could make the base stem split multiple times, or add splits after every block in the branch
With my proposal you could define recursive structures all the way through. You could add branches that randomly split in certain locations by placing structure blocks there that reference smaller branches.
That is not what I'm proposing.
Well the last one is something you wanted to add anyways. And offsetting coordinates really shouldn't be that hard. It's just addition after all?
The workflow for adding structures already involves launching the game to see how it looks, so I don't see a problem there.
Yes, but the do-every-structure generator would be strictly more powerful and easier to use than what you have implemented here. And I think this is something I'd want to have anyways. |
Ok. Since this is a paradigm shift I won't be working on that. |
Why not cook up the full wave function collapse algorithm while we're at it? That way dungeon generation could create cyclic graphs and not just trees. Also, using structure generation alone we're not guaranteed to have our nice stereotypical tree shapes, which is a restriction we might actually want. I am coming to like Argmaster's PR for allowing special cased random features like mushrooms and pine branches. |
Yeah, sorry for making your work obsolete like this, but I really do think that a generic system is the best choice here. And yeah, I won't order you to work on the generic structure system. There are a few other prerequisites for it anyways, so you couldn't even start if you wanted.
wave function collapse is terribly slow and I don't see how it would really fit in there.
You mean minecraft trees? I don't think we need something like that.
The same should be possible with a generic structure system like I proposed. Except you could also add anything you want, and not just the things the programmer thought of, like vines for example. |
With stereotypical tree shapes, I mean the "pine is cone" idea. Maybe you have a better design but from the looks of it the structure system would have to manually specify the branch length at each position on the pine, even when it can be special-cased as a linearly increasing thing. I mean that is doable, of course. |
Basically, I am worried about specifying global shapes through just local interactions. We'll see how it goes. |
Trees.
Related-to: #1172