Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Nov 30, 2015, 9:34:54 PM (9 years ago)
Author:
gania
Message:

tried to fix fighting whn fps is low

Location:
code/branches/campaignHS15
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • code/branches/campaignHS15/data/levels/AITest.oxw

    r10903 r10906  
    157157<!-- HERE STARTS DEMO FOR FIGHTING -->
    158158   
    159 
     159<!--
    160160    <SpaceShip position="-4000, 1500, -1000" lookat="0,0,0" team=0 name="d1sd1">
    161161      <templates>
     
    195195      </controller>
    196196    </SpaceShip>
     197    <SpaceShip position="-5000, 1500, -1000" lookat="0,0,0" team=0 name="d1s1d1">
     198      <templates>
     199        <Template link=spaceshipassff />
     200      </templates>
     201      <controller>
     202        <DivisionController team=0 formationMode="WALL">
     203
     204        </DivisionController>
     205      </controller>
     206    </SpaceShip>
     207    <SpaceShip position="-5000, 1900, -1000" lookat="0,0,0" team=0 name="d1s1s1">
     208      <templates>
     209        <Template link=spaceshipassff />
     210      </templates>
     211      <controller>
     212        <SectionController team=0>
     213        </SectionController>
     214      </controller>
     215    </SpaceShip>
     216    <SpaceShip position="-5000, 2100, -1000" lookat="0,0,0" team=0 name="d1s1w1">
     217      <templates>
     218        <Template link=spaceshipassff />
     219      </templates>
     220      <controller>
     221        <WingmanController team=0>
     222        </WingmanController>
     223      </controller>
     224    </SpaceShip>
     225    <SpaceShip position="-5000, 2400, -1000" lookat="0,0,0" team=0 name="d1s1w2">
     226      <templates>
     227        <Template link=spaceshipassff />
     228      </templates>
     229      <controller>
     230        <WingmanController team=0>
     231        </WingmanController>
     232      </controller>
     233    </SpaceShip>
    197234
    198235    <SpaceShip position="2000, -1500, 1000" lookat="0,0,0" team=1  name="d2sd1">
     
    225262    </SpaceShip>
    226263    <SpaceShip position="2000, -2400, 1000" lookat="0,0,0" team=1 name="d2sw2">
     264      <templates>
     265        <Template link=spaceshipassff />
     266      </templates>
     267      <controller>
     268        <WingmanController team=1>
     269        </WingmanController>
     270      </controller>
     271    </SpaceShip>
     272    <SpaceShip position="1000, -1500, 1000" lookat="0,0,0" team=1  name="d2s1d1">
     273      <templates>
     274        <Template link=spaceshipassff />
     275      </templates>
     276      <controller>
     277        <DivisionController team=1 formationMode="WALL">
     278
     279        </DivisionController>
     280      </controller>
     281    </SpaceShip>
     282    <SpaceShip position="1000, -1900, 1000" lookat="0,0,0" team=1 name="d2s1s1">
     283      <templates>
     284        <Template link=spaceshipassff />
     285      </templates>
     286      <controller>
     287        <SectionController team=1>
     288        </SectionController>
     289      </controller>
     290    </SpaceShip>
     291    <SpaceShip position="1000, -2100, 1000" lookat="0,0,0" team=1 name="d2s1w1">
     292      <templates>
     293        <Template link=spaceshipassff />
     294      </templates>
     295      <controller>
     296        <WingmanController team=1>
     297        </WingmanController>
     298      </controller>
     299    </SpaceShip> -->
     300    <SpaceShip position="1000, -2400, 1000" lookat="0,0,0" team=1 name="d2s1w2">
    227301      <templates>
    228302        <Template link=spaceshipassff />
  • code/branches/campaignHS15/data/levels/shuttleRetaliation.oxw

    r10904 r10906  
    4242    <?lua
    4343
    44         enemies = 4
    45         allies = 4
     44        enemies = 2
     45        allies = 2
    4646
    4747        radSector = 12000
  • code/branches/campaignHS15/src/orxonox/controllers/ActionpointController.cc

    r10903 r10906  
    5353        this->squaredaccuracy_ = 2500;
    5454        this->bFirstTick_ = true;
    55 
     55        this->bStartedDodging_ = false;
     56        this->timeDodged_ = 0;
    5657        RegisterObject(ActionpointController);
    5758
     
    7879            this->timeout_ -= dt;
    7980        }
     81        if (this->bStartedDodging_)
     82        {
     83            this->timeDodged_ += dt;
     84            if (this->timeDodged_ > 2.0f)
     85            {
     86                this->bStartedDodging_ = false;
     87                this->timeDodged_ = 0;
     88            }
     89        }
     90        maneuverCounter_ += dt;
     91        if (maneuverCounter_ > 6.0f)
     92            maneuverCounter_ = 0;
    8093        if (timeout_ <= 0)
    8194            this->bFiredRocket_ = false;
     
    110123            this->bFirstTick_ = false;
    111124        }
    112 
     125        if (this->hasTarget())
     126        {
     127            this->maneuver();
     128            if (static_cast<int>(this->maneuverCounter_*100) % 3 == 0)
     129                this->bShooting_ = this->canFire();
     130        }
    113131        SUPER(ActionpointController, tick, dt);
    114132    }
     
    123141        this->deltaHp = orxonox_cast<Pawn*> (this->getControllableEntity())->getHealth() - this->previousHp;
    124142        this->previousHp = orxonox_cast<Pawn*> (this->getControllableEntity())->getHealth();
     143
    125144        // if (this->actionCounter_ % 2 == 0)
    126145        //No action -> pop one from stack
     
    236255            }
    237256        }
    238         if (this->hasTarget())
    239         {
    240             this->maneuver();
    241             this->bShooting_ = this->canFire();
     257
    242258            // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
    243259            // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
     
    252268            // //----fire if you can----
    253269            // this->bShooting_ = this->canFire(); 
    254         }
     270         
    255271        this->actionCounter_ += this->actionCounter_ < 100000 ? 1 : -this->actionCounter_ ;
    256272
  • code/branches/campaignHS15/src/orxonox/controllers/FightingController.cc

    r10903 r10906  
    118118        if ( !this->target_ || !this->getControllableEntity())
    119119            return;
    120         maneuverCounter_++;
    121         if (maneuverCounter_ > 5)
    122             maneuverCounter_ = 0;
     120
    123121
    124122        Vector3 thisPosition = this->getControllableEntity()->getWorldPosition();
     
    128126        float diffLength = diffVector.length();
    129127        Vector3 diffUnit = diffVector/diffLength;
    130         bool bTargetIsLookingAtThis = CommonController::isLooking (this->target_, this->getControllableEntity(), math::pi/15.0f)
     128        bool bTargetIsLookingAtThis = CommonController::isLooking (this->target_, this->getControllableEntity(), math::pi/10.0f)
    131129            || this->deltaHp < 0;
    132130
     
    140138            this->setTargetPosition(this->positionOfTarget_ - diffUnit * 100.0f);
    141139        }
    142         //too close? How do u expect to dodge anything? Just attack!
     140        else
     141        {
     142            this->bKeepFormation_ = false;
     143            // if (this->actionCounter_ % 3 == 0)
     144            if (maneuverCounter_ <= 1.2)
     145            {
     146                // orxout(internal_error) << "attacking" << endl;
     147                this->setTargetPosition(this->positionOfTarget_ - diffUnit * 50.0f);   
     148                return;
     149            }
     150            else if (bTargetIsLookingAtThis || diffLength < 700.0f)
     151            {
     152                // orxout(internal_error) << "dodging" << endl;
     153                if (!this->bStartedDodging_)
     154                {
     155                    this->bStartedDodging_ = true;
     156                    dodge(thisPosition, diffLength, diffUnit);       
     157                }
     158            }
     159            else
     160            {
     161                if (diffLength < 1000)
     162                {
     163                // orxout(internal_error) << "looking" << endl;                   
     164                    this->stopMoving();
     165                    this->startLookingAtTarget();
     166
     167                }
     168                else
     169                {
     170                // orxout(internal_error) << "closing up" << endl;                   
     171                    this->setTargetPosition(this->positionOfTarget_ - diffUnit * 300.0f);
     172                }
     173            }
     174        }
     175        /*//too close? How do u expect to dodge anything? Just attack!
    143176        else if (diffLength < 1000)
    144177        {   
     
    146179
    147180            //at this point, just look and shoot
    148             if (diffLength < 500)
     181            if (diffLength < 1000)
    149182            {
    150183                this->stopMoving();
    151184                this->startLookingAtTarget();
     185
    152186            }
    153187            else
     
    160194        {
    161195            this->bKeepFormation_ = false;
    162             this->setTargetPosition(this->positionOfTarget_ - diffUnit * 300.0f);
     196            this->setTargetPosition(this->positionOfTarget_ - diffUnit * 900.0f);
    163197        }
    164198        //That's unfortunate, he is looking and probably shooting... try to dodge what we can... 
     
    168202            if (maneuverCounter_ == 0)
    169203            {
    170                 this->setTargetPosition(this->positionOfTarget_ - diffUnit * 100.0f);   
     204                this->setTargetPosition(this->positionOfTarget_ - diffUnit * 900.0f);   
    171205                return;
    172206            }
    173207            if (this->actionCounter_ % 3 == 0)
    174                 dodge(thisPosition, diffUnit);
    175         }
     208                dodge(thisPosition, diffLength, diffUnit);
     209        }*/
    176210    }
    177211    void FightingController::dodgeTowards (Vector3& position)
     
    200234        this->boostControl();
    201235    }
    202     void FightingController::dodge(const Vector3& thisPosition, Vector3& diffUnit)
     236    void FightingController::dodge(const Vector3& thisPosition, float diffLength, Vector3& diffUnit)
    203237    {
    204238        //d.x*x + d.y*y + d.z*z == 0
    205239        //z = 1/d.z * (-d.y*y - d.x * x)
    206         float x = CommonController::randomInRange (100, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
    207         float y = CommonController::randomInRange (100, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
     240        float x = CommonController::randomInRange (300, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
     241        float y = CommonController::randomInRange (300, 800) * (CommonController::randomInRange(0,1) <= 0.5 ? 1 : -1);
    208242        float z = diffUnit.z == 0 ? 0 : (1/diffUnit.z) * (-x * diffUnit.x - y * diffUnit.y);
    209         this->setTargetPosition(thisPosition + Vector3(x,y,z) + (this->deltaHp < 0 ? -diffUnit * 450.0f : diffUnit * 100.0f));
     243        if (diffLength < 150.0f)
     244        {
     245            this->setTargetPosition(this->positionOfTarget_ + Vector3(z,x,y));
     246        }
     247        else
     248        {
     249        this->setTargetPosition(thisPosition + Vector3(x,y,z) + (this->deltaHp < 0 ? -diffUnit * 450.0f :
     250            (diffLength < 700.0f ? -diffUnit*700.0f : diffUnit * 50.0f)));
     251
     252        }
    210253        this->boostControl();
    211254
     
    225268        }
    226269
    227         return squaredDistanceToTarget() < this->attackRange_*this->attackRange_ && this->isLookingAtTarget(math::pi / 20.0f);
     270        return squaredDistanceToTarget() < this->attackRange_*this->attackRange_ && this->isLookingAtTarget(math::pi / 10.0f);
    228271    }
    229272
  • code/branches/campaignHS15/src/orxonox/controllers/FightingController.h

    r10898 r10906  
    6767            void maneuver(); //<! sets this->targetPosition_, which is a Vector3 of where this ship flies. Decision is made based on
    6868                             //<! the distance to enemy, if being attacked, dodge() is called, otherwise ship just flies towards this->target_.
    69             void dodge(const Vector3& thisPosition, Vector3& diffUnit); //<! choose a random Vector3 perpendicular to the difference vector between
     69            void dodge(const Vector3& thisPosition, float diffLength,  Vector3& diffUnit); //<! choose a random Vector3 perpendicular to the difference vector between
    7070                                                                        //<! this and target_ plus or minus some amount in difference vector direction,
    7171                                                                        //<! depending on whether it is better to close up or survive.
     
    8484            int attackRange_;
    8585            bool bShooting_;
    86             int maneuverCounter_;   
     86            float maneuverCounter_;   
    8787            bool bLookAtTarget_;
    8888            float deltaHp;
    8989            float previousHp;
     90            bool bStartedDodging_;
     91            float timeDodged_;
    9092            //WEAPONSYSTEM DATA
    9193            int rocketsLeft_;
  • code/branches/campaignHS15/src/orxonox/controllers/SectionController.cc

    r10888 r10906  
    125125                if (this->hasTarget())
    126126                {
    127                     this->maneuver();
    128                     this->bShooting_ = this->canFire();
     127                    // this->maneuver();
     128                    // this->bShooting_ = this->canFire();
    129129                    // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
    130130                    // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
  • code/branches/campaignHS15/src/orxonox/controllers/WingmanController.cc

    r10888 r10906  
    112112                if (this->hasTarget())
    113113                {
    114                     this->maneuver();
    115                     this->bShooting_ = this->canFire();
     114                    // this->maneuver();
     115                    // this->bShooting_ = this->canFire();
    116116                    // Vector3 healthPosition = bestHealthPickup((this->target_->getWorldPosition() - this->getControllableEntity()->getWorldPosition()).length());
    117117                    // if ((this->getControllableEntity()->getWorldPosition() - healthPosition).length() < this->tolerance_)
Note: See TracChangeset for help on using the changeset viewer.