[Logo]
 
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
possible defense sent fix  XML
Forum Index -> Druids RPG Go to Page: 1, 2 Next 
Author Message
Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

I remember one issue with a defense sent is that it will remove the collision but not the model, so you don't know which enemy fire to try to dodge. I know deemers and rocks can be destroyed... deemers by almost nothing and rocks by avril. I assume that they have some health to them. If we make projectile shots (such as avril and rocket rockets, scaarj blasts, rocks, etc.) have a certain amount of health and make the defense sent do alot of damage, the target may be destroyed just like titan rocks getting shot down by an avril. thoughts?
[Email] [Yahoo!] aim icon [MSN]
Szlat

Wicked Sick!

Joined: 05/18/2005 18:32:41
Messages: 2124
Location: UK
Offline

To cut down on network traffic, for some projectiles the server just tells the client that this missile is starting here in this direction at this speed - then has no more communication with the client about it. The client PC draws it until it hits something, then explodes it.
However, what is really happening on the server may bear no relation to what the client is drawing.

These client side projectiles (having the NetTemporary bit set) are the problem. When the defense sentinel destroys them on the server, the client cannot get informed, so they still show there.

Projectiles that require more communication from the server - like guided redeemers, and bio-goop, and rocks - when these get destroyed on the server the client does know about it, and so can properly destroy it.

To make all projectiles work properly, we would have to make all projectiles keep in communication with the server. Unfortunately, this would have a crippling effect on network traffic, and so is not an option.

So, no way out of it I think.
Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

ok I wasn't sure how it worked... but this brings up another possibility. have a linked list of the current weapons in play. the server numbers each one. when it is created, it makes a weapon and a number associated with said weapon fire. when the server detects that it is destroyed, it sends a second message saying that it is destroyed so the client knows to destroy it. so you only need a start and end. when if it hits a wall it is destroyed and the message is sent just the same as if a sent shoots it down.
[Email] [Yahoo!] aim icon [MSN]
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Szlat wrote:
To cut down on network traffic, for some projectiles the server just tells the client that this missile is starting here in this direction at this speed - then has no more communication with the client about it. The client PC draws it until it hits something, then explodes it.
However, what is really happening on the server may bear no relation to what the client is drawing.

These client side projectiles (having the NetTemporary bit set) are the problem. When the defense sentinel destroys them on the server, the client cannot get informed, so they still show there.
... 

I understand what you are saying, but I though warlord missiles can change direction (they seem to curve slightly)
I also could be wrong since I haven't played today.

I think it is fine though the way it is with the logic:
1) The warhead circuitry in the missile is destroyed by the ESD, and the resulting damage is from the mass of the warhead. (i think you posted a similar explanation somewhere)
2) Titan Boulders can have their mass modified by defense sent's shock by vaporizing the core. The player is hit by the shell of the boulder. (You can pretty much say anything here since the boulders seem to defy laws of physics anyway)

I like the uncertainty factor with it too...It keeps players on their toes.

greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Would it theoretically be possible to add an overlay to rockets/boulders that were destroyed?

Maybe use the texture that ghost monsters have to make it look like it was disintegrated with semi-transparent particles. (although you would still have the explosion i think)
Or even a null entropy overlay to give it a charred look.

Would something like this use any extra bandwidth?
Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

its basically the same concept as what I had... instead of destroying it you decided to give it a different skin and therefor clear the confusion. if you made the skin clear that does what I wanted
[Email] [Yahoo!] aim icon [MSN]
Szlat

Wicked Sick!

Joined: 05/18/2005 18:32:41
Messages: 2124
Location: UK
Offline

Still have the same problem. The server knows which projectile it wants to destroy/reskin, but it has no way of telling the client. Specifically, the projectile has been created in a way such that there is no link between the client projectile and the server projectile.
It is possible to get them linked, by not setting the flag which causes them to not be linked, but that then increases the network traffic as the server has to tell the client when every single projectile is destroyed. At the moment, the client handles destroying projectiles when it thinks the projectile has hit something.
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Szlat wrote:
Still have the same problem. The server knows which projectile it wants to destroy/reskin, but it has no way of telling the client.  

Makes sense, but last night I know I have seen rockets change direction so I have to wonder how that happens without a link.
Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

well I know the client draws the defense sent shots. if there a way to code it on the client side so it re textures when the client defense sent shoots it?
[Email] [Yahoo!] aim icon [MSN]
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Trooper wrote:
well I know the client draws the defense sent shots. if there a way to code it on the client side so it re textures when the client defense sent shoots it? 

It still will be the same issue. The def sent shots are independent from the projectiles.

This issue can be fixed, but at a network performance issue (ie higher chance of lag)
Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

