Birds

That’s exactly it! My bird was checked for Begin Level Flying? and placed on the ground. When I switch to Begin Level Perched ? it works perfectly. Or leave it checked and bring him up a little, either way it works. Thank you!

I’m so happy to see Birds being used in such beautiful projects, Here are a few examples from Maverick.

watch?v=T9A_JD9JNWQ

watch?v=pAAya7gohOg

Fantastic work all around. :slight_smile:

wow, beuatiful ! I really love your birds at all.
Only thing thas doesnt look really good to me are starting landing process animations. they dont look real to me. Are you thinking on improving this in any future release ?
kind regards
stucki

Hi, This assset looks winderful and im really interested into it . I do have 2 questions about it tho.

  1. Is it easy to add your own model and animations to this asset ? (adding a sparrow for example)
  2. Is it possible to get different targets for different species ? Like, sky/perch target for piegons could be made different than sky/perch target for gulls ?

Thanks

I am putting together a project on the Oculus Quest which I would like to use a crow in. Will this work ok on the low powered Quest? Or would I be better off using the “Poly Art Ravens and Crows”

awesome pack man thank you

One of the latest Community Spotlight projects “Virtual Helsinki” by Zoan is using Birds in the early part of the video. :slight_smile:
I’m always happy to see my assets being used in the wild. Fantastic project Zoan!

Bought your pack for a historical simulation we’re working on and, it’s beautiful in a smaller level. One problem however: Since we have a huge landscape (10km square), we have multiple sky targets at great distances. Since apparently a new target is selected simply by random, we don’t get the typical effect of birds circling in the sky around a singe target - much rather, immediately after reaching a target they fly straight to the next one, and that looks more like a regatta, all birds fly straight lines all the time, and follow each other, and that’s very recognizable.
It would look much better if we had a maximum distance for the next sky target, so that a bird will only select a target if it’s within a certain distance. Or rather, if a bird would only react to targets with a given tag.

Second question: In our huge environment, I would like the bird actor culled when it is out of visible range (say, more than 100m away) and that doesn’t seem to be a feature yet. Can you confirm? What’s the recommended way to do that? I’d assume this should be a feature to be performance-friendlier, especially since i am also adding sound to each bird.

This is the designed behavior. You may think of creating location groups of birds. Meaning setting up different groups of birds that stick to specific areas.
To do this first duplicate the “Bird_Sky_Target” and name it something like “Bird_Sky_TargetPoint_Group1”.Do the same for the ground and perch targets. Next you will do the same with the Bird_AI_Controller, Duplicate the AI Controller and re name the Controller to “Bird_AI_Controller_Group1”. Now open that new AI Controller and click on the construction script tab. In the get all actors of class nodes- replace the entry’s with the Group 1 sky, ground, and perch targets. So now you have an AI Controller that is only looking for Group1 nodes and will stay in that area of your map. Finally duplicate the NPC_Bird you want to stick to Group1 and rename it to Whatever Bird Group1 and in the default settings under the Pawn section assign the Group1 AI Controller. This is how you can make birds stick to specific areas of the map. Now place the Group1 Sky, Ground, and Perch targets in the specific area of your map you want those birds to stick to.
you can setup as many different groups of Birds as you like this way. This is also a way to get the seagulls to stick to the beaches and the pigeons to stick to another area, and so on.
I hope that wasn’t too confusing, let me know if it was.

Instead of culling birds and re spawning them you may want to add a high level Service in the Behavior Tree that gets the distance to the player and if over a certain distance do nothing.just freeze in place, and then add another LOD on the bird that is crazy low poly- like 3 polys. The reason I don’t do this by default is not everyone using this asset will be using a player (Such as a cut scene) and this would break the logic for those situations.

I hope that was helpful :slight_smile:

Hi, I have 2 question about this pack

  1. It was mentionned that the birds react to ground character, but the perching birds react to your presence even if the perch traget is not on the same plane than your character right? Or by ground character you meant they can’t change direction when flying, but can detect a (close) flying enemy when they are on ground or perched?

  2. The perch target can indicate if bird must face the same direction or not when perched. Does this mean the bird will come to the target from opposite direction to land, or it will rotate to face it when makeing the landing animation?

Thanks

The Birds will fly away when perched if the enemy character gets too close. This is also true for when the Birds are on the ground.

When landing on a perch target the Birds will rotate to face the “FaceThisWay” arrow while playing the landing animation- if the “UseFaceThisWayArrow?” Bool is set to true. If it’s not set to true the Bird will land on the perch in the direction it is already facing. You set this Bool on the perches themselves and they can be set on a per perch basis.
I think that answered your question, Let me know if you need any further information. :slight_smile:

