Please consider that this demo requires ICECreatureControl and UFPS, so please make sure that both packages are installed before opening the demo scene file.
Hi Tovrin,
sorry for my late response but Iām currently busy with the update.
ICECreatureControl provides several ways to handle herds, flocks or crowds etc.
The easiest way and already part of the initial setup is to add the ICECreatureControl script to your desired character, adjust the essential settings (e.g. living zone, behaviours etc.), activate the ICECreatureRegister and define the desired population of the species.
The ICECreatureRegister handles the population while the creature or rather its clones acting autonomous, according to the defined specifications, which can be very simple but also most complex and detailed - thatās dependent on your needs and requirements.
The essential settings are absolutely suitable to implement quickly herds, flocks and crowds, such as a troop of soldiers, graze farm animals or a natural acting wildlife stock and allows your creatures to follow dynamic waypoints and process idle activities within the defined scope and if you want a wandering herd, just move the target object to the desired position or replace it with any movable object in your scene (e.g. the player or another creature) and the complete herd will follow the target.
A more elegant way is to use the Patrol and/or Escort Mission of ICECreatureControl.
The Patrol Mission represents a typical Waypoint Scenario, with static and/or dynamic waypoints. By using this mission, your herd will follow the given route, in which each creature can use a variant routing and individual kinesic behaviors, so that the crowd looks natural and will not walking uniform in one line but also this is adjustable at will.
If you want that your creatures have to follow a leader, such a pride of wolves or a squat team etc. you could use the Escort Mission. By using this mission your creature will follow and escort the specified leader according to the defined specifications.
Here just one example of use - a flock of sheep with your player as sheepherder. The player will assigned as the escort leader of one sheepdog, so that the sheepdog will follow him but have also an adequate scope for further activities, because the sheepdog will assigned as escort leader of the sheep. Some of your female sheep have children and will assigned as leader for their babies. In this scenario the complete cast will follow the player, according to the defined behaviours, which can consist of several behaviour rules with all relevant instructions, such as the desired animations, motions, sounds, effects and influences.
In addition to that, the behaviour can improve by adapt the Interaction and Environment Settings of ICECreatureControl, which allows a creature to interact with other GameObjects in the scene and its surrounding environment as well. The Interaction Settings provides for example the possibilities to realize hunting and fighting scenarios but also to simulate social relationships and the Environment Settings enables footstep sound, footprints or dust effects etc. furthermore ICECreatureControl provides a complex status system, which managed the physical fitness of a creature, so a creature can grow old and die of old age, can be affected by temperature, hunger or thirst, can receive damage and will die if its health value reaches zero.
ICECreatureControl handles each creature as an independent, individual character and therefore the final dynamic and the group behaviour of a herd, flock or crowd donāt need to be a linear process but is the sum of the individual characteristics of all your creature.
Finally I would mention, that the ICECreatureRegister, which is part of the ICECreatureControl package, handles all the population related tasks, such as the initial spawning, the population balance (including soft-respawn) etc. furthermore the register contains several environment information, provides search functions and allows the direct and performance-friendly access to each registered creature.
Hi RandAlThor,
thanks a lot - you are absolutely right and Iāll try to implemented this feature in the next version. The first steps are already done, because I already use the slope angle to find the best route and to avoid too steep passages but it is a really good idea to combine this to slower the motion and to provide a climbing animation. Many thanks for your suggestion.
Thank you icetec for the comment on my post.
I have another suggestion/question. How does this system handle zones/scenes?
Some of us using systems for making bigger worlds that are loading only the parts near the player and unloading the parts that are to far away so save memory and cpu/gpu cycles. So how do your system can be used with such a system?
For example if i just won a fight with a creature from your system in one area. Then i go away from that area but turn back to that area again. It Would be good if we have different solutions now.
One solution could be that the same creature is there again alive. A second solution could be that the creature will not come again in this area because we killed it here. There are for sure other solutions possible but if these two would work with the other load/unload area/scenes system it would be a great start.
I think, the greatest part of the solution is already implemented. All creatures can be flagged as āDontDestroyOnLoad()ā and will managed by the ICECreatureRegister.
ICECreatureRegister based on singleton pattern and can also be flagged as āDontDestroyOnLoad()ā and as I mentioned in one of my posts before, ICECreatureRegister handles all the population related tasks, such as the initial spawning, the population balance (including soft-respawn) and allows the direct and performance-friendly access to each registered creature.
With āsoft-respawnā I means, that the creatures will not be destroy if dying, ICECreatureRegister disables such objects, repositioned they, resets there states and will enabled such object according to the given population and respawn interval.
This is what is already implemented!
To expand the system according to your mentioned requirements, ICECreatureRegister have additional to managed the registered creatures in consideration of the players position e.g. based on a specific range and respective the scenes, I can implement a kind of scene management into the register, so that the register knows which creatures will be required for which scene, which creatures must be loaded and which creatures are obsolete and can be destroyed.
I think, to implement a basic zone/scene handling will not be a big deal (based of the given development), the only thing which makes me stomach-aches a little bit will be the support of differ technics the users could use to handle their scenes (e.g. existing pool management, tiles, procedural terrains etc.), here I have to find a best way to provide a powerful and open solution.
Apart from that, to realize your examples is easy done, as I mentioned, all creatures are already available in the register, Iāll implement now a flexible scheduler, the user can use to define the desired points and conditions of use for his creatures ā this will be an employment agency for virtual characters ⦠and maybe there is a way to combine this directly with the zone/scene handling.
Thanks a lot for your inspiring post and constructive suggestion ā¦
Hi Tovrin,
you are welcome - nice that my response was helpful to you. If you have further questions, please feel free to contact me. Iāll provide more examples and tutorials as soon as the update is ready to release.
I have just installed the program and have it working on my animal. Thanks.
My intention is to use this with UFPS.
I went to apply the two scripts UFPS Player and UFPS Adapater. But what I thought was a script was an asset package. I installed it and tried to apply one of the scripts. I get the following error.
Assets/ICE/ICECreatureControl/Scripts/Adapter/UniStorm/ICECreatureRegisterUniStormAdapter.cs(11,25): error CS0246: The type or namespace name `UniStormWeatherSystem_Cā could not be found. Are you missing a using directive or an assembly reference?
The strange this is that I am not even trying to use UniStorm Weather System.
Problem solved. When I imported the assets I had āUniStormā checked. When I removed the assets and re-imported, I unchecked and the problem was solved.
Hi there, just purchased the asset pack, and very cool!
Thereās one issue Iāve run into, when setting up multiple creature types (using the ufps demo scene)
I have a hippo, and rhino set up, and when used alone (not both of them spawning) they work fine. If I set both types of enemies out in the scene, one will die and take damage from the ufps player, and the other one will not. It will get hit, but never actually die.
Also when i look at these aminalās ice creature control component, the animal type for both of them all gets set to the same thing, which is always the first animal in the creature register. So no matter what I set the animal types to, they always get reset to the same one.
In the manual it indicates āJust add the ICECreatureUFPSPlayer script to your UFPS Player and
the ICECreatureUFPSAdapter script to your NPC creature and instantly both of them can interact as a
team or as fierce antagonistsā
I have done this, but I am not getting the desired response. I basically just want to be able to shoot and kill a creature. I have read through the manual describing this but there is so much detail I think that I am missing something.