gametechmods
Robot Arena => General Support => Topic started by: Tibsy on March 01, 2015, 07:41:01 PM
-
http://www.youtube.com/watch?v=cfLv74lBTWg&feature=youtu.be# (http://www.youtube.com/watch?v=cfLv74lBTWg&feature=youtu.be#)
Any help? :c
(I probably seem dumb now lol xD)
-
That's because of the DSL3 wheel change. Due to that, all the AI robots move backwards. It's annoying, I know.
I think Paranoia still has the only officially released DSL3 AI, so go download that for competent AI.
-
Ah, fair. I'll check it out, cheers Badnik
-
Right, this is happened to me way too many times.
I followed all the correct instructions and STILL my DSL3 crashes on startup after I put my team in the 'Teams.txt' and the Bindings.py
And I know you can make your own AI teams because I have an AI pack installed on it.
I really need some help with this!!! URGENTLY!!
-
URGENTLY!!
Why so urgent?
Anyway, show a screenshot of your AI folder and also the entire text of the teams.txt and bindings.py (use the code tags around those 2 if you copy-paste the contents)
-
URGENTLY!!
Why so urgent?
Anyway, show a screenshot of your AI folder and also the entire text of the teams.txt and bindings.py (use the code tags around those 2 if you copy-paste the contents)
(https://gametechmods.com/uploads/images/1403NeedingHelp1.png)
Bindings.py:
import math
def load(list):
print "Loading AI bindings"
# binding format:
# ( 'name of robot from .bot file', 'name of AI from script class',
# {'optional constructor parameter':value, 'another':value} )
# constructor parameters:
# nose - "front" of bot in radians (default 0)
# invertible - can function upside-down (default False)
# topspeed - speed in meters/second AI will attempt not to exceed (default 4.0)
# throttle - maximum analog value AI will attempt not to exceed (default 100)
# turnspeed - turning in radians/second AI will attempt not to exceed (default 2.5)
# turn - maximum analog value AI will attempt not to exceed (default 60)
# radius - bot radius to use for checking for hazards and walls (default 1.0)
#01 - The Communist Party
list.append( ("Siberian Slinger", "Omni", { 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (8,) }) )
list.append( ("Crushchev", "Omni", { 'nose' : math.pi, 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (8,) }) )
list.append( ("Russian Raving Man", "Spinner", { 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (8, 9) }) )
list.append( ("Red November", "Rammer", { 'nose' : math.pi, 'invertible': True, 'radius': 0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (4, 5, 6, 7) }) )
list.append( ("From Russia with Love", "FRWL", { 'nose' : math.pi, 'radius':0.3, 'topspeed' : 99.0, 'turnspeed': 4, 'range':30, 'weapons': (5,) }) )
list.append( ("Pushkin", "Omni", { 'nose' : math.pi/2, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 5.5, }) )
#02 - Kawaii Desu Desu
list.append( ("Flluffy Bunny", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (6,) }) )
list.append( ("Flufflesworth the Second", "Rammer", { 'invertible': True, 'radius': 0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19) }) )
list.append( ("Goodbye Kitty", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.0, 'range':30, 'weapons': (18, 19, 20, 21, 22, 23) }) )
list.append( ("Whack the Goats", "Omni", { 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 4, 'weapons': (8,) }) )
list.append( ("Kitten", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 4.5, 'range':30, 'weapons': (11, 12, 13, 14) }) )
list.append( ("Hamster Wheel", "Spinner", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 2, 'range':30, 'weapons': (8, ) }) )
#03 - SETI Technologies
list.append( ("Deep-Space Radar", "Whipper", { 'nose' : math.pi, 'invertible': True, 'whip': "around", 'zone': "swing", 'turnspeed':5, 'turn':80, 'topspeed':12.0, 'throttle': 110, 'weapons':(14,) }) )
list.append( ("Roswell's Revenge", "Spinner", { 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'range':30, 'weapons': (11, 12, 13, 14, 15, 16, 17, 18) }) )
list.append( ("Crop Circles", "Spinner", { 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 2, 'range':30, 'weapons': (8, 9) }) )
list.append( ("Conspiracy", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, }) )
list.append( ("Radar Array II", "Omni", { 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (6, 7, 8, 9, 10, 11) }) )
list.append( ("Hubble", "Poker", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (8, 9, 10, 11) }) )
#04 - The Clockwork Army
list.append( ("Wind-Up", "Rammer", { 'nose' : math.pi, 'invertible': True, 'radius': 0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (4, 5, 6, 7) }) )
list.append( ("The Victorian", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (8, 9) }) )
list.append( ("Queen and Country", "Omni", { 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4, 'range':30, 'weapons': (11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26) }) )
list.append( ("AW - Seconds to Death", "Omni", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (1, 2) }) )
list.append( ("BW - Overclocked", "Omni", { 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (6,) }) )
list.append( ("SHW - King and Country", "Omni", { 'invertible': True, 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (8, 9, 10, 11, 12, 13, 14, 15, 16,17, 18, 19, 20, 21, 22, 23) }) )
#05 - Team Dull Gray
list.append( ("Python", "Spinner", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (6, 7, 8, 9) }) )
list.append( ("Harbinger", "Spinner", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (1, 2, 3) }) )
list.append( ("Knockback", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (8, 9, 10, 11) }) )
list.append( ("Reflector", "Omni", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (1, 2) }) )
list.append( ("Rapture", "Omni", { 'radius':0.3, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (10, 11) }) )
list.append( ("Rift", "Spinner", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3, 'range':30, 'weapons': (4, 5, 6, 7) }) )
#06 - Team Spintastic
list.append( ("Sore point", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (6,) }) )
list.append( ("HammerHead 4", "Spinner", { 'invertible': True, 'nose' : math.pi, 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 5, 'range':30, 'weapons': (7, 8) }) )
list.append( ("Destructive Agent", "Spinner", { 'nose' : math.pi*3/2, 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (8, 9) }) )
list.append( ("Whyte", "Spinner", { 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (12,) }) )
list.append( ("Scrap Metal", "Spinner", { 'invertible': True, 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (8, 9, 10) }) )
list.append( ("Chip", "Spinner", { 'nose' : math.pi, 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'range':30, 'weapons': (14, 15, 16, 17) }) )
#07 - Blind Charge
list.append( ("IronHide", "Omni", { 'nose' : math.pi, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (1, 2) }) )
list.append( ("Rampage", "Omni", { 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (8, 9) }) )
list.append( ("Mastiff", "Omni", { 'nose' : math.pi, 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (11, 12, 13, 14, 15, 16) }) )
list.append( ("AW - Fatal Charge", "Omni", { 'nose' : math.pi, 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (3, 4) }) )
list.append( ("BW - Stampede", "Omni", { 'nose' : math.pi, 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (6, 7) }) )
list.append( ("MechaBull", "Omni", { 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 4.5, 'weapons': (9, 10) }) )
#08 - Lethal Designs Inc.
list.append( ("Glitch In The System", "Whipper", { 'nose' : math.pi, 'invertible': True, 'whip': "around", 'zone': "swing", 'turnspeed':5, 'topspeed':12.0, 'throttle': 110, 'weapons':(14, 15) }) )
list.append( ("Sprocket", "Rammer", { 'nose' : math.pi, 'invertible': True, 'radius': 0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (9, 10, 11) }) )
list.append( ("Nexus", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (6,) }) )
list.append( ("AW - Volt", "Omni", { 'invertible': True, 'radius':0.3, 'topspeed' : 99.0, 'turnspeed': 4, 'weapons': (7, 8) }) )
list.append( ("BW - Cable", "Omni", { 'invertible': True, 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (12,) }) )
list.append( ("SHW - System Overload", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (15, 16, 17) }) )
#09 - Team Moustache
list.append( ("Huzzah", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (15, 16) }) )
list.append( ("I Say Twice!", "Omni", { 'radius':0.3, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (11, 12) }) )
list.append( ("Hoorah!", "Omni", { 'nose' : math.pi, 'radius':0.5, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (21, 22) }) )
list.append( ("BW - Tally - Ho!", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (2, 3) }) )
list.append( ("CW - Marvellous!", "Omni", { 'radius':0.2, 'topspeed' : 99.0, 'turnspeed': 5, 'weapons': (7, 8) }) )
list.append( ("SHW - Tea", "Spinner", { 'invertible': True, 'radius':0.6, 'topspeed' : 99.0, 'turnspeed': 4, 'range':30, 'weapons': (23, 24, 25) }) )
#10 - Tibsy
list.append( ("Sharpfin", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (2, 3) }) )
#Lame Stock Bots
list.append( ("Arc Pounder", "Whipper", { 'invertible': True, 'whip': "around", 'zone': "swing", 'turnspeed':1.5, 'turn':80, 'topspeed':12.0, 'throttle': 110, 'weapons':(14,) }) )
list.append( ("Backyard Ripper", "DirectionalSpinner", { 'nose': math.pi, 'topspeed' : 12.0, 'throttle' : 115, 'turnspeed': 2.0, 'weapons': (16, 17, 18, 19) }) )
list.append( ("Berserker", "Spinner", { 'topspeed' : 10.0, 'throttle' : 110.0, 'weapons': (8, 9, 10) }) )
list.append( ("Big Dog", "Pusher", { 'radius': 1.4, 'nose' : math.pi , 'topspeed':4.0, 'turnspeed' : 3.5 }) )
list.append( ("Civil Disobedience", "Rammer", { 'turnspeed' : 1.75 }) )
list.append( ("Da Dog", "Pusher", { 'nose' : math.pi , 'turnspeed' : 2.0 }) )
list.append( ("DEADBEAT", "Chopper", { 'topspeed' : 10.0, 'weapons': (7,) }) )
list.append( ("Eye Poker", "Rammer", { 'invertible': True, 'turnspeed' : 1.5, 'topspeed' : 12.0 }) )
list.append( ("Flame Chopper", "Chopper", { 'radius':1.1, 'topspeed' : 12.0 , 'turnspeed' : 2.0 , 'throttle' : 120, 'weapons': (8,) }) )
list.append( ("Hanky Panky", "Flipper", { 'topspeed' : 12.0, 'weapons': (15,) }) )
list.append( ("Lil' Dog", "Rammer", { 'nose': math.pi, 'turnspeed': 1.5 }) )
list.append( ("LugNut", "Rammer", { 'radius':1.2, 'nose' : -math.pi / 2, 'turnspeed' : 1.0, 'topspeed' : 12.0, 'throttle' : 120 }) )
list.append( ("Raptor", "Chopper", { 'radius': 1.3, 'nose' : math.pi , 'topspeed' : 12 , 'throttle' : 110 , 'turnspeed' : 1.25, 'weapons': (14, 15) }) )
list.append( ("Razor", "Rammer", { 'nose': math.pi, 'turnspeed' : 1.25 }) )
list.append( ("REVENGE", "DirectionalSpinner", { 'turnspeed' : 1.25, 'topspeed' : 12.0, 'throttle' : 110, 'weapons': (4,) }) )
list.append( ("Ripblade", "DirectionalSpinner", { 'nose': math.pi, 'topspeed' : 12.0, 'throttle' : 110, 'turnspeed': 1.5, 'weapons': (25, 26) }) )
list.append( ("More Panda Monium", "Poker", { 'radius':1.1, 'nose' : math.pi, 'turnspeed' : 1.0, 'turn' : 20.0, 'topspeed' : 12.0, 'throttle' : 120, 'weapons': (9,) }) )
list.append( ("Tornado", "Spinner", { 'radius':1.2, 'nose' : -math.pi / 2, 'range' : 4.0, 'topspeed' : 12.0, 'throttle': 120, 'turnspeed' : 1.75, 'weapons': (16, 17, 19, 23) }) )
Teams.txtindex 0
The Communist Party
"In Soviet Russia, Communism parties with YOU!"
AI\CommunistParty.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 1
Kawaii Desu Desu
"Kore wa, hon'yaku-sha o hete, sore ga machigatte iru riyu o kikanai."
AI\KawaiiDesuDesu.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 2
SETI Technologies
"We don't know, therefore aliens."
AI\SETITechnologies.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 3
The Clockwork Army
"Screw Electronics."
AI\TheClockworkArmy.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 4
Team Dull Gray
"We're just dull, and gray."
AI\TDG.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 5
Team Spintastic
"Fantastically Spintastic."
AI\Spintastic.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 6
Blind Charge
"Mess with the bull, and you'll get the horns."
AI\BlindCharge.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 7
Lethal Designs Inc.
"The very best - the cutting edge."
AI\LethalDesigns.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 8
Team Moustache
"You cannot handle the 'stache."
AI\MoustacheTeam.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 9
Team HEX
"We eat nuts and bolts for breakfast."
AI\hex.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 10
Team Z
"Cooler than you."
AI\z.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 11
SteelYard Dog
"Our Bite is MUCH worse than our bark!"
AI\steeldog.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 12
RIOT
"Things are going to get LOUD!"
AI\riot.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 13
MEGATON
"Boom."
AI\megaton.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 14
The Scappers
"Havok Explosion specialists!!!"
AI\tibsy.bmp
Robots: 0 1 2
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
index 15
Tibsy
"You better BUCK up your ideas!!!"
AI\tibsy.bmp
Robots: 0 1 2 3 4 5
Robot In Event: -1
0
16
16
0
0
0
0
0
100000
true
0
false
0
-1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0
0
0
Code tags added -Craaig
-
You've set the last team, 'Tibsy', to have 6 robots (see: Robots: 0 1 2 3 4 5) and there only appears to be 1 in the bindings. Also is the thumbnail picture a 128x128 bmp?
EDIT: You also seem to have put a tab in before your bindings line rather than the 4 spaces the game uses.
-
The game can work with empty slots, it's happened before.
And yes, every time I update my avatar I always create different versions of it: Dimensions and Image Types (I have a sort of OCD for consistency..)
Also: I was putting the code tags in ¬_¬ ...Cheers for that anyway
-
I don't think the AI likes working with empty slots - I just deleted Backyard Ripper's bot file from a test version of Stock I have and the team crashes the game whenever I click it, so I would recommend changing Robots: 0 1 2 3 4 5 to Robots: 0 and also fixing that binding issue.
EDIT: Yep, that tab instead of 4 spaces will crash the game on launch, just tested.
-
I don't think the AI likes working with empty slots - I just deleted Backyard Ripper's bot file from a test version of Stock I have and the team crashes the game whenever I click it, so I would recommend changing Robots: 0 1 2 3 4 5 to Robots: 0 and also fixing that binding issue.
EDIT: Yep, that tab instead of 4 spaces will crash the game on launch, just tested.
Deleted 1 2 3 4 & 5 so it's just zero.
And I don't know how to fix the binding issue... I'm extremely new to AIing
-
What you have in the bindings is this
#10 - Tibsy
list.append( ("Sharpfin", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (2, 3) }) )
Before list.append, that line above has a tab - but check out the other lines
list.append( ("SHW - Tea", "Spinner", { 'invertible': True, 'radius':0.6, 'topspeed' : 99.0, 'turnspeed': 4, 'range':30, 'weapons': (23, 24, 25) }) )
They all have 4 spaces before list.append, not a tab. Therefore, if you change your line to:
#10 - Tibsy
list.append( ("Sharpfin", "Omni", { 'radius':0.1, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (2, 3) }) )
It'll work (the tab spacing has been replaced with 4 spaces)
-
Just put that in. Going to test now.
UPDATE: It does work now. Thank you. Also, where can I find an AI tutorial so I can have a spinning disc bot have its weapon constantly rotating as the one I've AI'd seems to be constantly turning the disc on and off again.
-
You need to add the range parameter and have it set pretty high, keeping it on omni is fine.
list.append( ("Sharpfin", "Omni", { 'radius':0.1,'range':99, 'topspeed' : 99.0, 'turnspeed': 3.5, 'weapons': (2, 3) }) )
What AI guide have you read? Get hold oh Philetbabe's AI guide if you haven't read that, it seems you may be missing a few skills that covers. Obtainable from the Tutorial Index.
-
Also, where can I find an AI tutorial so I can have a spinning disc bot have its weapon constantly rotating as the one I've AI'd seems to be constantly turning the disc on and off again.
One cause of that is AIing your bot with a switch instead of a button.