Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Trovaner

Pages: 1 ... 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 ... 64
741
Discussion / Re: What do you mod? (2012)
« on: October 15, 2012, 08:21:01 PM »
Bot File Editing (BFE) has two really good tutorials ATM (this one and this one). There isn't much else that you need to know but if you have any questions feel free to ask.

742
Discussion / Re: What do you mod? (2012)
« on: October 15, 2012, 06:33:40 PM »
The voting period for this has now expired and all votes have been finalized.

Here is some additional statistics which can be concluded from this poll:
  • An average of 4.05 votes were cast by participating members.
  • 60.53% of the participating members are able to BFE (much higher than last time).
  • A little less than a third of the participating members were able to program in python or modify GMF files.
  • Though considered the easiest, reskins have not been made by 100% of the voters.
  • Very few of the participants were able to mess with the EXE and live to tell the tale.
  • More people have BFE than those that have messed with Component.txt files.
  • Roughly 73% of the active community participated in the poll (where the active community is derived by the average number of voters in BOTM for this year).

743
Discussion / Re: random help topic
« on: October 13, 2012, 12:12:56 AM »
Its a cool idea to translate RA2 but in order to get everything translated, you would have to edit more than the component TXT files. This is especially true for DSL (which is the section that you posted in). You would need to edit the GIBs and any images with text on them.

744
General Support / Re: AI Problem/Questions
« on: October 10, 2012, 06:16:17 PM »
I recently learn how to do AI, and I've been making and tweaking them like there's no tomorrow, however, I have a problem:
One of the robots I made into an AI, is a flipper robot, doesn't flip at all, it self rights when it's flipped itself, but when it's got it's flipper under another robot, it doesn't do anything.
I reckon it might have something to do with the weapon constructor in the bindings.py, if it means what weapons that AI has.
As previously mentioned, you need a smartzone that is named correctly for the bot to know when to fire the burst motor.

I also have a similar problem with a "pusher" robot, it has a srimech, but when flipped, it doesn't self right.
I checked, the smart zone for the first bot is named "weapon", and the controls are named "Fire" and "Srimech" respectively.
So what do I do?
The original AI.py files do not have a Srimech control. Omni has a Srimech control and if you don't want to use the Engage tactic, you could give it no IDs for the weapon list (the replacement tactics are the same as the tactic used by Pusher.py).

I also have a few questions about custom AIs:
What is the Weapons constructor exactly? What does each value represent? They must mean something.
In the Bindings.py, the values in the weapons key define the component IDs that would need to break off before the bot switches tactics (usually Shove and Charge). If you don't want to switch tactics, the best bet is to include 0 (the component ID of the chassis). Otherwise, Apanx made an exporter that allows you to view the component IDs (from there, most people find all the comp IDs for their weapons).

Is it possible to use make the "watch" camera follow an AI? I've seen a video of someone doing what looks like that.
Are you referring to this? It currently hasn't been released yet but thats merely because I wanted to fix a compatibility issue with the Online Arena first.
There are some other possible ways of making a camera that follows an AI but I'm guessing that if it isn't the action cam or F10 cam then it is the F2 cam when there aren't any human players (however, this is also being controlled by the mouse).


Is it possible to have a invertible robot with a srimech as in if the srimech fails or breaks, just operate inverted?
AFAIK, the only AI.py that supports this is InvertOmni.py.

Is it possible to have Frenzy robots use weapons? I want one of my robots to have either style, but when I choose either, the weapons don't operate.
DSL comes with a Frenzy.py but I can't tell if thats what you are looking for (please elaborate). Frenzy.py is used for hammer bots that swing in two directions.

When a robot with a srimech goes to it's side, or anything but on it's back completely touching the floor, the srimech doesn't operate, how do I make them?
The only AI.py that is currently capable of doing this is Snow.py (used for intelligent popups).


