Pages: 1 2 [3] 4 5 6 :: one page |
|
Author |
Thread Statistics | Show CCP posts - 16 post(s) |
Mirei Jun
Einherjar Rising Cry Havoc.
|
Posted - 2010.12.11 22:55:00 -
[61]
Good work, with good explanation.
This is what I would expect from a "Dev Blog", and hope its used more exclusively for this kind of writing in the future.
|
Chruker
|
Posted - 2010.12.11 23:00:00 -
[62]
Originally by: Mirei Jun Good work, with good explanation.
This is what I would expect from a "Dev Blog", and hope its used more exclusively for this kind of writing in the future.
Unfortunately then the dumb people will come whining about the devblogs being too technical ----- http://games.chruker.dk/eve_online ----- Top wishes: - No daily downtime - Faster training on sisi
|
Dwindlehop
Stimulus Rote Kapelle
|
Posted - 2010.12.11 23:00:00 -
[63]
This is an excellent blog. Thanks!
|
Kei Nagase
Minmatar Applied Creations The Fendahlian Collective
|
Posted - 2010.12.12 00:12:00 -
[64]
I enjoyed this type of Balg Sigerceptors Skill Bonus: 5% reduction in Sig Radius per level |
Bob Niac
Gallente Fink Operations -Mostly Harmless-
|
Posted - 2010.12.12 00:20:00 -
[65]
Moar?
|
Siena Petrucis
Caldari German Kings Majesta Empire
|
Posted - 2010.12.12 00:31:00 -
[66]
Usally, pilots in a big fleet fight have all weapon effects turned off. So that means there are close to zero observers for missiles. It would be a waste to send all the updates about created and destroyes missiles to clients which do not render it. Does the server take that into account? If not, would it be a possible way for more optimization?
|
Khenar
|
Posted - 2010.12.12 00:45:00 -
[67]
Edited by: Khenar on 12/12/2010 00:45:59 May I ask how the single-frame cache works with respect to cloaked ships? It's been mentioned before during a Fanfest that when an observer in a grid receives a client update, that update has been stripped of all information regarding cloaked ships within that grid except the observer's own ship, so that the observer could not just then analyze the update and figure out where the other cloaked ships are.
During the previous system, this seems easy to handle given that the serialization operation happened individually for each observer. But now it seems that this operation only happens once per frame. How do you distinguish the updates for those cloaked observers? From the blog, it looks like you don't store the cloaked ship operations in that cache: "Most clients in the same bubble will received a serialised update containing the same information. Why serialize that information for every single client, when I have already determined the part they all have in common?"
This leads me to think that you are still performing individual serialization operations for each cloaked observer so that their client updates include the update information of their cloaked ship. How does this affect the performance of the node if a significant number of cloaked observers were introduced into a grid?
Edit -- Minor grammar error.
|
Zenon Mu
Advanced Assemblies and Sciences
|
Posted - 2010.12.12 00:52:00 -
[68]
awesome! I love reading about something getting fixed :) |
Infinion
Caldari Endless Destruction Imperial 0rder
|
Posted - 2010.12.12 00:52:00 -
[69]
Originally by: Salpun Thanks for the reply but you dodged the hard part of the question.
Originally by: Salpun Thanks for the reply. Great blog.
To some reinforced means that you are using the jita super node. Is this the case? ?
The jita super node is for Jita, if ccp removed it to reinforce a fleet fight for 24 hours between a few alliances imagine what kind of whiplash we would see on the markets
|
Karbon Dating
|
Posted - 2010.12.12 00:55:00 -
[70]
OMG. This had to be one of the best blogs ever. As a CS major, info like this really hits the spot. I know exactly what you are talking about.
I want MORE!
|
|
Zendoren
Aktaeon Industries
|
Posted - 2010.12.12 01:00:00 -
[71]
Originally by: CCP Masterplan
Originally by: Ebisu Kami Did you guys notice that, according to the graphs, the "Missiles - Inventory and Damage"-part of the load increased by roughly 12% from old to new?
I was waiting for someone to spot that! During the first test, the node was running close to 100%. Therefore the launcher modules weren't necessarily cycling at their full rate for every shot (the drakes were on the edge of experiencing module lag) Once the CPU was lowered, the launcher were able to cycle at their full rate all the time, and so were able to pump out more missiles during the 100 seconds. More missiles means more inventory operations, so absolute inventory load increases slightly. CCP Veritas' earlier blog explores some of these artifacts that occur at the edge of performance limits (and beyond)
With the code not currently taking advantage of multi-threading and/or multi-core processing, I'm assuming that when you reinforce the soler system (kick the other 3 soler system off the node) that you are doing it more for the memory than the processing power?
|
galphi
Gallente Furnulum pani nolo
|
Posted - 2010.12.12 01:36:00 -
[72]
You could also replace the physical object missiles with the 'fake' missile effects used by the fighter-bombers. It's not like anyone ever uses defender missiles anyway
|
FzZZy
Gallente Biceps Superstars
|
Posted - 2010.12.12 02:28:00 -
[73]
Thanks for a good devblog. I realy like when you at CCP share your small eureka moments. You mention that the increase in inventory and explosions was due to not maxing the preformence. Is it the same case why evolve increased with 1/2 (>10ms)?
The serialization of a ball that happen every tick, can't it be cached to the next tick whare the ones that is updated is reserialized? Or does the a ball update to often?
|
Chssmius
Helljumpers En Garde
|
Posted - 2010.12.12 02:57:00 -
[74]
Loved the blog and would appreciate more of this type.
Originally by: Black Dranzer Edited by: Black Dranzer on 11/12/2010 19:29:26
Originally by: Dev Blog 1: for every observer: # (ie a user's ship) 2: for every ball in the observer's bubble: 3: if ball was added/deleted to the bubble in the last tick: 4: gather up all the data required to tell the observer's client about this ball
Originally by: Dev Blog step 4 always produces the same data for a given ball, regardless of who the observer is
Originally by: CCP, paraphrased Let's perform redundant calculations inside a quadratic loop OH GOD WHY IS OUR CODE SO SLOW
[whywouldyoudothatpicture]
I have to agree. Aside from appearing to be more straight forward to type and think about I can't think of a reason to write the code that way(he says without looking at the real code).
Originally by: galphi You could also replace the physical object missiles with the 'fake' missile effects used by the fighter-bombers. It's not like anyone ever uses defender missiles anyway
As I understand it there are a problems with that. Chiefly, the fact that the fighter-bombers are now basically using guns instead of missiles.
Take The EvE Personality Test today! |
Neo160
|
Posted - 2010.12.12 04:06:00 -
[75]
question about missiles. Pre-Tyrannis (in Dominion i think), if a missile was flying slow enough, and far enough away, i could click the missile and actually track it with my camera (pretty cool), this ability was removed after Tyrannis released. was this a lag fighting decision, and if so, whats the CPU impact from being able to track missiles with the in-game camera? just curious
great blog, very informative, as I'm in school for this kinda stuff, it helps to be able to try to wrap my head around programing code and logic without worrying about deadlines or grades , DeVry goes through stuff really fast, and they only touch on the basics, if at all.
|
Galius Zed
|
Posted - 2010.12.12 04:23:00 -
[76]
Double-cheers and yay for pseudo code!
vOv
|
Aquana Abyss
|
Posted - 2010.12.12 05:31:00 -
[77]
Wouldn't a better solution just be to remove the drake from game?
In fact, remove missiles too.
|
Rok Qhang'Rawl
Joint Espionage and Defence Industries
|
Posted - 2010.12.12 06:22:00 -
[78]
Good Fight!
The interesting work of optimization is more about figuring out where to make changes first than the details of the solution, but you made both parts rich and meaningful here. Nice work. Thanks for sharing.
|
|
CCP Explorer
|
Posted - 2010.12.12 09:13:00 -
[79]
Originally by: Jason Edwards Just be honest... the server code is all in pseudo code and thats why its so bad?
Pseudo code is the only thing the hamsters understand.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
|
CCP Explorer
|
Posted - 2010.12.12 09:15:00 -
[80]
Originally by: Motriek Since a copy of the serialized data is now being sent to all clients, do we (clients/observers) still see personalized transversal figures on our overview? Transversal (radians/sec) differs for every observer.
They are calculated by the client based on the movement vectors.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
|
|
CCP Explorer
|
Posted - 2010.12.12 09:23:00 -
[81]
Originally by: Daneel Trevize
Originally by: Black Dranzer WHY WOULD YOU DO THAT?
Because premature optimization is evil, so first you get it to work, and then you have other things to do
Indeed. First you write readable code that works. Then, based on measurements, you optimise the parts that need to be optimised.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
|
CCP Explorer
|
Posted - 2010.12.12 09:29:00 -
[82]
Originally by: Siena Petrucis Usally, pilots in a big fleet fight have all weapon effects turned off. So that means there are close to zero observers for missiles. It would be a waste to send all the updates about created and destroyes missiles to clients which do not render it. Does the server take that into account? If not, would it be a possible way for more optimization?
All the clients in the bubble need to have the state of the simulation because they process it in sync with the server. There are also other reasons for the client to know about missiles than to render them, such as the interaction of missiles with AoE weapons.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
|
CCP Explorer
|
Posted - 2010.12.12 09:35:00 -
[83]
Originally by: galphi You could also replace the physical object missiles with the 'fake' missile effects used by the fighter-bombers. It's not like anyone ever uses defender missiles anyway
You have to remember that missiles interact with AoE weapons. We have given this significant thought but it's not trivial to implement.
You will note that even if the fighter bomber graphical effect is missile-like and even if the fighter bomber damage is calculated missile-style then you can't use AoE weapons to defend against their missiles.
Erlendur S. Thorsteinsson Software Director EVE Online, CCP Games |
|
Lan Staz
|
Posted - 2010.12.12 10:14:00 -
[84]
Originally by: Zendoren With the code not currently taking advantage of multi-threading and/or multi-core processing, I'm assuming that when you reinforce the soler system (kick the other 3 soler system off the node) that you are doing it more for the memory than the processing power?
I believe (hope a dev will correct me if I'm wrong here) that the "reinforced" status is applied to the node, not the blade; one of the 4 nodes on one of the blades now handles just one solar system.
In the general, non-reinforced, case you have many solar systems per node, and 4 nodes per blade (one for each CPU).
|
Elsa Nietzsche
|
Posted - 2010.12.12 12:10:00 -
[85]
one of if not the sexiest blog ever. thanks for this great one. keep up the great work!
|
Gnulpie
Minmatar Miner Tech
|
Posted - 2010.12.12 12:27:00 -
[86]
Edited by: Gnulpie on 12/12/2010 12:35:43 Good speedup, this is pretty impressive.
But why does the machoNet::SinglecastByClientID take that long? The Destiny::SendToClients without the SingleCast is only 7.4 ms! So the overhead is not in sorting out the data any more but in sending it. Is it possible to delegate this to a (highly) parallel worker thread which is doing all the work in the background (on other nodes maybe?) or do you get in trouble then with the non-blocking paradigm of Destiny?
Edit: Do you lookup always SessionID's from ClientID's in each SingleCast? That would be a huge waste in this case as they are almost always constant. |
Typhado3
Minmatar
|
Posted - 2010.12.12 13:08:00 -
[87]
very good to hear about this stuff being done. Also nice to see explanations and graphs.... however that first graph in part 2 the label on the y axis is seconds?? thought it would be cpu ------------------------------ God is an afk cloaker |
Karak Terrel
As Far As The eYe can see Chained Reactions
|
Posted - 2010.12.12 13:52:00 -
[88]
Saw the algorithm and was like "Oh you can just read it. They must use ruby now" then i realized that is was pseudocode to make language X readable. -- please consider to visit our w-space system, cake will be served immediately. |
Altaree
The Graduates Morsus Mihi
|
Posted - 2010.12.12 14:08:00 -
[89]
This type of dev blog is one of the reasons I joined and still play eve. As a developer myself I love to read this sort of thing! --Altaree
|
|
CCP Masterplan
C C P Alliance
|
Posted - 2010.12.12 14:15:00 -
[90]
Time for another wall-of-text response session :)
Originally by: Daneel Trevize Edited by: Daneel Trevize on 11/12/2010 18:20:50 Going to repeat myself from part 1, but, re: Destiny being 1Hz
Can you ever lock something that mwd+cloaks within the same second/tick that you ctrl+click to lock them with, say, a preactivated point/other mods?
That probably just depends on how the dice roll regarding network packet ordering and tasklet scheduling. Chances are: probably not, but I can't say for certain.
Originally by: Carniflex Say, I have weapon system that with 3 damage mods has RoF of 4.2 seconds and with 4 damage mods RoF of 3.95 seconds...
Module activations/deactivations are handled by a different system (Dogma). Dogma doesn't have a discrete tick-rate like Destiny, it simply runs as often as it can and processes as many effects as it can in a reasonable amount of time. Dogma effects might have consequences, such as adding a missile into space. During its next tick Destiny will then pick up that a missile has been added, and perform the necessary additions/deletions step to inform the clients. Even though missile can only be added to space on a 1Hz tick, the actual module cycling will still correctly use sub-second precision. (Until things get laggy, and then cycling might get delayed)
Quote: On why wasn't this done in the first place?
This is a two-part answer: Firstly, as a start-up with minimal budget, simply getting to launch is priority number one. Sure, you could spend a lot of time projecting where your hotspots might be if you are very successful, but by then you will have ran out of time and money, and have no releasable product.
Secondly, when it is laid out in several lines of psuedocode, it becomes very easy to see what is wrong. However those few lines represent many hundres of lines of real code, spread across multiple modules, that have evolved over time to do many things. It was quite a lot of work to understand the low-level elements, and then to see how they piece together, finally forming the full picture. It is entirely possible that initially it was written in a different way altogether. Piece-by-piece it was changed over time, eventually arriving at where it was before I began looking into it.
Originally by: Hylax Ciai Edited by: Hylax Ciai on 11/12/2010 22:33:37 So, the main reason for missiles being items and not just effects, is that their damage is not applied instantly?
Also, seeing that you put a nested loop in there i just couldn't think of anything else than "Man. Today is so loopy." Unfortunately i've seen just a few episodes of the series..
Correct. Time-of-flight is what makes missiles an interestingly different mechanic compared to turrets. Also, I see what you did there. Nice find -- Team Gridlock: Herding electronic cats since 2010 |
|
|
|
|
|
Pages: 1 2 [3] 4 5 6 :: one page |
First page | Previous page | Next page | Last page |