open All Channels
seplocked EVE Information Portal
blankseplocked New Dev Blog: Missiles Hate My Hamsters
 
This thread is older than 90 days and has been locked due to inactivity.


 
Pages: 1 2 3 [4] 5

Author Topic

Melchior Grimm
Caldari
Posted - 2011.02.08 17:44:00 - [91]
 

Well done. Seems like the maximum impact possible for the minimum amount of code change and (more importantly) game system change. I suspect however that at some point you are going to have to bite the bullet and actually revisit/refactor the actual game mechanics of missiles (and yes please hybrids).

NextDarkKnight
Caldari
Posted - 2011.02.08 19:08:00 - [92]
 

Edited by: NextDarkKnight on 08/02/2011 20:23:39
Edited by: NextDarkKnight on 08/02/2011 20:02:44
Having a hard time typing with the Javascript now allowing me to scroll

I like this,

I am glad some one asked about the booster effect of the new code. I would hate for my fleet booster to activate and not effect my missiles.

Honestly, In my mind I think instead of creating a missile or group of missile for every launch. My minds eye pictures that if you create one item in space for each active launcher with attribues of where missiles are located. It would be a little tricky to code it but that way your only creating one item in space for each active missile launcher.

The object size would just be the edges of the ship and each targeted item.

Once the new launcher object is activated. It doesn't need to be removed from space only flagged as deactive if no missiles are in space. This will elimate the need for have to remove and create items in space if a large group of players.

Assuming one launcher can only have so many missiles in space at one time we have a idea on how big the attributes need each of these new objects should be tracking. A few fancy formulas and you would only need to update the attribues of the launcher item if a missile is destroyed or if the launcher is pulsed.


mechtech
SRS Industries
SRS.
Posted - 2011.02.08 21:22:00 - [93]
 

Great blog, very informative!

I almost thought you were going to mention defender missiles Razz

CCP Veritas

Posted - 2011.02.08 21:51:00 - [94]
 

Originally by: Largo Coronet
Ship death degrades poorly under load


I looked into the ship death sequencing not too long ago. Came out of it with a fairly big optimization which has been out on TQ now for a few months...but that's tangential to the problem you bring up. From what I've seen so far, I have a hunch that our ship death sequence does many database transactions, yielding execution to other threads (other tasks) each time.

Under a normal load situation this is not a problem, as the ship death sequence will continue as soon as the database returns. Under heavy load, however, there are many tasks queued up, so the ship death sequence won't get a turn right away when the database returns - it will have to wait while other tasks who have been waiting already get a turn. This effectively turns each database query into a potentially very long wait, even if the database is not overloaded.

Just a hunch, but this is as good of a place as any to drop a note to myself that I need to dig further at it Smile

Trin Javidan
Posted - 2011.02.08 21:57:00 - [95]
 

wow if u actulay repeat this process on guns, drones and modules we can actulay have +1000 fights and be lag free?

jade ranger
Posted - 2011.02.09 01:04:00 - [96]
 

Edited by: jade ranger on 09/02/2011 01:08:30
I'm sorry, but why not just half missle rof across the board, wouldn't that half the load in normal situations?



OR

is there any reason you couldn't put wormhole nebula effects onto normal space systems?

could you then put an effect on a whole system that is on an reinforced node, so that all rof of all weapons systems was halfed but damage was increased by double?

I mean that wouldn't take any extra code would it? just slap it on like you do with incursions. Then the whole fight, while running at normal speed would have hlaf of the weapon and damage calculations no?

Ranka Mei
Caldari
Posted - 2011.02.09 03:53:00 - [97]
 

You know, can't say I like this blog. On the one hand CCP wants people to get with the program, and have them update their hardware to support SSE2 instructions, and on the other I read this blog here, the tl;dr version of which is that a dev wants to nerf missiles (or frak them up in such a way, like cutting RoF in half and other dipsh*t, so that, effectively, it's tantamount to a nerf after all).

