These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

In-Game Events and Gatherings

 
  • Topic is locked indefinitely.
 

Eve-Bet Revenant Event Feedback

First post First post
Author
Arthur Aihaken
CODE.d
#81 - 2014-09-16 02:16:50 UTC
CCP Explorer wrote:
There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.

This sounds very interesting. Are you able to expand on this at all?

I am currently away, traveling through time and will be returning last week.

Bienator II
madmen of the skies
#82 - 2014-09-16 02:49:12 UTC  |  Edited by: Bienator II
CCP Explorer wrote:
There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.

what is the O(n^2) nature of drones? why would a single drone have to iterate through all other objects do do something? I mean this should NEVER be the case. Even the simpelst form of spatial subdivision (like a basic quad tree) would bring this down to logarithmical complexity. Even n-body simulations use tricks to not have exponential complexity at runtime.

how to fix eve: 1) remove ECM 2) rename dampeners to ECM 3) add new anti-drone ewar for caldari 4) give offgrid boosters ongrid combat value

Vincent Athena
Photosynth
Just let it happen
#83 - 2014-09-16 04:23:35 UTC
Bienator II wrote:
CCP Explorer wrote:
There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.

what is the O(n^2) nature of drones? why would a single drone have to iterate through all other objects do do something? I mean this should NEVER be the case. Even the simpelst form of spatial subdivision (like a basic quad tree) would bring this down to logarithmical complexity. Even n-body simulations use tricks to not have exponential complexity at runtime.

The number of people using drones grows with n. The number of people that need to be informed about what the drones are doing grows with n. Result: n^2.

Know a Frozen fan? Check this out

Frozen fanfiction

Magic Crisp
Amarrian Micro Devices
#84 - 2014-09-16 07:21:43 UTC
CCP Explorer wrote:
Hard population cap is not the answer; that will become a tactic where the cap will be used to lock people out and avoid a fight.

In terms of answers:

  1. More servers :) Just this week we were preparing RFPs for new hardware, to replace TQ.
  2. Team Gridlock is continuing on rewriting Dogma and on the Brain-in-a-Box project. There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.
  3. The last part is more tricky and the one we would appreciate feedback: How can we spread large fights over multiple systems in such a manner that it's fun for everyone involved? Some sort of a simultaneous mega-objective across multiple systems but only when there are many involved so you could still have single-system fights depending on man-power (we don't want to require people to always have 3000+ pilot fleets). This happened in B-R since there were fights in the staging systems and Titans and fleets were intercepted en route to B-R.


Uhm, multithreading the code? :)
Street rumour says you doing singlethreaded processing in the age of multicore architectures. Of course, this is easier said than done, i pretty much know, and this would require shittons of effort and would have the pitfall of even more "side effects". :)
CCP Explorer
C C P
C C P Alliance
#85 - 2014-09-16 10:01:29 UTC
Magic Crisp wrote:
CCP Explorer wrote:
Hard population cap is not the answer; that will become a tactic where the cap will be used to lock people out and avoid a fight.

In terms of answers:

  1. More servers :) Just this week we were preparing RFPs for new hardware, to replace TQ.
  2. Team Gridlock is continuing on rewriting Dogma and on the Brain-in-a-Box project. There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.
  3. The last part is more tricky and the one we would appreciate feedback: How can we spread large fights over multiple systems in such a manner that it's fun for everyone involved? Some sort of a simultaneous mega-objective across multiple systems but only when there are many involved so you could still have single-system fights depending on man-power (we don't want to require people to always have 3000+ pilot fleets). This happened in B-R since there were fights in the staging systems and Titans and fleets were intercepted en route to B-R.
Uhm, multithreading the code? :) Street rumour says you doing singlethreaded processing in the age of multicore architectures. Of course, this is easier said than done, i pretty much know, and this would require shittons of effort and would have the pitfall of even more "side effects". :)
There would be benefit from that, yes, but it's not the silver bullet one might think. For example, even if we split up solarsystems onto multiple nodes then big fights very often happen on a single grid, where everyone needs to be informed about everyone else's actions and everyone can potentially affect everyone else. Secondly, even if we perform all damage calculations on the tick we must process them in the order submitted. If you clicked the button first to activate the guns then we must process that in order.

Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer

Sentient Blade
Crisis Atmosphere
Coalition of the Unfortunate
#86 - 2014-09-16 11:23:25 UTC
CCP Explorer wrote:
If you clicked the button first to activate the guns then we must process that in order.


In a world where latency matters, I don't see this being as big of a problem if everything is done on the tick. This would lead to some interesting cases such as a double-knockout but I think the EVE community would be happy with such a setup.

