Akaito/reassembly-ai-mod-example

Better Plants (Modular Blueprints)

Randommnumbers asked for this feature about 1 year ago — 3 comments

Randommnumbers commented about 1 year ago

An idea on how to make plant generation more random. Since building the plants yourself and saving a blueprint of every individual plant is too tedious. Can also expand into more complexity and increased versatility, too.

A rather simple concept that requires the implementation of two new port types and a generalized mechanic. I'll just call them PLANT-IN and PLANT-OUT. Bits of the plants will be built and saved as blueprints in the sandbox, usually with at least one shape with a PLANT-IN port and optional PLANT-OUT ports somewhere on the blueprint. Seeds and the like will still function the same; they stick to environmental blocks and start growing. However, when the command detects an empty PLANT-OUT port, the block with the PLANT-OUT port can act as a secondary seed and select a random blueprint with the appropriate group id. The block with empty PLANT-OUT port will then build that selected plant blueprint with its PLANT-IN port connected to the empty PLANT-OUT port. I assume that the orignal command/seed will dictate the new blueprint to be built, as I hope the block with the PLANT-OUT port can be inert; the one with the PLANT-OUT port simply defines the location. The process repeats on all empty PLANT-OUT ports, including those on the subsequent plant bits. Boom, you got yourself a procedurally generated plant. This is essentially the basics.

To facilitate more advanced plant generation, the use of more of the port type channels can be added, for example PLANT-OUT1, PLANT-IN1, PLANT-OUT2, etc. The ports with corresponding numbers will connect amongst each other while not with other port channels. Essentially, you can have plants that grows a trunk, into branches, and then into leaves, and does this entirely randomly from a preset series of plant part blueprints using the appropriate ports. This is just an example pattern; the trunk can continue with PLANT-OUT1 port into another trunk with a PLANT-IN1, or transit to a branch with a PLANT-OUT2.

While this feature is directed at plants, I hope that it isn't just seeds that will be able to use this, but normal commands as well. For example, when a generic ship has an exposed PLANT-OUT4 port, it will select a blueprint with the matching PLANT-IN4 port and build it on the PLANT-OUT4 port. We can have some really neat armor concepts, modular junk, or just ships covered in plants.

That said, maybe the ports should be named differently if it's got more uses than just plants. And mayhaps a ton of PLANT-IN/OUT channels.

| Randommnumbers commented about 1 year ago

Apparently underscores format the text.

| NSGCommando commented about 1 year ago

You could also have a randomizing hull/weapon module system along with metamorphosis that adds groups of parts to the existing design. For example- a structure starting from a stem with three small leaves and one seed at one end of it could be automatically added to a free port on an existing design, making the whole thing more random.

Another idea: A complex algorithm to accurately strap modules around a command core, making sure that the core is the last block seen from one end of the design, along with metamorphosis would mimic mutation very closely. Might get irregular blobs, but then most mutations in nature aren't beneficial. And getting a truly good mutation would take lots and lots of iterations.

Join the discussion!

Sign-in with GitHub to comment