Difference between revisions of "How to AI your bot"
(New page: Here is a getting started guide to AIing. If people want me to document each of the options for an AI line and my recommendations so you can build your own AI, let me know. I don't want ...) |
|||
(9 intermediate revisions by 7 users not shown) | |||
Line 1: | Line 1: | ||
Here is a getting started guide to AIing. | Here is a getting started guide to AIing. | ||
− | |||
− | |||
− | |||
− | + | == Tune your bot for AI == | |
− | + | You will need to tune your bot for AI. Note proper capitalization and spelling is important. | |
Name your Analog control that goes forward and backward: Forward | Name your Analog control that goes forward and backward: Forward | ||
+ | |||
Name your Analog control that goes Left and Right: LeftRight | Name your Analog control that goes Left and Right: LeftRight | ||
+ | |||
Name your button that spins your spinners: Spin | Name your button that spins your spinners: Spin | ||
+ | |||
Name your button that fires your weapons: Fire | Name your button that fires your weapons: Fire | ||
+ | |||
If you are using my Omni or OmniRam AI naming your weapon control Fire is all you need | If you are using my Omni or OmniRam AI naming your weapon control Fire is all you need | ||
+ | |||
If you are using the Flipper AI for a Flipper bot name the button that flips: Flip | If you are using the Flipper AI for a Flipper bot name the button that flips: Flip | ||
+ | |||
If you have a button for flipping your bot when inverted, name it: Srimech | If you have a button for flipping your bot when inverted, name it: Srimech | ||
− | |||
− | |||
− | |||
− | |||
− | + | If you have a [[Spinner]], [[Rammer]] or [[Pusher]] that does not need to know when to activate its weapons, you are done with this part of AIing | |
+ | |||
+ | If you have a Poker, Hammer, Flipper, Popup or Hybrid that has these elements you will need to get the Smartzone.cfz that RFS unlocked (or similar) and put it in your Robot Arena 2 main folder to unlock the Smartzone feature. Then you will need to size and place the Smartzone. When you add the Smartzone.cfz and restart RA2 you will find the Smartzone as an option in the Power Catagory. | ||
+ | |||
+ | It is a bit tricky to place because it is invisible when being positioned. It does weigh 2Kg so you may or may not want to plan for it in your staying in your weight class (I required all LW, MW and HW Starcore AI bots to stay within weight class so they would look right on the displays). You will want to size and position the Smartzone to be where your weapons hit or where you want the opponent to be before you activate your attack systems. | ||
+ | |||
+ | If you put in a [[Smartzone]] name it: weapon (Note: All lower case) | ||
+ | |||
+ | (edit by [[Naryar]]: if you're using the Flipper or Poker AI, you don't need a [[Srimech]] button. Also for a flipper, you need to name the [[Smartzone]] "flip" and not "weapon") | ||
+ | |||
+ | == Preparing your bot's name == | ||
− | + | When done (and this is a shortcut) In the Bot Lab name your bot the exact same name as the bot you are wanting to replace for AI testing. Doing this will let you test your bot as an AI without getting deep into writing your own AI for now. | |
− | |||
− | + | ALTERNATIVELY | |
+ | |||
+ | |||
+ | The other choice would be to keep your bot name and edit the Bindings.py file (make a backup first). Copy and paste the AI line you are wanting to use to a blank line in the Bindings.py file. Then change the name of the bot listed in the new AI line to the exact same name as your bot. | ||
+ | |||
+ | == Exporting == | ||
+ | Export the bot naming it Bot0, Bot1, Bot2, Bot3, Bot4 or Bot5 depending on the position of the bot it is replacing in Starcore AI pack. For example if you wanted to replace Maelstrom in the Spin Doctors, it is in the 3rd position that team and since the game counts up from Zero you would name your bot, Bot2 | ||
+ | |||
+ | == Backuping old AI == | ||
+ | Exit the game and go to your \Robot Arena 2\Robot Designs folder and copy the Bot2 you saved in step 4 and change to the \Robot Arena 2\AI folder and go to the team you wanted to replace a bot of (again the game starts counting at Zero). So in this example for replacing Maelstrom of the Spin Doctors you would go to Team 0 and rename the existing Bot2.bot to something like Bot2.bot.Maelstrom and Paste in your Bot2.bot | ||
+ | |||
+ | == Fixing orientation == | ||
+ | If you are lucky that your bot faces the same way as the bot you are replacing you are done here and your bot should start fighting with the AI of the bot you replaced. If you didn't make your bot facing the same way as the bot you are replacing you can you will need to edit the Bindings.py file to tell the game which way your bot should face. | ||
To edit Bindings.py to correct facing of an AI bot go to the \Robot Arena 2\AI folder and back up the existing Bindings.py (This is very important. It is easy to induce typos in this file and the game is very unforgiving if you do.) | To edit Bindings.py to correct facing of an AI bot go to the \Robot Arena 2\AI folder and back up the existing Bindings.py (This is very important. It is easy to induce typos in this file and the game is very unforgiving if you do.) | ||
Line 42: | Line 62: | ||
Let me know if there are any questions on these instructions or if there is interest to learn more... | Let me know if there are any questions on these instructions or if there is interest to learn more... | ||
− | Starcore | + | [[Starcore]] |
+ | |||
+ | |||
+ | Also check here: http://gametechmods.com/?do=Guide_to_AIing | ||
+ | |||
+ | |||
+ | == Sample bindings == | ||
+ | |||
+ | list.append(("BOT","Spinner",{'nose':math.pi,'radius':0.1,'weapons':(8,9)})) | ||
+ | |||
+ | Spinner, standard values, but drives over hazards/ignores them due to the radius command. | ||
+ | Will face the other way if you remove the ''''nose':math.pi,''' . | ||
+ | |||
+ | |||
+ | list.append(("BOTINVERT","Spinner",{'invertible':True,'radius':0.1,'weapons':(8,9,)})) | ||
+ | |||
+ | Invertible Spinner that ignores hazards. | ||
+ | |||
+ | |||
+ | list.append(("BOTNAME2","Spinner",{'invertible':True,'radius':1.7,'weapons':(8,9,)})) | ||
+ | |||
+ | Invertible spinner that avoids hazards. | ||
+ | |||
+ | |||
+ | list.append(("BOTINAME3","Omni",{'radius':0.1,'weapons':(8,9,)})) | ||
+ | |||
+ | Bot with more than one weapon system. | ||
+ | |||
+ | == AI Bindings == | ||
+ | |||
+ | {| class="wikitable" style="text-align: center;" | ||
+ | |+ Bindings and Usage | ||
+ | |- | ||
+ | ! Binding Name | ||
+ | ! In Game Control | ||
+ | ! Use | ||
+ | |- | ||
+ | ! Forward | ||
+ | | Analog || Controls forwards and backwards movement. | ||
+ | |- | ||
+ | ! LeftRight | ||
+ | | Analog || Controls turning left and right. | ||
+ | |- | ||
+ | ! Fire | ||
+ | | Button || Activates when AI criteria is achieved - Used for hammering weaponry. | ||
+ | |- | ||
+ | ! Flip | ||
+ | | Button || Activates when AI criteria is achieved - Used for flipping weaponry. | ||
+ | |- | ||
+ | ! Srimech | ||
+ | | Button || Activates when AI is inverted. | ||
+ | |} | ||
+ | |||
+ | |||
+ | |||
+ | [[Category:Modification Tutorials]] |
Latest revision as of 06:33, 10 June 2018
Here is a getting started guide to AIing.
Tune your bot for AI
You will need to tune your bot for AI. Note proper capitalization and spelling is important.
Name your Analog control that goes forward and backward: Forward
Name your Analog control that goes Left and Right: LeftRight
Name your button that spins your spinners: Spin
Name your button that fires your weapons: Fire
If you are using my Omni or OmniRam AI naming your weapon control Fire is all you need
If you are using the Flipper AI for a Flipper bot name the button that flips: Flip
If you have a button for flipping your bot when inverted, name it: Srimech
If you have a Spinner, Rammer or Pusher that does not need to know when to activate its weapons, you are done with this part of AIing
If you have a Poker, Hammer, Flipper, Popup or Hybrid that has these elements you will need to get the Smartzone.cfz that RFS unlocked (or similar) and put it in your Robot Arena 2 main folder to unlock the Smartzone feature. Then you will need to size and place the Smartzone. When you add the Smartzone.cfz and restart RA2 you will find the Smartzone as an option in the Power Catagory.
It is a bit tricky to place because it is invisible when being positioned. It does weigh 2Kg so you may or may not want to plan for it in your staying in your weight class (I required all LW, MW and HW Starcore AI bots to stay within weight class so they would look right on the displays). You will want to size and position the Smartzone to be where your weapons hit or where you want the opponent to be before you activate your attack systems.
If you put in a Smartzone name it: weapon (Note: All lower case)
(edit by Naryar: if you're using the Flipper or Poker AI, you don't need a Srimech button. Also for a flipper, you need to name the Smartzone "flip" and not "weapon")
Preparing your bot's name
When done (and this is a shortcut) In the Bot Lab name your bot the exact same name as the bot you are wanting to replace for AI testing. Doing this will let you test your bot as an AI without getting deep into writing your own AI for now.
ALTERNATIVELY
The other choice would be to keep your bot name and edit the Bindings.py file (make a backup first). Copy and paste the AI line you are wanting to use to a blank line in the Bindings.py file. Then change the name of the bot listed in the new AI line to the exact same name as your bot.
Exporting
Export the bot naming it Bot0, Bot1, Bot2, Bot3, Bot4 or Bot5 depending on the position of the bot it is replacing in Starcore AI pack. For example if you wanted to replace Maelstrom in the Spin Doctors, it is in the 3rd position that team and since the game counts up from Zero you would name your bot, Bot2
Backuping old AI
Exit the game and go to your \Robot Arena 2\Robot Designs folder and copy the Bot2 you saved in step 4 and change to the \Robot Arena 2\AI folder and go to the team you wanted to replace a bot of (again the game starts counting at Zero). So in this example for replacing Maelstrom of the Spin Doctors you would go to Team 0 and rename the existing Bot2.bot to something like Bot2.bot.Maelstrom and Paste in your Bot2.bot
Fixing orientation
If you are lucky that your bot faces the same way as the bot you are replacing you are done here and your bot should start fighting with the AI of the bot you replaced. If you didn't make your bot facing the same way as the bot you are replacing you can you will need to edit the Bindings.py file to tell the game which way your bot should face.
To edit Bindings.py to correct facing of an AI bot go to the \Robot Arena 2\AI folder and back up the existing Bindings.py (This is very important. It is easy to induce typos in this file and the game is very unforgiving if you do.) Open up the Bindings.py with Notepad or your favorite text editor that does not change formatting (i.e. turn off Word Wrap). Go to the line of the bot you are replacing with your bot. In this example it would be the Maelstrom line in Team #0 Maelstrom does not have a 'nose' command because he is facing the default direction. Depending on the facing of your bot (Trial and error here, hard to describe how to tell which setting to use) you would add to the list.append line for the bot you are replacing (Maelstrom in this example) in the same style of many of the other bot lines in the Bindings.py (Note: Position between the {} is your choice but try to do similar to other lines: 'nose':math.pi/2, or 'nose':math.pi, or 'nose':-math.pi/2, If you built your bot on an oblique angle there are more exotic settings to adjust for that, but that is a more advanced tutorial about radians. Basically many computer physics models do not use Degrees, they use Radians where 0 (or PI*2) Radians = 0 (360) Degrees, PI/2 Radians = 90 Degrees, PI Radians = 180 Degrees, PI*3/2 (or -PI/2) Radians = 270 Degrees Save your changes to Bindings.py and if you didn't induce any typos your bot should now start facing the right direction as an AI. If not, you did make the backup of Bindings.py, didn't you? If you need to adjust the nose command again or start over copy the backed up Bindings.py to Bindings.py and try again or edit the one you have been adjusting. This is a good way to get your Bot AIed by using an existing AI line and get it inserted in a pack for testing.
Let me know if there are any questions on these instructions or if there is interest to learn more...
Also check here: http://gametechmods.com/?do=Guide_to_AIing
Sample bindings
list.append(("BOT","Spinner",{'nose':math.pi,'radius':0.1,'weapons':(8,9)}))
Spinner, standard values, but drives over hazards/ignores them due to the radius command. Will face the other way if you remove the 'nose':math.pi, .
list.append(("BOTINVERT","Spinner",{'invertible':True,'radius':0.1,'weapons':(8,9,)}))
Invertible Spinner that ignores hazards.
list.append(("BOTNAME2","Spinner",{'invertible':True,'radius':1.7,'weapons':(8,9,)}))
Invertible spinner that avoids hazards.
list.append(("BOTINAME3","Omni",{'radius':0.1,'weapons':(8,9,)}))
Bot with more than one weapon system.
AI Bindings
Binding Name | In Game Control | Use |
---|---|---|
Forward | Analog | Controls forwards and backwards movement. |
LeftRight | Analog | Controls turning left and right. |
Fire | Button | Activates when AI criteria is achieved - Used for hammering weaponry. |
Flip | Button | Activates when AI criteria is achieved - Used for flipping weaponry. |
Srimech | Button | Activates when AI is inverted. |