Hi, i’m finally getting around to implementing your suggestion and the solution for grouping birds is a little different than what you described:

That doesn’t work because it changes the class of the Bird_Sky_Target and that breaks some references in ParentClassBlueprints (like BTService_Bird_FlyToARandomSkyTarget).

The correct way to do this, it seems to me, is not duplicating the SkyTarget, but instead creating a Child from it. I also create a child AI_Controller for each Group of Birds, and i find i also need to create a a child for each birdtype in each group (although i don’t understand why it isn’t enough to set the AI_Controller Propert of any existing bird…)

Altogether this works, but it really doesn’t feel very elegant if i want 20 different groups of birds… perhaps as an improvement suggestion, you could make the ai controller match Targets for Birds based on tags in a future release…

Oh yes, I forgot about the Services. I will come up with something much more elegant in the next update. I think the best solution would be for each bird to only store targets within a distance range and make that range editable. I think that would allow the most flexibility without the need to duplicate so many things, way less work for the end user. I’m glad you at least have something that is working for you now. And thanks for the suggestions for improvement.

UPDATE
Ok so i came up with something that will make everything much easier. I will upload this in the next update but wanted to post the fix here so you could take advantage of it right away. I created a variable in the AI Controller called “StoreTargetsWithinThisRange” . You can set that Float to whatever distance you like.
So now in the Construction Script of the AI Controller where the Ground, Sky and Perch targets are set. All the targets are only stored in the Array if they are within the range you set in that Float Variable. In the attached image here you can see how the Sky Targets are being set.

Set the Ground and Perch Targets the same way after that Shuffle Node.

Now when you place a Bird in your level it will only store Targets within your set range of that Birds starting position.
Keep in mind that whenever you add Birds to your level you must have at least one of each Target within that new range. If not you will get errors. This should get rid of the need to duplicate different groups for different areas of the map. Now they will always stay in the area you placed them in and they will only be interested in local Targets around them (Perch, Sky, and Ground Targets).

Hope that helps. :slight_smile:

Here is a video showing the new Birds distance limiting behavior. The Birds will now only keep track of Sky, Perch, and Ground Targets in the range you define. This way you can have groupings of birds in different places around your levels. These days levels are getting quite large and cover a rather substantial amount of land mass. This new limiting behavior will allow you to keep groupings of birds to local areas of your map. in the AI Controller you can adjust what range to give the Birds to look for destination Targets. This also comes with a performance increase because now the birds don’t store all the targets in the whole level, but instead they only store the targets around them in the range you define. In this video we are zoomed way out in the Demo Level, I have added 3 different groupings of birds- you can see how they behave using different distance ranges.

watch?v=QWUTSn1surs

Keep in mind that you must have at least one of each Target (Sky, Ground, and Perch Targets) within the distance range set for the birds or they wont know where to go.

This behavior will be added to Birds in the next update.
**Update- This update is now live.

Is it possible to have the birds and fish in the same level? My fish swim into the sky, so i put a collision box there to stop them but now my birds land on the colision box. So i have had to turn off bird landing
watch?v=0SWONs69NmI
I was adding them to my jungleroo jungle island eco system

Yes you can have Birds and Fish in the same level.
First of all, you do need to add a blocking volume to the top of your water so that the Fishes obstacle avoidance traces have something to hit, that’s how it works, you can make it pretty thin too.
Next look into collision channels, you can set up collision channels so that the blocking volume only blocks the Fish.
Finally in the viewport click on show and check the navigation box (or just hit “P” on your keyboard). If it’s Green on top of your water the Birds will think they can walk there. The Birds think they can walk anywhere you see Green NavMesh, you can get rid of green NavMesh with a “Nav Modifier Volume”
Hope that helps, sounds like its just a few setup steps.
Neat looking show!!! keep me posted on the project, I’d love to see what you put together. :slight_smile:

Good evening.

Thanks for such a great job. I feel that I will be a collector soon)))

I have a question about Enemy TAG. I transferred the “birds” folder to my project. But they do not perceive my character as an enemy.

I have a question where to add TAG to start working. Thanks in advance.

You add the Tag in your character blueprint. Under the Class Defaults look for the Actor section, then in the Tag area click on the little + symbol and add the tag there- the tag is “BirdEnemy”

Thanks for the prompt reply and help. But unfortunately it didn’t work for me.

I can add print screen.

I have two tags, first is - player
second is - BirdEnemy (like in tutorial map)

But still nothing

P.S. The same story with youre NPC

Do you have your NavMesh volume in place and build navigation? What does the bird do? just stand there or fly away?