Eve Tidi Idea
Design Idea to improve Max TiDi Fights.
**I have no clue how Eve is written, this is just a general idea on how to implement changes that could improve overall performance for large scale battles under Max Tidi.
**This is a long writeup.
So my basic assumption of the issues at play during Max Tidi type fights is that you have a large number of capsuleers all sending calls to Eve’s Servers. The Servers then get overwhelmed trying to process all the calls in a set order and the whole thing comes down. You start to get strange behaviors and unexpected results. The user gets a frustrating experience.
My idea would be to turn Eve into a Turn Based type game during these situations to allow for the easier processing of all calls sent to Eve. It would work in the following way:
My design idea would deal with the issue on multiple levels.
1 - Creating a Tidi window to manage all user calls. Users can cancel actions, select new actions, and have additional functionality I will talk about below.
2 - A completely different Eve operation under Max Tidi then during normal operations.
3 - A process to handle the entering of Max Tidi and the Leave of Max Tidi.
Idea 1 - Tidi Window
The window I’m envisioning would take over for the user’s actions during TiDi. Users would still be able to target/activate modules on their screen, but the actions would populate in a queue in the Tidi Window. The user would be able to do a set number of actions per Action Turn, setup future action turns if they wish, delete actions they didn’t intend to make. Then before their action turn they would have to select “Submit” there by locking in their action window.
Now for my idea I would list a few actions but you could add whatever actions you wish the capsuleer to make. The actions would be - Lock/Unlock their target slots, Activate each module/Deactivate each Module, Reload/Change Ammo, Set a movement direction/Command(Keep At range/Orbit)/Jump from System/EnterWarp.
Idea 2 - Max Tidi Operation
Under this scheme a system where Max Tidi is happening would become almost like an instanced environment. The basics work like this:
Eve Detects Max Tidi. (I would experiment and figure out at what percentage of Tidi you should enter this process. Maybe you enter the process before you have to so the servers are still responding rather then when you need to.)
Eve calculates how many users it can support per action window.
A action window should be long enough for a server to receive a command, to process the command.
Example - 1000 players. Eve can handle 50 player commands at one time. So You would need 20 Action Windows. You would add in some room for player growth plus a number of action windows for the server to process anything it needs to process. Let’s say you add on 20% for additional players plus 5% for processing. So roughly 25 Action windows. 20 alloted for players, 4 for growth(new incoming players), and 1 Action Window for processing.Each action window would have to be X number of seconds long to allow for the receiving of calls, processing of calls, and for the Server Action Window, for sending data back. Let’s state 5 seconds in this scenario.
For sending any information back to the user, that would happen after each and every user has taken a command.So at the end of the command cycle a period of time would have to be allotted to account for updating all clients with the results of the previous actions, doing any clean up on objects/DB that’s required.
So 25 Action Windows times 5 Seconds means every 125 Seconds would be a System Turn. So 125 Seconds under Max Tidi would equal 1 Second in normal operation.
Now you don’t know how long the battle will last for so you set it up to go until enough players leave system or until downtime. Let’s take for example the fight has 5 hours until downtime. Meaning there would be 144 System Turns total.
All Users are assigned to a Action Window
Each user would be allowed to process a set number of commands.
They could Target Enemies.
They could Shoot Already Targeted Enemies
They could Reload Non Action Guns
They could Shoot loaded Guns
They could Activate/Deactivate Modules
They could set a movement action(Jumping,Keep At Range, Orbit, or manual movement)
They could send a drone command/fighter command.
-All commands are sent to CCP
-All commands would start to process as they are received however no updates would be sent until the end of all the player commands during the System Action Window.
My design theory here would use multiple databases. A database for the current action window and a database for the next action window. The DBs are populated with all of the stats that a player has that is required for the actions to complete. The DB would be the complex part in my opinion. I have zero idea how Eve works so my entire idea might come crashing down at this moment because this isn’t feasible within Eve’s code.
Basically when a player enters max tidi all of their stats would populate the DB. There would also be tables/columns for any inputs the player might receive during an action window. Any incoming damage, any capacitor changes, movement changes whatever. Then during the Server Action Window it would just go down the line and calculate all the values. It would also write any changes to that player to the current DB and the next window DB. Then it would update all clients with the new information, and the next action window would begin using the new DB. The Old DB would then be overwritten with the next action window information as necessary.
As players enter Tidi their calls to the server are frozen and cleared. Their information is logged into the DB, they are assigned to a Action Window in order, their Tidi Window would open, and they would be skipped for the current action window to allow for them to completely load and all of their information to be written to the DB.
When leaving Tidi they would initiate a jump(Jump Drive or Gate or Bridge or Logout). This would not process until after the current System Turn finishes. Any incoming damage, cap usage, whatever would process and if they are still alive they would leave system. They would be removed from the DB.
In Conclusion this system would bring a type of order to the chaos. Instead of Eve processing whichever command it receives first, it processes the commands in a set order that is extremely predictable allowing for a really strong dynamic component. This would give CCP a ton of control over performance and also allow them to adjust certain values to increase or decrease speed of a fight depending on server performance.
In no way is this a huge change for Eve. As far as I know it already sort of acts like this with the server ticks and processing of each command in order. It just not a predefined order. It’s whatever command it gets first. This is just a way to organize the commands and actions to allow for greater performance under extremely stressful situations.
Let me know what y’all think.