745
Tournament Archives / Re: Robo Zone 2 - Splash, Predictions, Videos!
« on: October 07, 2012, 01:57:31 PM »
Are you pausing at the start of the match? The custom tactic is on a timer that uses real time as opposed to a counter (I got lazy). The tactic is meant to make the bot flip onto the correct side at the start of the match. I only tested this in the Robo Zone Arena though so its possible that I didn't tell it to spin the wheels long enough. Speaking of tactics, I should have finished my side swipe tactic...

Regardless, that round was pretty funny. Some bots did well and other bots just plain failed.


746
Tournament Archives / Re: Robo Zone 2 - Splash, Predictions, Videos!
« on: October 06, 2012, 07:47:55 PM »
Personally, I'm fine with how it works. Besides beat the box, the rest of the challenges prioritize durability over the bot's offensive abilities. There also wouldn't be much point in me doing well since I've already got the arena and I don't spend much time in game anymore.

Out of all the contenders, I think Anty C. will do the best. It may struggle in the Survival round but it may get lucky and land a blow to the T-extender.

747
Discussion / Re: New Robot Arena 2 Game Modes Built Into Arenas.
« on: October 06, 2012, 07:28:10 PM »
Capture the zone sounds like a cool idea. It sort of reminds of one of the game modes in Tony Hawk's Pro Skater. The only issue that I have with it is that you can't turn things around after the opponent has the majority of the zones.

Though small, the DSL Obstacle Course has a lot of features. Making a bigger/better one would require quite a bit of time, planning, and experience. That said, what did people like about the first one and what are they interested in having in a new one. Also *IF* I were to work on this, would anyone be interested in assisting?

748
Tournament Archives / Re: Robo Zone 2 - Splash, Predictions, Videos!
« on: October 05, 2012, 01:17:16 PM »
I didn't have the weight to point the weapons in the right direction (DSA and a nifty kinda made it heavy) and I wasn't able to exostack the anchors out far enough to use one of the extender's side APs. Most of my time was actually spent on getting the AI to drive. RA2 has problems with robots on their sides and NefariusBeing is no exception.

Useless Trivia:
-Its my only antweight and I made it solely for this tournament.
-I slanted the wheels so that it could drive on both sides. The chassis was getting to level with the ground for it to work without doing this.
-RA2 doesn't look at the roll (just pitch and yaw) when calculating the heading. It didn't even give access to a roll value (getHeading returns one pitch value and two yaw values (offset by 90 degrees)).

749
General Support / Re: Lets Fix Team Events Once and For All for DSL
« on: October 04, 2012, 01:15:35 PM »
I've never used Philetbabe's bot rotator but there is no reason that we couldn't get it to work; batch files are pretty easy to use and write. There are however problems with using something like this. If Bot3, Bot4, and Bot5 aren't a lightweight, mediumweight, and heavyweight then you may end up fighting a SHW with your AW.

The optimal solution would be to write a program that c the weight classes of all the bots and compares them to the weight class of the bot that you are trying to use in the event. Unfortunately, I do not know how to call a function when an event/button is started in game (the EXE regulates this sort of thing).

750
also invertible can be put to binary values as well ? This is interesting
Boolean values get translated into 0 (False) and 1 (True) but you can also give it any other non-zero number and it will evaluate to True. It is actually slightly faster to check the Boolean of a number as opposed to checking if the number is not 0 (None also evaluates to False so be careful if you mix them).

Change your radius to something like 1.2. That way, IsStraightPathClear will tell the AI to stay further away from the walls (in the very slim chance that they are preventing you from turning).

751
Tournament Archives / Re: Robo Zone 2.
« on: September 30, 2012, 11:56:58 PM »
I also have an entry but I'm still working on the custom AI (it kind of requires one).

752
Your bindings work for me so if adding 'AimError':0.1 doesn't help, I would need to look at the bot itself.

