Greedy Goblin

Monday, August 5, 2013

How to make 4000+ fights smooth without supercomputers

CCP Veritas gave an interview about the server-side of the 6VDT fight. He admitted that the server lagged and also that they aren't upgrading because such fights are extraordinary, therefore a supercomputer would run with 5% load in 99% of its time. But we not only do "have" large battles but also they are pinnacle events of EVE, they can't be just cut down as outliers.

I already had a suggestion, to kick out smaller ships, but it would cut down exactly the 4000 players playing effect. So here is the better one, which doesn't exclude anyone, and designed to the realities of the large-fleet combat.

In large-fleets most players are in doctrine DPS ships, shooting the same broadcasted primary. In 6VDT TEST Prophecies and Zealots fought CFC Megathrons. They are trying to shoot the same target, at the same time. Let's use that!

When TiDi reaches 30%, grouping is enabled on server side (players can't initiate or stop it). In this state, the DPS ships of the same types and on the same grid are moved into N-ship groups. One out of the N pilots is randomly chosen to pilot the group, he has the same interface as normal. Technically, the other N-1 ships are removed from the grid and the leader ship gets its damage increased N-times. So if N=10, where were 10 Megathrons, each issuing commands and moving, there will be just one. The players on the other ships will get the same data as the actually piloting one, they can rotate the camera and observe the battle, they can chat, but they can't issue commands, besides a "leave group".

To not turn these players into complete spectators, the leader role rotates between them. It is also needed to average out the different skillpoints and fits. Since the leader is random-selected, the DPS of the group is equal to the DPS of the sum of the individual ships on average (if a max skilled and an noob is grouped, half time the group has 2x great and half time 2x noob DPS). If the grouped-ship is attacked, it is always the actual leader's resists that matters. If the ship explodes, he is in his pod, the killers see it flashing and disappearing as target, but the group (unless it was down to 1 ship) will live on, with 1 less power and another leader.

Due to this change, the battle participation number will be decreased to 1/N for the server. The group is one ship server-wise, and also one ship on the overview and brackets, with only a number next to it showing that it shoots harder and needs to be killed multiple times. It looks atrocious to take control away from players, but remember, they are willingly shooting broadcasts anyway, so they are actually better off. To avoid any kind of player dissatisfaction, this can be made opt-in, players can choose to be grouped with other ships of the fleet. I'm sure all FCs will order their pilots to activate this feature for maximum alpha (the group shoots in the same millisecond).

The server can automatically play with N, and reorder ships to balance performance and maximum number of independent pilots. Of course lot of problems has to be addressed, mostly with E-war and smartbomb damage, but I'm sure it all can be balanced, and allow smooth, 50-60% TiDi battles with 10K participants.


Anonymous said...

A super computer wouldn't even solve the problem, the server process would need to be multi threaded to work on a super computer. It isn't. The fact is CCP decided not to code for Multi-Core cpu's way back when. They need to bite the bullet and code for multi-cpu environment, then you can dynamically assign more cpu/gpu units to a give node for smooth performance.

Anonymous said...

If that one player gets a "socket closed", the whole group will get a "socket closed". If that one player is "emergency afk", the whole group will be sitting ducks. If that one player is a spy, the whole group will suddenly warp away or activate self destruction.
I for myself wouldn't want to be "the choosen one", the one who gets a "gf" after he succeeded or endless flame if he failed.

Gevlon said...

The AFK and socket closed averages out. While it's true that the actual group leader AFK means whole group AFK, but if the non-leader goes AFK, his ship keeps shooting. Same for spy: until he is group lead he cannot stop shooting.

Also, self destruct turning off hardeners, kills only himself, as upon death he gets into pod and the group lives on with one less member and new leader.

Warping off indeed works, but members can quit the group and in 50% TiDi a battleship warps in 20-25 seconds even if not bubbled.

Oska Rus said...

This suggestion seems as hard to implement as dynamic node ballancing. This ide is as well horrenduously obscure. And more obscurity is never good in game design and code.

CCP can evidently make server nodes which can handele 2K+ players without any problem. So if they would be able to dynamicaly rebalance server nodes whe players on one node peaks everything would be really smooth transparent and happy.

Solution might be even some semi-dyanmic reballancing like: "ohh 4000 players in system lets restart a node a little bit and let their client frozen and logged in before trafic reroutes to new node..."

From outside todays reballancing seems like: "ohh 4000 ppl in system lets just tidi 10% and really lag for many tens of minutes then just crash maybe or crash only a little bit for some players."

But anyways CCP seems to be working on multithread solution so it might in some time bring us infinite performance.

Anonymous said...

Wait a minute, the eve server software is really single threaded?! You're telling me that a game with up to 4000+ fights that in addition existed for over 10 years now does not have any multi threading capabilities?

And skill bonuses are recalculated every single time ....

We don't need any new game mechanics or expensive hardware, we need CCP to recode their software (and not even that much as a lot of code just deals with stuff that doesn't occur in battles anyway).

