Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 16, 2015, 3:25:17 PM (9 years ago)
Author:
gania
Message:

deleted old behaviour of AIController (partly), forced ships to form a formation, TODO make tactics for different formation modes, choose one depending on what's better.

Location:
code/branches/AI_HS15/src/orxonox/controllers
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • code/branches/AI_HS15/src/orxonox/controllers/AIController.cc

    r10651 r10652  
    6161            if (this->formationFlight_)
    6262            {
     63                //When this is a master and was destroyed, destructor might complain that there are slaves of this, although this was removed from formation
     64                //race conditions?
     65                //destructor takes care of slaves anyway, so no need to worry about internal_error
     66
    6367
    6468                //changed order -> searchNewMaster MUSTN'T be called in SLAVE-state (bugfix for internal-error messages at quit)
     
    6872
    6973                // return to Master after being forced free
    70                 if (this->freedomCount_ == 1)
     74                if (this->freedomCount_ == ACTION_INTERVAL)
    7175                {
    7276                    this->state_ = SLAVE;
    73                     this->freedomCount_ = 0;
    74                 }
    75             }
    76 
     77                    this->freedomCount_ = 0; // ACTION_INTERVAL is 1 sec, freedomCount is a remaining time of temp. freedom
     78                }
     79            } else{
     80                //form a formation
     81                if (!this->forcedFree())
     82                    this->searchNewMaster();
     83            }
    7784            this->defaultBehaviour(maxrand);
    7885
     
    8289        {
    8390            // search enemy
    84             random = rnd(maxrand);
    85             if (random < (botlevel_*100) && (!this->target_))
     91            if ((!this->target_))
    8692                this->searchNewTarget();
    8793
    88             // next enemy
    89             random = rnd(maxrand);
    90             if (random < (botlevel_*30) && (this->target_))
    91                 this->searchNewTarget();
    92 
     94           
    9395            // shoot
    94             random = rnd(maxrand);
    95             if (!(this->passive_) && random < (botlevel_*100) && (this->target_ && !this->bShooting_))
     96            if ((this->target_ && !this->bShooting_))
    9697                this->bShooting_ = true;
    9798
    9899            // stop shooting
    99             random = rnd(maxrand);
    100             if (random < (1-botlevel_)*50 && (this->bShooting_))
     100            if (this->bShooting_ && !this->target_)
    101101                this->bShooting_ = false;
    102102
     
    105105        if (this->state_ == MASTER)
    106106        {
     107
     108            this->setFormationMode(ATTACK);
     109           
    107110            this->commandSlaves();
    108111
     
    127130                   this->followRandomHumanInit();
    128131*/
     132               /*
    129133                 // lose master status (only if less than 4 slaves in formation)
    130134                random = rnd(maxrand);
    131135                if(random < 15/(this->slaves_.size()+1) && this->slaves_.size() < 4 )
    132136                   this->loseMasterState();
    133 
     137                */
     138               
    134139                // look out for outher masters if formation is small
    135140                random = rnd(maxrand);
     
    149154        if (!this->isActive())
    150155            return;
    151 
    152156        float random;
    153157        float maxrand = 100.0f / ACTION_INTERVAL;
     
    189193                        {
    190194                            this->aimAtTarget();
    191                             random = rnd(maxrand);
    192                             if(this->botlevel_*70 > random && !this->isCloseAtTarget(100))
    193                                 this->follow();  //If a bot is shooting a player, it shouldn't let him go away easily.
     195                            this->follow();  //If a bot is shooting a player, it shouldn't let him go away easily.
    194196                        }
    195197                    }
     
    252254        }//END_OF ROCKET MODE
    253255
     256
    254257        SUPER(AIController, tick, dt);
    255258    }
    256259//**********************************************NEW
    257260    void AIController::defaultBehaviour(float maxrand)
    258     {     
    259              if (!this->target_)
    260                 this->searchNewTarget();
    261              if (!(this->passive_) && (this->target_ && !this->bShooting_))
    262                     this->bShooting_ = true;
    263             /*
    264             float random;
    265             // search enemy
    266             random = rnd(maxrand);
    267             if (random < (botlevel_* 100) && (!this->target_))
    268                 this->searchNewTarget();
    269 
    270             // forget enemy
    271             random = rnd(maxrand);
    272             if (random < ((1-botlevel_)*20) && (this->target_))
    273                 this->forgetTarget();
    274 
    275             // next enemy
    276             random = rnd(maxrand);
    277             if (random < (botlevel_*30) && (this->target_))
    278                 this->searchNewTarget();
    279 
    280             // fly somewhere
    281             random = rnd(maxrand);
    282             if (random < 50 && (!this->bHasTargetPosition_ && !this->target_))
    283                 this->searchRandomTargetPosition();
    284 
    285             // stop flying
    286             random = rnd(maxrand);
    287             if (random < 10 && (this->bHasTargetPosition_ && !this->target_))
    288                 this->bHasTargetPosition_ = false;
    289 
    290             // fly somewhere else
    291             random = rnd(maxrand);
    292             if (random < 30 && (this->bHasTargetPosition_ && !this->target_))
    293                 this->searchRandomTargetPosition();
    294 
    295             if (this->state_ == MASTER) // master: shoot
    296             {
    297                 random = rnd(maxrand);
    298                 if (!(this->passive_) && random < (100*botlevel_) && (this->target_ && !this->bShooting_))
    299                 {
    300                     this->bShooting_ = true;
    301                     this->forceFreeSlaves();
    302                 }
    303             }
    304             else
    305             {
    306                 // shoot
    307                 random = rnd(maxrand);
    308                 if (!(this->passive_) && random < (botlevel_*100) && (this->target_ && !this->bShooting_))
    309                     this->bShooting_ = true;
    310             }
    311 
    312             // stop shooting
    313             random = rnd(maxrand);
    314             if (random < ((1 - botlevel_)*50) && (this->bShooting_))
    315                 this->bShooting_ = false;
    316 
    317             // boost
    318             random = rnd(maxrand);
    319             if (random < botlevel_*50 )
    320                 this->boostControl();
    321             */
    322 
    323            
    324             // update Checkpoints
    325             /*random = rnd(maxrand);
    326             if (this->defaultWaypoint_ && random > (maxrand-10))
    327                 this->manageWaypoints();
    328             else //if(random > maxrand-10) //CHECK USABILITY!!*/
    329             if (this->waypoints_.size() == 0 )
    330                 this->manageWaypoints();
    331 
     261    { 
     262        if (!this->target_)
     263            this->searchNewTarget();
     264        if (!(this->passive_) && (this->target_ && !this->bShooting_))
     265            this->bShooting_ = true;
    332266           
    333267    }
  • code/branches/AI_HS15/src/orxonox/controllers/ArtificialController.h

    r10651 r10652  
    5353                { return this->botlevel_; }
    5454            static void setAllBotLevel(float level);
    55             //WAYPOINT FUNCTIONS
     55            //WAYPOINT FUNCTIONS`
    5656            void addWaypoint(WorldEntity* waypoint);
    5757            WorldEntity* getWaypoint(unsigned int index) const;
  • code/branches/AI_HS15/src/orxonox/controllers/FormationController.cc

    r10631 r10652  
    105105                        orxout(internal_error) << this << " is still master in " << (*it) << endl;
    106106                        it->myMaster_ = 0;
     107                        it->state_ = FREE;
    107108                    }
    108109
     
    472473        Vector3 dest = this->getControllableEntity()->getPosition();
    473474
    474         // 1 slave: follow
     475        // only 1 slave: follow
    475476        if (this->slaves_.size() == 1)
    476477        {
Note: See TracChangeset for help on using the changeset viewer.