753
Discussion / What do you mod? (2012)
« on: September 14, 2012, 03:45:20 PM »
Since my last poll is pretty dated, I figured it was about time that I re-asked this question. It won't provide a level of skill in each but it will provide a sense of the basic understanding of people for each subject.

Although there are types of modding other than the ones listed, I figured that these are the most predominate and expandable. Let me know if you feel that something should be added.

Here are a couple sample questions if you are looking to give more input: (edits have been made to this for clarity)
-How much experience do you have in a specific category?
-What do you want to learn more about?
-What do you like modding?
-What mod types are you most interested in getting? (one of the categories in the poll)
-What is your favorite mod? (more specific than just DSL unless talking about the GIB work)


754
Discussion / Re: New Robot Arena 2 Game Modes Built Into Arenas.
« on: September 14, 2012, 12:11:09 AM »
As far as modes go, I've heard quite a few over the years but they were rarely implemented due to a lack of advanced modders. I'm not even sure if others know how to control the AI from the Arena.py (which is ideal for special modes because most people play alone).

As far as offering a different way of playing RA2, I have made and modified some arenas that fall under this category:
1. Soccer Arena - modified so that the AI actually plays competitively.
2. Obstacle Course Arena - modified so that the AI can navigate the arena.
3. Remote Housebots - each bot controls a housebot and with its ungodly power must destroy an enemy's shield.
4. Tug of War - pull or fall into a pit, you decide.
5. Race - several modified arenas that involve the AI following a given track.
6. Capture the Flag - get the flag and get out of there.
7. Robo Zone Arena -a new arena from an old idea.
8. Joust Arena - modified so that JoeBlo didn't have to AI the bots weird and capable of determining when the target component breaks off.
9. Intelligent Housebot - a housebot that plays like a normal bot (with the obvious damage issues)
10. Practice Arena - lots of stuff that I'm trying to keep hush hush about.... but failing.

Other than the ones that I've started, I've also wanted to do:
1. Maze Arena - a random maze that challenges both AI and human players to find a path.
2. RW Arena - modified to include housebots, CPZ zones, AI alternatives to housebots, and AI that takes advantage of the arena's unique features. I keep mentioning this arena but its pretty daunting for one person.

My problem isn't a lack of ideas, its a lack of time. That said, I'm always interested in people's ideas. I even implement some of them. Unfortunately, I tend to stretch myself out a bit thin so things rarely get finished. For this reason, I was thinking of starting a mods showcase to get motivation and get input on which arenas I should be spending time on. Also, group mods tend to work well for me. I did quite a few mods with Madiaba but he hasn't been very active lately. I'm always looking for someone to co-mod with me so here's a shout out to all you modders and modder want-to-bes. It doesn't really matter how much knowledge you have as long as you have an interest in learning or have a skill that you can bring to the table (skin, GMF, PY, GIB, etc.). With the 10th anniversary less than half a year away, I think it would be pretty cool to work on a big mod (the bigger the team; the bigger the mod).

755
Stock Showcases / Re: Robo-Trons (intro videos for your robots)
« on: September 07, 2012, 10:57:34 PM »
The AI bot wouldn't be able to move out of its starting point but would be able to fire its weapons, spin its spinner, and/or wiggle the wheels. Unfortunately, in game battle scenes would look much cooler than a stationary bot so there is no real alternative to a separate intro video.

756
Modifications / Re: Removing the reversal of direction when inverted in AI.
« on: September 07, 2012, 09:22:02 PM »
WHAT HAVE I DONE


(Image removed from quote.)


^That battle was AI'd.  Happened the first time I tried it.


So... as you can see, I made a .py for Big Wheel.  It was actually pretty easy; you just need to delete that line in def Throttle (I was wrong about def Turning though, you need to leave that as is).


*LINK*