I would imagine this could very much become like a map-reduce problem, where on the tick, multiple threads work on the processing of a given number of ships / elements, and then they are all collated at the end and then the main process goes to work, tots up the amount of damage to each ship, and applies it in 1 chunk.
Valterra Craven
#87 - 2014-09-16 14:10:16 UTC  |  Edited by: Valterra Craven
CCP Explorer wrote:
Locke DieDrake wrote:
Sales Alt negrodamus wrote:
Explorer, just out of curiosity, how big are the technical hurdles to hosting a single eve system on multiple physical devices (read: cluster)?
The game code was made before multi-core/MPP systems became the standard hosting paradigm. Meaning, in order for EVE to run on a single solar system on multiple pieces of hardware (IE: clustering) they would have to rewrite a great deal of the base code. Something they have been utterly unwilling to do. See POS code, corp code, basically every major issue with the game... it starts right here.
You are very conveniently ignoring Crime Watch and Industry that we very recently revamped. Before that we replaced the network layer, moved the database to 64 bits, implemented Time Dilation, moved load from the simulation nodes into speclized nodes such as the Character Service nodes, worked on various improvements to the rendering performance. In addition to general development of new and improved features. Even if we haven't yet embarked on fixing the areas you are most concerned with then you can't use that to generalize that we are "utterly unwilling" to improve the game when it entails rewriting significant parts of the base code.



All of the examples you used, where any of them entire code structure rewrites? If not, his point still stands. Yes, you guys have made a lot of changes (improvements is frankly subjective here), but it seems to me a vast majority of the changes you guys have undertaken have either been fixes or new features. Industry is a prime example, 80-90% of that patch was completely new things that didn't exist before, either in mechanics, GUI, or "balance" changes (aka number tweaking that doesn't involve code). How was any of that an entire platform rewrite? In fact, given a lot of your examples, it seems like you guys want to literally try everything else BEFORE you rewrite old crappy code.
CCP Explorer
C C P
C C P Alliance
#88 - 2014-09-16 14:58:48 UTC
Valterra Craven wrote:
CCP Explorer wrote:
Locke DieDrake wrote:
Sales Alt negrodamus wrote:
Explorer, just out of curiosity, how big are the technical hurdles to hosting a single eve system on multiple physical devices (read: cluster)?
The game code was made before multi-core/MPP systems became the standard hosting paradigm. Meaning, in order for EVE to run on a single solar system on multiple pieces of hardware (IE: clustering) they would have to rewrite a great deal of the base code. Something they have been utterly unwilling to do. See POS code, corp code, basically every major issue with the game... it starts right here.
You are very conveniently ignoring Crime Watch and Industry that we very recently revamped. Before that we replaced the network layer, moved the database to 64 bits, implemented Time Dilation, moved load from the simulation nodes into speclized nodes such as the Character Service nodes, worked on various improvements to the rendering performance. In addition to general development of new and improved features. Even if we haven't yet embarked on fixing the areas you are most concerned with then you can't use that to generalize that we are "utterly unwilling" to improve the game when it entails rewriting significant parts of the base code.
All of the examples you used, where any of them entire code structure rewrites? If not, his point still stands. Yes, you guys have made a lot of changes (improvements is frankly subjective here), but it seems to me a vast majority of the changes you guys have undertaken have either been fixes or new features. Industry is a prime example, 80-90% of that patch was completely new things that didn't exist before, either in mechanics, GUI, or "balance" changes (aka number tweaking that doesn't involve code). How was any of that an entire platform rewrite? In fact, given a lot of your examples, it seems like you guys want to literally try everything else BEFORE you rewrite old crappy code.
Nobody in their right mind goes and rewrites an entire platform at one time. One does this incrementally and all of these examples were entire rewrites of the systems in question. I forgot one of the rewrites in my list since we never talked about it publicly, when we removed the custom Python importer in the summer of 2013. It was needed in the early days of EVE but not anymore.

Erlendur S. Thorsteinsson | Senior Development Director | EVE Online // CCP Games | @CCP_Explorer

Valterra Craven
#89 - 2014-09-16 15:24:15 UTC
CCP Explorer wrote:
Nobody in their right mind goes and rewrites an entire platform at one time.


Well that is definitely true. Other publishers either give up, or release an entirely new game (Lineage -> Linage II)
Bienator II
madmen of the skies
#90 - 2014-09-16 15:44:20 UTC  |  Edited by: Bienator II
Vincent Athena wrote:
Bienator II wrote:
CCP Explorer wrote:
There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.

what is the O(n^2) nature of drones? why would a single drone have to iterate through all other objects do do something? I mean this should NEVER be the case. Even the simpelst form of spatial subdivision (like a basic quad tree) would bring this down to logarithmical complexity. Even n-body simulations use tricks to not have exponential complexity at runtime.

The number of people using drones grows with n. The number of people that need to be informed about what the drones are doing grows with n. Result: n^2.

its not n^2 unless its very badly implemented. n^2 would be if each drone would have to communicate with each other drone/object. If they don't influence each other they don't have to do that. Regarding client-server communication a drone is like any other object on grid which has to be communicated to the client. Its not peer2peer after all - even in worst case scenario you should never have n^2 complexity in systems like that.


Regarding multithreading, even a essentially sequential system can be distributed via pipelining/layering - one of the oldest forms of parallelization for large monolithic systems. Solutions do exist, CCP just has to think out of the box.

how to fix eve: 1) remove ECM 2) rename dampeners to ECM 3) add new anti-drone ewar for caldari 4) give offgrid boosters ongrid combat value

