Author Topic: GMF Queries  (Read 5433 times)

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
GMF Queries
« on: July 31, 2011, 05:16:07 AM »
I'm finishing the new arena I'm making for my next tournament, but I have a series of questions that surpass my current expertise with GMFs, an I was wondering if people could lend a hand with my questions.

Firstly, to merge two GMF's (Here an object with the main arena), do I just cut/paste the various sections from one to the other, and change the object number and texture ID's?
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline JoeBlo

Re: GMF Queries
« Reply #1 on: July 31, 2011, 05:44:19 AM »
yes essentially you place all of the indented section for that object in the objects list and raise the count by 1

Then you have to put the texture stuff in, you will likely have to change the texture numbers so it doesn't conflict

Then rigidbody stuff if you want (thats optional)

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #2 on: July 31, 2011, 05:46:14 AM »
Right, problem - I did so, but when it came to compiling, I got this error:



The arena works mostly, but the object I was trying to put in isn't there and the floor has lost its bitmap texture.
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline JoeBlo

Re: GMF Queries
« Reply #3 on: July 31, 2011, 05:52:36 AM »
You have done the Ridgidbody section all wrong..

Make sure it fits within all the same indentations as other single objects

Is the node name the same in every occurrence too?

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #4 on: July 31, 2011, 05:55:48 AM »
I failed to notice the *COUNT number before, which I've now upped, could that be the cause of the problems?

Node names are all the same.
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #5 on: July 31, 2011, 06:03:48 AM »
DP: That fixed the issue, the arena works, but both textures have somehow combined onto the new object and the floor is still textureless.

New error messages:

My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline JoeBlo

Re: GMF Queries
« Reply #6 on: July 31, 2011, 06:09:12 AM »
did you give it a unique texture number like I mention the my first post ?

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #7 on: July 31, 2011, 06:24:52 AM »
Yes, but I found that problem, I think - I had both textures under the second object's material.

Now I've got it working, should I repeat for further objects?
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline JoeBlo

Re: GMF Queries
« Reply #8 on: July 31, 2011, 06:35:37 AM »
if it works then yep

Indenting is the biggest pain with GMF's..

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #9 on: July 31, 2011, 09:56:43 AM »
Next, I don't understand collision lines. Is there a guide for how they can correspond to TMROWS?

Also, what is the point of NPOV's?

And how would one lighten an object's texture via the GMF, if it is at all possible?
« Last Edit: July 31, 2011, 06:14:48 PM by G.K. »
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline Clickbeetle

  • *
  • Posts: 3374
  • Rep: 21
  • In Soviet Russia, bugs stomp YOU!
  • Awards BOTM Winner
    • View Profile
    • Beetle Bros site
    • Awards
Re: GMF Queries
« Reply #10 on: August 01, 2011, 11:43:48 PM »
Collision lines and TM_Rows are two completely different things.
 
Collision lines are invisible lines you set in the .py.  They're just numbers; they have no shape.  Here's the collision lines for Lu-Tze's RA2 tournament arena:
 
        self.AddCollisionLine((-9.22, -11.62 ), (-9.22, 11.62 ))
        self.AddCollisionLine((-9.22, 11.62 ), (9.22, 11.62 ))
        self.AddCollisionLine((9.22, 11.62 ), (9.22, -11.62 ))
        self.AddCollisionLine((9.22, -11.62 ), (-9.22, -11.62 ))
 
Pretty simple.  The first set of numbers is the start point and the second set is the end point.  The AI will avoid the invisible line between those two points.  Note that the collision line extends infinitely up and down so there is no height coordinate.  The numbers use the same coordinate grid as the objects in the arena.  So if your floor object is at point 0, 0, 0, you can just set the collision lines to the same coordinates as the floor vertexes.
 
Put the collision lines in def Activate in the .py.
 
POV's are a set of paths the AI uses to navigate around obstacles.  You only need them if you have an arena like the BBEANS arena with a blade in the middle.  Without POV's, the AI won't know how to get around the blade.
 
And there's no way I can think of to lighten textures in the gmf.  Well no practical way anyway... I suppose you could add a white reflection map.  But that would require another texture which would defeat the purpose.

To lack feeling is to be dead, but to act on every feeling is to be a child.
-Brandon Sanderson, The Way of Kings

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #11 on: August 02, 2011, 03:04:50 AM »
Thank you very much.
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #12 on: August 31, 2011, 11:46:43 AM »
BUMP:

Do I need POV's and collision lines for a centre object?
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline Trovaner

  • *
  • Posts: 1222
  • Rep: 32
    • View Profile
    • Awards
