[Aware/Multicellular] Behavior editor concept and discussion
May 18, 2015 2:08:16 GMT
mitobox likes this
Post by Scottnov on May 18, 2015 2:08:16 GMT
The behavior editor was always a concept which interested me. The only problem is, the behavior editor doesn't seem to have gotten much attention and therefore, not much is set in stone for it. Recently, however, I had a thought. There is a site used for programming simple animations or "games" called Scratch. While simple, the system Scratch uses for creating simple programs could be used for the behavior editor, with more depth and a few modifications, I'm sure.
If you don't feel like going to check it out for yourself, Scratch uses a drag-and-drop system of "blocks" or commands, which you can attach to other blocks in order to run a function, with options to change what exactly these blocks do.
Example: Repeat until X [new block] Wait X seconds then [new block] play X sound X times. The X's being replaced with whatever number or option the creator had chosen. This program would continue to play whatever sound the creator had chosen until a certain condition, also chosen by the creator, was met.
Using perhaps a more polished version of this system would still allow depth while also making it easy to use, thereby improving the quality for everyone.
Example of a Thrive/Scratch reaction, any word surrounded by brackets is variable and can be chosen from a list by the creator:
When [time of day] is [dusk]
(New block)
Search for [closest] [shelter] with [all senses] ("Add New Search Method" is here if the player only wants to define a few of his senses to search with, in this case he wants to search with all of his senses)
(New block. Shelter is something the player can define with the same system, an example is below.)
Set [walk speed] to [high] (a new block is attached to the right side of the original block) and [sprint while possible]
(New block)
Navigate to [shelter]
Although it's fairly obvious, this behavior tells the beast to head for shelter when night approaches, and get there fast, sprinting when they have the extra energy. With this system you can also define what is akin to variables in coding, such as shelter in the above behavior. If you don't have any experience in coding, setting a variable is pretty much just saying "Hey, this red fruit here? It's called an apple. You will use it later, don't forget it".
Example of a behavior editor "variable", like previously bracketed words are to be chosen by the player:
Define [shelter] as
(New block)
Moisture [very little]
(New block)
Visibility of [speciesname] [low]
(New block)
Temperature [warm]
(Warm is a preset and can also be specifically set using either Fahrenheit or Celsius)
There are also a variety of presets available for those who do not wish to spend a large amount of time in the editor, and until your species develops a complex enough brain you can only use presets and you cannot edit them. Of course, once added, you can remove and edit the preset however you see fit. You can also create your own presets.
Some examples:
Predatory: Adding the Predatory preset to your species will cause it to prey on smaller and weaker species almost constantly, avoiding larger and stronger species to the best of their ability. They will come out at dusk to hunt, and will sleep during the day. Good for strong beasts and species with a large need for protein.
Passive: Adding the Passive preset to your species causes it to fear most things. It will run from anything bigger than itself and still be wary around smaller species. They will become active early in the morning and find shelter at the first sign of darkness. Good for smaller, fast and generally herbivorous species.
Carnivorous: Carnivorous species strictly consume meat.
Herbivorous: Herbivorous species strictly consume vegetation.
Omnivorous: Omnivorous species consume both meat and vegetation, whichever is available.
So that you do not create a completely broken creation, there is also behavior test area. Here you can watch a non-player controlled member of your species interact with the world you place around it. You can edit the terrain, spawn in other creatures, change the time and more.
And that's my long (but not that complicated) concept for the behavior editor. I'd appreciate feedback and I thank you for hopefully reading everything. If there's something you don't understand or an error I perhaps created somewhere feel free to ask about it.
If you don't feel like going to check it out for yourself, Scratch uses a drag-and-drop system of "blocks" or commands, which you can attach to other blocks in order to run a function, with options to change what exactly these blocks do.
Example: Repeat until X [new block] Wait X seconds then [new block] play X sound X times. The X's being replaced with whatever number or option the creator had chosen. This program would continue to play whatever sound the creator had chosen until a certain condition, also chosen by the creator, was met.
Using perhaps a more polished version of this system would still allow depth while also making it easy to use, thereby improving the quality for everyone.
Example of a Thrive/Scratch reaction, any word surrounded by brackets is variable and can be chosen from a list by the creator:
When [time of day] is [dusk]
(New block)
Search for [closest] [shelter] with [all senses] ("Add New Search Method" is here if the player only wants to define a few of his senses to search with, in this case he wants to search with all of his senses)
(New block. Shelter is something the player can define with the same system, an example is below.)
Set [walk speed] to [high] (a new block is attached to the right side of the original block) and [sprint while possible]
(New block)
Navigate to [shelter]
Although it's fairly obvious, this behavior tells the beast to head for shelter when night approaches, and get there fast, sprinting when they have the extra energy. With this system you can also define what is akin to variables in coding, such as shelter in the above behavior. If you don't have any experience in coding, setting a variable is pretty much just saying "Hey, this red fruit here? It's called an apple. You will use it later, don't forget it".
Example of a behavior editor "variable", like previously bracketed words are to be chosen by the player:
Define [shelter] as
(New block)
Moisture [very little]
(New block)
Visibility of [speciesname] [low]
(New block)
Temperature [warm]
(Warm is a preset and can also be specifically set using either Fahrenheit or Celsius)
There are also a variety of presets available for those who do not wish to spend a large amount of time in the editor, and until your species develops a complex enough brain you can only use presets and you cannot edit them. Of course, once added, you can remove and edit the preset however you see fit. You can also create your own presets.
Some examples:
Predatory: Adding the Predatory preset to your species will cause it to prey on smaller and weaker species almost constantly, avoiding larger and stronger species to the best of their ability. They will come out at dusk to hunt, and will sleep during the day. Good for strong beasts and species with a large need for protein.
Passive: Adding the Passive preset to your species causes it to fear most things. It will run from anything bigger than itself and still be wary around smaller species. They will become active early in the morning and find shelter at the first sign of darkness. Good for smaller, fast and generally herbivorous species.
Carnivorous: Carnivorous species strictly consume meat.
Herbivorous: Herbivorous species strictly consume vegetation.
Omnivorous: Omnivorous species consume both meat and vegetation, whichever is available.
So that you do not create a completely broken creation, there is also behavior test area. Here you can watch a non-player controlled member of your species interact with the world you place around it. You can edit the terrain, spawn in other creatures, change the time and more.
And that's my long (but not that complicated) concept for the behavior editor. I'd appreciate feedback and I thank you for hopefully reading everything. If there's something you don't understand or an error I perhaps created somewhere feel free to ask about it.