open All Channels
seplocked Features and Ideas Discussion
blankseplocked missile effects upgrade ???
 
This thread is older than 90 days and has been locked due to inactivity.


 
Author Topic

Havak Kouvo
Posted - 2011.09.04 05:07:00 - [1]
 

Edited by: Havak Kouvo on 04/09/2011 05:07:38
I read a post that said a dev said the reason why upgrading missile effects would take so long was because it would require re-writing how missiles are handled on the server side, along with re-designing the effects.

Long story short the post told me this.
Client effects equals server calculations

instead of
Client effects approximate server calculations

What I mean is this. The current system has the visual missile object/effects that we see on the client almost perfectly reflex what the server says is happening. This would explain why missiles look the way they do, because somebody thinks that if missiles, and combat in general, doesn't behave exactly as the background calculations, then something is horrible wrong. I think this thinking is flawed.

Instead the system should be set up so that the effects only behave 'somewhat' like the server calculations. What this would mean is that the way missiles behave inside of the server would remain largely unchanged, but how they would look on the client would change dramatically.

Say I'm in a drake and I shoot missiles at a target about 40km away behind me. Because of the drake's model, the missiles fly out forward before tracking the target. But wait, the server has it that the missiles shot out from the ship straight back, how do I correct this so that the missile effects match the server calculations? Well, the server calculations would work the way they do, but the missiles, as far as the client is concerned, will have to compensate. The missiles fly forward for a fraction of the second before curving around and tracking their target. They will then begin to accelerate towards the target following the approximate path that the server is following. For the first few seconds the client missiles may lag a little the server's calculations, ie the server says the missiles are 30km from the target, but the client shows them as 33km from the target. But after those few seconds the missiles on the client match the server's calculations. Then when the server calculates the missiles have impacted the target, the client shows the missiles impacting the target, at about the same time.

Problem? what if the enemy ship at a very short range from the drake, but is still behind. The above solution would have the effects lag behind the actual calculations. I say, so what? If the server says the missiles hit at 12:34.05 but the client shows them hitting at 12:34.06, I don't see how this is a huge issue. As long as the client's effects are pretty close to what the server is calculating, there shouldn't be a problem. This isn't an FPS, effects don't have to sync to the milli-second, within a second (in most cases like missiles) is good enough.

will this still require work to revise the effects system? Yes, but this could lead to other improvements like. turrets that actually miss when they miss. And shield/armor impact effects.

iKill Giants
Eternal Phoenix Rises
Posted - 2011.09.04 05:22:00 - [2]
 

I think you're underestimating how tightly bound missile calculations and missile effects are. Currently, the system is that the missile/missiles are launched from as a single point with a corresponding effect. The single point you see contains all the damage and all the calculations related to your missiles. That single point then travels to the target, updating it's path every tick of the server. The more missiles you launch as a group, the higher damage the single point contains.

Now, currently it's very simple. You have 1 point, traveling from Ship A to Ship B. All the "missiles", since it is only one missile really, are the same distance away from ship B at all time, and they all will burn out at the same location if Ship B is too far away.

But if you have multiple missiles, all coming out of different locations at different distances from the target, then the calculations get much more complex. You have to somehow get them all to deal damage at once when they might be a few 500m away on the actual model if they're grouped. You have to calculate that many different flight paths for that many points. Let alone the code probably required to move the point of origin from the midpoint of the ship to several missile bays.

In short, the effect just shows you where the calculation is. Making an effect that doesn't reference the calculation at all would require an entirely different calculation, which might as well carry the damage in it when it comes down to the complexity of it all.

Havak Kouvo
Posted - 2011.09.04 23:20:00 - [3]
 

Originally by: iKill Giants
I think you're underestimating how tightly bound missile calculations and missile effects are. Currently, the system is that the missile/missiles are launched from as a single point with a corresponding effect. The single point you see contains all the damage and all the calculations related to your missiles. That single point then travels to the target, updating it's path every tick of the server. The more missiles you launch as a group, the higher damage the single point contains.

Now, currently it's very simple. You have 1 point, traveling from Ship A to Ship B. All the "missiles", since it is only one missile really, are the same distance away from ship B at all time, and they all will burn out at the same location if Ship B is too far away.

But if you have multiple missiles, all coming out of different locations at different distances from the target, then the calculations get much more complex. You have to somehow get them all to deal damage at once when they might be a few 500m away on the actual model if they're grouped. You have to calculate that many different flight paths for that many points. Let alone the code probably required to move the point of origin from the midpoint of the ship to several missile bays.

In short, the effect just shows you where the calculation is. Making an effect that doesn't reference the calculation at all would require an entirely different calculation, which might as well carry the damage in it when it comes down to the complexity of it all.


I think you miss understand. I'm not saying that the client effects shouldn't following the server calculations, only that they don't need to precisely follow the calculations. The server is more of a guide for the effects, giving them an idea of what they are suppose to do. Shooting multiple missiles in a group, for example, although there are more missiles they are all based on the same single calculation that the server is doing. It just they would look separate for the player.

Essentially
Now: Client equals Server

what is should be: Client is similar to but not necessarily equal to Server

iKill Giants
Eternal Phoenix Rises
Posted - 2011.09.04 23:48:00 - [4]
 

Originally by: Havak Kouvo
It just they would look separate for the player.


