Dear CCP

Could you give the player community an in depth Dev Blog on the progress to fix the root cause of what enacts time dilation?
If the problem is budget constraints to fix the problem are you open to the playerbase raising funds to achieve progress?

The reason for tidi is code that was dated when the super nentendo was released.

7 Likes

The ‘problem’ is math and more specifically scaling. Tidi is a pretty ingenious way to eke more playability out of a pretty difficult situation. There’s a reason practically every other MMO is sharded and nobody else is insane enough to try do what eve does.

To go further into the math at a very very basic level ( I am very well aware of how oversimplified this is, thank you).

If i have 5 people in a room and they each need to shake hands with each other that is 5x4/2 = 10 handshakes (we’re using handshake as a replacement for ‘tell me about your client state’)

If we go up to 10 people we get 10x11/2 = 55 so a growth of jsut 5 platers has quintipuled the server load.

Once you get into the 1000s there isn’t a computer system on earth that can realistically handle what’s going on. Even if you make one that handles N thousand players then people will try put n+1 thousand players into the system and hey presto you need a system twice as powerful.

3 Likes

For anyone who wants to read up on TiDi:

7 Likes

The clients don’t transfer data between each other. This is not simplified, it’s wrong! : D
The problem indeed is math, though. Physics, Drones, Turrets, Missiles, AoE damage, etc.

The time it needs for everything to be processed each tick, combined with code that needs to be ripped apart and rewritten.

2 Likes

EVE isn’t peer-to-peer.

1 Like

To be fair, there is no real way to solve that kind of load, its literally a processing issue

Every object in space needs to be tracked, it needs to have its stats tracked, its location, its destination, the server also has to calculate damage to and from every object it needs to perform the math on damage reductions, tracking, explosion velocity in the case of missiles, it needs to track the current state of every single module on every single ship and the effect each of those modules have no only on itself but also on whatever its interacting with, it needs to handle timed buffs/debuffs in relation to things like gang links and combat boosters, it then also needs to make sure that information is relayed to every single client involved, just imagine what effect a cloaked ship would have on those calculations, it would have to track every single possible entity able to decloak a ship, this includes wrecks, corpses, other ships

The battle in B-R5RB had over 2600 players active in a single system with most of those actively fighting or present at the fight location, the processing power to do that all in real time doesn’t really exist in a single node so no matter what you throw at it no matter how hard you rip apart the code and rewrite it, you’re fighting a wall you can do nothing about, TiDi is the solution not the problem, because without TiDi you just get broken nodes and characters and ships stuck in broken states

Because of the way the game works there is no way to have a single system span multiple nodes so because of that you’re limited by the processing power of a single node

2 Likes

sigh, i said it was overly simplified and yet you still jump down my throat.

The server needs to make every client (of N) aware of the position of every other client (N-1) so the mathematics scales identically.

2 Likes

No, it does not. Again, you were not simplifying, it was wrong. You explained a completely different concept compared to what is actual reality.

If i have 5 people in a room and they each need to shake hands with each other that is 5x4/2 = 10

Here. This is wrong. The five people only need to shake with one single guy. The one who is the boss. It’s one shake for each person. They do not shake each other’s hands. Only the bosses. The server sends all data to each client in parallel and only needs to calculate everything once per tick, not for each client seperately.

Any one person joining the group also only shakes one person’s hands. The bosses.

Do you even sockets, mate? :stuck_out_tongue:

2 Likes

sigh, you’re wrong and you don’t even know you’re wrong, we’re done here.

No, he’s actually not wrong. The server handles the same calculations for every client. Why would it need to redo each calculation for each client? That would be incredibly inefficient. No one’s client is communicating with anyone else’s. Our clients only communicate with the server, and it with us. Our clients do nothing but interpret the data into information our eyes and brains can understand. Again, this is not a peer-to-peer game. What you’re talking about is what happens in Elite: Dangerous, which is why it becomes more and more laggy and buggy when you add more people to an instance, and you’re lucky if you can get 40 players together. It’s also why you can’t hack this game. It can’t be done, not without being detected, because if you, say, want to boost the shield strength of your Drake, you have to talk to the server about that. In Elite, a peer-to-peer game, you just have to alter some numbers on your client.

just think of it in terms of raw data flow. let’s do a really stupidly simplified example:

There are N objects on grid each specified by a position and velocity vector in 3 space, so 6 numbers

Every tick the server needs to make N clients aware of the specifications of the other n-1 objects, depending on what is happening on grid. the calculation of what is happening on grid only happens once, but the I/O scaling works as n~2

No, there’s no scaling. If there are 20 clients, it sends the results of the calculations to 20 clients. If there are 21, it sends them to 21. That’s not scaling, that’s simple addition.

This whole thread is an example of why CCP, not the players, should provide a dev blog explaining this.

3 Likes

Simple, number of players in system. You can throw as many hardware, money at the problem, but every increase in resources will be compensated by more people joining the fight. The only way to help with performance issues in big fights, is … to artificially limit the player count. I would chose TiDi over that.

1 Like

combining your and my examples.

20 people on grid means i have to send 20 people 19x6 numbers to describe the grid

20x19x6 = 2280 numbers

person 21 arrives on grid. the server now has to send 21 people 20x6 numbers to describe the grid:

21x20x6 = 2520 numbers

so a 5% increase in grid population gives more than a 10% increase in required server IO, which is not the ‘simple addition’ you claim.

2 Likes

The game runs off a database. When the number of transactions cannot keep up with the reality of events then the game slows down to a speed, which allows the database to keep up.

1 Like

The amount of information you send is a matter of bandwidth. Any calculations are still only done once, and the same numbers are sent to everyone. The amount of calculations needed is the server load, not the quantity of information being sent out.

And in sufficient detail that there can be no misunderstanding of the processes involved.
Sometimes a TL;DR just won’t work.

1 Like

They explained it very well when they released TiDi.

I’m sure the Blog is still there, somewhere.