Xenuria
#91 - 2014-09-16 23:20:06 UTC
I still want to see the specs approximate or otherwise of the current TQ infrastructure.
Circumstantial Evidence
#92 - 2014-09-19 03:27:15 UTC
The wiki page linked here has some stats, and several links at the bottom to past dev blogs.

https://wiki.eveonline.com/en/wiki/Tranquility
Nolak Ataru
Imperial Shipment
Amarr Empire
#93 - 2014-09-19 04:32:24 UTC
CCP Explorer wrote:
Hard population cap is not the answer; that will become a tactic where the cap will be used to lock people out and avoid a fight.

In terms of answers:

  1. More servers :) Just this week we were preparing RFPs for new hardware, to replace TQ.
  2. Team Gridlock is continuing on rewriting Dogma and on the Brain-in-a-Box project. There are also other things on the table such as drone-swarms where all drones act in a swarm like one drone, this would be similar to the grouped gun system. Given the O(n^2) nature of drones this would significantly reduce load in certain scenarios.
  3. The last part is more tricky and the one we would appreciate feedback: How can we spread large fights over multiple systems in such a manner that it's fun for everyone involved? Some sort of a simultaneous mega-objective across multiple systems but only when there are many involved so you could still have single-system fights depending on man-power (we don't want to require people to always have 3000+ pilot fleets). This happened in B-R since there were fights in the staging systems and Titans and fleets were intercepted en route to B-R.


May I kiss you?
Boyamin
African Atomic.
Trigger Happy.
#94 - 2014-09-19 22:36:01 UTC
CCP Explorer wrote:
There would be benefit from that, yes, but it's not the silver bullet one might think. For example, even if we split up solarsystems onto multiple nodes then big fights very often happen on a single grid, where everyone needs to be informed about everyone else's actions and everyone can potentially affect everyone else. Secondly, even if we perform all damage calculations on the tick we must process them in the order submitted. If you clicked the button first to activate the guns then we must process that in order.


Maybe kit your 60 blades with some expensive GPU's and run the physics of each local node through a bunch of physics oriented shaders - should alleviate the syncing issues, and you'll have CPU left over to crunch the market 0.01 iskers.
Barakach
Caldari Provisions
Caldari State
#95 - 2014-09-20 03:39:13 UTC
CCP Explorer wrote:
Max Kolonko wrote:
Arthur Pendrag wrote:
CCP Explorer wrote:
Sales Alt negrodamus wrote:
Explorer, just out of curiosity, how big are the technical hurdles to hosting a single eve system on multiple physical devices (read: cluster)?
In terms of hosting the simulation itself (both the physics simulation and the damage simulation) on multiple devices then that is very difficult.
Does the difficulty arise from trying to keep multiple nodes synchronized, serialize events, or ??? Finding a way to parallelize the handling of a solar system seems like a fascinating challenge with a huge payoff if you can make it work. With the way Intel keeps managing to cram more cores into every cpu generation yet not significantly increasing the execution speed of single threads it just begs you to spread the work load around.
This comes up all the time and answer is the same. Difficulty comes from the fact that eve is single threaded. It would have to be rewritten to support multi-threading.
Multi-threading is not the silver-bullet you are looking for. Big fights often happen in a single grid where everyone and their drones are affecting everyone else (and their drones). This is a lot of shared state, synchronization and thread communication were it to be multi-threaded.


Maybe you could batch up commands, then process them in parallel, and queuing up new commands into the next batch as the current one is being processed? Depending on the nature of the problem, it could add a hair bit of latency, but increase throughput.

Completely guessing at a problem domain I don't know almost anything about.
Barakach
Caldari Provisions
Caldari State
#96 - 2014-09-22 12:23:15 UTC  |  Edited by: Barakach
I was told I should drop this in here... So here it is.


"Given the O(n^2) nature of drones"

Is there more information on this? Is this an algorithm where each each drone needs to be compared against every other drone?

I ask because one of my more recent projects at work was an O(nm) where I needed to full cross compare two sizable lists, pretty much like an O(n^2). I'm also generally interested in problems like this.

pseudocode:

Naive

foreach(n in List1)
foreach(m in List2)
compare(n,m)


Better cache reuse version

partitionList1 = BreakIntoSmallerCacheFriendlyGroups(List1)
partitionList2 = BreakIntoSmallerCacheFriendlyGroups(List2)

foreach(p1 in partitionList1)
foreach(p2 in partitionList2)
foreach(n in P1)
foreach(m in p2)
compare(n,m)

In my case, I was able to get a 30% speed up. Of course I used a "parrallel foreach" on the outer loop and did not actually use "foreach". IEnumberables are actually expensive compared to arrays. Nothing like watching a dual socket sexacore Xeon running at 100% trying to crunch a 80k x 100k comparison :-)

We're potentially eyeing up lists of sizes over 1mil each, looking into better ways to prune and categorizes into smaller groups. Anything to weed out knowing if two items should even be comapred with each other. We're now looking into something more like O(nm(1-r)^k), where we want to get r and k and large as possible.