A lie isn’t a lie until someone else knows the truth.
Eve Online Chaos Theory
I have had some people from other games ask me to explain the lasting appeal of EVE Online. I’ve directed them to Crazy Kinux’s thread for WoW players, talked about comparisons with original Star Wars Galaxies (which I played for 5 years), and then found this little nugget:
Easily the most awesome lecture of the conference, CCP’s CTO explaining the code and design of the simulation system behind the EVE Online servers: DESTINY.
The key point is a chaos-theory equation system of potential spheres of influence for every actor in a space. Essentially the algorithm goes something like this:
1) Begin server frame.
2) For each ship, calculate a sphere of possible client interaction based on the ship’s dimensions, weapons systems, visual range, etc.
3) Using chaos theory equations of possible changes in a ship’s behavior before the next time slice, fractally extrude out a set of event cylinders (with hemispherical caps) of the ship’s possible influence before the next frame, within the 3D space.
4) Loop through the generated event cylinders and look for intersections. Lump intersecting masses together as “causality bubbles.” Sets of events that could potentially influence one another.
5) Rapid cache out the causality bubbles as separate sets and defer the simulation of each bubble out through microtasklets in Stackless Python.
6) Send only the information relating to a player’s intersected causality bubble/matrix to that game client. (Dump client’s simulation state from pervious frame in lieu of the server’s state if they disagree.)
7) Allow the client and server to run the simulation of that causality bubble in parallel. Continue the simulation on the client to make it appear seamless.
8) Yield to other causality bubble simulations in DESTINY and Sleep() for 1000ms.
9) Download any input changes by the ship’s pilot from the client at the end of the server frame. As ships do not respond to inputs instantaneously in EVE, this is fine.
10) Push that input into the force equations in the physics simulation for next frame.
11) Push the causality bubbles’ simulation result to TRANQUILITY, the actual server Main() process.
12) End server frame, loop while the execution context has not received a shutdown signal.This prevents you from encountering a runaway O(n^y) algorithm of every ship in a solar system potentially acting on every other, and by only sending updates to clients based on that client’s ship’s causality bubble, it allows the game to be played on only dial-up modem speeds.
The only downside is in large space battles, in crowded spaces. In these scenarios, the intersection of extruded causality cylinders tends to encompass the entire system. This ship can influence this ship which can influence these ships which influence… etc. So the partitioning of simulation afforded by causality bubbles goes away. They tossed out some similarly awesome-sounding ways to fix this, that are in development, but I’m not allowed to talk about them.
Other really sweet things they did:
– Dynamically generated all solar systems in the universe using actual supercomputer-run disk accretion models. This means every solar system was formed the same way actual astronomical ones are, and no system is artificially held together by anything that would not work in real physics.
– Originally, the random seed to generate the EVE universe was taken from the server’s Epoch Time at the start of the universe generation. The guy in charge decided, the night before launch, to regenerate the entire universe at the last minute with the seed “42.”
– The location of solar systems relative to one another were modelled after cellular cohesion equations – the same thing that makes gold deposits form, blood vessels to grow in your body, and sets the pattern of the universe filaments as seen in the Cosmic Microwave Background Radiation.
Yeah, this is totally geeky, but it’s also incredibly cool for anyone that understands physics, programming, science and extruding believable science fiction from it. Really, it doesn’t get more awesome than this.
EDITOR NOTE: Yeah, yeah, 42, the answer to all questions, I know. – Hitchhiker’s Guide to the Galaxy
Roc’s Rule #22
Leave no witnesses.
Double Standards
Some will tell you I am not easy to get along with. Those that get along with me will tell you that’s rubbish. Both are accurate.
I am not high maintenance, but neither am I low maintenance. I would describe myself as “set maintenance”. As you may have gathered from the many Roc’s Rules, I govern myself by my own set of ideals and rules. They don’t change. I don’t really change either. I have triggers just like anyone else. Live within them, and we’ll get along fine.
I am a soldier. I am used to following orders. My commanding officers say do, and I do. I have no problem letting someone else make the rules. Just make sure you follow them.
I had just returned from commanding a fleet recently. You may have read about it in one of my earlier journals (see For the Republic ). I yelled at the Tribal miltia for a good twenty minutes until I was hoarse in the throat. My CO didn’t approve. He said there is never a reason to yell at my troops to such a degree. He screamed this at me for twenty minutes. I stopped listening after two.
It’s simple for me really. Make the rule. Live by it. Do what you say. Please, feel free to call me on it when I am a hypocrite. I will definitely be calling you on it.
Roc’s Rule #21
Justice is in the eye of the beholder.
Relic
“Nobody is coming for you, Roc.” he says into my ear, sweetly, as a lover would. “Do you understand my friend? You’re all alone. You’ve got nobody but me.” I know his voice. We’re friends. I think we’re friends. Yes, we’re friends. It’s hard to focus. My mind is fluid, drifting aimlessly. My body is racked in pain, a constant searing numbness, if there is such an oxymoron.
“Tell me what they’re planning, Roc. Tell me the plans of the Tribes.” I am a Vorshud Major in the Tribal Liberation Force, proud to serve the Minmatar Republic. I have earned my rank with sweat, blood and tears; far too many of each. And yet I have no idea what he is talking about.
He stands in front of me, over me, his arms on my arms, his face smiling serenley at me, eternal patience shining from his eyes. “Do you understand what I am saying, Roc? Do you understand my words?”
“Just because I don’t care doesn’t mean I don’t understand.” I reply smugly through broken teeth in a bloodied mouth. He straightens at that comment, the joy washed from his face. That in and of itself gives me great satisfaction. Amateur.
“Sir? Major Wieler sir?” My attention snaps back to the present. My Science Officer is addressing me, an expectant look on his face. I totally missed what he said. I let the silence hang in the air for a few more moments, feigning thoughtful contemplation, hoping the quiet awkwardness will make him repeat himself. I am not disappointed.
“Sir, they need to know. The survey team’s report confirms Aura’s readings. Breathable, but hostile environment, day temperature in the negative fifties, no hostile lifeforms. No lifeforms at all. Next orders?”
“Alright. Get the other teams prepped. We’re going out there.” This whole thing is probably all one big wild goose chase. Who the hell chases a goose anyway? Still, if there’s even a small chance we succeed, it will be worth it for all of us.
Roc’s Rule #20
Treat people in your debt like family … exploit them.
Re-entry
Ever have a recurring nightmare you just can’t get rid of? It’s like a pestilence to your psyche, a debilitating virus you cannot cure.
My ship has been destroyed, my pod ejected. Hurtling through the void I see the frozen corpses of my crew floating by in slow motion, their last moment of horror forever etched across their faces. In unison, their eyes turn and look at me with blame and I am ashamed. My pod rattles as it comes under fire from the enemy that took my ship. Two of its three engines blow out, sending me into a spiralling pitch. Black, roiling smoke and flame erupt. I often wonder how there is smoke in space. There is no atmosphere, thus no oxygen, so how does smoke and flame even exist?
Aura is silent. My capsule continues its spin like a theme park attraction ride, well beyond the threshold of my gravity training. I puke. My pod fluid opens its mouth, eating it up, recycling it back into my system. Lovely.
My pod screams towards a planet I do not recognize. The system is governed by a red dwarf star which taints the nightmare red. How symbolic really. I know my pod is in this planet’s gravitational pull and will soon hit “re-entry”. Why is it still called that? Tens of thousands of years ago our ancestors took to the stars from Earth, and would return. It made sense back then. They left. They re-entered. But this is now. Shouldn’t it just be called entry?
The pod threatens to shake itself apart as I descend into a steep orbit, hurtling towards the surface of the unknown. The altimeter is dropping faster than my eyes can track. My external cameras show me in high definition the detailed surface of my impending doom. I can countdown the seconds until impact, until the cycle continues and my next life begins.
I awake, sweating, in my bunk. Reaching for a glass of water from my nightstand, my hands tremble. What do these dreams mean, if anything? I should’ve been born a Sebeistor. I am far too philosophical for a Brutor. My quarters feel very small suddenly, cramped, confining, maddening. I feel imprisoned. Maybe I am losing it? Maybe I never had it to begin with and am only now beginning to accept this fact.
I look in the mirror and see the face of the man I have come to accept as me. His visage brings me no peace today. He looks afraid. I glare at him in admonishment.
Re-entry. The word sloshes around in my brain. It is a key to some lock I cannot find. It has some hidden meaning; some unknown purpose. My intercom chirps. I press it.
“Major, all systems green. Holding steady orbit. Ready for re-entry on your command.”
Re-entry.
Roc’s Rules #19
A good corp member is hard to come by. Have a replacement before ordering their execution.
