Exponential Beam Damage and the Polaris Collector

Some insight on that test case plugin

So...this isn't going to be an incredibly in-depth or revealing post, just shaking things up a little. Heck, for all I know this is old news. I don't keep up on all the discussion of this matter on all the various boards.

Anyway.

People have cited the plugin Polaris Collector, with a Polaris asteroid miner which has an asteroid-destroying beam and a grappling beam, as a good example of how an exponential beam bug still exists when using two different beams simultaneously.

Well, I don't know if this is the case for Windows EVN (which I have heard mentioned), but I am fairly sure it isn't the case for Mac EVN 1.0.8. Oh, an increased damage effect does in fact exist, but it is at least partially (and most likely entirely) based on a different reason (a side effect of an actual feature).

See, the anti-asteroid beam has a count of 1 and reload of 0, so it's a beam that will fire every frame and exist for one frame. Well, not quite. It also has a decay of 20 - I haven't studied the exact specifics of what decay does to beam life, but it makes it longer by adding a period of time where the beam fades away.

EVN has a feature such that beams with rapid firing rate will emit steadily from one weapon exit point without switching as long as the firing key is held. This is good; it looks a bit dumb to have a single weapon, particularly beams, switching rapidly from exit point to exit point. Another effect, which may or may not be related, is that beams with decay ( and reload of 0 and count of 1) won't undergo their fade period until the firing key is released. Otherwise, beams would stack up because the weapon fires must faster than the beam's duration including the fade period. They will stack, however, if you release and press the fire key faster than the beam decays. This is well known with the Winter Tempest.

So, load up the Polaris Collector. Watch its anti-asteroid beam carefully; fly around, firing both beams. The anti-asteroid beam will appear to grow a bit in thickness and density. What you're seeing is a whole bunch of stacked lightning beams; essentially, by firing multiple beams at once, you're machine-gunning the fire key as fast as the fastest beam fires (note: this point is a guess, not a tested theory) , in this case every frame. That's a whole lot of stacked beams there, dishing out damage some 20x more than usual (or by however much longer the beam's life is extended due to the fade period). Try it out: guide yourself so you'll collide with an asteroid and concentrate all your arm's energy into pressing fire as rapidly as you can, without the grappling beam. It'll be nearly the same effect - instant asteroid death.

Whether it's a bug how firing two or more beams will override the fairly desirable feature of non-exit-point-switching-and-fade-period-only-after-firing...I dunno. Anyway, it's not likely due to an exponential damage bug. Just thought I'd throw this out there for consideration.

Like I said, this could be old news, and if it is, feel free to tell me. I can stand to be put in my place every now and then. 😛

(Some time I really ought to properly do an extensive study of beams, but I don't currently have the time, seeing how my last attempt to do so took sooo long, and I think there are mistakes in it.)

This post has been edited by Weepul 884 : 11 February 2005 - 10:15 AM

I'm pretty sure I've heard this before, but I think it was from you ;).

This makes me think I should download the 1.0.8, it would make litle sense for me to test with 1.0.6. Which makes me think I can only access Internet from school, it's Friday evening, it isn't open in the weekend and I don't have my iBook with me. Great. Therefore, the update to the wëap annotated template will wait for some time, time for me to do some tests (which will begin only when I get my hands on 1.0.8, monday) and to let that issue clear up a bit so I don't write nonsense.

Have a nice weekend.

mrxak, on Feb 11 2005, 08:30 AM, said:

I'm pretty sure I've heard this before, but I think it was from you ;).
View Post

No, this is new. You may be thinking of the report on beams I did before. There was something similar in there. 😛

Zacha Pedro, on Feb 11 2005, 10:27 AM, said:

This makes me think I should download the 1.0.8, it would make litle sense for me to test with 1.0.6. Which makes me think I can only access Internet from school, it's Friday evening, it isn't open in the weekend and I don't have my iBook with me. Great. Therefore, the update to the wëap annotated template will wait for some time, time for me to do some tests (which will begin only when I get my hands on 1.0.8, monday) and to let that issue clear up a bit so I don't write nonsense.

Have a nice weekend.
View Post

Okay...? :blink: 😉

That sounds interesting, and I'll have to check it out, but I'm guessing that this is because the beams_do_damge subroutines (just a random name that tells what it does, I haven't actually looked at the code) in the game's code for damaging ship and asteroids are done seperately, and Matt Burch only fixed the exponential bug for the ship version.

This seperation makes some sense historically, as in pre-Nova versions of the game you could not damage asteroids, so the only code to calculate damage would be embedded in wiht the other ship-handling routines (if the game is written in C++, it would probably be handled by the ship object proper). When the game was re-written for Nova, he just duplicated that code into the asteroid handling section, and when he fixed the beam bug for 1.0.8, he forgot/skipped over the asteroid copy.

I hope this makes some sense. If not, just ignore the second paragraph.

I've just tested this out and now I understand. Thanks for shedding some light on that Weepul.
I noticed it doesn't even have to be two different beams - buy a second mining laser and get the same effect. Or make the beam exit points all in different places - fire the mining laser by itself for a bit first then fire them both together. The engine needs to say that when a beam fires it should instantly kill off any previous decays from that same beam.

Edwards, on Feb 12 2005, 07:20 PM, said:

That sounds interesting, and I'll have to check it out, but I'm guessing that this is because the beams_do_damge subroutines (just a random name that tells what it does, I haven't actually looked at the code) in the game's code for damaging ship and asteroids are done seperately, and Matt Burch only fixed the exponential bug for the ship version.
View Post

It's hard to tell. After all, in the case of the Polaris Collector, you have approximately 20 times as many beams doing damage as normal, plus they do 10x damage to asteroids (I think).

Also, you could destroy asteroids in previous versions of EV, they just took godly amounts of damage to do so (like from a mega-cheatful-death beam), and they just vanished when they did. If I remember correctly.

However, asteroids do seem to be fairly heavily modified in behavior from EV - they change direction from impact, can be destroyed, broken apart, etc. I'm not really sure if any comparisons ought to be drawn. Perhaps he linked them to the same damage engine, perhaps not.

Guy, on Feb 12 2005, 08:30 PM, said:

I noticed it doesn't even have to be two different beams - buy a second mining laser and get the same effect.

Yep.

Quote

Or make the beam exit points all in different places - fire the mining laser by itself for a bit first then fire them both together.

Yeah, that makes it pretty easy to see.

Quote

The engine needs to say that when a beam fires it should instantly kill off any previous decays from that same beam.
View Post

Well, that wouldn't quite work, since if the beam draws energy, it only draws fuel when it's actively firing, not decaying. That engine modification would keep beams from stacking, which may or may not be a good thing, and the user would quickly learn that they ought to only tap fire when the beam has fully decayed to get the most damage out of their energy supply.

Weepul 884, on Feb 13 2005, 07:40 AM, said:

Well, that wouldn't quite work, since if the beam draws energy, it only draws fuel when it's actively firing, not decaying. That engine modification would keep beams from stacking, which may or may not be a good thing, and the user would quickly learn that they ought to only tap fire when the beam has fully decayed to get the most damage out of their energy supply.
View Post

Ah, true. Maybe it should just let them stack then.
Here's something else you can do. Increase the laser's reload to 1 and watch it do the same thing again. It's no longer firing continuously so every shot decays - making it fire less often makes it do more damage. :blink:

I just tried this myself (the computer I currently have internet access on doesn't have Nova), and Weepul, you are definitely right about how this works.

Both the Polaris Collector's mining beam and the Winter Tempest started stacking when I fired another beam at the same time, and this did massive damage to both asteroids and ships.

However, something else is definately going on with BRLs, as having more of them only increases the damage to asteroids (exponentialy, or nearly so), and they do not have a fade-out period like the mining beam and Winter Tempest (0 in the falloff field).

My conclusion is that we're both right.

Wow, I hadn't even noticed that combinations of beams that don't cause more damage to ships (ie. more than one BRL) do cause more damage to asteroids. I don't mine much. 😉

I just did a test on a custom, 2000-strength asteroid. Here's what I found:

• 1 BRL took about 10 seconds to destroy one of them.
• 2 BRLs took about 5 seconds to destroy one of them.
• 4 BRLs took somewhere between 2 and 3 seconds to destroy one of them. (I wasn't using a stopwatch. Close enough.)
• Using 4 BRLs and 1 custom second-trigger BRL simultaneously didn't take much less time than just using 4.

It seems that beam damage vs. asteroids is the way it's supposed to be? :blink: (Mac Nova 1.0.8) It's directly proportional, not exponential, and for beams that suffer from the not-more-than-once-per-frame bug vs. ships. Oh wait, need to test something else.

Okay, I tested with a custom BRL with reload of 10 and mass damage 24 energy damage 48.
• Destroying one of these asteroids with 1 custom BRL took a little under 30 seconds.
• Destroying one with 4 custom BRLs took between 7 and 8 seconds.
• Destroying one using 4 as primary fire and 1 as secondary fire took not much less time.

I thought I might have stumbled upon the origin of the exponential bug - that beam damage was increased by the number owned, which would work "properly" if beams were made such that all of them were constant, ie. fired once per frame, sort of a "simultaneous-fire" effect without actually having multiple beams. However, that does not seem to be the case as it works properly for beams that fire intermittently. Beam damage vs. asteroids does indeed seem to be working 100% properly. :blink:

This post has been edited by Weepul 884 : 14 February 2005 - 12:34 AM

So what's the difference when you fire at ships?

Guy, on Feb 13 2005, 11:35 PM, said:

So what's the difference when you fire at ships?
View Post

Versus ships, beams deal their amount of damage for every frame that they are visible. This is fine. The problem is that if you buy enough of a beam weapon such that it would fire faster than every frame (which is a major problem for beam weapons like the Ion Cannon and BRL, which already fire every frame if you just own one), it will not deal any more damage than its amount, once per frame. In other words, vs. ships, there is currently no benefit to owning more than one BRL or Ion Cannon.

(Actually, I've heard the bit about firing rate is true for all weapons in EVN.)

This is excluding beams which can stack, such as if you have "fire simultaneously" enabled, or the weapon has decay and you either own more than one, own it plus another beam weapon, or the weapon is not set to fire every frame.

Against asteroids, the engine seems to be multiplying damage properly even though beams fire only once per frame or less. Having two BRLs does in fact do two times the damage to asteroids.

Hm, new thing to check: if a beam has decay and is set to fire every frame, and you own more than one, it will stack unlike if you own only one. However, will it still only produce one decaying beam per frame?

This post has been edited by Weepul 884 : 14 February 2005 - 02:35 AM

Weepul 884, on Feb 14 2005, 02:17 AM, said:

Hm, new thing to check: if a beam has decay and is set to fire every frame, and you own more than one, it will stack unlike if you own only one. However, will it still only produce one decaying beam per frame?
View Post

Why couldn't you ask an easy one? 🙂

By comparing the number of beams visible when I fired one decaying beam (falloff 13, decay 1, inacc. 180) along with a second beam with the number of beams visible when I fired ten of the first beam, there was no readily apparent difference (certainly not what one would expect if all of the beams produced a decaying beam each frame).
This does fit in with my theory that a single non-simultanious-fire weapon can never fire more than one shot per frame.

Interestingly, the "Auto-machine-gun" effect does not require that you be firing another beam at the same time; rather, you merely need to be firing any other weapon that uses the same set of firing ports (this has not been tested for the "fire from ship center" option).

And a brief note about part of your first post: a single beam, if constantly fired (even if fired in syncronization with another, different weapon) will always fire from the same two exit ports, either 1 and 3, or 2 and 4 (aren't beams fun? 🙂 ).

Edwards, on Feb 14 2005, 07:36 PM, said:

Why couldn't you ask an easy one? 🙂

By comparing the number of beams visible when I fired one decaying beam (falloff 13, decay 1, inacc. 180) along with a second beam with the number of beams visible when I fired ten of the first beam, there was no readily apparent difference (certainly not what one would expect if all of the beams produced a decaying beam each frame).
This does fit in with my theory that a single non-simultanious-fire weapon can never fire more than one shot per frame.

Oh, I bet that looked cool (decay + inaccuracy). 🙂 Anyway, it could be tested more normally vs. a stationary dummy ship with strong shields/armor, with the player owning 2 and then 4 or more of the gun, and testing how long it takes to kill the ship. I'm not going to though, since I think you're right. And I don't want to take the time to set up a dummy ship. 😉

Quote

Interestingly, the "Auto-machine-gun" effect does not require that you be firing another beam at the same time; rather, you merely need to be firing any other weapon that uses the same set of firing ports (this has not been tested for the "fire from ship center" option).

That is interesting.

Quote

And a brief note about part of your first post: a single beam, if constantly fired (even if fired in syncronization with another, different weapon) will always fire from the same two exit ports, either 1 and 3, or 2 and 4 (aren't beams fun? 🙂 ).
View Post

Huh? In my experience beams will use all exit points...

Weepul 884 said:

Oh, I bet that looked cool (decay + inaccuracy). smile.gif

Believe me, it did. Especially since I was playing around with negative beam width at the same time, creating "split" beams. I had some incredible moiré-like patterns around my ship (firing from two points 120 pixels apart). Too bad the screenshots didn't turn out... 😞

Quote

Huh? In my experience beams will use all exit points...

I just re-tested, and I seem to have made a mistake.
• If you have one beam, it will fire from one exit point.
• If you have more than one of a single type of beam, it will fire from all exit points.
• If you have one of each of two beams (reload 0), however, one will use exit points 1&3, the other will use exit points 2&4.

There is, however, one slight oddity that I am sure of. If you are firing one beam, and switch targets (there must be at least one ship in the system), the beam will move from exit point 1 to 3 (or vice versa), or 2 to 4 (or vice versa). As far as I can tell, this has no practical or impractical utility 🙂 .

Edwards, on Feb 15 2005, 07:54 PM, said:

There is, however, one slight oddity that I am sure of. If you are firing one beam, and switch targets (there must be at least one ship in the system), the beam will move from exit point 1 to 3 (or vice versa), or 2 to 4 (or vice versa).
View Post

Try having another beam, just one of them, and firing only it (secondary fire) for a brief burst. That may switch the order around. I was testing having two of a beam set to simul-fire, and it used either 1-2 and 3-4 or 1-4 and 2-3, depending on which was the "next" one to fire. I dunno, maybe I could have bumped it to 1-3/2-4 if I had fired it while firing the simul-fire beams as well.

I wish there was a way to make owning two of a simul-fire beam use only two pairs of exit points, and the same two pairs consistently. I have plans for a ship that would look nicest if that was possible. -_-