Skip to content
This repository has been archived by the owner on Oct 25, 2021. It is now read-only.

Add a new creature (repeatable) #61

Open
1 of 3 tasks
erlend-sh opened this issue May 6, 2019 · 3 comments
Open
1 of 3 tasks

Add a new creature (repeatable) #61

erlend-sh opened this issue May 6, 2019 · 3 comments
Labels
good first issue Good for newcomers help wanted Extra attention is needed stand-alone Can be implemented without meaningfully disrupting other designs.

Comments

@erlend-sh
Copy link
Member

erlend-sh commented May 6, 2019

See our documentation on Creature Designs and How to make a new Evoli creature.

New creatures

@erlend-sh erlend-sh added help wanted Extra attention is needed good first issue Good for newcomers stand-alone Can be implemented without meaningfully disrupting other designs. labels May 6, 2019
@joarfish
Copy link

joarfish commented May 20, 2019

I looked into implementing Blin as specified in @erlend-sh's post.

Every new pair of blins will be randomly assigned one of 9 available styles.

I was wondering what would be the best way to implement this. The quick & dirty way, I guess, would be to just create nine creature-prefabs and then chose one randomly when a new Blin pair is spawned. Is there a more elegant way, for example allowing "graphics" in CreaturePrefabData to be an array of materials? Or using a single sprite sheet for all styles? (Sorry, if there is an really obious way to approach this with amethyst, but i'm very new to it)

@erlend-sh
Copy link
Member Author

One of the core devs might have something cleaner in mind but we’re usually very much in favor of quick & dirty for a first iteration ;) You can use the placeholder art asset provided in that post to make a proof of concept using your proposed prefabs method.

@marotili
Copy link
Contributor

@kastenbutt You should be able to create one prefab where you exclude the sprite. In the DebugSpawnTriggerSystem you can set the sprite based on a random number using creature_entity_builder.

This would be quick and dirty since the DebugSpawnTriggerSystem should not know specifics about the creatures.

Your solution of declaring an array of materials could be to implement by custom PrefabData called RandomSprite that contains an array of sprites. In the add_to_entity method you pick one randomly and assign it to the entity.
This is a little bit harder, as I find prefabs to be unintuitive and documentation a little bit lacking, so if you encounter any issues I'd recommend to ask the Amethyst community on Discord or on the Forums

Jazarro added a commit to Jazarro/evoli that referenced this issue Aug 31, 2019
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard input action to change wind direction. Load initial wind direction from a config file. In order to load from file, pass the assets directory path to the loading state.

Add system that spawns new Topplegrass entities.

Add system that deletes Topplegrass entities when they leave the world bounds.
Jazarro added a commit to Jazarro/evoli that referenced this issue Aug 31, 2019
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard input action to change wind direction. Load initial wind direction from a config file. In order to load from file, pass the assets directory path to the loading state.

Add system that spawns new Topplegrass entities.

Add system that deletes Topplegrass entities when they leave the world bounds.
Jazarro added a commit to Jazarro/evoli that referenced this issue Sep 4, 2019
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard inputs to change wind direction and speed. Load initial wind vector from a config file. In order to load from file, pass the assets directory path to the loading state.

Add gravity system that affects entities with the FallingTag.

Add system that deletes Topplegrass entities when they leave the world bounds.
Jazarro added a commit to Jazarro/evoli that referenced this issue Sep 4, 2019
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard inputs to change wind direction and speed. Load initial wind vector from a config file. In order to load from file, pass the assets directory path to the loading state.

Add gravity system that affects entities with the FallingTag.

Add system that deletes Topplegrass entities when they leave the world bounds.
Jazarro added a commit to Jazarro/evoli that referenced this issue Sep 4, 2019
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard inputs to change wind direction and speed. Load initial wind vector from a config file. In order to load from file, pass the assets directory path to the loading state.

Add gravity system that affects entities with the FallingTag.

Add system that deletes Topplegrass entities when they leave the world bounds.
Jazarro added a commit to Jazarro/evoli that referenced this issue Feb 14, 2020
Refer to issue amethyst#61
Topplegrass is explained here: https://community.amethyst.rs/t/evoli-creature-designs/814/10

Any entity with the Movement component intelligently avoids obstacles. However, not all entities that can move can steer; for example, Topplegrass is moved only by the wind. Therefore, add a new component tag AvoidObstaclesTag to all entities that are supposed to steer.

Add new resource Wind. Implement debug keyboard inputs to change wind direction and speed. Load initial wind vector from a config file. In order to load from file, pass the assets directory path to the loading state.

Add gravity system that affects entities with the FallingTag.

Add system that deletes Topplegrass entities when they leave the world bounds.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
good first issue Good for newcomers help wanted Extra attention is needed stand-alone Can be implemented without meaningfully disrupting other designs.
Projects
None yet
Development

No branches or pull requests

3 participants