Instead of (or in addition to) them being agressive towards you in certain rooms I'd suggest adding some reactions to the player behavior. For instance, if they see you catching a bat they will try to take it from you, instead of catching their own, and they will pull you away from bats in general, if you get too close.
Although those kinds of behaviors should really depend on their numbers. How many cicadas can we expect to be in a room simultaneously? If 1-3, then being generally agressive would make sense, but if more than that, then it may be a bit overwhelming to the player.
Also, do lizards and vultures eat them?
Edit: Also also, do their wings have to be so so cicada-like? I think it would be more interesting to make them a mix of dragonfly's long and thin dual wings and cuttlefish's single floppy surface.
Having AI creatures be able to read player behavior is something I'm really interested in, but it's really really difficult stuff. Like, proper academically researched difficult stuff. It's similar to voice and image recognition software in that it takes a bunch of fuzzy data and tries to boil it down to a hard-lined concept, which computers are not naturally inclined to. Like, trying to have the AI figure out if the player is aggressive towards a specific creature - how would you start? Maybe by checking if the player is moving towards the creature, that seems like a decent starting point. But from there on it gets very difficult. Trying to interpret more complex intentions from the player actions is even harder. I'll probably give some of this a little bit of a go though, but don't expect too much!
White lizards eat cicadas, catching them with the tongue. Vultures might snag one if there's truly no other option available.
I think the creature is cuttlefish-like enough, and the little fins wouldn't really make sense for air flying, right?
If the bats are spawned randomly in any of the swarm rooms, does this mean that cicadas can decrease the population of any specific swarm room that they frequent (while the global population remains the same)? I kind of like the idea of being forced to move shelters because the cicadas have out-competed you on the swarm rooms nearest to your current home base.
Also, april fools joking aside, as far as offensive/defensive capacities go I find myself imagining scenarios where it would be awesome to have the ability to stab with a spear without releasing it, such as being trapped in a corner and trying to defend yourself/the pups from a vulture or something.
Also also, speaking of Dynamic Relationships, is there a point where if you cause enough trouble/pain for a predator such as the vulture that they'll cut their losses and retreat?
Theoretically yes, but the bats migrate around the world so it wouldn't be super clear. The bats converge and dissipate in different swarm rooms all the time.
We've been talking about stabbing and decided on no. Throwing the spear is a bit of an investment, if you could stab every creature encounter would just be about tap-tap-tapping the button, and it'd feel like a fighting game. I think an important feature of Rain World is that it is a game that features fighting, but it's not a game
about fighting. Violence is just one of the mechanics.
When dynamic relationships are in it's really low hanging fruit to have a predator be afraid of you after you've induced enough harm on it! So yeah, that's exactly the kind of thing I want to do with the system
Don't forget that n creatures is n² interactions, it's exponential. Even though there is generalization that limit the number of link, it increase the scope of the game greatly, I hope you have planned for it? How many creatures there is in total? Maybe after a certain threshold required (such as backer's) you should set hard limit and treat everything beyond has bonus, as you might exhaust. It can be mitigated by creating and enforcing scenario that limit different species in the same place according to interactions limit.
In the lingo build, this was the case as I made all interactions manually. After adding like, 4 creatures things got pretty rough
C# build has a system where I can define creature relationships and give them categories such as "Eats", "IsAfraidOf", "FightsForTerritory", etc. The relationships can also have different strengths.
Then I try to keep basic behavior such as hunting or fleeing as general as possible, so that they can work with any two creatures. For example, say that a blue lizard is fleeing. It will use the data of the creature it's fleeing from, and depending on that the flight AI module will behave a bit differently. Fleeing from a Green Lizard will make the floor tiles seem more dangerous, maybe causing it to climb up a wall. Fleeing from a vulture will make narrow spaces seem safer. All of this stuff is basically just about interpreting the AI bake maps and other available data in a dynamic manner, so I actually don't have to write any creature-specific code to get these behaviors.
Using this, I can define most creature interactions in a single line of code. When adding the cicada, for example, the only code I wrote to make it interact with the Vulture specifically was this:
EstablishRelationship(CreatureTemplate.Type.Vulture, CreatureTemplate.Type.Cicada, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.Eats, 0.1f));
EstablishRelationship(CreatureTemplate.Type.Cicada, CreatureTemplate.Type.Vulture, new CreatureTemplate.Relationship(CreatureTemplate.Relationship.Type.Afraid, 0.7f));
Vultures can eat cicadas, but are pretty disinterested. Cicadas on the other hand are afraid of vultures (because they're huge). To my delight, both the hunting of the vulture and the fleeing of the cicada seemed to work out like expected.
So even if the number of interactions will grow with n^2, that's actually sort of acceptable if it's only two lines of code for each interaction. Soon it's getting close to the point where I need to make a huge sheet of paper and put the creatures as rows and columns to plot it all out though. It's a lot of fun, as this is where the weird emergent behavior happens.
Then of course some creature relationships are more custom. Snails and leeches, for example, have a bit of code going on between just the two of them. But these special cases won't grow exponentially, they'll just be thrown in here and there when we have some specific idea.
This brings to mind the mobbing behaviours of small birds like starlings. Squabbling one on one with competitor species, harassing hawks in a large mob to drive them away. It'd be neat to have them be a pain to compete with, but have them also be kind of beneficial to have around in large groups because they can sometimes drive away a vulture.
Maybe it could be pretty cool to have cicadas harass vultures like this... I'll try it out
Some moving boxes! It's pretty murky what's going on right now as there are no animations, when skinning them I want to add visual indicators for when they're charging, grabbing you etc so you have a more clear understanding of what's going on.
The cicada jump! Obviously the player should actually be holding on at all times haha - more animation work to be done!