Difference between revisions of "GITS/Targeting"

From Robowiki
Jump to navigation Jump to search
(New Section)
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
'''GITS Targeting''' - ([[GITS/Targeting/Source|Source]])
 
'''GITS Targeting''' - ([[GITS/Targeting/Source|Source]])
 
----
 
----
(The original Targeting formula is from the [[WaveSurfing_Challenge/Bot_B|WaveSurfing Challenge Bot B]] from this [[Linear_Targeting|Code Snippet]].)
 
  
==Improvements==
+
=The 'GhostGun' Targeting system=
These are improvements I made to the targeting formula.
+
The Title says it all. I'm going to try and invent (if it's already been invented, then I'll improve upon it :P ) a new gun called the GhostGun. Theoretically (in my mind anyway) it should be able to adapt to other styles and improve upon itself. But programming such a Gun is going to be ''extremely'' time consuming, since it's going to take a lot of testing and blueprints and bugfixing to develop this Gun.
  
===RadarSweep (extremely buggy)===
+
==The Idea of the GhostGun==
RadarSweep is a little glitch that I educe to expand the Radar Coverage. It's improved the detection of robots, but it also improved the chance of the Robot to switch between shooting at two different robots if they are close together. I have this disabled until I can refine it further.
+
The GhostGun, in theory, will record stats on the Enemy and store them, like Average Velocity and the sort. This will be saved on the HDD so each time GITS kills the Enemy, or the Enemy kills GITS, GITS will be able to improve upon itself slightly. Now, this will be different since robots are different, from movement to what type of gun it uses.
  
===PowerConserve===
+
==Theoretical Example==
So far, PowerConserve has been a huge success. The gun will fire the correct amount of bullets within medium distances from GITS (on a 800x600 field). It will, however, overshoot by one or two if the target is far away or undershoot by one if the target is extremely close to GITS. This has also only been tested on static terms (i.e., GITS standing still and SittingDuck). Theoretically, GITS should always be spot on if it was a dynamic test, since Robots never stand still in battle. I'm also going to implement a dynamic Bullet Power script that'll further improve PowerConserve's ability by limiting the Max Power of the Bullet (if needed) to kill the other robot (instead of the static 3.0 power).
+
GITS battles against Robot_A, which has a WaveSurfing-type movement and a Dynamic Clustering-type Gun. GITS has never been against this robot before, so it creates a new file on the HDD called Robot_A.txt. As they fight, GITS collects data about how Robot_A moves and shoots, and guesses on how it handles scans. More likely than not, GITS will lose. As the first round ends, GITS writes to Robot_A.txt everything it learned. As round 2 starts, GITS recalls this information and starts to dodge bullets and react to movements more effectively. GITS now gathers data on how Robot_A's movement and shooting changes and uses them to create averages. As the rounds continue, GITS becomes smarter and better, creating a strategy that works well against Robot_A.
 +
 
 +
A couple of Months later, GITS and an Improved Robot_A fight. GITS recalls the Robot_A.txt file on the HDD and uses it in the first round. Since Robot_A has been improved, the file GITS uses is somewhat ineffective. As GITS collects data, it recalculates the parts that have changed and updates the averages, effectively adapting to Robot_A's new style.
 +
 
 +
==Development==
 +
The GhostGun is an [[RWPCL]] project, which means that you can help develop and test it (and use it too). You can get the Source (in a Sandbox-type Development Area) at the top of the page (the link that says 'Source' :P)
 +
===Authors===
 +
The People who helped develop this gun
 +
* Jacob "HACKhalo2" Litewski
 +
 
 +
==Theories and Ideas==
 +
These are some late night thinkings and ideas that pop into my head from time to time. There are more to come, hopefully.
 +
===Better Tick Management===
 +
As I was reading the Wiki, a possible problem poped up that I didn't take account for while working out GITS, Turn Skipping. Since GITS needs to take in a lot of data in a short amount of time, there is a high chance of GITS skipping a turn. So I started thinking on ways to maximize the amount of data taken in while reducing the amount of skipped turns.
 +
====Theory One====
 +
