![]()
Visiting guest. Why not sign in?
|
|
Reply to Message
Not registered yet?
The AI Depot has a focused community of friendly users. Rather than let anyone abuse the site at the brink of promiscuity, we prefer to let only those with an active interest participate... this simply requires registering.
Why not sign up!
Joining the site's community is completely free. You can then post messages freely, and customise your personal profile at will. Specific privileges will also be granted to you, like being able to access printer-friendly articles without restrictions. So, why not register?
Parent Message
More info ?
Hi Great Article. I am primarily interested in the Half life area as I am a Counter-strike junkie :-). What bugged me was that you never described what the inputs BotThink function has, what information is provided to the Bot. One last question: If you were to approach this using GAs, would you go for a GP approach, or a GA around internal rules? I am aware that the latter allows continuous learning, but possibly isnt as flexible as it is constraint by the flexibility of the rule system. |
|
Technical Details
True, the article only covered the theory behind the information provided (entities and level structure), without going into the technical details. It was intended that way as any more information would have pushed the tutorial beyond its scope. Since you're intereted in HL, you should take a look at the source code provided with the HPB Bot. You'll notice the level structure is acquired by a trace function. This is basically a 3D search, that tells you what it found. Also, the entities are stored as global variables, which you can access freely. The entities include clients (other players and bots), and items. It's been a while since I looked into HL in detail so I can't be anymore specific... Q2 does the job for me! The source is well documented though, and skimming through that will give you a great insight (search for trace and entity for example). As for Genetic Programming, stay away. It's a lot of hassle (grammar checking being the worst), and doesn't work all that well. The search spaces are huge, and you'll have trouble doing anything of reasonable size. Genetic Algorithms on the other hand are well suited to this. But beware, you need to think of a good way of representing your bot's parameters (controlling the AI) before you decide to optimise them with genetic algorithms! Anyway, good luck! |
|
re Q2BotCore
Hi Alex I'm having difficulty compiling the q2botcore source. Do you have a working project for MSVC++ 6.0 you could send me? I'd really appreciate it as I was getting all excited about having a go at coding a bot and all my dreams have been dashed! thanks |
|
Compiling the Q2 Bot Core
I don't have a working project anymore. I tested it out before writing the tutorial, and it worked fine so I removed it. My work is based on a server side approach, so I don't need it. If you let us know more specifically what the problem is, someone may be able to help you. |
|
bots
So how did you learn how to interface with the code running a server side bot? Do you have a link to any useful resources(I've never been able to find any) or any pointers? thanks ps. I managed to compile q2botcore in the end |
|
Learning by Example
I downloaded some source code, learnt from it by modifying it. I ended up reimplementing everything to make sure I understood everything that was going on, but don't do that at first! There's a site with a list of most Q2 Bots right here -- Bot Epidemic. |
|
source code
So how come you chose to spend the hours going server side Alex? I'm curious because this is a project I'd like to spend some time on but I don't want to waste effort with the q2botcore if it's going to be limiting my possibilities. I tried bot epidemic a while ago but I couldn't find any help on how to interface with the ID code at all. In fact there seems to be little information about this topic at all (for programmers) and I received no help whatsoever from the half dozen or so bot authors I wrote to(all q2). All I can assume is that the authors keep their knowledge close to their chests! |
|
Justifications
I went server side because I needed the ability to speed up the game for fast learning, for the ability to get a bot playing in single player, for random things I wanted to reimplement (like a good camera) and I wanted to modify other little settings parameters. A client side bot is a good option, but doing the distance sensors in the same way I did can be a problem; you don't have access to the physics of the engine. As for the code, people are generally quite open. Eraser bot, Gladiator bot are mostly fully public (only the navigation bit is a library -- for commercial reasons). You should have no trouble finding code from Bot Epidemic. |
|
Back to the Artificial Intelligence Depot.