Re: GMF Queries
« Reply #13 on: August 31, 2011, 02:48:48 PM »
If you want the AI to navigate well within your arena, you'll want POV's and collision lines whenever there is an unmovable obstruction that could get between the bots.

POV's are good for mapping AI routes around obstacles or hazards.
Collision lines are good for keeping the AI away from things (pits, walls, hazards, etc.).

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #14 on: August 31, 2011, 02:52:38 PM »
But POV's are unecessary for the walls?
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline Trovaner

  • *
  • Posts: 1222
  • Rep: 32
    • View Profile
    • Awards
Re: GMF Queries
« Reply #15 on: August 31, 2011, 05:27:30 PM »
For the most part, the AI always moves towards its opponent so there would be no point in adding POV's for walls unless it was possible for the wall to come between the bots.

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #16 on: September 03, 2011, 03:35:57 PM »
Thanks.

Also, regarding POV's, I'm probably being an idiot but I've confused myself again.

A while back, Trov explained  them to me and said this:

#self.AddPOV(POV_ID,X-Coordinate,Z-Coordinate,POV_ID)

I look at the BBEANS arena, and its POV's don't seem to correspond to that:

EG:

self.AddPOV(3, (-5, 5), (3, 2))

How is (-5,5) the X co-ordinate?

Or is (-5,5) the two co-ordinates, and (3,2) something indicating ID 3 joins with ID 2?
« Last Edit: September 04, 2011, 02:09:28 PM by G.K. »
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #17 on: September 04, 2011, 02:10:43 PM »
DP:

I acted under those assummptions and added the POV's, however they don't seem to have worked. Bots still crash into the hazard in the middle.

Here's the arena.py

Code: [Select]
from __future__ import generators
import plus
import Arenas
import random
import Hazards
import math

from random import randint
import time
import HazardsBlueRay
import string
import Gooey



