[This is a blog post about a Python simulation I wrote some time ago. You can get the code by clicking the Github link above. I have Javascript version you can edit here.]

I've started work on a simulation of fungus-like hyphae, based on project I saw called Mycelium.

The simulation starts with a single growing point. This point has a speed, a direction, and an curvature. In each tick of the simulation, its direction changes based on its curvature and its position changes based on its angle and speed. Currently its speed is fixed. The pixel it is on is coloured in. Each tick there a probability of its curvature changing and/or it splitting into two growing points (each with an angle 45 degrees to the parent's, and with opposite curvatures). Then the two points continue independently.

Below is a video of my first attempt, which only took about an hour to code, most of which was spent playing with the parameters.

Below is a slight update, changing the colours, and making the hyphae translucent, so points that overlap are brighter:

There is a lot of scope for improvements. I need to have some way to kill growing points, ideally based on a lack of food (i.e. high density of hyphae). You can see that by the end of the video, the simulation is slowing due the the exponential growth of growing points. I'd also like to try using an image to represent food. It might be fun to evolve the parameters, such as splitting probability, but I'm not sure what fitness function would be suitable, perhaps one to maximise the coverage of screen.