This theory is basically spliting up <code>onScannedRobot()</code> into two Parts, High and Low. The High Part of <code>onScannedRobot()</code> deals with the massive amount of data collecting, while the Low Part deals with firing the gun. Movement will be part of both Parts. Since the gun cannot be fired every tick, that's how GITS will figure out which Part to Execute. So, basically, it would be coded like this:
 +
<pre>public void onScannedRobot(ScannedRobotEvent e) {
 +
    ...multi-Part variables...
 +
    if(getGunHeat() >= getGunCoolingRate()) { //High Part
 +
          ...High-Part variables...
 +
          ...Update multi-Part variables...
 +
          ...Data Collection...
 +
          ...Movement...
 +
    } else { //Low Part
 +
          ...Low-Part variables...
 +
          ...Update multi-Part variables...
 +
          ...Aim and Fire the Gun...
 +
          ...Movement...
 +
    }
 +
}</pre>
 +
I have yet to test this.

Latest revision as of 19:52, 28 May 2009

GITS Targeting - (Source)


The 'GhostGun' Targeting system

The Title says it all. I'm going to try and invent (if it's already been invented, then I'll improve upon it :P ) a new gun called the GhostGun. Theoretically (in my mind anyway) it should be able to adapt to other styles and improve upon itself. But programming such a Gun is going to be extremely time consuming, since it's going to take a lot of testing and blueprints and bugfixing to develop this Gun.

The Idea of the GhostGun

The GhostGun, in theory, will record stats on the Enemy and store them, like Average Velocity and the sort. This will be saved on the HDD so each time GITS kills the Enemy, or the Enemy kills GITS, GITS will be able to improve upon itself slightly. Now, this will be different since robots are different, from movement to what type of gun it uses.

Theoretical Example

GITS battles against Robot_A, which has a WaveSurfing-type movement and a Dynamic Clustering-type Gun. GITS has never been against this robot before, so it creates a new file on the HDD called Robot_A.txt. As they fight, GITS collects data about how Robot_A moves and shoots, and guesses on how it handles scans. More likely than not, GITS will lose. As the first round ends, GITS writes to Robot_A.txt everything it learned. As round 2 starts, GITS recalls this information and starts to dodge bullets and react to movements more effectively. GITS now gathers data on how Robot_A's movement and shooting changes and uses them to create averages. As the rounds continue, GITS becomes smarter and better, creating a strategy that works well against Robot_A.

A couple of Months later, GITS and an Improved Robot_A fight. GITS recalls the Robot_A.txt file on the HDD and uses it in the first round. Since Robot_A has been improved, the file GITS uses is somewhat ineffective. As GITS collects data, it recalculates the parts that have changed and updates the averages, effectively adapting to Robot_A's new style.

Development

The GhostGun is an RWPCL project, which means that you can help develop and test it (and use it too). You can get the Source (in a Sandbox-type Development Area) at the top of the page (the link that says 'Source' :P)

Authors

The People who helped develop this gun

  • Jacob "HACKhalo2" Litewski

Theories and Ideas

These are some late night thinkings and ideas that pop into my head from time to time. There are more to come, hopefully.

Better Tick Management

As I was reading the Wiki, a possible problem poped up that I didn't take account for while working out GITS, Turn Skipping. Since GITS needs to take in a lot of data in a short amount of time, there is a high chance of GITS skipping a turn. So I started thinking on ways to maximize the amount of data taken in while reducing the amount of skipped turns.

Theory One

This theory is basically spliting up onScannedRobot() into two Parts, High and Low. The High Part of onScannedRobot() deals with the massive amount of data collecting, while the Low Part deals with firing the gun. Movement will be part of both Parts. Since the gun cannot be fired every tick, that's how GITS will figure out which Part to Execute. So, basically, it would be coded like this:

public void onScannedRobot(ScannedRobotEvent e) {
     ...multi-Part variables...
     if(getGunHeat() >= getGunCoolingRate()) { //High Part
          ...High-Part variables...
          ...Update multi-Part variables...
          ...Data Collection...
          ...Movement...
     } else { //Low Part
          ...Low-Part variables...
          ...Update multi-Part variables...
          ...Aim and Fire the Gun...
          ...Movement...
     }
}

I have yet to test this.