class Twisted(Arenas.SuperArena):
    "We fight in tandem!"
    name = "In Tandem Arena"
    preview = "Tandem/tand_preview.bmp"
    game_types = ['DEATHMATCH', 'BATTLE ROYAL', 'TEAM MATCH']
    extent = (-15, 15, 15, -15)


    def __init__(self):
        Arenas.SuperArena.__init__(self, "Arenas/Tandem/Tandem.gmf")
        #plus.Arena.__init__(self, "")
        plus.setBackColor(.36, .537, .788)
       
        degrad = 0.01745
        self.AddStaticCamera("Main View", (0, 30, -20), (68*degrad,0), 55*degrad)
        self.AddStaticCamera("Battle View", (19.5, 25, 19.5), (56*degrad,225*degrad), 40*degrad)
        self.AddStaticCamera("High Flipper View", (-19.5, 45, -19.5), (48*degrad,45*degrad), 84*degrad)
        self.AddStaticCamera("Birds Eye View", (0, 45, 0), (90*degrad,0), 50*degrad)

        self.AddWatchCamera("Combat Cam", (-12, 8, 12), (16, 36, 65*degrad, 30*degrad))
        self.AddWatchCamera("Aerial Cam", (-19.5, 35, -19.5), (50, 60, 45*degrad, 60*degrad))
        self.AddWatchCamera("Ground Cam", (8, -5, -8), (15, 40, 75*degrad, 35*degrad))
        self.AddWatchCamera("Spectator Cam", (13, 15, 13), (6, 18, 45*degrad, 45*degrad))
   
        self.players = ()

        ##################  Bot Flames + Smoke  ##################-------------
        self.RI_1 = 0
        self.RI_2 = 0
        self.RI_3 = 0
        self.RI_4 = 0
        self.RI_5 = 0
        self.RI_6 = 0
        self.RI_7 = 0
        self.RI_8 = 0
        self.RI_9 = 0
        self.RI_D = 0
        self.RI_Y = 0
        self.RI_SandF_0 = random.randint(-4, 4)   ### Random Smoke and Flames
        self.RI_SandF_1 = random.randint(-4, 4)   ### Random Smoke and Flames
        self.RI_SandF_2 = random.randint(-4, 4)   ### Random Smoke and Flames
        self.RI_SandF_3 = random.randint(-4, 4)   ### Random Smoke and Flames

        ##################  Bot Flames + Smoke  ##################-------------





    def AddShadowReceivers(self):
        self.SetShadowSource(5.897, 19.159, 5.899)





       
    def Activate(self, on):
        if on: self.players = plus.getPlayers()

        Arenas.SuperArena.Activate(self, on)





    def HazardsOn(self, on):
        if on:
            ##################  Bot Flames + Smoke  ##################-------------
            self.BOT_Flame_0 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            self.AddHazard(self.BOT_Flame_0)                                                                   
            self.BOT_Flame_1 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            self.AddHazard(self.BOT_Flame_1)                                                                   
            self.BOT_Flame_2 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            self.AddHazard(self.BOT_Flame_2)                                                                   
            self.BOT_Flame_3 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            self.AddHazard(self.BOT_Flame_3)
            self.BOT_Flame_4 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            self.AddHazard(self.BOT_Flame_4)                                                                   
            #self.BOT_Flame_5 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            #self.AddHazard(self.BOT_Flame_5)
            #self.BOT_Flame_6 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            #self.AddHazard(self.BOT_Flame_6)
            #self.BOT_Flame_7 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            #self.AddHazard(self.BOT_Flame_7)
            #self.BOT_Flame_8 = HazardsBlueRay.BotFlame((0, 0, 0), (0, 1, 0), (.2, .4, .2), .8)
            #self.AddHazard(self.BOT_Flame_8)           

            ##################  Bot Flames + Smoke  ##################-------------

            #wall
            self.AddCollisionLine((17, 17), (17, -17))
            self.AddCollisionLine((17, -17), (-17, -17))
            self.AddCollisionLine((-17, -17), (-17, 17))
            self.AddCollisionLine((-17, 17), (17, 17))

            self.AddPOV(0, (1, 1), (0, 1))
            self.AddPOV(1, (1, -1), (1, 2))
            self.AddPOV(2, (-1, -1), (2, 3))
            self.AddPOV(3, (-1, 1), (3, 0))

            self.AddPOV(0, (1, 1), (0, 3))
            self.AddPOV(1, (1, -1), (1, 0))
            self.AddPOV(2, (-1, -1), (2, 1))
            self.AddPOV(3, (-1, 1), (3, 2))           

            self.AddCollisionLine((1, 1), (1, -1))
            self.AddCollisionLine((1, -1), (-1, -1))
            self.AddCollisionLine((-1, -1), (-1, 1))
            self.AddCollisionLine((-1, 1), (1, 1))           

        return Arenas.SuperArena.HazardsOn(self, on)







       
    def Tick(self):
        for each in self.players:
            if plus.getLocation(each)[1] < -10: # Adjust this parameter to floor height(s).
                plus.eliminatePlayer(each)

        ##################  Bot Flames + Smoke  ##################-------------
        self.RI_0 = randint(-4, 4)
        self.RI_1 = randint(-4, 4)
        self.RI_2 = randint(-4, 4)
        self.RI_3 = randint(-2, 2)
        self.RI_4 = randint(-2, 2)
        self.RI_5 = randint(-2, 2)
        self.RI_6 = randint(-2, 2)
        self.RI_7 = randint(-2, 2)
        self.RI_8 = randint(-2, 2)
        self.RI_9 = randint(-2, 2)
        self.RI_D = randint(1, 4)
        self.RI_Y = randint(0, 2)

        self.BOT_Flame_0.Tick()  # Individual bot flames
        self.BOT_Flame_1.Tick()  # ""
        self.BOT_Flame_2.Tick()  # "" 
        self.BOT_Flame_3.Tick()  # "" 
        #self.BOT_Flame_4.Tick()  # Generic Lightning striking bot_flame.
        #self.BOT_Flame_5.Tick() 
        #self.BOT_Flame_6.Tick() 
        #self.BOT_Flame_7.Tick() 
        #self.BOT_Flame_8.Tick() 

        if 0 in self.players:
            if plus.getHealth(0,0) < 0.2:  #
                if self.RI_SandF_0  <= 2:
                    plus.emitSmoke(1, (plus.getLocation(0)), (self.RI_3, 1 ,self.RI_4), (.2,.4,.2))
            if plus.getHealth(0,0) < 0.1:  #
                if self.RI_SandF_0  < 0:
                    plus.emitSmoke(1,   (plus.getLocation(0)), (self.RI_4, self.RI_Y, self.RI_5), (.2,.4,.2))
                    self.BOT_Flame_0.BotFlameOff()   
                    self.BOT_Flame_0 = HazardsBlueRay.BotFlame(plus.getLocation(0), (self.RI_4, self.RI_Y, self.RI_5), (.2, .4, .2), .8)
                    self.BOT_Flame_0.BotFlameOn()

        if 1 in self.players:
            if plus.getHealth(1,0) < 0.2:  #
                if self.RI_SandF_1  <= 2:
                    plus.emitSmoke(1, (plus.getLocation(1)), (self.RI_4, 1 ,self.RI_5), (.2,.4,.2))
            if plus.getHealth(1,0) < 0.1:  #
                if self.RI_SandF_1  < 20:
                    plus.emitSmoke(1,   (plus.getLocation(1)), (self.RI_5, self.RI_Y, self.RI_6), (.2,.4,.2))
                    self.BOT_Flame_1.BotFlameOff()   
                    self.BOT_Flame_1 = HazardsBlueRay.BotFlame(plus.getLocation(1), (self.RI_5, self.RI_Y, self.RI_6), (.2, .4, .2), .8)
                    self.BOT_Flame_1.BotFlameOn()

        if 2 in self.players:
            if plus.getHealth(2,0) < 0.2:  #
                if self.RI_SandF_2  <= 2:
                    plus.emitSmoke(1, (plus.getLocation(2)), (self.RI_5, 1 ,self.RI_6), (.2,.4,.2))
            if plus.getHealth(2,0) < 0.1:  #
                if self.RI_SandF_2  < 0:
                    plus.emitSmoke(1,   (plus.getLocation(2)), (self.RI_6, self.RI_Y ,self.RI_7), (.2,.4,.2))
                    self.BOT_Flame_2.BotFlameOff()   
                    self.BOT_Flame_2 = HazardsBlueRay.BotFlame(plus.getLocation(2), (self.RI_6, self.RI_Y, self.RI_7), (.2, .4, .2), .8)
                    self.BOT_Flame_2.BotFlameOn()

        if 3 in self.players:
            if plus.getHealth(3,0) < 0.2:  #
                if self.RI_SandF_3  <= 2:
                    plus.emitSmoke(1, (plus.getLocation(3)), (self.RI_6, 1 ,self.RI_7), (.2,.4,.2))
            if plus.getHealth(3,0) < 0.1:  #
                if self.RI_SandF_3  < 0:
                    plus.emitSmoke(1,   (plus.getLocation(3)), (self.RI_8, self.RI_Y, self.RI_9), (.2,.4,.2))
                    self.BOT_Flame_3.BotFlameOff()   
                    self.BOT_Flame_3 = HazardsBlueRay.BotFlame(plus.getLocation(3), (self.RI_8, self.RI_Y, self.RI_9), (.2, .4, .2), .8)
                    self.BOT_Flame_3.BotFlameOn()

        ##################  Bot Flames + Smoke  ##################-------------






        return Arenas.SuperArena.Tick(self)



 
