Simple Bullet Shadowing Surfer

From RoboWiki
Jump to: navigation, search

Hi, I have an idea for a bullet shadowing wave surfer robot but I don't really know how to get started. Could someone point me to a relatively easy to understand wave surfer that implements bullet shadows into its danger prediction? Thanks in advance!

Slugzilla (talk)15:55, 12 May 2019

Implementing bullet shadow in wave surfer is very easy; just set danger covered by shadow to 0

however, calculating bullet shadow is not trivial

the first bot featuring this technique is Diamond, and it’s open source!

Just have a look at it, you’ll know that better.

Xor (talk)02:49, 13 May 2019
Edited by author.
Last edit: 10:00, 18 May 2019
Both Diamond and Gilgalad use bullet shadows but IIRC Gilgalad's code was optimized for speed and made it harder to understand.
If you plan on using bullet shadows with bins(Slightly less effective), both DrussGT and WhiteFang use it.
DrussGT calculates all the shadows before hand while WhiteFang calculates them when the bullet overlaps the wave(Easier to implement and shorter code).
BTW, anybody setting wave dangers as done below?
Position danger = (bulletPassed ? 0: chanceOfBulletCollision) * dangerWithoutShadows

Edit: fix a mistake

Dsekercioglu (talk)06:51, 13 May 2019

This is not correct, although I've made the same mistake the first time thinking about this.

The catch point is that, even if your bullet passed safely, you know the intersection must contain no bullet, so the shadow of the bullet still exists

Xor (talk)04:01, 17 May 2019
Sorry, I fixed the code.
My point was: Wouldn't it be smarter to deduct (100 - x) percent of the danger if the chance of the bullet colliding is x percent.
Dsekercioglu (talk)10:01, 18 May 2019

This is incorrect, because bullet shadow has nothing to do with whether bullets collide or not — it’s all about information. You know perfectly you won’t get hit in the shadow, so danger is 0. You still get hit by the part outside of shadow in the incoming wave though.

Xor (talk)05:51, 19 May 2019
Let's say we have wave1(distanceTraveled 300) and wave2(distanceTraveled 100).
I shoot a bullet and it is calculated that it will intersect with wave2 at the x point so I set the danger to 0.
The bullet collides with the bullet that is on wave1 and the spot on wave2 isn't safe anymore.
Dsekercioglu (talk)08:19, 19 May 2019
Okay, I think I get it. Would the formula be
 PositionDanger = bulletPassedWave == true ? 0 : normalDanger
And if you are surfing multiple waves, you can estimate the chance that the wave2 will have a shadow by calculating in the percent chance the bullet will collide and add that to your calculations. Of course, once wave1 breaks, you can know for sure whether the position is 100% safe or not.
Slugzilla (talk)12:54, 19 May 2019

Yes, bullet shadows can be deleted, when the bullet casting shadow is destroyed before intersection happens.

However, I don’t think modeling this helps anything, since 1. we are already recalculating shadows when collision happens 2. the chance of actual collision is always low for normal battles. 3. You don’t know that chance exactly, an estimation may decrease performance actually.

To accurately model the chance of bullet getting destroyed before intersection happens, you should consider more than a flat probability — since once a bullet passes all other waves except target wave, the only chance bullet collision happening is with the target wave.

I don’t think this added complexity should outperform traditional way that updates shadows when collisions actually happen.

Xor (talk)13:38, 19 May 2019

Thanks for the input! I'll check out the code for Diamond, DrussGT, and WhiteFang later today.

Slugzilla (talk)20:49, 13 May 2019
Personal tools