Week 1 - Character Behaviors & Changing Plans
A change of plansIn my original project proposal, my first month was going to be fully dedicated to the world generator and the generation of static cities throughout the map. Due to this project being a combined effort with another student, much of this work was shared in their proposal. They got a headstart on this part of the project, completing many of my first month tasks on my github board in the process (for which I am very grateful!). However, this put me in a very strange position, where much of the first month of my project was completed before I could even get work completed! As a result, I instead got a headstart on the AI portion of my project, starting with a simple Behaviors implementation.
Creating a Living Gooey
The final version of this game contains characters with robot models, similar to the one pictured below:
These models are not complete yet, so for my purposes I will be using a model of Gooey, the Terasology mascot. This model has already been used in GooKeeper, so it is pretty simple to bring this model over to this western world. To bring this gooey character to life, several pieces are needed:
- Skeletal Mesh: This is the "body" of the character, and describes the shape of the character. Exported directly from a 3D modelling program.
- Material & Texture Information: The character may have a shape, but it needs to have colour defined as well. These files give the character a distinct look and feel.
- Animations: Any living character will move in some way or another, and these movements are defined in animation files. These are also exported directly from a 3D modelling program.
- Behavior: A good character must have some form of intelligence, which in this case comes from behavior trees. These trees describe the behavior of a character in the form of branching logic. These trees are explained in detail on this wiki page.
- Prefab: A prefab is a file that contains property information for this character, ultimately linking all parts of the character together. This contains references to all parts listed above, and additional components for behaviors such as 'FindNearbyPlayers'.
With all these pieces put together, a simple console command will generate a character like below:
A simple gooey in the desert. How cute!
A place to live...
Now that the gooey is spawned, where should it live? In cities, that's where! Cities are already implemented by Wabadump using DynamicCities. Cities are established in adequate places around the map, and buildings are generated over time in this area. So, to generate gooeys inside these buildings would be as simple as retrieving the building locations, and spawning the gooeys there! Unfortunately, currently there does not seem to be a simple way to retrieve this location data, as it is disposed of upon generation. Retrieving this data will require large changes to DynamicCities itself, which will be a major challenge for next week.
Over this next week
- Diversification of gooey behaviors will be required, including the addition of new behaviors and/or different characters altogether.
- One idea brought up in the weekly meeting was to have gooeys "own" a building, where they leave during the day and return to at night. This behavior will be started over this next week.
- The largest issue will be how to retrieve building positions, as this is a crucial part of many of the proposed behaviors.
PRs & Issues
- https://github.com/Terasology/MetalRenegades/pull/3 "[WIP] Add base AI characters"