From: Mario Date: Fri, 10 May 2013 05:17:35 +0000 (+1000) Subject: Use bot_debug for bot navigation dprints X-Git-Tag: xonotic-v0.7.0~54^2 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=ab813985d7870399bf2f2ba13a361567bdafe84e;p=xonotic%2Fxonotic-data.pk3dir.git Use bot_debug for bot navigation dprints --- diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 0cc8c8697..d1603c0af 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -57,6 +57,7 @@ float autocvar_bot_sound_monopoly; #define autocvar_bot_suffix cvar_string("bot_suffix") float autocvar_bot_usemodelnames; float autocvar_bot_vs_human; +float autocvar_bot_debug; float autocvar_bot_debug_tracewalk; float autocvar_bot_debug_goalstack; float autocvar_bot_wander_enable; diff --git a/qcsrc/server/bot/navigation.qc b/qcsrc/server/bot/navigation.qc index 95279d59f..0aa419038 100644 --- a/qcsrc/server/bot/navigation.qc +++ b/qcsrc/server/bot/navigation.qc @@ -1,3 +1,11 @@ +void bot_debug(string input) +{ + switch(autocvar_bot_debug) + { + case 1: dprint(input); break; + case 2: print(input); break; + } +} // rough simulation of walking from one point to another to test if a path // can be traveled, used for waypoint linking and havocbot @@ -674,7 +682,7 @@ void navigation_routerating(entity e, float f, float rangebias) { vector pointa, pointb; - // dprint("jetpack ai: evaluating path for ", e.classname,"\n"); + bot_debug(strcat("jetpack ai: evaluating path for ", e.classname, "\n")); // Point A traceline(self.origin, self.origin + '0 0 65535', MOVE_NORMAL, self); @@ -689,7 +697,7 @@ void navigation_routerating(entity e, float f, float rangebias) if(trace_fraction==1) { - // dprint("jetpack ai: can bridge these two points\n"); + bot_debug("jetpack ai: can bridge these two points\n"); // Lower the altitude of these points as much as possible float zdistance, xydistance, cost, t, fuel; @@ -725,8 +733,8 @@ void navigation_routerating(entity e, float f, float rangebias) t = zdistance / autocvar_g_jetpack_maxspeed_up; t += xydistance / autocvar_g_jetpack_maxspeed_side; fuel = t * autocvar_g_jetpack_fuel * 0.8; - - // dprint("jetpack ai: required fuel ", ftos(fuel), " self.ammo_fuel ", ftos(self.ammo_fuel),"\n"); + + bot_debug(strcat("jetpack ai: required fuel ", ftos(fuel), " self.ammo_fuel ", ftos(self.ammo_fuel), "\n")); // enough fuel ? if(self.ammo_fuel>fuel) @@ -744,7 +752,7 @@ void navigation_routerating(entity e, float f, float rangebias) if (navigation_bestrating < f) { - // dprint("jetpack path: added goal", e.classname, " (with rating ", ftos(f), ")\n"); + bot_debug(strcat("jetpack path: added goal ", e.classname, " (with rating ", ftos(f), ")\n")); navigation_bestrating = f; navigation_bestgoal = e; self.navigation_jetpack_goal = e; @@ -790,7 +798,7 @@ void navigation_routerating(entity e, float f, float rangebias) e.nearestwaypoint = nwp; else { - //dprint("FAILED to find a nearest waypoint to '", e.classname, "' #", etos(e), "\n"); + bot_debug(strcat("FAILED to find a nearest waypoint to '", e.classname, "' #", etos(e), "\n")); if(e.flags & FL_ITEM) e.blacklisted = TRUE; @@ -802,7 +810,7 @@ void navigation_routerating(entity e, float f, float rangebias) if(e.blacklisted) { - //dprint("The entity '", e.classname, "' is going to be excluded from path finding during this match\n"); + bot_debug(strcat("The entity '", e.classname, "' is going to be excluded from path finding during this match\n")); return; } } @@ -816,23 +824,21 @@ void navigation_routerating(entity e, float f, float rangebias) nwp = e.nearestwaypoint; } - //dprint("-- checking ", e.classname, " (with cost ", ftos(nwp.wpcost), ")\n"); + bot_debug(strcat("-- checking ", e.classname, " (with cost ", ftos(nwp.wpcost), ")\n")); if (nwp) if (nwp.wpcost < 10000000) { //te_wizspike(nwp.wpnearestpoint); - // dprint(e.classname, " ", ftos(f), "/(1+", ftos((nwp.wpcost + vlen(e.origin - nwp.wpnearestpoint))), "/", ftos(rangebias), ") = "); + bot_debug(strcat(e.classname, " ", ftos(f), "/(1+", ftos((nwp.wpcost + vlen(e.origin - nwp.wpnearestpoint))), "/", ftos(rangebias), ") = ")); f = f * rangebias / (rangebias + (nwp.wpcost + vlen(o - nwp.wpnearestpoint))); - //dprint("considering ", e.classname, " (with rating ", ftos(f), ")\n"); - //dprint(ftos(f)); + bot_debug(strcat("considering ", e.classname, " (with rating ", ftos(f), ")\n")); if (navigation_bestrating < f) { - // dprint("ground path: added goal ", e.classname, " (with rating ", ftos(f), ")\n"); + bot_debug(strcat("ground path: added goal ", e.classname, " (with rating ", ftos(f), ")\n")); navigation_bestrating = f; navigation_bestgoal = e; } } - //dprint("\n"); } // adds an item to the the goal stack with the path to a given item @@ -911,7 +917,7 @@ void navigation_poptouchedgoals() if(checkpvs(self.origin + self.view_ofs, self.goalstack01)) if(tracewalk(self, self.origin, self.mins, self.maxs, (self.goalstack01.absmin + self.goalstack01.absmax) * 0.5, bot_navigation_movemode)) { - /// dprint("path optimized for ", self.netname, ", removed a goal from the queue\n"); + bot_debug(strcat("path optimized for ", self.netname, ", removed a goal from the queue\n")); navigation_poproute(); // TODO this may also be a nice idea to do "early" (e.g. by // manipulating the vlen() comparisons) to shorten paths in @@ -988,7 +994,7 @@ void navigation_goalrating_end() return; navigation_routetogoal(navigation_bestgoal, self.origin); -// dprint("best goal ", self.goalcurrent.classname , "\n"); + bot_debug(strcat("best goal ", self.goalcurrent.classname , "\n")); // If the bot got stuck then try to reach the farthest waypoint if not (self.navigation_hasgoals) @@ -996,7 +1002,7 @@ void navigation_goalrating_end() { if not(self.aistatus & AI_STATUS_STUCK) { - //dprint(self.netname, " cannot walk to any goal\n"); + bot_debug(strcat(self.netname, " cannot walk to any goal\n")); self.aistatus |= AI_STATUS_STUCK; } @@ -1051,7 +1057,7 @@ void navigation_unstuck() if not(bot_waypoint_queue_owner) { - // dprint(self.netname, " sutck, taking over the waypoints queue\n"); + bot_debug(strcat(self.netname, " sutck, taking over the waypoints queue\n")); bot_waypoint_queue_owner = self; bot_waypoint_queue_bestgoal = world; bot_waypoint_queue_bestgoalrating = 0; @@ -1064,7 +1070,7 @@ void navigation_unstuck() { // evaluate the next goal on the queue float d = vlen(self.origin - bot_waypoint_queue_goal.origin); - // dprint(self.netname, " evaluating ", bot_waypoint_queue_goal.classname, " with distance ", ftos(d), "\n"); + bot_debug(strcat(self.netname, " evaluating ", bot_waypoint_queue_goal.classname, " with distance ", ftos(d), "\n")); if(tracewalk(bot_waypoint_queue_goal, self.origin, PL_MIN, PL_MAX, bot_waypoint_queue_goal.origin, bot_navigation_movemode)) { if( d > bot_waypoint_queue_bestgoalrating) @@ -1079,14 +1085,14 @@ void navigation_unstuck() { if (bot_waypoint_queue_bestgoal) { - //dprint(self.netname, " stuck, reachable waypoint found, heading to it\n"); + bot_debug(strcat(self.netname, " stuck, reachable waypoint found, heading to it\n")); navigation_routetogoal(bot_waypoint_queue_bestgoal, self.origin); self.bot_strategytime = time + autocvar_bot_ai_strategyinterval; self.aistatus &~= AI_STATUS_STUCK; } else { - //dprint(self.netname, " stuck, cannot walk to any waypoint at all\n"); + bot_debug(strcat(self.netname, " stuck, cannot walk to any waypoint at all\n")); } bot_waypoint_queue_owner = world; @@ -1098,7 +1104,7 @@ void navigation_unstuck() return; // build a new queue - //dprint(self.netname, " stuck, scanning reachable waypoints within ", ftos(search_radius)," qu\n"); + bot_debug(strcat(self.netname, " stuck, scanning reachable waypoints within ", ftos(search_radius)," qu\n")); entity head, first; @@ -1126,7 +1132,7 @@ void navigation_unstuck() bot_waypoint_queue_goal = first; else { - //dprint(self.netname, " stuck, cannot walk to any waypoint at all\n"); + bot_debug(strcat(self.netname, " stuck, cannot walk to any waypoint at all\n")); bot_waypoint_queue_owner = world; } }