Then I just added a feature where you can make it spin continuously when the opponent is in range (so it won't stop dead still when the opponent is right under it).  Also, you can put 'SpinCycle':x in Bindings to make it spin back and forth for x/2 ticks in each direction when the opponent is in range (so in theory, it would drive back and forth over opponents and trample them, but in practice it seems to work better in just one direction).  Just make a new analog control named "Spin" to make the AI do that.


Now I hope I don't regret unleashing this scourge upon the tournament scene...  :frown:

Does Click's version work?

757
Was Plow.py ever used outside of philetbabe's AI Chart? I don't know if it would work because I don't know the context that the Disable method was being use in. If I used it on ANY of my RA2 versions, the method would crash on me because my SuperAI doesn't inherit or define a Disable method and "self" is being used in the wrong way. Anyone using it without calling that method would merely be using the Charge and Shove tactics without any active weapons.

758
It has never been a question about which would be better. The current tactic is just easier to code and works decently well when close to the opponent. While this has been discussed numerous times in the past, it is always nice to get people's input on possible solutions and problems. There have also been quite a few advancements in terms of understanding the mechanics of RA2 and its built-in commands.

That said, it is important that other people know what they can work with. Here are all the commands from my big list that could be useful in an a flanking AI.
Code: [Select]
#----- Plus Codes: -----
#plus.describe(BotID) - gives all component IDs and their corresponding bases
#plus.getContacts(BotID) - returns a value for each wheel (in order of CompID) that is equal to 0 when the wheel isn't touching anything and 1 when it is touching something (returns 0 if broken off)
#plus.getDirection(BotID,NoseOffset) - returns vector pointing in the forward direction for this player's bot with botlab nose offset. All three values are within the range positive 1 to negative 1. Each value equals positive 1 when directed toward their coorisponding XYZ-Direction (for example, the first value equals 1 when the bot is pointing in the direction of positive X).
#plus.getFPS() - returns the current FPS (for some reason it causes errors when used in certain sections such as Tick)
#plus.getGameType() - returns the name of the arena type (ex: "TABLETOP")
#plus.getHeading(BotID) - returns up axis heading for this player
#plus.getHealth(BotID,ComponentID) - returns the amount of health remaining (ex: 1.0 is 100% health, .5 is 50% health, ect.)
#plus.getHitpoints(BotID,ComponentID) - returns the amount of remaining hitpoints for the component
#plus.getLocation(BotID) - returns a list containing the XYZ-Location of the designated bot
#plus.getPlayers() - returns a tuple of all the BotIDs of all players (will not change when bots are disabled, destroyed, or eliminated)
#plus.getSpeed(BotID) - returns the current speed of the designated bot
#plus.getTimeElapsed() - returns the amount of time that has passed since the start of the battle
#plus.getWeight(BotID) - returns the weight of the designated ID (changes when components fall off) (I'm not sure how accurate this is because I used it in the botlab on one of my bots then in the test garage while it was still in the air and there was a 4kg difference...)
#plus.rayTest(XYZ-StartingLocation,XYZ-EndingLocation) - if something is between the two points it will returns the BotID (-1 if it is not a bot), the ComponentID (lowest component value is 2) (0 if chassis), the XCoordinate of intersection, the YCoordinate of intersection, and the ZCoordinate of intersection; otherwise it will return -1 for all five values if it doesn't hit anything. If it hits something that isn't a bot, the first two values are -1 while the rest are the XYZ of the point of intersection

#----- AI Codes: -----
#self.GetDistanceTo(XYZ-EndingLocation) - returns the distance to the designated location
#self.GetDistanceToID(BotID) - returns the distance to the designated BotID
#self.GetEnemies() - returns the IDs of all opposing bots
#self.GetHeading(True/False) - returns up axis heading for this AI bot. The given parameter specifies if it is going in reverse or not.
#self.GetHeadingTo(XYZ-Coordinates,True/False) - returns the heading to the given location. The second parameter specifies if it is going in reverse or not.
#self.GetHeadingToID(BotID,True/False) - returns the heading to the given BotID. The second parameter specifies if it is going in reverse or not.
#self.GetID() - returns the ID number of the bot loading this
#self.GetLastDamageDone() - returns the CompID for this AI that delivered damage to another bot, the amount of damage, time of hit, opponent's BotID, and the opponent's damaged CompID.
#self.GetLastDamageReceived() - returns the CompID that recieved the damage, the amount of damage, time of hit, opponent's BotID, opponent's CompID that delivered the damage
#self.GetLocation() - returns the coordinates of the bot loading this
#self.GetSpeed() - returns the current speed of the bot loading this
#self.GetTurning() - returns the current turning of the bot loading this
#self.GetZoneContents(SmartZoneName) - returns a list of strings containing two values for all components inside of the designated smartzone. The first value repressent the BotID+1 and the second value represents if it is a chassis.
#self.IsEnemy(BotID) - returns 1 if the designated bot is an enemy otherwise returns 0 (this sometimes results in random errors so I like to compare the BotID to the ones listed in GetEnemies)

#----- Arena Codes: -----
#(I can't remember if these are accessible within the AI.py's 'self' but if not, use 'a' instead ("a=Arenas.currentArena"))
#self.FromGrid(XYZ-Coordinates) - returns the XYZ-coordinates according to the map file (there is no diffence in results when the Y-Coordinate is given)
#self.GetMapResolution() - returns the arena's resolution setting (this command is used to determine how accurate the map file is)
#self.GetMapSize() - returns the arena's size setting (this is usually set at the top of the Arena.py)
#self.SetSearchRadius(Value) - used to determine the size of your bot so that it avoids walls and hazards (this is usually set to the value that you gave for the radius)
#self.RayTest(XYZ-StartingLocation,XYZ-EndingLocation) - if there is an object between the two points it will return a one and a list of the XYZ Coordinates for the point where it hit something. It will return a zero for the first value and (None, None, None) if nothing is between the two points.

As far as identifying the opponent's type, we are limited to only knowing their components' base. We have no idea how the components are connected. For this reason, we are better off determining if it is a type of bot that we don't want to flank. For HS, you could use plus.rayTest to see if any weapons are moving in the front of the bot at the start of the match (you would also need to make sure that you aren't looking at a FS or VS). For FBS, you could determine if their heading keeps changing at the start of the match. There is no one-size-fits-all solution for figuring out bot types so even this solution would require quite a bit of coding.