Arenas.register(Twisted)



Any suggestions as to where I slipped up?
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)

Offline Clickbeetle

  • *
  • Posts: 3374
  • Rep: 21
  • In Soviet Russia, bugs stomp YOU!
  • Awards BOTM Winner
    • View Profile
    • Beetle Bros site
    • Awards
Re: GMF Queries
« Reply #18 on: September 05, 2011, 01:03:56 AM »
I don't know how big your center obstacle is, but I'm guessing it's bigger than 2x2 meters.  That's where you went wrong.  The POV's don't define the edges of the hazard (collision lines do that), they define the path the AI should take around the hazard--therefore, the POV square should be bigger than the collision line square, or else the AI will hit the hazard before they try to drive around it.  Depending on the size of your hazard a cushion of 1-3 meters should be sufficient.

To lack feeling is to be dead, but to act on every feeling is to be a child.
-Brandon Sanderson, The Way of Kings

Offline G.K.

  • *
  • Posts: 12155
  • Rep: 10
  • Striving for a good personal text since 1994.
    • View Profile
    • Awards
Re: GMF Queries
« Reply #19 on: September 05, 2011, 03:10:56 AM »
Thanks.
My above post explains everything about everything.

Host of: Wheely Tag, Back To The Beginnings, BTTB 2, BTTB 3, BTTB 4, & BTTB V.

Heavy Metal: Champion (Mockery of the Whole Concept)
Robotic International Wars Series 1: Champion (Minifridge 6)
RA2 Team Championships 1 & 2: Champion (High Speed Train & Upthrust - as part of Naryar's Not Quite Evil Council of Doom)

Runner Up in: The Amazing Rage (Team Fedex), R0B0NOVA (Zaphod Stock), Steel Warzone (Inception of Instability), Box of Nightmares (Gicquel), Wheely Tag (Minifridge the Second)

Clash Cubes IV: 5th place (Fretless)
BBEANS 6: Rumble Winner & 6th Place (Minifridge 4)