![]() |
Re: Waypointing
There are datacore and boot camp waypoints. Sorry for not including more, but development of the bot takes priority over making waypoint files (which is a long tedious job).
|
Re: Waypointing
Quote:
*~BuM~* |
Re: Waypointing
yeah , I know , like my old bot , which only comes with 1 wpt file... Anyway , well done !
|
Re: Waypointing
Right now the problem is.. do I release another version with metamod abilities but still crippled S&I support, or do I hold off and try to fix this issue with S&I?
Decisions decisions. Feedback appreciated. |
Re: Waypointing
Quote:
*~BuM~* |
Re: Waypointing
I'd say you should release it, but you must state somewhere about the problem with the S&I bot in a readme or something. Since it's gonna take quite a while to fix this problem, might as well make more your "community" happier. =)
|
Re: Waypointing
Take your time, small steps are ok and lead to the goal :). If you have new features I would make a release and say, "hey ok, this and that is not fixed yet" -but the people see thereīs something happening. I loved the S&I-mod so much and would love to have a bot for it :). Have fun and take your time. Small steps, one by one... 8) .
|
Re: Waypointing
Hm, I suppose then I'll package up what I have and put a large red notice/warning on the site about the S&I issue.
Except to see a release today (it's 5 AM right now :P) or tomorrow, depending on how busy I am. |
Re: Waypointing
Quote:
*~BuM~* |
Re: Waypointing
I think you should change the file name to "S&I doesn't fully function yet" before newbs come hurrying here and keep asking the same darn question. (Fortunately none has appeared yet.) Oh yeah, don't forget to package CoCo's waypoints as well. =P
|
Re: Waypointing
Hey,
when my gravebot froze, when my windows xp said to send error report, i checked what is contained in the report and found this szAppName : hl.exe szAppVer : 1.1.1.1 szModName : hl.exe szModVer : 1.1.1.1 offset : 009cab46 dunno if thats any help coz i know nothing about AI Also these files are related to the freeze C:\DOCUME~1\OWNER~1\LOCALS~1\Temp\WER2F.tmp.dir00\ hl.exe.mdmp C:\DOCUME~1\OWNER~1\LOCALS~1\Temp\WER2F.tmp.dir00\ appcompat.txt |
Re: Waypointing
I've been doing more testing and for some reason, on daybreak the loop happens
very early in the game all the time. I've played daybreak about 10 times and it seems to happen in the first 5-10 minutes in the game, nothing more.... E----------D----------I----------T E----------D----------I----------T When my game froze, I listened to the repeating sounds and I think I could hear the sound of someone spawning in si_deep. When I tried again I could hear the spawning noise again when it froze... spawning the cause?? E----------D----------I----------T E----------D----------I----------T |
Re: Waypointing
At first, that's what I thought it was, but according to Ghoul, it's more likely to be along the lines of weapons/ weapon changing. Maybe both would cause the freeze?
|
Re: Waypointing
Let's just wait until he is positive that it is something, hopefully this will be fixed soon... :'(
|
Re: Waypointing
Hey there guys,
I don't want to toss any fuel on the fire, but since we're on the topic of bot issues... I finally got a chance to run my server using your bot. I must say, I have never had more fun fighting bots in my life, so excellent job there. The problem I am having is that when I run a server with serveral bots (I tested it with 8) and 2 human players, we had a server crash. It was an SZ_Getspace error that has been mentioned in previous posts on other forums. The error occurred at the exact moment that an 11th player joined. The server maxplayer value was set for 10, so naturally, when a player attempted to join, a random bot was kicked and the player was admitted... and as soon as the server confirmed his connection, the server crashed for everyone and the aforementioned error was received. The exact error reads as follows: "SZ_GetSpace: Tried to write to an uninitialized sizebuf_t: ???" The best research I could do on the topic was a random member of a forum that said that this error is caused when a player and bot are entering/leaving the server... and something with the bot and the HL.exe doesn't "jive.".... If you have any ideas, do share. Sorry to put more bad news out in the open, but I think it's important that you know. I have been able to run the server with small traffic (less than 4 players including bots) for 24 hours. As soon as the traffic gets labor-intensive, and the circumstances mentioned above are fulfilled, the server crashes. Goodluck. *~BuM~* |
Re: Waypointing
Ghoul hopefully found the problem (definitely the SZ_GetSpace: Tried to write to an uninitialized sizebuf_t: ??? error) & nice work with the bot.
Code:
respawn_time = gpGlobals->time + 0.5; // set next respawn time Code:
respawn_time = gpGlobals->time + 2.0; // set next respawn time enjoy Dubb :). |
Re: Waypointing
Just been checking for the bug on si_overtime & it seemed to occur a soon as i attacked a bot carrying a scientist with the briefcase. I`ll do some research and try to help you pinpoint the bug.
Dubb edit also a bot has just been killed by a nade when the infinite loop occured. edit2 crash log Code:
BotThink |
Re: Waypointing
I tried that, I added alerts to every function, looked through log after log. Everytime the crash occured, the last function reported was different. I think this is because there is a delay between the ALERT function being called, and it actually being printed in the console.
I just disabled the attacking code (commented out the IN_ATTACK and IN_ATTACK2 lines) and the problem still occurs. I'm pretty sure it doesn't have anything to do with taking damage or attacking, everything so far points to switching weapons. Switching weapons while the bot is doing something.. but what? That's the question. [EDIT] Actually I have been testing.. and a few times now I have been getting BotAvoidContact as the last function called. I did a few tests to pinpoint this: Played a game with nearly all weapon function removed. The bots moved around and just constantly switching between two weapons. There were many bots, all running around switching weapons. The game 'crashed' quickly, and I looked at MSVC++ and say "BotAvoidContact" as the last function. Then I went into a game with just me and a bot. I ran up to the bot so he'd target me and begin attacking (er, switching weapons). After about a minute, the game began looping. Again, AvoidContact was the last function. I started the game again, but this time I didn't join. I just let the bot find a scientst to try and attack. He was there, running at the scientist, switching weapons.. but the game never crashed. The bot wasn't trying to avoid the scientist either, the avoid code wasn't running (for some reason, I'm not sure, something must of been over riding it). I let that run for 5 minutes, and there were no issues. So, I comment out the if line BotAvoidContact(); in bot.cpp and run the bot again, this time testing to see if the single bot begins looping when trying to attack me. Five minutes go by of him strafing around me in circle switching weapons without a problem. So, I uncomment BotAvoidContact and go back into the game. This time it begins looping in half a minute. Comment BotAvoidContact back out and start the game, this time adding 16 bots. Although it was running at 10 FPS (major console spam from all the functions being called), the bot ran for 20 minutes without crashing (with 16 bots, I'd be suprised if it went for 20 seconds normally). I'm going to do some more tests, then run an overnight test to see if it goes all night. Here is a summary of the problem found so far: When the bot runs, there is a small chance that HL.exe will enter an infinite loop (it'll begin using 99% of the CPU) under S&I. This ONLY happens under S&I, and involves two things. First, the bot must be switching weapons for the looping to begin (why is one question). Second, the contact avoiding code must be active for the looping to begin. If these conditions are met, the program goes into a loop for some reason. The contact avoiding code is used for bots so that they don't get stuck on each other, monsters, or other objects in the level (note: not walls). The questions are why does switching weapons and contact avoiding cause the problem when they're completely unrelated, and why does this only occur in S&I? Anyway, I have some more testing to do. If this is indeed the problem, expect a 0.3 very soon. |
Re: Waypointing
Ghoul found it, definitely happen`s in BotAvoidContact at the end of the function call i added this
Code:
if (pBot->f_avoid_time <= gpGlobals->time && !pBot->pAvoid) enjoy Dubb :). edit.. shoudn`t you have a break when the bot find`s it required entity to avoid. ill do some more research later today (5:00am in the uk need to get some sleep). |
Re: Waypointing
No, when looping through entities there are no breaks (usually) because of how the loop is set up and the function works.
Code:
while ((pEnt = UTIL_FindEntityInSphere( pEnt, pBot->pEdict->v.origin, 64 )) != NULL) I know this code works, it's used in the HLDM code and has never caused a problem. I much just rewrite the function, and maybe the problem will go away. [EDIT] Just added a simple counter to the loop as well, testing to see if that makes a difference. Will edit this post if it does. [EDIT2] The looping still occured even though I had created a int set to 0, incremented it by 1 each loop, and added (i < 8) to the loop rules. I'm not quite sure if it is my code which is causing the problem (as in, my code directly), or code that my code is causing that is causing the problem (in the si.dll, engine dll, or somewhere else). I'm going to leave the bot on all night just for sure test that this fixes it, then I'll do more investigating tomorrow. This all looks mighty promising. |
Re: Waypointing
Hey everyone, check these out. :)
Grave Bot in S&I stability test 1 (insanely high scores) Grave Bot in S&I stability test 2 (notice the time in the console window for each bot) :D I'm going to write the avoiding code today and hopefully that'll be the end to that problem. |
Re: Waypointing
Okay, found and fixed the problem. Let me explain...
The contact evasion code used some math to determine the current direction the bot was headed. One function used was the asin function, which takes one parameter. This parameter is a float between -1 and 1. The bot inputs its current strafe speed divided by the max speed to get the value which asin takes. This all works fine normally under the correct conditions. S&I however changes the maximum speed of players quite often. Something like switching weapons will increase or decrease the max speed. If a bot is currently on a weapon with high max speed, then switches to a weapon of low max speed, there is a fraction of a second where the bot is actually traveling faster than the max speed. So, in the code, the obtained value will be either > 1 or < -1 (depending on the direction of travel) and that value will be passed on to asin. asin doesn't work correctly with values out of its range, and so it returns an invalid jumbled float. This value is passed on into the function (BotAvoidContact), corrupting the angular vector caluclated, and the direction vector calculated. The bad direction vector is used in an initial TraceLine function to see if anything is in the way of the bot. The TraceLine function is where the looping begins. Apparently it is unable to correctly handle the corrupt vector, and somehow hits an infinite loop. Since the function is within the engine, there's no way to really know. The first fix I tried was to limit the value of the variable passed into the asin function. This worked fine, as it should, but then I realized that the whole asin function itself, along with many other calculations, were pointless. I simply created a new vector in the bot called v_curr_direction. Everytime the bot calculates the direction it wishes to travel, that vector is updated with the calculated direction. The avoid function has been updated to use this new vector, rather than performing tons of unneeded math, and all is well. What's going to happen today? A release of 0.3 with the S&I crash fixed and hopefully the min_bot and max_bot crash fixed (along with a couple other misc adjustments). Version 0.3 will be released under the following: - Windows standard hooking DLL - Windows metamod DLL - Linux standard hooking .so - Linux metamod .so See ya guys! |
Re: Waypointing
Beta 0.3 is out. Check out the news.
|
Re: Waypointing
2 Attachment(s)
Hi, beta 0.3 is really cool, bots donīt crash anymore, great fun! I completed all si_-standard-map-waypoints. Some more difficult paths (crouch-jump etc.) are not waypointed yet. Removed some paths with breakables (mill&depot) and removed the sniper-waypoints from si_urban. Made a few fixes and updates, also all remaining maps. Enjoy! :D ...and report all bugs =).
These waypoints are "all free", anyone is allowed to tweak and re-release them. Maps: all S&I standard-maps (except si_overtime) Only flags: team, weapon, health, armor, door, crouch, ladder, jump ----edit:---- What I saw in si_early: No matter how I place the waypoints, the bots try to reach the administrator directly and get stuck on the ramp: |
Re: Waypointing
If I remember right, the bots try to head directly to their goal if they're close enough. That ramp must but just tall enough so they thing they can walk right to him. I'll put in visibility and traceline checks for 0.4.
|
Re: Waypointing
Quote:
*~BuM~* |
Re: Waypointing
I extended the time between bots joining. Maybe that'll work, maybe not. I didn't really test. I'll probably just completely redo the min/max code for 0.4.
So, with that said. Give me suggestions on how it should work exactly. |
All times are GMT +2. The time now is 02:54. |
Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.