As far as flanking goes, you can check the size of the arena, the speed of both players, their current headings, and use the turn and max turn speeds from the bindings of the AI bot. The map size is rarely correct in custom arenas but you can use a self.RayTest as a corrective measure. If the hazards were properly labeled, you can also tell it to avoid them (preferably before attempting the flanking maneuver).

759
What I was thinking:

As you can see I already have an idea of what information would be needed and what strategy to use at a specific time (at least for a basic prototype), I just need to know if it's possible get that information. That's all I'm asking at this point.
You can't view the trigger names of human bots without accidentally AIing them (assuming they bothered to name the triggers properly). Also if you look at the components (not that you mentioned doing this), you will have troubles differentiating between things like FS and HS which would have completely different battle tactics.

You can break out of the random circling if you add a random variable but any form of circling usually exposes your sides.

I've attempted to make intelligent tactics in the past but there is currently no easy way of doing this. I've tried scanning bots in game (slow and I can't tell what component I'm looking at), reading bot files (too difficult to read all the sources that RA2 does), and waiting until the first attack hits (to see if it was a rotational or linear force being applied).

Perhaps, if we used a guess and check type of AI. Something like Snow (Seism 13's AI) would work well for battles that are performed more than once.

760
Discussion / Re: How do you bring yourself to play RA2?
« on: September 06, 2012, 06:10:23 PM »
Whenever I feel like testing one of my mods or get inspired by an original stock bot or idea. The latter only happens like twice a year for me, though.

Pages: 1 ... 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 ... 64