View Issue Details

IDProjectCategoryLast Update
0018763Starward RogueBug - OtherMar 19, 2016 7:19 pm
ReporterPepisolo Assigned Tokeith.lamothe  
Severityminor 
Status resolvedResolutionfixed 
Product Version1.016-1.017 
Fixed in Version1.018 
Summary0018763: Familiar behavior FamiliarFollower wigs out
DescriptionAs an example, use the AutocannonMinibot (not AutocannonDrone) familiar in Dayton_Familiars.xml. The item pickup entity is AutocannonMinibotPickup.

The familiar is currently set to the behavior FamiliarBeelineFollower which seems to work fine aside from it not being as desired as having a Pathfinding behavior. If you switch this to the FamiliarFollower behavior (the pathfinding one) the familiar seems to wig out as if it's caught between two different types of AI movement.

Example vid:

https://dl.dropboxusercontent.com/u/30011618/Starward%20Rogue/StarwardRogue%20--%20Drone%20Wig%20Out.mp4

I believe that this behavior is also visible on the Deep Blue mech familiar, although the wigging out is less pronounced, maybe because that familiar is player directed.

Test room attached.

TagsNo tags attached.

Activities

Pepisolo

Mar 1, 2016 4:18 pm

developer  

a_testCraig.xml (3,523 bytes)   
<root>


  <room_setup script="Miniboss/CMP_MinibossBasic" skip_normal_enemy_population="true" />
  <entity type="PlayerStandard" category="Player"/>

 
   <entity type="AutocannonMinibotPickup" category="ItemPickup" offset_from_center="400,100"/>
  


  
 <entity type="BansheeRed" category="Enemy" offset_from_center="300,0"/>
 <entity type="BansheeRed" category="Enemy" offset_from_center="300,0"/>

  
  
 

  
  
  
 




</root>


<!--


<entity type="GuardianBlaster" category="ItemPickup" offset_from_center="-500,0"/>
  <entity type="RainCannon" category="ItemPickup" offset_from_center="-400,0"/>
  <entity type="STG4377" category="ItemPickup" offset_from_center="-300"/>
  <entity type="TwinMachineguns" category="ItemPickup" offset_from_center="-200,0"/>
  <entity type="RiotSuppressor" category="ItemPickup" offset_from_center="-100,0"/>
  <entity type="Grapeshot" category="ItemPickup" offset_from_center="0,0"/>
  <entity type="PrecisionRailgun" category="ItemPickup" offset_from_center="100,0"/>
  <entity type="PhantomBullet" category="ItemPickup" offset_from_center="200,0"/>
  <entity type="SplitfireCannon" category="ItemPickup" offset_from_center="300,0"/>
  <entity type="VenomousStinger" category="ItemPickup" offset_from_center="400,0"/>
  <entity type="HornetMine" category="ItemPickup" offset_from_center="500,0"/>
  <entity type="NarcoStinger" category="ItemPickup" offset_from_center="600,0"/>
  <entity type="HunterKiller" category="ItemPickup" offset_from_center="700,0"/>

<entity type="TurboBlaster" category="ItemPickup" offset_from_center="-600,0"/>
  <entity type="Translocator" category="ItemPickup" offset_from_center="-500,0"/>
  <entity type="FragmentCannon" category="ItemPickup" offset_from_center="-400,0"/>
  <entity type="SmartGun" category="ItemPickup" offset_from_center="-300"/>
  <entity type="GuardianGun" category="ItemPickup" offset_from_center="-200,0"/>
  <entity type="Railgun" category="ItemPickup" offset_from_center="-100,0"/>
  <entity type="PhaserGun" category="ItemPickup" offset_from_center="0,0"/>
  <entity type="SplinterCannon" category="ItemPickup" offset_from_center="100,0"/>
  <entity type="HornetNest" category="ItemPickup" offset_from_center="200,0"/>
  <entity type="Incinerator" category="ItemPickup" offset_from_center="300,0"/>
  <entity type="GrenadeLauncher" category="ItemPickup" offset_from_center="400,0"/>
  <entity type="ClusterLauncher" category="ItemPickup" offset_from_center="500,0"/>
  <entity type="PhaseBlade" category="ItemPickup" offset_from_center="600,0"/>
  <entity type="PoisonedKnife" category="ItemPickup" offset_from_center="700,0"/>

 <room_setup script="Unused"
                skip_normal_enemy_population="false"
                extra_player_systems=""
                player_familiars=""
                use_boss_data="InvaderBoss"
                use_boss_room_node_index="0"
  />
  <entity type="PlayerStandard" category="Player"/>

   <room_setup script="Miniboss/CMP_MinibossBasic" skip_normal_enemy_population="true" />
  <entity type="PlayerStandard" category="Player"/>
 
  
   <entity type="ReaperRed" category="Enemy" offset_from_center="-300,0"/>
   
   
  <room_setup script="Unused"
               skip_normal_enemy_population="false"
               extra_player_systems=""
               player_familiars=""
               use_boss_data="HunterRed"
               use_boss_room_node_index="0"
  />
  