If it looks separate for the client, that's just as or more complicated than having them actually be separate for the server, at least in the initial coding. I'm trying to figure out how to express exactly how complicated it is to make multiple points coming from multiple origins converge on the same spot at the same time when they are all basing their trajectories off the same point.

It's not just having to run multiple calculations, you'd need multiple formulas altogether for the flight path of each missile.

kerradeph
Gallente
CATO.nss
Posted - 2011.09.05 08:25:00 - [5]
 

something I thought of from reading this thread is to do it so rather than doing all the movement calculations on the server. you send the information about the missile (velocity and flight time) and the dynamic information about the target (it is going this fast on this vector/orbiting [name] at this range, and is accelerating/decelerating at the normal rate to what speed). then let the client make the calculations. on the server side it would just set it off till the impact which would be calculated once on the information it has. this information would only be changed if the target manually changes something or is effected in some way that would change the missile.

for the missile info sent it would be something like
Juggernaut torpedo, 1750, 7.8
kerradeph's atron, 4370, 0, 4890, 3, Kiniss's atron 8000

this information would be read by the client as: what type of object to show, its travel speed, its travel time.
target, target current velocity, status of velocity (0=accelerating, 1=decelerating, 2=static), target velocity, target motion type (0=vector, 1=orbiting, 2=approaching, 3=keep at range), affecting information for the last data point (vector or target), in the case of there being a target, it is information for what range to keep at or to orbit at.

Gemberslaafje
Vivicide
Posted - 2011.09.05 08:37:00 - [6]
 

Originally by: iKill Giants
Originally by: Havak Kouvo
It just they would look separate for the player.


If it looks separate for the client, that's just as or more complicated than having them actually be separate for the server, at least in the initial coding. I'm trying to figure out how to express exactly how complicated it is to make multiple points coming from multiple origins converge on the same spot at the same time when they are all basing their trajectories off the same point.

It's not just having to run multiple calculations, you'd need multiple formulas altogether for the flight path of each missile.


Well, I do understand where she's coming from.

The server keeps doing exactly what it's doing now - the actual damage, and the time it takes for that damage to arrive, stays exactly the same.

In fact, it could send exactly the same info as it's doing now, like a position update every second. (just as an example)

The difference would be what the client does with that information. And yes, that would include some brain-wrecking calculations on how to launch the missile from the actual missile pod, flurry them around towards the target, and actually hitting the target in different spots more or less at the same time.

I do think the actual calculations to do this on a single computer aren't un-doable, but of course scaling would get into effect if you have 100+ Drakes on screen.

I'd suggest the following compromise:
Have a quick count on the amount of missile launchers on the grid.
If it exceeds 30 (random number), execute plan B, otherwise execute plan A1.
A1. If the player has his Missile Effects set to OFF, execute plan B, otherwise A.
A. Calculate the fancy effects per missile. Use the info from the server to adjust it's course every now and then.
B. Do the current missile effects, use the info form the server as fact.

The server governs when missiles hit. So there is a possibility that the effect is faster or slower compared to when you get the damage assessment. If that annoys you, or if your computer is slow, turn off the missile effects.

Havak Kouvo
Posted - 2011.09.05 14:17:00 - [7]
 

Originally by: Gemberslaafje
Originally by: iKill Giants
Originally by: Havak Kouvo
It just they would look separate for the player.


If it looks separate for the client, that's just as or more complicated than having them actually be separate for the server, at least in the initial coding. I'm trying to figure out how to express exactly how complicated it is to make multiple points coming from multiple origins converge on the same spot at the same time when they are all basing their trajectories off the same point.

It's not just having to run multiple calculations, you'd need multiple formulas altogether for the flight path of each missile.


Well, I do understand where she's coming from.

The server keeps doing exactly what it's doing now - the actual damage, and the time it takes for that damage to arrive, stays exactly the same.

In fact, it could send exactly the same info as it's doing now, like a position update every second. (just as an example)

The difference would be what the client does with that information. And yes, that would include some brain-wrecking calculations on how to launch the missile from the actual missile pod, flurry them around towards the target, and actually hitting the target in different spots more or less at the same time.

I do think the actual calculations to do this on a single computer aren't un-doable, but of course scaling would get into effect if you have 100+ Drakes on screen.

I'd suggest the following compromise:
Have a quick count on the amount of missile launchers on the grid.
If it exceeds 30 (random number), execute plan B, otherwise execute plan A1.
A1. If the player has his Missile Effects set to OFF, execute plan B, otherwise A.
A. Calculate the fancy effects per missile. Use the info from the server to adjust it's course every now and then.
B. Do the current missile effects, use the info form the server as fact.

The server governs when missiles hit. So there is a possibility that the effect is faster or slower compared to when you get the damage assessment. If that annoys you, or if your computer is slow, turn off the missile effects.


Exactly

Claire Raynor
Posted - 2011.09.05 15:02:00 - [8]
 

Yeah - I think the missiles will get new style "turrets" soon.

I think the game treats them like other objects in space at the moment - (I remember a patch stating that the server wouldn't be broadcasting missile hull,armour and shield info anymore because it wasn't used) - so I think missiles are really non-trivial.

But I'd love them to upgrade the missile effects. The last bit of the missile flight - where they seem to do an arc to finaly hit the target doesn't look quite right for me!

But how cool would a Drake look firing it's missiles from actual launchers - with them all streaking off?


 

This thread is older than 90 days and has been locked due to inactivity.


 


The new forums are live

Please adjust your bookmarks to https://forums.eveonline.com

These forums are archived and read-only