Here's my $ .02 isk, CCP: Get yourselves a better CPU! Seriously, people spend endless time training missiles skills, only to hear a dev wanting to simplify them, just cuz his server hardware can't cut it. So, get better hardware. We, your customers, do likewise. Don't mess with my missiles, though. Seriously. Tres uncool.

And here I was thinking we'd actually get better missiles graphics, what with the high-res requirements for Incarna and all. Sigh.

Popsikle
Minmatar
Caffeine Commodities Company
Posted - 2011.02.09 05:56:00 - [98]
 

Originally by: Ariane VoxDei
Interesting and depressing at the same time.

The depressing bit that certain suspiscions about the state of a lot of the inner workings are correct.

Interesting that you do not go further. Surely you must have noticed a few obvious things, even if it is hard to break out of the "braindead zombie client" and "everything is, and must at all times remain, a SQL database entry" mentality.

Quote:
During the testing of the changes above, I noticed that as the day went on, performance degraded a bit. Comparing a Telemetry trace from early in the day with late, I narrowed the difference down to the bit of code that removes an in-space missile from the system inventory. This made some sense, but in a scary way...over the course of the day I had spawned and blown up many ships, leaving a lot of debris in the system. If the cost of manipulating the system inventory is highly influenced by the amount of things in space, then that's a big problem.
It is astounding that a FIRED missile gets put in the system inventory (aka the list of things in space in that starsystem) and taken out again.
They, the FIRED missiles are so transient and insignificant as gunfire, that they should not be bothering the inventory. It is not as if anyone is going go scoop up those missiles and sell them.
They have ceased being in-launcher missiles and become a lit piece of firework that is about to die. Tbh just ammocountinlauncher--, check if ammocount reached 0 and be done with it.
Really. Make a distinction between missiles sitting in launcher and the thing that gets fired. Sure, put it in the physicsthingywhatchacallit, that is obviously necessary, but as far as inventory is concerned, it is essentially gone forever once it gets fired from a launcher.

Also, to paraphrase "count of things in space influence inventory reponse time", well DUH! Can you say Motsu. Even if you can do a O(log(n)) lookup...
Even then, you could have left missiles and bombs in a separate inventory.
That is, run 2 inventories.
* One for inflight missiles/bombs. This would see a lot of shortlived things coming and going - though my opinion is that a inventory for those is overkill, they are sufficiently tracked in the physics system.
* Another for everything else.
A little segmenting goes a long way for Drastic response improval.

I might even have gone for a 4 pronged assault, assuming that i would have inflight ammo in there
* inflight ammo (missiles of various sorts). If at all possible, eliminate the need for tracking that as inventory at all.
* ships, drones, achorable things, cynos, destructable structures (such as found in missions and exploration). I.e. things that are likely to give or take a lot of combat.
* "loot in space": wrecks&content, jetcans&content, asteroids.
* "the rest".

PS, while you are at it, can we please have the current formulas pertaining to applied missile damage, as seen from a player point of view.
That is, given what players know:
RD:raw damage
EV:explosion velocity
ER:explosion radius
TV:target velocity
TR:target signature radius (we know what we are firing at or show info is lying).
damage(RD,EV,ER,TV,TR)=?

There is some experimental data out there, but i like to get it "in blue". One example of that, is the postulate that if (tr>=er) then damage=rd, disregarding the ev and tv in that case.
Specially since i have some personal experience that seems to suggest that for example cruise missiles could absolutely arse**** (npc-)cruisers, if you can inflate their size enough to match ER, the strongest points of evidence being how they utterly devastate battlecruisers and the very significant effect painting against cruisers has, even if you use a ER rig and have maxed the ER en EV skills.



One quick question for you...

If missiles are not inventory in space how do you smartbomb or out run them??? If they are not tracked, they cannot be affected.

Dr Sheepbringer
Gallente
Halinallen veroparatiisi
Inglorious Carebears
Posted - 2011.02.09 06:48:00 - [99]
 

Originally by: Herr Nerdstrom
It's frightening to me how much obviously bad code still exists in the codebase...


It's better that it's bad code...otherwise one couldn't improve. Imagine if everything was running perfectly and we would still have these problems....

As for bad code/products etc. it's always like that. Thing change, priorities change and people just learn stuff on the go. At least when I look at my old stuff I instantly think "some drunken ******ed monkey had to do this...oh wait, it was me!" and I KNOW I was good.

I'm off to tackle a "bad code" (bad thought more likely) beast...

Thenoran
Caldari
Tranquility Industries
Posted - 2011.02.09 10:05:00 - [100]
 

Every programmer if given the option would probably want to redo half the stuff he or she did 6 months later for the simple reason that 6 months further down the road you know how to do 20 things better and faster and another 20 things that aren't even needed.
Redoing the entire EVE app...well...yeah...takes a bit long...

CCP Veritas

Posted - 2011.02.09 10:06:00 - [101]
 

Originally by: Ranka Mei
You know, can't say I like this blog. On the one hand CCP wants people to get with the program, and have them update their hardware to support SSE2 instructions, and on the other I read this blog here, the tl;dr version of which is that a dev wants to nerf missiles (or frak them up in such a way, like cutting RoF in half and other dipsh*t, so that, effectively, it's tantamount to a nerf after all).


I'm not sure what to say here. Pretty much the entire blog is about work that we did because we don't want to do the things you say we want to do.

So...yeah.

Cresalle
Posted - 2011.02.09 10:52:00 - [102]
 

Veritas wins the award for continuing to read the comment thread after initial responses.

Don't worry, dude. These threads always get progressively worse as they go on. You say something like "I'd like to fix this problem." and on the first page people say, "Yeah! Go for it!". Second page people say, "Why not work around it instead?" Third page, "Yes. You should definately ruin the game instead of fixing it." Fourth page, "Dammit, WHY ARE YOU BREAKING MY GAME? (ragequit)"

Tester128
Fremen Sietch
DarkSide.
Posted - 2011.02.09 12:43:00 - [103]
 

as you probably know, adding a ballistic control to the fit do not change the missile damage reported by fitting tool or ship info. also there is no visible damage mod attribute assigned to launchers. So the question, if we will get missiles af fake dogma objects with attributes derived from missile-in-launcher object will we lose damage modification due to ballistic controls?

Vincent Athena
Posted - 2011.02.09 14:48:00 - [104]
 

Presently how big a fleet fight can we have before players start reporting lag?

I realize this is a subjective measure of lag, and many report low fps as lag, but it still may be the best measure; the limit of lag free fleet size is just before players start saying "its getting laggy".

Where are we, and how has that number been changing recently?

Mithrasith
Posted - 2011.02.09 15:37:00 - [105]
 

Edited by: Mithrasith on 09/02/2011 17:01:49
Yet more astounding evidence that the Drake should just be deleted from the game...

and if I cant get that...

Shotgun on the devhaxedDrake. Can i haz? you can just drop it into a hanger in high sec for me. Ty.

Nice work btw on identifying some of the issues that are causing lag in the game. Very complex mechanics that are in EVE take some time, and plenty of caffiene to work through it sounds like.

Licinius CrassusFilius
Space Construction and Research
Posted - 2011.02.10 01:12:00 - [106]
 

Originally by: CCP Veritas
Originally by: Ranka Mei
You know, can't say I like this blog. On the one hand CCP wants people to get with the program, and have them update their hardware to support SSE2 instructions, and on the other I read this blog here, the tl;dr version of which is that a dev wants to nerf missiles (or frak them up in such a way, like cutting RoF in half and other dipsh*t, so that, effectively, it's tantamount to a nerf after all).


I'm not sure what to say here. Pretty much the entire blog is about work that we did because we don't want to do the things you say we want to do.

So...yeah.


I think this is just an example of why you need to re-introduce learning skills, but make them transferable to real life. However you would also need to introduce a 'basic reading comprehension' skill. Actually half of the forums will need to train that.

Ranka Mei
Caldari
Posted - 2011.02.10 03:08:00 - [107]
 

Originally by: Licinius CrassusFilius

I think this is just an example of why you need to re-introduce learning skills, but make them transferable to real life. However you would also need to introduce a 'basic reading comprehension' skill. Actually half of the forums will need to train that.

I've done the basic reading skills. I'm in the advanced class now: 'Reading between the lines.'

Originally by: Venkul Mul
Originally by: LHA Tarawa
Originally by: Taedrin
Has CCP considered attacking the "drake problem" from both angles? IE, not only by optimizing missiles, but also by adjusting game mechanics such that missiles are no longer something that a player spams?


(...)

Better to attack the slow performing code before attacking the game design. Game design is an UGLY rabbit hole to go down.

They have already done that some years ago. x2 damage, 1/2 ROF. I haven't jet forgiven them for that. Wink

(...) Every time the ROF is reduced they are nerfed even if the damage is increase to keep theoretical DPS at the same level. Increasing the ROF mean that you drone will spend more time before accepting the next order, so losing actual DPS to wasted cycles.

Precisely this! It all starts innocently enough, with a dev mentioning a missile resource issue, and it ends in things like missile RoF being cut in half, with all the nerfing side-effects thereof.

Miss President
Caldari
SOLARIS ASTERIUS
Posted - 2011.02.10 04:57:00 - [108]
 

Ok Good job I guess, but you're looking in the wrong place.

Work on Banning Macros and Bots first, that take 1000X more load on systems, and ruin game for everyone else.

Venkul Mul
Gallente
Posted - 2011.02.10 07:33:00 - [109]
 

Originally by: Ranka Mei
Originally by: Licinius CrassusFilius

I think this is just an example of why you need to re-introduce learning skills, but make them transferable to real life. However you would also need to introduce a 'basic reading comprehension' skill. Actually half of the forums will need to train that.

I've done the basic reading skills. I'm in the advanced class now: 'Reading between the lines.'

Originally by: Venkul Mul
Originally by: LHA Tarawa
Originally by: Taedrin
Has CCP considered attacking the "drake problem" from both angles? IE, not only by optimizing missiles, but also by adjusting game mechanics such that missiles are no longer something that a player spams?


(...)

Better to attack the slow performing code before attacking the game design. Game design is an UGLY rabbit hole to go down.

They have already done that some years ago. x2 damage, 1/2 ROF. I haven't jet forgiven them for that. Wink

(...) Every time the ROF is reduced they are nerfed even if the damage is increase to keep theoretical DPS at the same level. Increasing the ROF mean that you drone will spend more time before accepting the next order, so losing actual DPS to wasted cycles.

Precisely this! It all starts innocently enough, with a dev mentioning a missile resource issue, and it ends in things like missile RoF being cut in half, with all the nerfing side-effects thereof.


facepalm

You have failed your Sense motive roll. And trained the "Tinfoil Hat" skill, not 'Reading between the lines.'





Dr Sheepbringer
Gallente
Halinallen veroparatiisi
Inglorious Carebears
Posted - 2011.02.10 12:16:00 - [110]
 

Originally by: Miss President
Ok Good job I guess, but you're looking in the wrong place.

Work on Banning Macros and Bots first, that take 1000X more load on systems, and ruin game for everyone else.


Ever thought about how MANY times people shoot? Or how many times the macrominers "shoot". Think again my friend. Everything related to ships in eve has something to do with firing a weapon (be it a missile or a miner).

Also I would guess...CCP VBeritas, different department?

Ps. do miners count as weapons or modules?

Herr Nerdstrom
Caldari
Havoc Violence and Chaos
Merciless.
Posted - 2011.02.10 17:22:00 - [111]
 

Originally by: Dr Sheepbringer
Originally by: Herr Nerdstrom
It's frightening to me how much obviously bad code still exists in the codebase...


It's better that it's bad code...otherwise one couldn't improve. Imagine if everything was running perfectly and we would still have these problems....

As for bad code/products etc. it's always like that. Thing change, priorities change and people just learn stuff on the go. At least when I look at my old stuff I instantly think "some drunken ******ed monkey had to do this...oh wait, it was me!" and I KNOW I was good.

I'm off to tackle a "bad code" (bad thought more likely) beast...


Good point, there is room for improvement. Along these lines, it sounds like missiles are being treated as first class objects in the server code. Why is this? Do missiles do AOE damage to nearby targets (aside from defenders)? Perhaps I am not understanding the missile mechanics very well, but the impression I get from the game play is that they are targeted (unlike bombs). IF that is the case, why does the code need to consider collisions in 3-space? Missiles could then be reduced in class, reducing overhead of transferring objects in memory and in the calculations needed to process them -- the rest would be like a regular optimistic distributed simulation, just let the clients draw the collisions however they want.

Lors Dornick
Caldari
Posted - 2011.02.10 18:03:00 - [112]
 

Originally by: Herr Nerdstrom

Good point, there is room for improvement. Along these lines, it sounds like missiles are being treated as first class objects in the server code. Why is this? Do missiles do AOE damage to nearby targets (aside from defenders)? Perhaps I am not understanding the missile mechanics very well, but the impression I get from the game play is that they are targeted (unlike bombs). IF that is the case, why does the code need to consider collisions in 3-space? Missiles could then be reduced in class, reducing overhead of transferring objects in memory and in the calculations needed to process them -- the rest would be like a regular optimistic distributed simulation, just let the clients draw the collisions however they want.


Not that I've seen the actual code in question but I've seen and been bitten, badly, by similar problems.

When you have a codebase that is under continuous development, not just improving and bug fixing, but adding new features, you will try to reuse as much of the already written, tested and working code as possible.

So with a working in-space inventory system that handles any form of object flying around in space it makes sense to use that when adding new type, like drones and missiles, even of they might not need all the functionality needed for the new type of objects.

In must cases it will even make sense to add a little bit of code complexity to the generic system to handle all objects the same way.

And in must cases this is the kosher way of coding a complex and evolving system.

However, there are situations where this can come back and bite you, hard.

The problem lies is the fact that the original code might be used in a way that wasn't anticipated by the original coders.

This can create all kind of confusing errors in the original code to be discovered. Often creating the all to common exclamation from the coders:

"Wtf? How can _that_ module break now? It hasn't been touched in three years!"

The less common problem, but the one that keeps biting our heroes at CCP, is of course performance issues. Using the same code and inventory system for each single, hopefully group, of missiles as for a bloody titan, isn't very efficient.

There are several ways out of this, many of them seriously ugly and creating all kind of wierd bugs in unexpected areas.

I think that the best way is to take a careful look at the basic code and look for ways to create light weight objects that still use as much of the existing code as possible.

Which sounds that it's exactly what Team Gridlock is doing.

Ban Doga
Posted - 2011.02.11 08:11:00 - [113]
 

Edited by: Ban Doga on 11/02/2011 08:18:04
Edited by: Ban Doga on 11/02/2011 08:11:57
Originally by: Herr Nerdstrom
Originally by: Dr Sheepbringer
Originally by: Herr Nerdstrom
It's frightening to me how much obviously bad code still exists in the codebase...


It's better that it's bad code...otherwise one couldn't improve. Imagine if everything was running perfectly and we would still have these problems....

As for bad code/products etc. it's always like that. Thing change, priorities change and people just learn stuff on the go. At least when I look at my old stuff I instantly think "some drunken ******ed monkey had to do this...oh wait, it was me!" and I KNOW I was good.

I'm off to tackle a "bad code" (bad thought more likely) beast...


Good point, there is room for improvement. Along these lines, it sounds like missiles are being treated as first class objects in the server code. Why is this? Do missiles do AOE damage to nearby targets (aside from defenders)? Perhaps I am not understanding the missile mechanics very well, but the impression I get from the game play is that they are targeted (unlike bombs). IF that is the case, why does the code need to consider collisions in 3-space? Missiles could then be reduced in class, reducing overhead of transferring objects in memory and in the calculations needed to process them -- the rest would be like a regular optimistic distributed simulation, just let the clients draw the collisions however they want.



I guess this difference comes from the fact that missiles don't do damage instantly.
Like drones they need to traverse a distance, move across the grid, be restricted by a certain acceleration, turning rate and velocity and then inflict their damage when they reached a certain point.

Since this does take time, there must be something that keeps track of where the missile is, if it has reached its destination and where it is moving now, so that the server and all clients can agree on whether the missile did apply damage, is still capable of applying damage and so on.

There's also the point that missiles can be destroyed by Defenders, so you have one thing trying to produce a collision with another.

All this pretty much requires you to have an object you can use to hold all this information.
I don't know if you could get away with making it a "non-physical" object, but you still need to keep track of missiles one way or the other.


*EDIT*
I also totally love the underlying message of this blog.
Makes me laugh at all those "CCP already use the biggest, badded machines on Earth - Deal with the lag, that's just as far as our technology goes" and then you get a dev blog saying "Oh yeah, we just increased the performance of that particular, frequently used feature by 400% by looking at what our software actually does. We're sure there are some more things we can improve that way. Stay tuned!"

000Hunter000
Gallente
Missiles 'R' Us
Posted - 2011.02.11 12:13:00 - [114]
 

I have a Drake... But i don't fly it... Why fly a drake when u can fly a NH instead? Very Happy

Lors Dornick
Caldari
Posted - 2011.02.11 16:43:00 - [115]
 

Originally by: 000Hunter000
I have a Drake... But i don't fly it... Why fly a drake when u can fly a NH instead? Very Happy


Because the Drake(s) are cheaper to replace? ;)

AkJon Ferguson
JC Ferguson and Son Ltd
Ferguson Alliance
Posted - 2011.02.11 17:21:00 - [116]
 

Sounds good so far. Good job CCP. Carry on.

Lei Merdeau
Gallente
Posted - 2011.02.15 11:17:00 - [117]
 

Edited by: Lei Merdeau on 15/02/2011 21:45:07
Originally by: CCP Veritas
Originally by: Largo Coronet
Ship death degrades poorly under load


From what I've seen so far, I have a hunch that our ship death sequence does many database transactions, yielding execution to other threads (other tasks) each time.



Many transactions makes me think of which items drop?
a) this doesn't matter until the wreck is opened, surely delayed by a mega battle, more so if it lags the opener.
b) can most of this be predetermined when convenient -
lots of extra work but done deep in the background.
c) items that die only matter for the kill mail

Brixer
Dai Dai Hai
Posted - 2011.02.15 12:11:00 - [118]
 

Great work there.

While you're familier with a code involved and such, maybe you could spawn 10 Nyx'es with fighter bombers shooting a dev haxed <something>?
And make sure the 'read missiles in launcher' stats and other optimizations also apply to non-manned ships.

You could also make them turret based instead, but that would probably mess with their efficientness (SP?)

Btw, 1 question: Does drones/fighters/f-bombers cycle weapons server side, so that they fly around shooting stuff even when clients seems stuck in lag?


Tester128
Fremen Sietch
DarkSide.
Posted - 2011.02.15 18:18:00 - [119]
 

BTW, are the changes on the TQ already? if so, what is the result?

Theeedill
Posted - 2011.02.16 04:39:00 - [120]
 

Quote:
O(n) is usually a sign you're done, but in this case it's a sign of a major problem.
Simple solution, use bogo sort and see if it is the first index. Best case scenario O(1) :). Worst case scenario? (∞) That is just details.


Pages: 1 2 3 [4] 5

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