46
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Neo NeoCom
Reported by CCP Alice | 2010.12.16 16:45:00
Comparing this ancient screenshot of the EVE client to what we are currently used to stare at day in and day out reveals many interesting things. During those 7 years that have passed the ship HUD has had a substantial facelift and the threats window has grown up to become an overview. One of the few things that hasn‘t changed much at all, if at all, is the NeoCom. During those early days of New Eden the NeoCom did its job just fine, but as EVE has grown with every expansion delivered, it has become more and more obvious that a more elegant solution is needed to allow for easier access to the tools and features we use on a daily basis.
So we did this:
The two major aims of the new design are to increase customizability so pilots can configure the NeoCom bar to fit their daily needs as well as making the ever growing number of features in EVE more easily accessible.
The EVE menu
This is where all the features in EVE can be accessed at all times. It‘s not customizable; that‘s what the NeoCom itself is for. The introduction of the new group structure means that we don‘t have to hide new exciting features under a tab in a semi-related window because there isn‘t more space in the NeoCom.
Customizability
The customization of the old NeoCom was very limited to say the least, but no more. You‘ll now be able to decide exactly what buttons are displayed in the NeoCom and reorganizing the buttons is as easy as dragging them around. Removing a button from the NeoCom is a right-click affair and re-claiming that same button is as easy as dragging it from the EVE menu into the NeoCom bar. It is even possible to create groups into which buttons, and other groups, can be dragged.
The size of the new NeoCom is also configureble by dragging the top border, ranging anywhere from this:
... to this:
Other features
* A skill training progress bar that also allows for one click access to the skill training queue
* The old "minimized window buttons" functionality is replaced by displaying icons of all open windows in the NeoCom. Windows of same type (multiple „show info" windows for example) are grouped together into a single button.
* Buttons with special functionality:
o Chat: Groups all currently open conversations and has a button for directly accessing the „channels" window.
o Browser: Lists all bookmarked sites, making them easily accessible.
It's still in BETA
Releasing new features as BETA before fully integrating them into the game is a new concept we at CCP are trying out and the new NeoCom will be one of the first features to get such royal treatment. The idea here is to make the introduction of new features a smoother experience, both for developers and players. To enable a BETA feature, one must go to the „General settings" tab of system menu (ESC) and press the relevant button in the bottom left corner. Should this iteration of the new feature not meet your expectations, you can simply turn it off for the time being and tell us why you did so on the forums. Even though SISI has proven a great play testing tool, we feel confident that trying out new features on TQ where you are actually playing the game will provide better feedback than we‘ve been able to get in the past.
We already have plenty of ideas for iterations beyond the BETA, such as allowing alignment to any side of the screen, customizable names and colors of groups and adding more visual polish but we want more! Is there anything blatantly missing from the current design? Are there windows you would like to be directly accessible through the EVE menu? Do you have an idea for a special NeoCom button that would make your life easier? If so, please don't hesitate to tell us on the forums (and we might listen).
The new NeoCom BETA will be hitting TQ as part of the main Incursions release, January 18th 2011, and SISI before Christmas.
CCP Optimal
Fixing Lag: Drakes of Destiny (Part 1)
Reported by CCP Masterplan | 2010.12.21 14:32:07
Listen Up
Hi. I'm CCP Masterplan, one of the members of Team Gridlock. Our job in Gridlock is to tackle the issues of degraded performance under excessive load - in particular making EVE's signature massive fleet-fights more fun.
Whilst CCP Veritas has been having lots of fun switching modules on and off, I've been looking at another area of server load: Things in space. Specifically, adding and removing them, moving them around, and how we tell your clients all about them.
You might have seen mention of something called Destiny, and how it is something to do with physics. In this blog, I'm going to talk a bit about what Destiny does, and how I've been profiling it. In the second part, I'll show how one improvement in particular applies to my current nemesis: missile-spamming Drakes.
The test
The first step in improving performance under heavy load is to be able to reproduce a situation where load occurs. Previously this was done during mass tests. However thanks to the wonderful thin-clients, we now have much simpler ways to recreate different aspects of fleet fights on-demand.
We know that Drakes are currently a popular ship, and we know that they can fire lots of missiles. All the following results were obtained using this same scenario:
* 200 thin clients flying Drakes, each with three fully loaded heavy missile launchers (representing three grouped launchers)
* 100 thin clients flying other ships. These were present to add ‘observer load' - representing the other people involved in a fleet fight. This is important, as the cost of a missile is somewhat proportional to how many observers can see it.
* 1 control tower with a ‘death star' set-up. The tower was configured NOT to aggress attackers
Each Drake was instructed to lock the control tower. They were then instructed to activate their launchers, firing until their loaded ammo was depleted - this gave around 5-6 minutes of steady-state load (AKA missile-spam).
The numbers of ships was chosen (by trial-and-error) to push the CPU load of the node to around 95% during the steady-state missile spam. This is an important level, as it represents the edge of performance where lag starts to occur (module activations start to become delayed, movement commands stop being responsive, jumping becomes difficult, and so on.) These absolute numbers can't be directly compared to TQ due to hardware differences, but the relative proportions can.
During the steady-state load, we can then use profiling tools to analyse where we are spending CPU time. We can measure any improvements against this baseline of 95% load. Note that this test is entirely aimed at tackling Destiny load in the case of a stationary (non-warping) fleet battle. As such, it doesn't cover other bottle-neck areas such as jumping (though other work has focused on this). Turret-based damage was also not considered, since this has been observed to cause lower load relative to missiles. However this is an on-going effort - as the load of one aspect is reduced others will become proportionally larger and get their share of GridLock's Special-LoveTM.
I'm your density. I mean... your destiny
Before I show you the results of the profiling, it would help if I explained a bit more about Destiny. We often talk about Destiny as being the physics engine of EVE. Whilst that is an important part of what it does, as an overall system it is responsible for much more as well.
First I need to define a couple of terms, so everyone knows what I'm talking about:
* Ballpark: Manages the space occupied by a single solar-system. A ballpark is a collection of bubbles.
* Bubble: A small volume of space within which entities can physically interact. (Players have come to refer to this as a ‘grid') Not to be confused with Warp Disruption Bubbles, which this report is NOT about. Bubbles shrink and grow dynamically, and can never overlap.
* Ball: An entity (ship, drone, missile, asteroid, NPC, wormhole...) in space. As far as Destiny is concerned, all objects in space are represented by one or more balls. As the name suggests, the simulation treats them as spheres.
* Tick: Destiny operates in discrete ticks. Each ballpark runs at a rate of one tick per second.
That finely-shaped engine of the universe
Each tick is comprised of three main steps:
1) Pre-tick
* Update the bubble-ball relationships
* Apply any client actions (Warp, Orbit...) that came in since the last tick
* Apply any server events (Explode, spawn missile...) that happened since the last tick
* Build client updates, so they know what had happened
* Send updates to clients
2) Evolve
* Move balls according to their current action
* Resolve collisions between balls
* Dispatch collision callbacks
3) Post-tick
* Handle new clients (due to jump-ins, undocks etc)
* Cleanup
Once per second, we go through these steps. Whatever time is left over is then used to process everything else that needs to happen. It is important to note that the Destiny tick is entirely non-blocking - we can't do any asynchronous operations such as database queries or anything that might cause execution to yield. Most of the collision callbacks, for example, simply schedule a task to be run later. In this task, we can than perform database operations we need, such as creating wrecks, and moving characters to the clone bay.
This is why, in loaded situations, there is sometimes a delay between a missile hitting a target and that target actually exploding. Sometimes this is even long enough for the target to warp out and think he is safe. In fact, he is already dead - he just doesn't know it yet!
The Evolve step is the most complex part, at least in terms of hardcore maths. This is where all the physics of spaceflight happens. (At least EVE's version of spaceflight physics) It has long been assumed that this was also where the majority of CPU time is spent - and so where the biggest savings could be made. Suggestions such as ‘GPUs are good at math - why not implement this on a GPU?' have been raised. However, as we'll see shortly, the Evolve step is responsible for such a small portion of the overall load that such efforts would probably be counter-productive once the additional communication overheads are taken into account.
Our favourite new toy
I'd now like to introduce the latest weapon in our anti-lag arsenal: a profiling tool called Telemetry. This is a tool for visualising real-time application performance, developed by RAD Game Tools.
We started evaluating this over the summer, and have been finding more and more uses for it. Essentially what Telemetry does is build a timeline of events as the code execution moves in and out of named regions, and then provide a visual way to analyse this execution data. Combined with the thin-clients, we now have a really good way both to generate load, and to visualise it. This makes us in Gridlock very happy.
Figure 1 shows how Telemetry displays a particular Destiny tick. Time is along the horizontal axis (increasing to the right). The vertical axis (increasing downwards) shows how execution enters and exits different timer sections. This looks much like the evolution traditional call-stack over time, just using named timer sections instead of function calls. When a new timer section is entered, a new block is added below the previous one. When a timer section is exited, the corresponding block is removed.
(Programmers are odd creatures. Not only do they start counting from 0 instead of 1, they tend to view structures such as stacks growing down, rather than up. It is just the way we do things...)
Figure 1: A typical Destiny tick during missile spam, with the three main steps highlighted
Looking at Figure 1, we can see that less than 10% of the overall time in Destiny is spent in Evolve. In fact, the majority of Evolve is spent in the collision callbacks - in this case scheduling missiles for explosion. That is why I mentioned above there is little to be gained right now in making the actual simulation code run any faster.
The majority of the time is spent in the Pre-tick step. In particular, two operations make up the bulk of the time:
1) For the list of balls which were added/deleted since the last tick, figure out which clients need to be informed. When a missile is fired a ball must be added to space - when a missile explodes a ball is removed from space. Drakes are good at making this happen a lot!
2) Sending an update to each client identified in the step above. Further investigation showed that this is mainly expensive due to the time required to serialise each update message. (Serialising means converting a data structure in memory into a stream of bytes that can be sent over a network)
If we can find a way to make each of these steps more efficient, then overall Destiny load will be reduced. Well, as it turns out, there is indeed a way. But to find out how it works, you'll have to wait for the second half of this blog...
SLOT 6:
3% AB & MWD Speed Increase
3% Small Projectile Turret Dmg
3% Small Energy Turret Dmg
3% Small Hybrid Turret Dmg
5% Small Hybrid Turret Dmg
3% Velocity
3% Shield PG Usage
3% Armor/Hull Rep Duration
SLOT 7:
3% Remote Armor Rep Cap Usage
3% Turret Cap Usage
3% Turret Falloff
3% Ship Agility
10% AB Duration
3% Shield Capacity
SLOT 8:
3% Hull HP
5% Medium Energy Turret Dmg
5% Medium Hybrid Dmg
3% AB Cap Use
3% Shield Transfer Cap Use
5% Shield Transfer Cap Use
SLOT 9:
3% Turret Optimal Range
3% MWD Cap Usage
SLOT 10:
1% Armor HP
3% Amor HP
3% Turret CPU Usage
3% Booster Side Effects
Information Warfare Mindlink
Armored Warfare Mindlink
Siege Warfare Mindlink
Skirmish Warfare Mindlink
WAR IS THE ENGINE THAT DRIVES THE UNIVERSE
In this latest volume of the QEN (Q3 2010) there are some really interesting numbers on war and how conflict in EVE is the catalyst for production. It includes number on ships destroyed, even down to the number of Titans that meet their purpose in a glorious explosion. And war calls for more ships, more items. Hence this QEN also includes number of production in the supercapital category in Q3 of 2010. Of course we also have the standard material on population of EVE, price levels and general demographics.
In the past we have received questions and comments about using snapshots when looking at usage of ships and distribution of the population. Overall we are confident that snapshots give an accurate indication on the EVE population, simply due to the fact that we have a universe with more than 300,000 users. This means that all changes happen very slowly - but collecting several snapshots over time will give us the general trend. More detailed analysis does though require more accurate data and that we do use when appropriate, both internally as well as when looking at data for general consumption.
I want to thank the entire QEN team for their hard work and look forward to the discussions and debate about the content - we are certain that some of the information will be quite controversial amongst the hardcore PvPers of EVE Online.
Enjoy and fly safe, but not too safe!