well the defense sent obviously knows which one to attack... otherwise it would shoot a random projectile on the other side of the map. so it obviously has some coding that lets it know which target to draw the shot to. so as the projectiles are created on the client, they are numbered. I assume that class variables are used for projectiles. so since the defense sent obviously has to access to the class for projectiles, you just give it access to the texture var too. make it so when the defense sent shoots down that projectile, it accesses the texture var and changes it. if it were C++ I could do something for it... but I don't know unreal script. if I coded something in C++ would you be able to convert the coding?
[Email] [Yahoo!] aim icon [MSN]
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Szlat, I don't mean to hang on this issue. I am still learning unreal script, and this issue is interesting.
If DruidDefenseSentinelController.timer was a simulated function would this issue be addressable? if so would it be a performance hit?

other things:
why not use:
Code:
 RadiusActors (class<Actor> BaseClass, out Actor Actor, float Radius, optional vector Loc) 
to get the projectile list? Is it a performance issue?
---
I was unaware that the def sent only attacks one projectile at a time. It many times looks like it hits 6 projectiles at once. Would it be equally as effective to have a sent that destroyed every projectile within a radius, but fired at a much lower rate? With the lower fire rate there will be less iterations done on all projectiles.
---
can these functions be used to manipulate projectiles:
Code:
native(266) final function bool Move( vector Delta );
 native(267) final function bool SetLocation( vector NewLocation );
 native(299) final function bool SetRotation( rotator NewRotation );
 
Have a defsent reverse the trajectory of a projectile instead of destroying it. transport the projectile to another location on the map, or even just deflect the projectile like a magnetic defense shield.
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Trooper wrote:
well the defense sent obviously knows which one to attack... otherwise it would shoot a random projectile on the other side of the map. so it obviously has some coding that lets it know which target to draw the shot to.  

Yes, this is done by the server...not the client....the server then tells the client where to draw the location for the lightning bolt and to destroy the projectile only if bNetTemporary=false for that projectile.
The default for all projectiles is true. The bioglob is one of the few that are false, but many monster projectiles are subclasses of the bioglob.
Here is a list of the core classes that have bNetTemporary=false:
Code:
Engine/Classes/xWeatherEffect.uc:    bNetTemporary=false
 Onslaught/Classes/ONSAVRiLRocket.uc:    bNetTemporary=false
 Onslaught/Classes/ONSGrenadeProjectile.uc:    bNetTemporary=false
 Onslaught/Classes/ONSMineProjectile.uc:    bNetTemporary=False
 Onslaught/Classes/ONSRVWebProjectile.uc:	bNetTemporary=False
 OnslaughtBP/Classes/ONSMortarShell.uc:    bNetTemporary=False
 OnslaughtFull/Classes/ONSBomberRocketProjectile.uc:    bNetTemporary=False
 OnslaughtFull/Classes/ONSAutoBomber.uc:	bNetTemporary=false
 UT2k4AssaultFull/classes/FX_Turret_IonCannon_LaserBeam.uc:    bNetTemporary=false
 UT2k4AssaultFull/classes/FX_LinkTurretShield.uc:	bNetTemporary=false
 XEffects/Classes/LightningCharge.uc:    bNetTemporary=false
 XEffects/Classes/SpeedTrail.uc:    bNetTemporary=false
 XEffects/Classes/LightningCharge3rd.uc:    bNetTemporary=false
 XEffects/Classes/OffensiveEffect.uc:    bNetTemporary=false
 XEffects/Classes/ShellSpewer.uc:    bNetTemporary=false
 XEffects/Classes/RegenCrosses.uc:    bNetTemporary=false
 XWeapons/Classes/TransBeacon.uc:    bNetTemporary=false
 XWeapons/Classes/BioGlob.uc:    bNetTemporary=false
 XWeapons/Classes/RedeemerWarhead.uc:    bNetTemporary=false
 XWeapons/Classes/ShockProjectile.uc:    bNetTemporary=False
 XWeapons/Classes/SuperShockBeamEffect.uc:	bNetTemporary=false
 XWeapons/Classes/RedeemerProjectile.uc:    bNetTemporary=false
 XWeapons/Classes/LinkBeamEffect.uc:    bNetTemporary=false
 XWeapons/Classes/PainterBeamEffect.uc:    bNetTemporary=false
 XWeapons/Classes/BlueSuperShockBeam.uc:	bNetTemporary=false
 

Trooper

Godlike
[Avatar]

Joined: 05/17/2008 15:32:06
Messages: 367
Location: t3h interwebz
Offline

so how does the client know which projectile to draw the defense attack to if everything is done by server?
[Email] [Yahoo!] aim icon [MSN]
greg11

Wicked Sick!

Joined: 02/10/2008 20:00:40
Messages: 526
Location: Hood River, OR
Offline

Trooper wrote:
so how does the client know which projectile to draw the defense attack to if everything is done by server? 

The client isn't connecting the dots...the server connects the dots and tells the client where the endpoints are in 3d cordinates...the destination point just happens to be the same position as the projectile.
 
Forum Index -> Druids RPG Go to Page: 1, 2 Next 
Go to: