Pages: 1 2 3 4 5 :: [one page] |
|
Author |
Thread Statistics | Show CCP posts - 13 post(s) |
|
CCP Adida
C C P C C P Alliance
|
Posted - 2011.02.07 19:02:00 -
[1]
CCP Veritas talks about upcoming changes to Missiles in his New Dev Blog.
Adida Community Rep CCP Hf, EVE Online
|
|
Crucis Cassiopeiae
Amarr PORSCHE AG
|
Posted - 2011.02.07 19:10:00 -
[2]
1st :) "Everybody's at war with different things... I'm at war with my own heart sometimes" |
Isan'na
|
Posted - 2011.02.07 19:11:00 -
[3]
Very nice, hoping there's room for even more refactoring, but it's good to see things getting done. Thank you!
Oh, and IBC?
|
Xyfu
Minmatar Applied Mechanics
|
Posted - 2011.02.07 19:18:00 -
[4]
INB4 Chribba. Awww yeeee. _____ ^ That is a sig line. It should be there without me having to put one in. |
Orion Teller
|
Posted - 2011.02.07 19:24:00 -
[5]
sets FTW!
what can't these things do? Aside from effeciently add and randomly access objects.
|
Matrix Massim
|
Posted - 2011.02.07 19:29:00 -
[6]
Moar missiles :D
|
Erim Solfara
Amarr inFluX.
|
Posted - 2011.02.07 19:30:00 -
[7]
w00t! I actually followed the bit about python data types, thanks to my RUBBISH computer labs module I had to do earlier this year : P
Oh, and INB4Chribba
|
noldevin
|
Posted - 2011.02.07 19:30:00 -
[8]
Edited by: noldevin on 07/02/2011 19:30:43 I laughed at the reference to smartbombs working better than defenders for stopping missiles.
|
Arklan1
Fleet Coordination Commission
|
Posted - 2011.02.07 19:33:00 -
[9]
always enjoy blogs, and preformance improving ones the more so. yay!
|
Kazuo Ishiguro
House of Marbles
|
Posted - 2011.02.07 19:35:00 -
[10]
If missiles are going to be this much cheaper to spam, I'd say it's time to look at making defenders useful again. Given them some sort of super RoF, perhaps, and allow them to lock on to any nearby missle rather than not just those aimed at your own ship? --- 34.4:1 mineral compression |
|
MollyPuss
|
Posted - 2011.02.07 19:38:00 -
[11]
great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
|
Vuk Lau
|
Posted - 2011.02.07 19:45:00 -
[12]
Awesome****ingwork by CCP Veritas and his team. They all deserve the raise.
|
Jim Luc
Caldari Rule of Five Split Infinity.
|
Posted - 2011.02.07 19:50:00 -
[13]
Originally by: Kazuo Ishiguro If missiles are going to be this much cheaper to spam, I'd say it's time to look at making defenders useful again. Given them some sort of super RoF, perhaps, and allow them to lock on to any nearby missle rather than not just those aimed at your own ship?
The idea here is to eliminate the problem, not simply replace the cpu waste & load saved with defender cpu load. Eliminate defender missiles all together. There aren't laser defenders, or railgun defenders, why should there be missile defenders?
Has anyone ever given thought to rewriting the way missiles currently work? Ahem:
Instead of being a physical object to be tracked in space, give missiles a percent chance of hitting the target and a timer. When fired, they start with 100% accuracy rate. Then, the ship's transversal velocity and forward velocity decreases that percentage by a margin, and then if the target ship has defender missiles, that decreases the percentage. If the targeted ship only has 3 defenders that can fire at a given interval, and there are 4 missiles, and 2 defenders take out 2 of the incoming missiles, then the graphics can just represent 2 defenders seeking 2 of the missiles, and one missile flying past the ship, and one missiles connecting with the targeted ship.
Damage is calculated based on the final hit of each missile when the timer is reduced to 0 for that missile. No need to bother with adding it to the space physics. I'm sure the graphics would look way cooler if faked anyways. Idunno, perhaps this is method is harder on the cpu than the current method.
|
noldevin
|
Posted - 2011.02.07 19:51:00 -
[14]
Originally by: MollyPuss great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
I would love to see drones worked on. I'd bet on it that they are even more expensive than pre-optimized missiles. Plus I'd like to see them actually start following orders for a change >_>
|
SheriffFruitfly
Caldari
|
Posted - 2011.02.07 19:52:00 -
[15]
Pro work dude.
You may also want to consider tackling the issue from the other end: There's a certain overhead cost for missiles over guns just due to the plain fact that launchers shoot *things*.
Determine what the pure overhead cost of "just shooting a thing" as opposed to lazzors is - without any fluff like explosion velocity and damage and range and crap. Once determined, you've basically approximated what the MAXIMUM POSSIBLE perf improvement can be - and combined with what it sounds like you're already doing, what % of maximprovement you've already achieved. __________________________________________________________ Please resize your signature to the maximum file size of 24000 bytes. Zymurgist |
Bartholomeus Crane
Gallente The Crane Family
|
Posted - 2011.02.07 19:53:00 -
[16]
Well done. Looking good. I hope everything comes through QA.
One thing though. It's methodological note, perhaps. Not methodology note. Methodology is the study or description of methods. But you have used only one method, not several. At least, you only describe one method. Not study or describe a bunch of methods. And now you wish to make a note on that method, or describe it a bit. So it could be "Note on the method used". Or, as this could be a note of importance to those interested in methodology: "A methodological note". But a "methodology note" is a note on methodology, i.e., the study and description of methods, like, "Methodology is often used when plain Method would be more suited".
Or you could have a section called: "Methodology" wherein you compare or study the method you used to/with other methods you could have used, or were used, i.e., again, a section of interest to those with interest in methodology, as in, the study of methods. If however you just wanted to describe the method you used, as I think you did, a better title of the section would be: "Method" or "Method Used", or "Description of the method".
See?
Either way. I like the method you used. It makes methodological sense. And I'm glad that it is producing clear hooks where clear advancements can be made. It looks though as if missiles will always use up substantially more resources. Is this about as far as you can go? Inappropriate signature removed. Zymurgist |
Invictra Atreides
Caldari
|
Posted - 2011.02.07 20:00:00 -
[17]
Nice work there! Enjoyed reading the blog.
≡√≡ ≡√≡ |
Worzel Bummage
|
Posted - 2011.02.07 20:19:00 -
[18]
Good work Dev nerds <3
|
Aineko Macx
|
Posted - 2011.02.07 20:21:00 -
[19]
Ah yes, back to basics with data structures ;) One wonders how many more sins can be discovered in the legacy code... ________________________ CCP: Where fixing bugs is a luxury, not an obligation. |
Skanthra
Minmatar Bath and Body Works Bed Bath and Beyond
|
Posted - 2011.02.07 20:22:00 -
[20]
Good read.
Quote:
CCP Veritas > Prepare for Megahelldeath! 21:19:10 Combat - CCP Veritas hits you, doing 45117.1 damage.
|
|
Axemaster
|
Posted - 2011.02.07 20:23:00 -
[21]
Wouldn't it be best to replace defenders with point defense guns? They could be fully automatic, have zero optimal range and some specified falloff range. Make them a capital class module or something...
More on topic, it is nice to see Eve being optimized. It's been a long time coming, and I hope it becomes a serious policy of CCP to always have a few teams working on this stuff.
|
|
CCP Explorer
|
Posted - 2011.02.07 20:24:00 -
[22]
Originally by: Aineko Macx Ah yes, back to basics with data structures ;) One wonders how many more sins can be discovered in the legacy code...
I daresay that there are a few...
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
PTang
|
Posted - 2011.02.07 20:28:00 -
[23]
Edited by: PTang on 07/02/2011 20:30:10 Thanks for all the work guys!
but... I have one question... now that you've gotten to the repeats per second to such a level, why not...
Double missile damage. lower rate of fire. keep dps the same
i mean, sure it would have some impact on gameplay, making missles an alpha damage weapon, but why not? That would get them down to the same cpu cost as gun fire?
or am I thinking of this the wrong way?
|
Jason Edwards
Internet Tough Guy Spreadsheets Online
|
Posted - 2011.02.07 20:46:00 -
[24]
Originally by: CCP Explorer
Originally by: Aineko Macx Ah yes, back to basics with data structures ;) One wonders how many more sins can be discovered in the legacy code...
I daresay that there are a few...
ûadjective 1. not many but more than one:
Not many you say? ------------------------ To make a megathron from scratch, you must first invent the eve universe.
|
Sliana Non'Grata
|
Posted - 2011.02.07 20:49:00 -
[25]
Or you could eliminate that overhead alltogether and just create a 'really slow moving particle effect' that simulates missle movement, then you could just calculate the damage on the server and have the client render all the rest. |
Milla Jovobitch
|
Posted - 2011.02.07 20:50:00 -
[26]
Thanks for the theory bits!
Milla appreciates.
|
Queen Boxxy
Autistic Sharks Test Alliance Please Ignore
|
Posted - 2011.02.07 20:53:00 -
[27]
Now they have fixed the gremlins in missiles. We can now stop using them and find the gremlins in the next buggy thing.
I think we are going to tracking disruptors. ---------------------------- ok so hi. my name is boxxy. people know me as queen boxxy. |
Gnulpie
Minmatar Miner Tech
|
Posted - 2011.02.07 20:54:00 -
[28]
Awesome work! Really great.
Isn't it amazing how much of a difference the simple change from one basic data structure to some other basic data structure can be?
|
Harold Hammerstein
Caldari KINGS OF EDEN Sev3rance
|
Posted - 2011.02.07 20:57:00 -
[29]
Hot Pickle! Hot Pickle I say! Way to go CCP :)
WTB: Mid-course update/correct for 'em, and a cool camera view so I can watch my missiles impact!!!
|
|
CCP Veritas
|
Posted - 2011.02.07 20:57:00 -
[30]
Originally by: MollyPuss great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
There's little doubt in my mind that there are some grave sins in the client as it stands. For now, however, Gridlock is focused on getting the servers in better shape to handle things. I do seem to recall another team who was going to be looking into this sort of business, but I can't recall whom...
|
|
|
Axemaster
|
Posted - 2011.02.07 20:58:00 -
[31]
Edited by: Axemaster on 07/02/2011 21:03:33
To be 100% honest, I am starting to wonder why CCP doesn't just commission a company to make a chip physically optimized to process these events (guns and missiles). I have a friend who works in the lab with me who designed a signal processor that can integrate pulses and find signal peaks in 50 nanoseconds per input event. It can do that because it's a custom chip.
Imagine doing that with these silly missiles. You could probably get the whole process down to less than 100ns in total, and remove weapon based lag forever.
In other words, you could probably make the computational process 1000 to 10000 times faster.
Hell, you could probably put the entire Dogma system onto a custom chip once you finalized the code reasonably well. Then the only worry would be the networking issues.
|
Taedrin
Gallente The Green Cross Controlled Chaos
|
Posted - 2011.02.07 21:05:00 -
[32]
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? i.e. missiles would no longer be the Caldari's primary weapon system and instead used as a tactical weapon similar to how bombs are used?
Of course, this would involve finding a replacement for the Caldari primary weapon system and would likely involve re-balancing railguns (which suck atm, partly because nobody snipes anymore) ----------
Originally by: Dr Fighter "how do you know when youve had a repro accident"
Theres modules missing and morphite in your mineral pile.
|
OblivionDawn
|
Posted - 2011.02.07 21:10:00 -
[33]
Here's a design related idea that probably sounds stupid, but hey.
Instead of making the missile a physics object to simulate flight time/velocity/ect, why not do something like this:
Make missiles a particle effect. When a launcher fires a missile, it slowly goes out a few meters from the launching ship, and hovers near it for a certain amount of time (to simulate flight time), and then shoot towards the target almost instantly at the end of the timer (through use of mwd, or whatever EVE lore can come up with.) The time that missile hovers near launching ship could be considered a "targeting period" or something during which the missile in question is locking on to its target with its advanced guidance system (more technobabble reserved for whatever EVE lore can come up with). Defender missiles (should they be included in this concept), could shoot toward the attacking missile while they float near the ship. Smartbombs could disrupt the targeting system of the attacking missile, making them miss or something. Max distance for the missile can be represented by a fuse timer or something, (i.e. the missiles explode in midflight if the enemy is too far away, even after the missile targets it). And for a ship to outrun a missile, this could be represented by the targetting system failing to get a lock, in which case the missiles just explode/disintegrate/whatever.
Presumably no physics ball required, unless I overlooked something.
|
|
CCP Veritas
|
Posted - 2011.02.07 21:10:00 -
[34]
Originally by: Bartholomeus Crane Method words
It was really just a trap so I could make sure that you, Bartholomeus Crane, read the entire thing before replying.
Originally by: Bartholomeus Crane It looks though as if missiles will always use up substantially more resources. Is this about as far as you can go?
It's as far as I'm willing to go with specifically missiles at this point, so practically speaking the answer's yes. I'll be monitoring load from high load areas after these changes go in to see if it makes objective sense to continue micro-optimizing missiles specifically or if some other system sticks its neck out as the Next Big Problem.
If missile processing remains high on the load profile, we won't have too much choice but to change them to use fake physics of some kind as many other posters here are suggesting. I've been trying to avoid that switch-over 'cause I think it's neat to be able to outrun the buggers or smartbomb them; losing those abilities would make the universe seem less "real" to me. That and rebalancing an entire weapons system from the ground up is a ton of work.
|
|
Cergorach
Amarr The Helix Foundation
|
Posted - 2011.02.07 21:15:00 -
[35]
Originally by: Axemaster To be 100% honest, I am starting to wonder why CCP doesn't just commission a company to make a chip physically optimized to process these events (guns and missiles). I have a friend who works in the lab with me who designed a signal processor that can integrate pulses and find signal peaks in 50 nanoseconds per input event. It can do that because it's a custom chip.
Imagine doing that with these silly missiles. You could probably get the whole process down to less than 100ns in total, and remove weapon based lag forever.
Besides the custom made hardware (which the hamsters generally don't like) I suspect that it is very expensive, not only that, I suspect that the whole codebase needs to change. There are programmable processors out there that would fit in a standard CPU socket, those are not cheap either but I suspect cheaper then custom chips. Another option is using Nvidia Qaudro boards with Cuda. But the enormous task of rewriting the code is huge and probably the most expensive thing CCP has done.
Good work Dev team CCP, very impressive improvements with relatively simple (sounding) solutions. I'm not very well at home in Python, you can shoot me with some missiles if I say something really stupid. But how difficult is it to move the calculations to a separate treads or cores? I understand that the that wouldn't speed up the individual missiles, but generally speaking folks don't shoot a single missile and often many missiles are in the air at one time. Would the syncing of the data be a problem that the version of Phyton you currently use doesn't provide for?
How is the server currently handling missile weapon groups? As separate missiles or a group of missiles? If single missiles, why not as a group? Same trajectory, same target, and has all the same characteristics. The only problem I could see is the use of defender missiles, maybe you could add a stat 'number of missiles', if hit by a defender you subtract the number of defender missiles in the defender group, from the other missile group. If the group hits you multiply the damage by the number of missiles. Or would this generate other unwanted behavior?
|
Trebor Daehdoow
|
Posted - 2011.02.07 21:19:00 -
[36]
Excellent work. Indeed, in dimensio veritas!
(Apologies to my grammar school latin teacher, who is no doubt spinning in his grave)
Confessions of a Noob Starship Politician The most expensive free trip to Iceland you'll ever win!
|
LHA Tarawa
|
Posted - 2011.02.07 22:01:00 -
[37]
I am a computer programmer, and work on a high performance, large data application.
I read these blogs and am blown away by the excellent information in them. Seriously, I think CCP could scim through these blogs and come up with the bases of an AWESOME text book on how to create high performance systems.
Do: aviod doing the same work twice. (Examples, if you already have a value here, copy it there rather than recalculating it)
Do: Allocate the smallest memory foot print possible. Alloc and dealloc are expensive, not to mention creating memory fragmentation that will later have to be cleaned up.
Do: Use link list based data srtructures if you will be inserting and deleting from the middle of the list.
Do NOT: use array based data structures if will will be inserting and deleting from the middle of the list.
Do NOT: use link list based data structures if you will just be walking the data structure.
One of the systems we wrote, we actually never dealloc objects once we create them, until the system is shut down. We have a linked list stack we push them to when we no longer need them, then pop them back off when we need another. Only when the queue is empty do we alloc more objects. WAY faster to update a couple pointers than to alloc, dealloc, or garbage collect.
|
LHA Tarawa
|
Posted - 2011.02.07 22:11:00 -
[38]
Originally by: Cergorach But how difficult is it to move the calculations to a separate treads or cores? I understand that the that wouldn't speed up the individual missiles, but generally speaking folks don't shoot a single missile and often many missiles are in the air at one time. Would the syncing of the data be a problem that the version of Phyton you currently use doesn't provide for?
I think the key point of this article is that missles are "objects is space" just like all the ships, wrecks, gates, bases, POSes, etc, etc. Basically, this can't be moved to its own system because EVERYTHING that is not objects in space already has been moved to other systems.
They used to treat missles like full ships. Since most ship attributes do not apply to missiles (resists, shield, armor, cap, recharge, etc, etc), they were allocating a much larger chunk of memory than needed. So, now they create a much smaller object that just has the set of attributes needed for missiles. AND instead of recalculating the max velocity, flight time, etc, for each missile fired, they just copy this info from the launcher, since it was already set there when you loaded the ammo.
And, instead of getting the list of objects as an array based data set, now they are getting it as a data structure that is based on a linked list so that it is much faster to add and remove objects form the middle of the set.
|
LHA Tarawa
|
Posted - 2011.02.07 22:15:00 -
[39]
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?
Then they will also need to attack drones.
While they are at it, how about some kind of mechanic that punishes large fleets... Make it so that 100 can beat 200 and 200 can beat 400. Otherwise, every battle will become 1000 vs 1000, and no matter how many improvements they make, the increasing number of ships will still overwhelm the ability of the systems to handle them.
Better to attack the slow performing code before attacking the game design. Game design is an UGLY rabbit hole to go down.
|
|
CCP Veritas
|
Posted - 2011.02.07 22:18:00 -
[40]
Originally by: LHA Tarawa One of the systems we wrote, we actually never dealloc objects once we create them, until the system is shut down. We have a linked list stack we push them to when we no longer need them, then pop them back off when we need another. Only when the queue is empty do we alloc more objects. WAY faster to update a couple pointers than to alloc, dealloc, or garbage collect.
This goes a step further in the console world (where I started in the industry). With the addition of fixed memory, alloc is bad neighbor to have. Many systems work under a strict memory budget and allocate their objects from a fixed buffer at initialization time, never to add or remove from that list. This has the same benefits as what you're describing, but with the added benefit of cache coherency if you're iterating through all of the same objects.
You just, ya know, have to deal with running out. If you've ever seen something vanish from existence while playing a console game, you likely know what the root cause was now~
|
|
|
Manfred Rickenbocker
Pan Galactic Gargle Blasters Important Internet Spaceship League
|
Posted - 2011.02.07 22:19:00 -
[41]
Originally by: Axemaster Edited by: Axemaster on 07/02/2011 21:03:33 To be 100% honest, I am starting to wonder why CCP doesn't just commission a company to make a chip physically optimized to process these events (guns and missiles). I have a friend who works in the lab with me who designed a signal processor that can integrate pulses and find signal peaks in 50 nanoseconds per input event. It can do that because it's a custom chip.
Ideally, yes, perfectly, no. Your friend's chip is doing signal processing which scans a given data stream provided to it. DSP chips are very specific and typically operate on real time data. What CCP has is a database issue. As you will notice from the blog, the time lag comes from getting and setting data values for objects as well as scanning lists, both of which require fetches from database memory. Fetches from memory is incredibly more time consuming than reading from a buffer in a chip (not to mention they are different kinds of memory with different distances from the chip etc). Besides, peaks can be an incredibly easy thing to find in digital signals.
Originally by: Cergorach
Good work Dev team CCP, very impressive improvements with relatively simple (sounding) solutions. I'm not very well at home in Python, you can shoot me with some missiles if I say something really stupid. But how difficult is it to move the calculations to a separate treads or cores? I understand that the that wouldn't speed up the individual missiles, but generally speaking folks don't shoot a single missile and often many missiles are in the air at one time. Would the syncing of the data be a problem that the version of Phyton you currently use doesn't provide for?
If you do this, you can run into blocking conditions. You want to make sure that individual memory addresses aren't being read as they are written etc. Plus, the thread that they are writing is better off sequential as they have it: you want to make sure that all entities and graphics are complete before updating. Sending them through various threads wouldn't always help. Also thread overhead can be a bit of a ***** and they would probably have to recode from scratch a good portion of their code. That is conjecture of course, but having a database update take only .08ms though to begin with, that's impressive in and of itself!
Personally, I, too, would love to see updates on how the drone mechanics are being furthered. Hopefully if they can hop those up on caffeine like they did with missiles, they might be able to squeeze some decent and responsive AI on board as well. Well behaved drones = best drones. ------------------------ Peace through superior firepower: a guiding principle for uncertain times. |
Xailia
Unsteady Corporation
|
Posted - 2011.02.07 22:19:00 -
[42]
Yay! Tech blog! \o/
If missiles were moved to a fake physics simulation, could outrunning still be possible if some outrunning probability calculation was made? And assume the target ship kept its current velocity and vector, or checking those values a few times during the missile flight.
"The sky above the port was the color of a television, tuned to a dead channel."
|
|
CCP Veritas
|
Posted - 2011.02.07 22:20:00 -
[43]
Originally by: LHA Tarawa And, instead of getting the list of objects as an array based data set, now they are getting it as a data structure that is based on a linked list so that it is much faster to add and remove objects form the middle of the set.
It's a minor point but I'd be remiss to let it stand. Python "set" is a hash table, not a linked-list.
|
|
LHA Tarawa
|
Posted - 2011.02.07 22:28:00 -
[44]
Originally by: CCP Veritas
It's a minor point but I'd be remiss to let it stand. Python "set" is a hash table, not a linked-list.
Oh hash table... Array of arraies. Great if each hash value has few members. If each value starts to have lots of members, then you are right back to the array based problem. But avoids the ugly alloc and dealloc of a true linked list data sructure.
|
Louis deGuerre
Gallente Malevolence. Imperial 0rder
|
Posted - 2011.02.07 22:32:00 -
[45]
Excellent blog and lol @ defenders
I shall continue to group my missiles religiously. ----- Malevolence. is recruiting. Dive into the world of 0.0 !
|
MailDeadDrop
The Collective
|
Posted - 2011.02.07 22:33:00 -
[46]
Speaking from the "there's more than one way to skin a cat" vein... You could solve, or at least greatly lessen the impact of, missile hamster killing by simply buffing guns. Just sayin'.
MDD |
Debrie
|
Posted - 2011.02.07 22:36:00 -
[47]
tend to agree with a few posters
had you taken this time and energy to FIX DEFENDERS and to project there protection to everyone your fleeted with
there would be less "drake blobs" spamming missles lagging the servers to death :p
|
Batolemaeus
Caldari Free-Space-Ranger Morsus Mihi
|
Posted - 2011.02.07 22:40:00 -
[48]
Originally by: MollyPuss great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
Do you have brackets on? You should disable both drone models and drone brackets. The bottleneck here is the UI code that is horribly inefficient combined with an extreme amount of elements being rendered.
Be glad you're not flying a carrier or mothership. Launching / Scooping drones into a dronebay with ~200+ drones makes your client drop a few frames for every drone being moved..
|
River Oemhii
|
Posted - 2011.02.07 22:59:00 -
[49]
Originally by: Cergorach Good work Dev team CCP, very impressive improvements with relatively simple (sounding) solutions. I'm not very well at home in Python, you can shoot me with some missiles if I say something really stupid. But how difficult is it to move the calculations to a separate treads or cores? I understand that the that wouldn't speed up the individual missiles, but generally speaking folks don't shoot a single missile and often many missiles are in the air at one time. Would the syncing of the data be a problem that the version of Phyton you currently use doesn't provide for?
TL;DR: For Eve to move in to the Multithreaded World would require CCP to build a new Stackless Python Virtual Machine that does not use the GIL, no simple task. There may be better uses of staff time in the short-term?
I can give some insight on Python, threading, stackless python, and while we'll be stuck with the current system for a bit.
Some background, Python, is an interpreted language, meaning its code is not 'compiled' to machine assembler/byte code but read and dynamically executed by a Virtual Machine. In this case the most common interpretor is CPython.
Python's implementation requires using something called the GIL, Global Interpreter Lock. This prevents Python code from executing multiple threads at the same time. The reason is because some of CPython's methods and systems are not 'Thread Safe' meaning that if executed across multiple cores at once you may run in to issues such as race conditions that will kill your program.
At one point the authors of CPython did attempt to remove the GIL and setup context Locks on the methods that required it, this actually led to a decrease in performance and the changes were rolled back.
Here's a good presentation on the GIL: http://python.mirocommunity.org/video/1101/mindblowing-python-gil
Eve however, doesn't strictly use Python. It uses another implementation called Stackless Python. Stackless Python adds an important feature, mainly Green Threads. These are extremely lightweight threads that the program manages, versus the OS in most other cases.
Eve uses these extensively for object handling (I believe, fuzzy here, Dev?) and transactions. These Green Threads allow 1,000's, or 10,000's of threads to run at once. Each green thread (tasklet) is given a slice of cpu time to execute then yield. Returning back to the manager to let the next thread to run.
This is a Coroutine paradigm meaning that the entire state of the function stack is stored, so the function, even in the middle can be stopped, and yield back allowing the program to come back later and pick up execution where it left off.
Ok, so what does this have to with Eve and multicore/multithreading? Well there are a large number of Python implementations that do not use the GIL, for .Net/Mono: IronPython, Boo, JavaVM: Jython, but there are no alternate implementation of Stackless Python.
Unfortunately, one of the main useful features (Green Threads) of Stackless Python also makes it rather hard to create other Virtual Machines for.
For instance, .Net only supports limited Coroutines using Enumerables and the Yield keyword. There's no way in the framework to natively store the call/function stack and local values to restore the thread later. That means that IronPython/Boo would have to create System.Thread objects which are expensive and managed by the OS. The alternative is to re-write the entire tasklet/green thread system in the new platform: C/C++/.Net/Mono/Java etc.
So, for Eve to move in to the Multithreaded World would require CCP to build a new Stackless Python Virtual Machine that does not use the GIL, no simple task. |
w1ndstrike
Legio Geminatus Galactic Syndicate
|
Posted - 2011.02.07 23:01:00 -
[50]
Originally by: PTang Edited by: PTang on 07/02/2011 20:30:10 Thanks for all the work guys!
but... I have one question... now that you've gotten to the repeats per second to such a level, why not...
Double missile damage. lower rate of fire. keep dps the same
i mean, sure it would have some impact on gameplay, making missles an alpha damage weapon, but why not? That would get them down to the same cpu cost as gun fire?
or am I thinking of this the wrong way?
the big problem with this is the same reason the rocket nerf happened in the first place. missiles are unqiue in that they are balanced not by "miss chance" but by Rof/Speed/Damage/Damageappllied
if you change any one of the 4 factors globally you have to rebalance the other 3 to compensate, which in some cases just doesn't work (as we saw with what happened to rockets when torps got rebalanced)
its a nice theoretical idea to reduce load, but the impelentation of it would be more of a nightmare than the optimization route
all that said, Good Job Veritas!
|
|
Ender Flagrante
Gallente The Scope
|
Posted - 2011.02.08 00:58:00 -
[51]
Originally by: PTang Edited by: PTang on 07/02/2011 20:30:10 Thanks for all the work guys!
but... I have one question... now that you've gotten to the repeats per second to such a level, why not...
Double missile damage. lower rate of fire. keep dps the same
i mean, sure it would have some impact on gameplay, making missles an alpha damage weapon, but why not? That would get them down to the same cpu cost as gun fire?
or am I thinking of this the wrong way?
The problem with this solution is that missiles are already an alpha damage weapon. A Drake with kinetic missiles already has alpha damage and range on par with a 720mm Artillery Hurricane using Tremor, but with much higher DPS. Doubling alpha would give Drakes an alpha strike capability much greater than that of 720mm Artillery Hurricane using EMP/PP/Fusion with 3x the range.
|
Bartholomeus Crane
Gallente The Crane Family
|
Posted - 2011.02.08 01:01:00 -
[52]
Originally by: CCP Veritas
Originally by: Bartholomeus Crane Method words
It was really just a trap so I could make sure that you, Bartholomeus Crane, read the entire thing before replying.
Originally by: Bartholomeus Crane It looks though as if missiles will always use up substantially more resources. Is this about as far as you can go?
But, but, you know I read very last word of you blogs Veritas. You know I do!
Originally by: CCP Veritas It's as far as I'm willing to go with specifically missiles at this point, so practically speaking the answer's yes. I'll be monitoring load from high load areas after these changes go in to see if it makes objective sense to continue micro-optimizing missiles specifically or if some other system sticks its neck out as the Next Big Problem.
If missile processing remains high on the load profile, we won't have too much choice but to change them to use fake physics of some kind as many other posters here are suggesting. I've been trying to avoid that switch-over 'cause I think it's neat to be able to outrun the buggers or smartbomb them; losing those abilities would make the universe seem less "real" to me. That and rebalancing an entire weapons system from the ground up is a ton of work.
Non Vincit Nisi Veritas! Inappropriate signature removed. Zymurgist |
Sidrat Flush
Caldari Eve Industrial Corp
|
Posted - 2011.02.08 01:32:00 -
[53]
So defenders work but not as well as smart bombs versus missiles.
Turrets are kinder on the server and have a much higher dps.
Does eve really need missiles and defenders? I don't want to discourage the work done in order to optimise missiles themselves, however it seems it would be far easier to rip missiles out of the game altogether and stick with lasers/hybrids/projectiles/drones - four races four weapon types. Although Gallente pilots that use hybrids may baulk at this suggestion there comes a time when everyone should train logistic skills and add on drone support.
Oh dear, recursion inevitable - drones are producing more lag than ever.
Maybe all I want is my missile skill points reimbursed and not have to wait a maximum of 15 seconds ish - to receive the damage report.
View The Eve Industrial Organiser Site
|
arambe fuddled
The Commonwealth Federation
|
Posted - 2011.02.08 01:43:00 -
[54]
As a computer science student I find these blogs to be a great read. I love the detail, keep it up.
|
Suncats Shadow
Caldari PuttieTat Lab Rats
|
Posted - 2011.02.08 01:43:00 -
[55]
Quote: Methodology note: For these numbers, I had 200 ships shooting on a devhaxed Drake. Rate of fire was hacked to be high enough to
Sounds great, since I am a missile type.
Would also like to know when I could get one of the 'devhaxed' Drakes for my mission running and wormhole exploring?
King of the puffy tail
|
Lili Lu
|
Posted - 2011.02.08 02:04:00 -
[56]
Smarties as the anti-missile mod is stupid. It doesn't work well and has drawbacks that no other anti-weapon system does. If you could get some point defense gun/launcher introduced to the game it would be better. And, I'm sure its rate of success against any missile in range whether targetted at your own ship or not could be set at something that wouldn't negate missiles as a viable weapon system. Hell, we can do much more now with tracking disrupters and there is no issue of turrets not being viable.
Also, "Fly safe, my Drake-obsessed friends" Really? Thing's been imbalanced since it entered the game. Just took a while for pvp people, who didn't think in terms of ridiculous passive shield regen for pve, to realize it and for some other game changes to bring it to the fore. You guys know and have stated it's not good to have one BC to rule them all. This change to missiles while welcome if it does reduce lag and other game performance problems does nothing to address the use imbalance with drakes. Still waiting for your promised drake nerf to hit the test server. |
Thagomizer
|
Posted - 2011.02.08 02:31:00 -
[57]
Very interesting blog, thank you CCP Veritas.
I had one question about this (emphasis mine):
Quote: Since in-launcher missiles don't really have an identity, it comes down to querying "those missiles in that launcher", which will remain the same between launches, so we'll only do the calculations once and use them until you switch ammo types.
Would this cause any problems if those attributes change in some way while a ship is in space, but the ammo isn't switched? For example, adding/removing a ballistic control while at a POS/carrier maintenance bay? What about boosters whose penalties might impact something like explosion velocity/radius? I might be reading what you wrote a bit literally, but I was just curious.
|
Internet Knight
The Kobayashi Maru
|
Posted - 2011.02.08 02:40:00 -
[58]
Originally by: CCP Veritas Whenever we do a query to our database, we get the results back in a data structure derived from Python's "list" data structure, which implementation-side is an array of pointers to the elements' values. This is ideal for nearly all cases, since we get back an ordered list of rows from the database that we don't mess with at all.
Inventories are a completely different use case however. We get back that initial query from the database, but then we mess with it heavily and don't particularly care about order. Adding to a list is cheap, you just tack onto the end (and grow if need be), but search and removal are horrendous. Since list doesn't have indexing nor sorting, a search for inclusion is exhaustively linear. Removing an item from a list involves doing a linear search of the list for the item in question followed by copying the remaining entries in the array one slot up. O(n) is usually a sign you're done, but in this case it's a sign of a major problem.
Just curious... the inventory viewing system on the client side (oh look at my items in my hangar! oh look at my items in my cargo hold! etc), is that affected by the inventory system about which you're talking? Because, honestly, I feel quite awful with the thousands of different types of items in some of my hangars... ---
|
PC l0adletter
|
Posted - 2011.02.08 03:15:00 -
[59]
e-hugs
keep it up
|
VonKolroth
Gallente Anarchist's Anonymous
|
Posted - 2011.02.08 04:17:00 -
[60]
I read this Dev Blog while drunk, and lo and behold, all became clear to me. Technical blogs only alleviate what is a completely intoxicated guess of 2-4% of those of us who play eve in-person. About 23% (Also a drunken estimate) of us would be happy enough for the the banned portion if you just erased Caldari from the game. ~
A man with a Domi analyzes every problem in the terms of drones. |
|
Altaree
The Graduates Morsus Mihi
|
Posted - 2011.02.08 04:33:00 -
[61]
Thanks for the great devblog! I love reading this type of thing. --Altaree
|
Venkul Mul
Gallente
|
Posted - 2011.02.08 07:26:00 -
[62]
Originally by: CCP Veritas
If missile processing remains high on the load profile, we won't have too much choice but to change them to use fake physics of some kind as many other posters here are suggesting. I've been trying to avoid that switch-over 'cause I think it's neat to be able to outrun the buggers or smartbomb them; losing those abilities would make the universe seem less "real" to me. That and rebalancing an entire weapons system from the ground up is a ton of work.
That would require to redo the counters to missiles too.
Currently the real counter are the smartbombs and ship movement, with defenders way behind.
Unless I am mistaken this kind of change would make smartbomb and defenders useless and reduce the impact of ship movement, making missiles the only weapon system without a direct counter.
|
Dr Sheepbringer
Gallente
|
Posted - 2011.02.08 07:33:00 -
[63]
Just a though (leaning towards stupid). As the missiles and rockets are different within them self could be logical to apply gun-mechanics into some of the rockets? What I'm getting at is:
Rockets, short range and basically stupid. Basically meaning they don't need to calculate that much stuff. One could say they are point blank weapons. So could they be changed to "gun-mechanics" under the hood?
Missiles, long range and more or less should be the ones that will chase you. This equals to loads of computing time due to them flying around the space.
ok, now you can take out the technobabble bibles and whack me with them.
Originally by: CCP Shadow Dr. Sheepbringer -- It's not that kind of horn.
|
Venkul Mul
Gallente
|
Posted - 2011.02.08 07:35:00 -
[64]
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?
Then they will also need to attack drones.
....
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.
Drones aren't an alpha strike weapon. 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.
|
Venkul Mul
Gallente
|
Posted - 2011.02.08 07:44:00 -
[65]
Originally by: Debrie Edited by: Debrie on 07/02/2011 22:37:28 tend to agree with a few posters
had you taken this time and energy to FIX DEFENDERS and to project there protection to everyone your fleeted with
there would be less "drake blobs" spamming missles lagging the servers to death in the 1st place :p
I have tested this more than a year ago, having a corpmate firing missiles to a can near me.
Defender do intercept missiles fired to a target near you. The trouble is that you must aim them against a ship firing missiles and you need to have then firing when there is a missile in flight. That make them of little piratical use.
|
Sverre Haakonson
Gallente
|
Posted - 2011.02.08 07:47:00 -
[66]
Edited by: Sverre Haakonson on 08/02/2011 07:48:22 All this work is great but the progress for the cpu time seems to be linear, but the numbers of active pilots is growing faster. It is exciting to see whether CCP is able to win this race.
|
Thenoran
Caldari Tranquility Industries
|
Posted - 2011.02.08 08:07:00 -
[67]
Edited by: Thenoran on 08/02/2011 08:09:19
Would these changes allow missiles to be fired to match their true rate of fire? Currently on a Tengu with its insane rate of fire and firing launchers 1 by 1, the missiles tend to group up in the same intervals of launching them. When you compare that to my Navy Omen with 3 heat sinks firing so fast it's like Freelancer, missiles are a bit dull. And ofcourse, launcher models on the ship like turret models, a big blob coming from the center of your ship is so 2003.
P.S. Missiles themselves, their models and exhaust FX's, could those get a small update? Currently their exhaust FX/light is so huge and the missile is just a 3 faced cone it's a bit dull to look at. Heck, I'd make a few missile models in 3dsmax if they'd get used. ------------------------ Low-sec is like sailing along the coast of Somalia...
|
Dr Sheepbringer
Gallente
|
Posted - 2011.02.08 08:21:00 -
[68]
Also one can't really ROF nerf drones because then you come up with a situation where you get one alpha from the drones and then they get shot down. Then in reality they become missiles! So no. With missiles it's a bit different because one can't really "shoot them down" in the same sense.
Originally by: CCP Shadow Dr. Sheepbringer -- It's not that kind of horn.
|
Jacob Holland
Gallente Weyland-Vulcan Industries
|
Posted - 2011.02.08 08:32:00 -
[69]
I seem to remember, a while back, a small issue which seems like it might effect one of the suggested changes...
"Those missiles in that launcher there" OK, for the first missile launched there are plenty of missiles in the launcher (unless it's a bomb launcher) but at the point where the last missile in the launcher is launched then "those missiles in that launcher there" might well throw back nothing (because there are no missiles in that launcher). Assuming that that doesn't break things in a major way it might still mean that the last missile in a launcher does nothing, effectively reducing the launcher's ammo capacity by one and increasing its reload time by its ROF attribute.
--
Originally by: cordy
Respect to IAC .Your one of the few people who truly deserve to own and live in the space you are in.
|
Illwill Bill
Noxious Intention
|
Posted - 2011.02.08 09:27:00 -
[70]
Originally by: Jacob Holland I seem to remember, a while back, a small issue which seems like it might effect one of the suggested changes...
"Those missiles in that launcher there" OK, for the first missile launched there are plenty of missiles in the launcher (unless it's a bomb launcher) but at the point where the last missile in the launcher is launched then "those missiles in that launcher there" might well throw back nothing (because there are no missiles in that launcher). Assuming that that doesn't break things in a major way it might still mean that the last missile in a launcher does nothing, effectively reducing the launcher's ammo capacity by one and increasing its reload time by its ROF attribute.
Yes. I believe that copying the data to a separate array post-reload, and then use that copy for calculations would put too much stress on the server.
Originally by: CCP Zymurgist Revenge is a dish best served with auto-cannons.
|
|
Space Wanderer
|
Posted - 2011.02.08 09:33:00 -
[71]
"Since in-launcher missiles don't really have an identity, it comes down to querying "those missiles in that launcher", which will remain the same between launches, so we'll only do the calculations once and use them until you switch ammo types."
I think you realize this may create a (small) problem. If I understand correctly, this means that if you advance a missile-related skill, it won't be applied to your launchers until you change ammo (or maybe just until you reload the launcher). While I don't think this to be a big problem, you might want to explore if it may have unwanted consequences, both from the bug/exploit and "people-whining" perspectives.
|
Cresalle
|
Posted - 2011.02.08 09:41:00 -
[72]
First of all, good job Veritas. Nice to see someone thinking like a programmer instead of a scripter.
Originally by: CCP Veritas This goes a step further in the console world (where I started in the industry).
That explains it. LOL! Honestly, I think everyone should be required to dev for a Sony console as a part of their education. You're not a real programmer until you've made (intellectual) love to the hardware of some cheap plastic piece of crap. It's like trying to build a skysc****r in a boxcar. Magic powers required, lol.
Originally by: Jim Luc Eliminate defender missiles all together. There aren't laser defenders, or railgun defenders, why should there be missile defenders?
They're called tracking disruptors. Defenders need to be fixed, not discarded. That kind of thinking is both lazy and counterproductive. If we don't push the envelope then it doesn't get pushed. (Or worse, it gets pushed by the competition.)
Originally by: MollyPuss great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
Turn off drone rendering if you're having an FPS problem and see if that helps, but I have also noticed that drones tend to cause an inordinant amount of grid lag. I agree that it would be a good idea to take a look at drone handling in the same vein of thought as was applied to missiles.
Originally by: CCP Veritas If missile processing remains high on the load profile, we won't have too much choice but to change them to use fake physics of some kind as many other posters here are suggesting.
Don't do it, yo. Keep missiles alive. I know it may sound obvious sacreligious but you may even want to consider designing a custom python container type(s) for dogma objects. Although optimizing beyond that could potentially become problematic because whenever you get something working right over-optimizied some damned idiot with the paychecks wise and noble content producer comes along and introduces a minor change that breaks the whole thing, lol. I really want to reinforce your feeling here that it would be wrong to fake the physics on this. It's running from the problem rather than fixing it (#2 sin of programming, with #1 being failure to document) and it would take a little more of the life out of EVE.
Originally by: Thagomizer Would this cause any problems if those attributes change in some way while a ship is in space, but the ammo isn't switched?
Think he was oversimplifying and just referring to good computation practice (compute on change, not on query) but heuristics indicates that this is a really good question to ask, lol.
Originally by: Thenoran Edited by: Thenoran on 08/02/2011 08:09:19
Would these changes allow missiles to be fired to match their true rate of fire? Currently on a Tengu with its insane rate of fire and firing launchers 1 by 1, the missiles tend to group up in the same intervals of launching them.
The EVE universe runs at 1Hz. (1 frame-per-second) When you ungroup your launchers and try to create a stream you notice that missiles that launch on the same timer tick create a 'grouped' missile. This is actually very intelligent in terms of server load because having one object to calculate is 50% of the CPU time required for 2 objects doing the exact same thing. (Since the missiles fire on the same timer tick they would be identical.)
Originally by: Jacob Holland "Those missiles in that launcher there"
That kind of inventory is stored as an 'ID + Quantity'. In this case the quantity in the launcher is not important, just the ID. So 5x Bane Rage would have the same stats as 0x Bane Rage. You'll notice that if you exhaust the charges in a module and then r-click it the optin is 'Reload (name of associtated charge type)'. Even though the quantity is zero the charge-type ID number is the same.
|
Venkul Mul
Gallente
|
Posted - 2011.02.08 10:42:00 -
[73]
Originally by: Space Wanderer
I think you realize this may create a (small) problem. If I understand correctly, this means that if you advance a missile-related skill, it won't be applied to your launchers until you change ammo (or maybe just until you reload the launcher). While I don't think this to be a big problem, you might want to explore if it may have unwanted consequences, both from the bug/exploit and "people-whining" perspectives.
I am sure that the problem you depicted existed in the past. Ship stats were updated with your skills only when you were in station, fitting it at an array/carrier ecc. or when boarding it (but the latter sometime had problems).
An example was scooping drones and then using them. The drone stats were those basic for the drones, without your skills (even if you were capable of controlling them at normal range).
It was changed, I think, with one of the Tyrannis patches.
I think that the patch in question resolved most of the issues with applying skills "on the fly", so now it should work right.
Worth a check fro QA for sure.
|
|
CCP Veritas
|
Posted - 2011.02.08 11:31:00 -
[74]
Originally by: Thagomizer Would this cause any problems if those attributes change in some way while a ship is in space, but the ammo isn't switched? For example, adding/removing a ballistic control while at a POS/carrier maintenance bay? What about boosters whose penalties might impact something like explosion velocity/radius? I might be reading what you wrote a bit literally, but I was just curious.
Missiles in launcher are full Dogma items, and as such will receive proper updates when their dependent effects change. Should all work as you'd hope~
|
|
|
CCP Veritas
|
Posted - 2011.02.08 11:35:00 -
[75]
Originally by: Internet Knight Just curious... the inventory viewing system on the client side (oh look at my items in my hangar! oh look at my items in my cargo hold! etc), is that affected by the inventory system about which you're talking? Because, honestly, I feel quite awful with the thousands of different types of items in some of my hangars...
Yup, you naughty packrat you. Thankfully, things in hangers don't live in the same data structures as things in space, so there is no effect on in-space operations. All the same, a little spring cleaning never hurt~
|
|
|
CCP Veritas
|
Posted - 2011.02.08 11:38:00 -
[76]
Originally by: Jacob Holland I seem to remember, a while back, a small issue which seems like it might effect one of the suggested changes...
"Those missiles in that launcher there" OK, for the first missile launched there are plenty of missiles in the launcher (unless it's a bomb launcher) but at the point where the last missile in the launcher is launched then "those missiles in that launcher there" might well throw back nothing (because there are no missiles in that launcher). Assuming that that doesn't break things in a major way it might still mean that the last missile in a launcher does nothing, effectively reducing the launcher's ammo capacity by one and increasing its reload time by its ROF attribute.
You'll be pleased to know that the attribute copy from stored missiles happens before the missiles are removed from the launcher. The only way we could be copying from an empty launcher is if there were no missiles there in the first place, in which case how the hell are you firing a missile?
|
|
|
CCP Veritas
|
Posted - 2011.02.08 11:43:00 -
[77]
Originally by: Venkul Mul Worth a check fro QA for sure.
My 'fro did quite a lot of QA on this
|
|
Lev Aeris
b.b.k Fidelas Constans
|
Posted - 2011.02.08 11:47:00 -
[78]
Originally by: CCP Veritas That and rebalancing an entire weapons system from the ground up is a ton of work.
Speaking of hybrid weapons..... ;)
|
Tyslas
Firebird Squadron Terra-Incognita
|
Posted - 2011.02.08 12:11:00 -
[79]
Yay! Dev blogs! The technical ones are the best ones.
I'm guessing that drones will be the Next Big Problem, hopefully if they get a rework we'll be able to rep ourselves with logi drones :D.
Originally by: Lev Aeris
Originally by: CCP Veritas That and rebalancing an entire weapons system from the ground up is a ton of work.
Speaking of hybrid weapons..... ;)
+1
|
Venkul Mul
Gallente
|
Posted - 2011.02.08 12:49:00 -
[80]
Originally by: CCP Veritas The only way we could be copying from an empty launcher is if there were no missiles there in the first place, in which case how the hell are you firing a missile?
Black magic, obviously1
|
|
Kaldirov
|
Posted - 2011.02.08 12:52:00 -
[81]
Originally by: Lev Aeris
Originally by: CCP Veritas That and rebalancing an entire weapons system from the ground up is a ton of work.
Speaking of hybrid weapons..... ;)
+1
|
Tristan Gale
|
Posted - 2011.02.08 13:35:00 -
[82]
Originally by: MollyPuss great work me old fruit :)Quick question? When I'm in a fleet and all the drones are out like a nest of drunken ants, my FPS drops to a stutter. Is this a sign I need to get a more expensive computer or do we need to make drones thinner too?
I tested this yesterday while we had a SC fleet shooting outposts and TCU's. My client was down to 18 fps while the fb/fighter blob was shooting, and instantly went back up to 60fps when drones was pulled back in. This was with drone models and brackets off. Missiles effects / turret effects didn't change the fps at all. |
Ariane VoxDei
|
Posted - 2011.02.08 15:03:00 -
[83]
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.
|
Herr Nerdstrom
Caldari Havoc Violence and Chaos BricK sQuAD.
|
Posted - 2011.02.08 15:14:00 -
[84]
It's frightening to me how much obviously bad code still exists in the codebase...
|
E man Industries
|
Posted - 2011.02.08 15:17:00 -
[85]
WoW, not tech smart and found this very easy to read and understand.
So glad this is being worked on and you took the time to explain it. I really like the direction CCP is taking with the feed back.
Look forward to more.
|
Zendoren
Gallente Aktaeon Industries
|
Posted - 2011.02.08 15:37:00 -
[86]
Will these changes allow us to, say... increase the rate of fire on rockets if we wanted to? Personally I would love to see a true barrage of missiles come from a rocket boat.
|
Matalino
|
Posted - 2011.02.08 15:38:00 -
[87]
Edited by: Matalino on 08/02/2011 15:43:20
Originally by: Ariane VoxDei 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.
Perhaps CCP Veritas can confirm or deny this, but my understanding is that the solar system inventory is not maintained in the database. The solar system inventory is maintained on the node. If the node dies those items are lost. I base this on the observation that other items in the solar system inventory (specific jet cans and their contents) do not survive a node reboot. Originally by: Ariane VoxDei 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.
I have asked for formulas before and the response that I have gotten is that CCP does not publish formulas, at most they describe mechanics. All the equations that we have were reverse engineered. I doubt that CCP will make an exception for missiles, but I would also be happy if they did.
|
Mamba Lev
Masturbating Hand Social Club
|
Posted - 2011.02.08 17:01:00 -
[88]
http://www.eveonline.com/ingameboard.asp?a=topic&threadID=1464716
Related to this dev blog which gave me the idea, please support it.
|
Largo Coronet
GoonWaffe Goonswarm Federation
|
Posted - 2011.02.08 17:13:00 -
[89]
An interesting look at how much effort you've put into reducing the effect of missile use on the server resources. Too bad our alliance decided to just bypass the whole mess by swapping to projectile-based alpha-strike fleets.
This brings up something that may be tangential to what you are doing now. Alphafleets have proven to be amazingly useful in the game as it presently stands. So useful, that we're killing ships faster than the system can keep up. A player will find themselves targeted, shot and blown to bits before the server can even register it, leaving people in a sort of limbo as it tries to catch up and tell them :welp:. And target callers are finding that the ship they just assigned primary to has already popped like a soap bubble even if it still shows up on the overview. So while the lag isn't keeping us from fighting, it's still proving to be a big pain in the tuchus for both sides of a fight.
I'm not a programmer, but reading the article I got the gut instinct that these issues are related because they both involve a great deal of inventory management in Domain. Domain would have to keep track of what blew up, creating a wreck object and stuffing it with whatever modules it picked to survive. Perhaps there are similar issues of excessive calls and list use in that part of the code as there were in missiles. Worst pilot in Goonfleet.
There's a herd of killer rabbits coming this way, and we need your help! |
Daneel Trevize
Black Viper Nomads
|
Posted - 2011.02.08 17:17:00 -
[90]
Originally by: River Oemhii mindblowing-python-gil vid
Wow Python's broken with multicore even being present. CCP might want to doublecheck they can't just get the OS to ignore the other cores to reduce the bouncing if it's happening on their new shiny stuff. Also I found it slightly odd the speaker didn't go into why the remove-the-GIL camp came to their conclusion, if they already knew of this and expect to sidestep it with their alternative. |
|
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]
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 eve invisions we 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
|
|
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
|
|
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]
I'm sorry, but why not just half missle rof across the board, wouldn't that half the load in normal situations?
|
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 The Maverick Navy IT Alliance
|
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. ____ <t20> i want to be in a manager potition at Hooters <SaraDawn> Garthagk, do you have it up ? <Garthagk> I can get it up anytime. |
Dr Sheepbringer
Gallente
|
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...
Originally by: CCP Shadow Dr. Sheepbringer -- It's not that kind of horn.
|
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... ------------------------ Low-sec is like sailing along the coast of Somalia...
|
|
|
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
|
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]
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.
|
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.
(...) 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.
(...) 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
|
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?
Originally by: CCP Shadow Dr. Sheepbringer -- It's not that kind of horn.
|
|
Herr Nerdstrom
Caldari Havoc Violence and Chaos BricK sQuAD.
|
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.
// Lors |
Ban Doga
|
Posted - 2011.02.11 08:11:00 -
[113]
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.
|
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? ________________________________________________
|
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?
Because the Drake(s) are cheaper to replace? ;)
// Lors |
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]
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 (just in case this helps)
|
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
|
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.
|
|
Hakaru Ishiwara
Minmatar Republic Military School
|
Posted - 2011.02.16 14:35:00 -
[121]
'Grats on the efficiency gain.
Now all you have to do is Ferox-ize the Drake and change it over to use a Hybrid weapons system!
|
Thomas Coe
|
Posted - 2011.02.16 19:37:00 -
[122]
:)
|
DefCon Blade
|
Posted - 2011.02.18 17:38:00 -
[123]
i don't get it, why cannot missile be simulated in client eviroment only?, all the server needs to know is who is fireing missiles and at who? so that information can be passed on to other clients.. the server generates the dmg dealt based on the stats used, to further help packet reduction and data flow. the client also does the same thing only needing to check exchange conclusion
this way, rather than creating obejects and all that complicated stuff metioned in the blog, the animators can finally make missiles more cool, it would be nice to see rattlesnakes fire salvo's from its launcher pods. . . :-)
|
Shurikane
|
Posted - 2011.02.23 12:11:00 -
[124]
I'm reading this and going "Of course, a set is an elegant solution to that problem!" Damn the programmer nerd in me. :D
Originally by: DefCon Blade i don't get it, why cannot missile be simulated in client eviroment only?
Because this would open the game up to potential exploits, I believe.
Suppose I move much of the simulation structure to the client, letting it call the shots on the server to tell when the stuff has occurred. There exists the possibility that I could inject something malicious to cheat around things like the cooldown limits or the ammo count. If the game wants to protect itself against such cheats... it would have to do the required queries it does now anyway.
The other reason the server has to keep track of all missiles and ships together is for some more special situations such as defender missiles firing off, a target moving out of range during the missile's flight time, and a smartbomb or bomb going off (which, I think, can damage/destroy in-flight missiles but my memory's a little hazy on that.) Hence, it all boils down to the server being in control because it has the knowledge of all space objects so that it can calculate reactions correctly in a centralized manner rather than every client computing a reaction in its own way and getting mixed results out of it due to a who-is-right-who-is-wrong scenario (such as the dreaded situation in laggy FPS games where you ceaselessly shoot someone but he doesn't take any damage.) So, all the client does is yell "Missile bays one through four, FIRE!" from time to time, and the server responds a while later with "It's a miss" or "Patrol boat sunk!"
|
Vlad Texi
|
Posted - 2011.02.24 04:18:00 -
[125]
I have no words! *tears of joy*
EX-cellent work. You should be paid well for that deep of an assignment. Come on guys, give it up! This is some excellent strides towards a smoother gameplay. Those of us who are/were developers, should have some deep appreciation for the work laid out here. Seriously. I have no "but it could use this" type comments, it's just professional work and a great step forward.
|
Markie Mark
|
Posted - 2011.02.24 17:39:00 -
[126]
Why is it, if missiles are so smart that when I have 2 or more missiles heading towards my target, if the first missile hits and destroys its target, the rest fly off into space.
Those are damned exensive T2 missiles and they are supposed to be smart. They have a maximum flight time so why dont they automatically start heading towards my next target.
Missile spamming pilots are already penalized with long flight times (70 - 100km is a good few seconds before the first shot lands on target). This could be made better if those in flight without a target automatically re-acquired a new lock.
Just a suggestion.
|
Nina Mercedez
|
Posted - 2011.02.25 13:26:00 -
[127]
The hamster jokes never get old.
|
Shurikane
|
Posted - 2011.02.25 19:47:00 -
[128]
Originally by: Markie Mark Those are damned exensive T2 missiles and they are supposed to be smart. They have a maximum flight time so why dont they automatically start heading towards my next target.
Because they don't know who you wanna shoot at next.
|
|
CCP Explorer
|
Posted - 2011.03.22 16:26:00 -
[129]
The followup has now been published in Missiles Hate My Hamsters û The Followup.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
Duvida
Gallente The Scope
|
Posted - 2011.03.22 17:19:00 -
[130]
I have noticed that Jita seemed easier to get through lately, but didn't realize what had been done. So are we looking at 2000+ scammers, er, I mean players in there now? Learning... |
|
|
|
|
Pages: 1 2 3 4 5 :: [one page] |