</root>
-->
a_testCraig.xml (3,523 bytes)   

ptarth

Mar 3, 2016 5:02 pm

developer   ~0045354

I think this is correct.
The over-riding behavior is to stay within LeashDistance from the player. Once there it then gets an Attack order, so it tries to close with an enemy. It then finds out it is too far from the player and so the familiar returns to the player.

If you want different behavior, you'll have to decide under what circumstances the drone is allowed to engage the enemy. Otherwise he'll keep getting pulled back to the "carrier".

I haven't looked, but the beam familiar doesn't have an attack and attack range like that, so it doesn't need to close to the enemy.

You can change the range of the autocannon system to prevent the autocannon from going searching for enemies.

Although in general, I still think that familiars should be made "bodiless", always orbit the player, and never collide with anything.

Pepisolo

Mar 3, 2016 6:39 pm

developer   ~0045356

I'm not sure why BeeLineFollower seems to work perfectly, but FamiliarFollower doesn't. (scratches head). Could the Attack order code be removed from FamiliarFollower, I'm not sure if it's at all useful.

Regarding Orbit only drones, that is the way in which the game originally was, but it was deemed boring by Misery and Chris, so the followers were introduced. I do like the follower behavior, though, in theory, if I can get it working nicely.

ptarth

Mar 3, 2016 9:59 pm

developer   ~0045358

Amusingly, I would say the opposite.
BeelineFollower does not interrupt orders to return to the player. He won't come back until everything is dead.
FamiliarFollower DOES interrupt orders to return to the player. He will constantly return to the player.

I believe the key is Flock.cs line 591.
newOrder.UpdatePathfinding( 50, 200, false );
Comment this out and the FamiliarFollower will not return to the player until everything is dead.If you compare FamilarFollower and BeelineFollower this is the relevant different line. Watching in game it seems to behave correctly.

This might also solve your Kamikaze familiar problem.

Pepisolo

Mar 4, 2016 12:55 am

developer   ~0045360

The weird thing is that the AutoCannon Minibot using BeeLineFollower does return to the player, even if everything in the room is not dead, so I'm not sure what that extra code in FamiliarFollower is intended to accomplish (scratches head).

I'll have to try and comment out that code and compile with the changes, to see how that works out. Thanks!

ptarth

Mar 4, 2016 1:52 am

developer   ~0045361

It might only target enemies that are within weapon range. Or it might return to player after a target dies.

keith.lamothe

Mar 19, 2016 7:19 pm

administrator   ~0045444

For 1.018:

* Fixed a few problems with the FamiliarFollower logic that was making it rubber-band back and forth between the player and the enemy, etc.

Thanks :)

Issue History

Date Modified Username Field Change
Mar 1, 2016 4:18 pm Pepisolo New Issue
Mar 1, 2016 4:18 pm Pepisolo File Added: a_testCraig.xml
Mar 3, 2016 5:02 pm ptarth Note Added: 0045354
Mar 3, 2016 6:39 pm Pepisolo Note Added: 0045356
Mar 3, 2016 9:59 pm ptarth Note Added: 0045358
Mar 4, 2016 12:55 am Pepisolo Note Added: 0045360
Mar 4, 2016 1:52 am ptarth Note Added: 0045361
Mar 10, 2016 7:37 pm Pepisolo Assigned To => keith.lamothe
Mar 10, 2016 7:37 pm Pepisolo Status new => assigned
Mar 19, 2016 7:19 pm keith.lamothe Note Added: 0045444
Mar 19, 2016 7:19 pm keith.lamothe Status assigned => resolved
Mar 19, 2016 7:19 pm keith.lamothe Fixed in Version => 1.018
Mar 19, 2016 7:19 pm keith.lamothe Resolution open => fixed