For the last week or so, I've been continuing groundwork. Mainly:
1. Working with Unity to see if it will be bearable or make anything easier.
2. Testing out ways of growing plants.
Unity turns out to be really useful, for prototyping at least. It's not hard to dynamically create and modify meshes, and it's really fast to try things and see if they're viable.
Trees were a conundrum. I want the trees to be varied and genetically determined. An obvious solution is L-Systems, but there are two aspects to L-Systems that make them sub-optimal in my situation:
1. It is really hard to generate rules that have predictable behavior. In a game where the genes will be semi-stochastic, this is probably a really bad thing. Imagine accidentally generating huge or geometrically nonsensical trees.
2. The method of generation is recursive *replacement*, which means it's really difficult to animate the growing process itself. Ideally, I wanted something where a part, once created, would continue to exist and could be animated.
Then I found
this lovely paper by Runions, Lane and Prusinkiewicz, which describes a method of generating trees using a "space colonization" technique. A huge benefit of the algorithm is that you define the tree's bounds up front. Another benefit is that there are a lot of parameters (growing distance, attraction distance, pruning distance, shape, branch weight, etc.) that can be encoded in genes within known-to-be-reasonable ranges. After some messing around, I got this:
I'm not happy with the way it grows. What I want is for branches to start sprouting before the parent limb is finished growing. I've got some ideas about how to do that, which I'll post about in detail if I get them working.