Anonymous said...

this only applies if your suggestion wont eat up the same resources like the N ships flown individually. such functionality you suggest has other negative side effects like syncing and deciding per beat. we can't have nice things like this .. without involving the server to check on anything the clients want to do.
Also people tend to dislike random decision making.

TiDi. makes large fleet fights possible but with a price. TiDi favours the bigger "group" with fastest logistics and bigger ISK .. outside of the TiDi bubble .. to reinforce the battle.

sure CCP has to refactor the bottlenecks. they do and try.
and end up like their devops thread
So TiDi is the solution until then.
Other games do hardlimits and restrict on multiple ways. gw2 max siege equip and max players. Aion server just crashed on siege with 600+ players. Wow dunno what they do, their biggest BG is instanced .. do/did they had ever big openpvp battles?. Hard limit and instancing is a solution .... with a big price-tag, like not be bubble to reinforce the battle from outside to the inside.

What ever CCP does they have to do something about it ... and it will limit gameplay ... and hatters will hate. With only 50k~ online players .. to handle 9-10% of them in one system is a big thing and the dev team really did something great.

Anonymous said...

I think this solution would not be liked by most players. In general when you're playing an interactive game any kind of loss of control is received very badly.

Anonymous said...

> Wait a minute, the eve server software is really single threaded?! You're telling me that a game with up to 4000+ fights that in addition existed for over 10 years now does not have any multi threading capabilities?

Keep in mind, 10 years ago, it just wasn't efficient to do multithreading.

the single thread nature of Eve is essentially the result of the game running for 10 years straight without interruption ...

Anyhow, yes, the solution is scalable multithreading. There's no limit to the amount of available cores, so eventually, we can imagine 50k+ players in one battle at realtime speeds. It'd be a complete clusterfuck, but possible.

Michael LeBlanc said...

So if the group is targeted, it's always the controller's ship that matters? Doesn't that mean that there will just always be full logi on that ship? Doesn't this completely eliminate target calling, target switching, etc?

tangurena said...

Wait a minute, the eve server software is really single threaded?! You're telling me that a game with up to 4000+ fights that in addition existed for over 10 years now does not have any multi threading capabilities?

Until TiDi, fights would hit the server limit at a much lower limit. Fights with 400 players would result in a node crash. Having more than 1000 pilots blowing each other up is a very recent thing.

My company sells software, and our server product is finally starting to get rewritten to be multi-threaded and distributed. The managers don't like "spending" the resources to do so because they don't value what the improvements bring - nor do they understand it.

And skill bonuses are recalculated every single time ....

Yes, every time you board/leave a ship or dock. One simple scheme to handle this might be to use a second processor to calculate the stats instead of forcing the main thread to do so. If they can't handle asynchronous message passing (asynch & distributed coding has some interesting hard-to-find bugs and a lot of odd edge cases, with interesting names like "dining philosophers" and "byzantine generals"), then a simple solution would be to stash it in a table, a "scoreboard" for the system.

Gevlon said...

If there are 2000 people in the enemy and they are condensed into 500 groups, you can still call targets and switch.

Michael LeBlanc said...

Ah, I misunderstood. So N would be a function of server load, not just automatically grouping all the same ships together. You'd still have literally hundreds of groups on grid with you.

I think this is actually not a bad idea. I'll have to give it some more thought.

Sugar Kyle said...

I find it interesting that many of your solutions call for the elimination of the individual. The kicking of the 'unimportant' parties. The 'useless' small ships. The removal of individual independence.

Those are the things that people appreciate the most. There is a lot of scorn to 'anchor press F1' because it is such a simple activity. It is still an activity that you have to focus groups of people on.

This solution turns Eve into a game where people play, devote their time, energy, and accounts to being someone's toy. While, in the big scheme of looking at what people are doing for a common goal may have a similar exterior appearance, to walk up to them and say, "I am removing your individuality and gluing you into a massive machine run by your FC go watch television" does not seem to be an answer.

It is almost AFK PvP warfare on the scale of AFK mining.