Docs update
This commit is contained in:
parent
fdb5e59eff
commit
c5d69da608
3 changed files with 84 additions and 10 deletions
32
docs/algorithms.md
Normal file
32
docs/algorithms.md
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
# Algorithms
|
||||||
|
In this document are listed some of algorithms for the sake of planning.
|
||||||
|
|
||||||
|
# Genome
|
||||||
|
## Generation examples
|
||||||
|
Examples section's goal is to document standard plant generation process.
|
||||||
|
Documented generation process is easier to visualize.
|
||||||
|
### Peashooter example
|
||||||
|
1. Create [generator] root
|
||||||
|
2. Add [transfer] stem
|
||||||
|
3. Add [trigger] head
|
||||||
|
4. Add [modifier] leaf
|
||||||
|
5. Return to head
|
||||||
|
6. Add [output] face
|
||||||
|
### Sunflower example
|
||||||
|
1. Create [dummy] root
|
||||||
|
2. Add [dummy] stem
|
||||||
|
3. Add [mixed] head
|
||||||
|
4. Add [output] face
|
||||||
|
### Cherry bomb example
|
||||||
|
1. Create [generator] root
|
||||||
|
2. Add [output] head
|
||||||
|
3. Add [dummy] face
|
||||||
|
4. Return to root
|
||||||
|
5. Repeat steps 3 and 4
|
||||||
|
### Potato mine example
|
||||||
|
1. Create [generator] root
|
||||||
|
2. Add [trigger] head
|
||||||
|
3. Add [dummy] face
|
||||||
|
### Wall-nut example
|
||||||
|
1. Create [dummy] root
|
||||||
|
2. Create [dummy] face
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
# Principles
|
|
||||||
|
|
||||||
This document describes principles I have came up with. I don't think I'd be angry if you use them in your projects.
|
|
||||||
This document is mostly for me to remember things.
|
|
||||||
|
|
||||||
## The core principles are:
|
|
||||||
- Every plant can be represented as graph (sometimes as a tree).
|
|
||||||
- Every value of a node can be also a node (I might iterate on this one).
|
|
||||||
- Every node can have input and output.
|
|
||||||
- If node has input, and parent has output, parent must spread its output
|
|
||||||
52
docs/principles.md
Normal file
52
docs/principles.md
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
# Principles
|
||||||
|
|
||||||
|
This document describes principles I have came up with. I don't think I'd be angry if you use them in your projects.
|
||||||
|
This document is mostly for me to remember things.
|
||||||
|
|
||||||
|
## Used terms and placeholders
|
||||||
|
(Very WIP) - This section is subject to change.
|
||||||
|
<Context> - Placeholder for context arguments. Currently I didn't think of this but I acknowledge that I might need them.
|
||||||
|
<T> - Type that doesn't exist yet but is obvious in context of section.
|
||||||
|
|
||||||
|
## The core principles are:
|
||||||
|
- Every plant can be represented as graph (sometimes as a tree).
|
||||||
|
- Every value of a node can be also a node (I might iterate on this one).
|
||||||
|
- Every node can have input and output.
|
||||||
|
- If node has input, and parent has output, parent must spread its output.
|
||||||
|
|
||||||
|
## Genome
|
||||||
|
### Gene
|
||||||
|
Genes are main logic elements of a plant. They're nodes of genetics graph.
|
||||||
|
I might iterate over this, but in current implementation is a little bit functional due to complications of OOP in Rust.
|
||||||
|
Gene structure consists of variables specific to gene, type and overridable methods for displaying itself and its children.
|
||||||
|
|
||||||
|
(Very WIP) Variables:
|
||||||
|
- Dictionary with some string type as a key and Argument enum.
|
||||||
|
- Argument enum consists of f32 and i64.
|
||||||
|
|
||||||
|
Type of gene is enum that provides different functions. Here is (Very WIP) list of every type and its provided functions:
|
||||||
|
|
||||||
|
Dummy - gene without behaviour.
|
||||||
|
|
||||||
|
Transfer - gene that defines rules of flow.
|
||||||
|
- `distribute_between_children(<context>,flow: mut <Flow>) -> <Distribution>`
|
||||||
|
|
||||||
|
Pure Generator - gene that only creates flow.
|
||||||
|
- `create_flow(<context>,current_flow: mut <Flow>) -> <Flow>` - won't be called if flow isn't empty.
|
||||||
|
|
||||||
|
Modifier - gene that modifies or creates flow.
|
||||||
|
- `modify_flow(<context>,current_flow: mut <Flow>) -> <Flow>`
|
||||||
|
|
||||||
|
Consumer - gene that consumes flow.
|
||||||
|
- `consume(<context>)`
|
||||||
|
|
||||||
|
Trigger - gene that interacts with context to conditionally progress flow.
|
||||||
|
- `check_trigger(<context>) -> bool`
|
||||||
|
|
||||||
|
Observer - gene that observes flow.
|
||||||
|
- `observe(<context>,current_flow: mut <Flow>)`
|
||||||
|
|
||||||
|
### Flow
|
||||||
|
Flow is data that circulates across genome. If not consumed, goes to the void.
|
||||||
|
|
||||||
|
Currently it is something like Vec<ProjectileData>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue