Which Solar Systems are the Triglavians Invading in EVE Online?
EVE Online is an online multiplayer game run by CCP. The game takes place in space across 8,035 solar systems that are connected in a warp gate network. Over the last year, a new enemy known as the Triglavians have been invading various solar systems and wreaking havoc. They permanently severed the trade route between the two largest trade hubs, and are harvesting whole stars for resources. As of 10–22–2020, 40,899 player ships have been destroyed by the Triglavians (this is ~0.6% of total ships lost in the same period). According to the news, the Triglaivans are targeting “young blue stars.” The aim of this project is to look for patterns in which systems the Triglavians actually invade, and by extension, where they might invade next.
Do the Triglavians prefer “young blue stars?”
Much of this article is concerned with some intel that was in the weekly Eve newscast claiming that “solar systems containing young blue stars seem to be of particular interest to the Triglavians” (2:37–2:42).
It turns out this isn’t true. If the Triglavians preferred young blue stars, their red triangle logos would be clustered in the lower left corner.
Here’s how I created this graph.
Acquiring the star temperatures and other static data:
Broadly speaking, there are two ways to get data directly from CCP, who runs Eve Online. The first is through the API called ESI. All the star statistics and quite a bit of meaningful data can be retrieved here. One drawback of using ESI directly is that the data is structured in a way that you have to make thousands of requests to compile a directory, such as a list of the 8,035 solar systems. The other drawback is ESI sometimes returns connection errors, and so your code needs to be robust and patient to that. Making all the requests for all solar systems takes ~30 minutes. The other data option is to parse the Static Data Export file (SDE). This is a 103 MB zip file of 9,597 small files (one for every solar system). It contains much of the same data on solar systems, and other things that don’t change in Eve Online. Parsing the SDE takes ~20 minutes on Colaboratory computers, but is more hardware dependent than server dependent. The big benefit to the SDE is the file download and parsing process is error free, unlike the API. When I scraped my data on the star attributes, I started with the API, and did it again with the SDE to grab more attributes I left out the first time. I would recommend using the SDE if it contains the data you want, and use the API to fill in the gaps. A third source of data would be 3rd party developers who have already scraped and compiled data from the API, such as zKillBoard and various market data websites.
I constructed a large Pandas DataFrame of all solar systems which contain stars. I then saved this dataframe to a 321 KB zip file and hosted it to the Github. Reloading the data is as easy as one click and about 2 seconds of processing.
Plotting a simple pairplot for all the continuous variables for the stars revealed a lot of structure in the data.
The star_type_id variable was interesting and contains some discernment between stars. Star type separates stars into categories by temperature and lifespan (which tightly correlate). However, star types overlap on a star’s age, luminosity, radius, and security.
The relationship between star type ID and spectral class is more complicated. In astronomy, the Morgan–Keenan Spectral class is formatted like “K8 V.” Eve’s “star_spectralClass” follows the same format. The K categorize temperature. In astronomy, the possible letters from coldest to hottest are (M, K, G, F, A, B, O). In Eve, there is only (M, K, G, F, A). The number in the Morgan–Keenan Spectral class categorizes the chemical makeup of gas between the star and us. In Eve, the number further divides star temperature. Finally the roman numeral denotes the luminosity of the star. In Eve, there are 89 spectral classes, but only 29 star types. Spectral classes do span more than one type ID. This is the relationship between them, with type IDs in the same order as above.
Type ID: [Spectral Classes]
3800: [‘M0 V’, ‘M1 V’, ‘M2 V’, ‘M3 V’, ‘M4 V’, ‘M5 V’, ‘M6 V’, ‘M7 V’, ‘M8 V’, ‘M9 V’]
45039: [‘M0 V’, ‘M1 V’, ‘M2 V’, ‘M3 V’, ‘M4 V’, ‘M5 V’, ‘M6 V’, ‘M7 V’, ‘M8 V’, ‘M9 V’]
45040: [‘M0 V’, ‘M1 V’, ‘M2 V’, ‘M3 V’, ‘M4 V’, ‘M5 V’, ‘M6 V’, ‘M7 V’, ‘M8 V’, ‘M9 V’]
7: [‘K7 IV’, ‘K7 V’, ‘K8 IV’, ‘K8 V’, ‘K9 IV’, ‘K9 V’]
45031: [‘K7 IV’, ‘K7 V’, ‘K8 IV’, ‘K8 V’, ‘K9 IV’, ‘K9 V’]
45032: [‘K7 IV’, ‘K7 V’, ‘K8 V’, ‘K9 IV’, ‘K9 V’]
8: [‘K5 IV’, ‘K5 V’, ‘K6 IV’, ‘K6 V’]
45033: [‘K5 IV’, ‘K5 V’, ‘K6 IV’, ‘K6 V’]
3798: [‘K3 IV’, ‘K3 V’, ‘K4 IV’, ‘K4 V’]
45037: [‘K3 IV’, ‘K3 V’, ‘K4 IV’, ‘K4 V’]
3802: [‘K0 IV’, ‘K0 V’, ‘K1 IV’, ‘K1 V’, ‘K2 IV’, ‘K2 V’]
45041: [‘K0 IV’, ‘K0 V’, ‘K1 IV’, ‘K1 V’, ‘K2 IV’, ‘K2 V’]
6: [‘G6 V’, ‘G6 VI’, ‘G7 IV’, ‘G7 V’, ‘G7 VI’, ‘G8 IV’, ‘G8 V’, ‘G8 VI’, ‘G9 V’, ‘G9 VI’]
45030: [‘G6 V’, ‘G6 VI’, ‘G7 IV’, ‘G7 V’, ‘G7 VI’, ‘G8 V’, ‘G8 VI’, ‘G9 V’, ‘G9 VI’]
45047: [‘G6 V’, ‘G6 VI’, ‘G7 IV’, ‘G7 V’, ‘G7 VI’, ‘G8 IV’, ‘G8 V’, ‘G8 VI’, ‘G9 V’, ‘G9 VI’]
3797: [‘G3 IV’, ‘G3 V’, ‘G3 VI’, ‘G4 IV’, ‘G4 V’, ‘G4 VI’, ‘G5 IV’, ‘G5 V’, ‘G5 VI’]
45036: [‘G3 IV’, ‘G3 V’, ‘G3 VI’, ‘G4 IV’, ‘G4 V’, ‘G4 VI’, ‘G5 IV’, ‘G5 V’, ‘G5 VI’]
3799: [‘G0 IV’, ‘G0 V’, ‘G0 VI’, ‘G1 IV’, ‘G1 V’, ‘G1 VI’, ‘G2 IV’, ‘G2 V’, ‘G2 VI’]
45038: [‘G0 IV’, ‘G0 V’, ‘G0 VI’, ‘G1 IV’, ‘G1 V’, ‘G1 VI’, ‘G2 IV’, ‘G2 V’, ‘G2 VI’]
3801: [‘F0 V’, ‘F0 VI’, ‘F1 IV’, ‘F1 V’, ‘F1 VI’, ‘F6 V’, ‘F8 V’, ‘F8 VI’, ‘F9 IV’, ‘F9 V’, ‘F9 VI’]
9: [‘F6 V’, ‘F6 VI’, ‘F7 V’, ‘F7 VI’]
45034: [‘F6 IV’, ‘F6 V’, ‘F6 VI’, ‘F7 V’, ‘F7 VI’]
45046: [‘F6 IV’, ‘F6 V’, ‘F6 VI’, ‘F7 V’, ‘F7 VI’]
3803: [‘F4 V’, ‘F4 VI’, ‘F5 V’, ‘F5 VI’]
45042: [‘F4 IV’, ‘F4 V’, ‘F4 VI’, ‘F5 IV’, ‘F5 V’, ‘F5 VI’]
10: [‘F2 IV’, ‘F2 V’, ‘F2 VI’, ‘F3 IV’, ‘F3 V’, ‘F3 VI’]
45035: [‘F2 V’, ‘F2 VI’, ‘F3 IV’, ‘F3 V’, ‘F3 VI’]
3796: [‘F0 IV’, ‘F0 V’, ‘F0 VI’, ‘F1 IV’, ‘F1 V’, ‘F1 VI’]
34331: [‘A0’, ‘A0IV’, ‘A0IV2’]
Hertzsprung-Russell diagram:
Next I sought to create a Hertzsprung-Russell diagram for the stars of Eve Online. This plots a sample of stars by color/temperature and brightness, both on log scales. This separates stars into main sequence stars and other types. As the main sequence stars age, they travel from the upper left corner, down to the lower right corner.
I wanted to get the star color accurate. Stars produce light because they are hot. The mixture of colors that comes off a hot object is the Black Body Spectrum. It doesn’t matter what material the object is made of (hydrogen, steel, lava), they all produce the same colors at the same temperatures (plus their color when they’re cold). This mixture of colors determines the overall color we perceive. These colors can be placed on a scale vs temperature. The way Kelvin works is 0 K is the lowest temperature possible, 273 K is the freezing point of water, 373 K is the boiling point of water, and the Sun’s surface is 5,778 K.
The details got a little hairy (maybe a day and a half hairy), but sparing the details, I was able to create an accurate color scale for a given temperature range in kelvin.
Next I wanted to use the Triglavian logo as a marker on a scatterplot. This turned out not to be easy at all, but after another day and a half of hairy details, mischief managed!
Lastly came the hairiest challenge of them all: which systems have the Triglavians invaded? This data does not appear in the static data at all. If you look through the available API commands, there are a couple leads I looked through.
The first place I looked was /universe/factions/, but this is just a directory of static information about each faction. The “Triglavian Collective” is faction # 500026.
Next I tried /incursions/, but this is just a list of invasions by another faction called Sansha’s Nation.
Next I looked in Faction Warfare, but the only factions who participate in FW are Amarr, Gallente, Caldari, and Minmatar, not the Triglavians.
The Triglavians do show up in /sovereignty/map/, but only in 27 solar systems. It turns out this is their new region they’ve claimed called Pochven. Wanting to do better than 27 systems, I kept looking…
Looking in /wars/ is all about player vs player conflicts, not the Triglavians.
Looking in /corporations/npccorps/ I found 7 corporations tied to the Triglavians, but not enough to get a solid list of invaded systems from.
Finally I decided I may just have to parse through the list of kill reports (killmail) that are generated for every ship destroyed in Eve. The logic was, if you were killed by a Triglavian, then the Triglavians must be invading that system. Fortunately, Squizz Caphinator has a site called zKillBoard which scrapes all killmails and offers his own API to get statistics on the ones of interest. Particularly this page of Triglavian kills, and this API endpoint for getting the stats on them. Parsing through this data revealed deaths by Triglavians in 53 of the systems in New Eden (and 47 more in Abyssal space (their realm)).
After all of this, I stumbled upon https://kybernaut.space/invasions which lists 192 Triglavian invaded systems, complete with the spectral type of the star involved and groups invasions into 4 stages. The site also offers a JSON file for machine readable data. It’s unknown where this site gets their data. Hopefully it wasn’t gathered by hand.
All of this put together — the star attributes, the temperature to color mapping, the Triglavian logo, and the list of invaded systems was enough to create a Hertzsprung-Russell diagram of the stars in Eve Online, with the Triglavian invasions laid on top of them:
Since the original claim was that the Triglavians are interested in “young blue stars,” here is another view using age on the vertical axis:
While there does seem to be some congregation of invasions in the blue, light blue, and yellow stars, there is not an overwhelming preference for one type of star over another. The exception here is that “Final Liminalities” the systems which the Triglavians have permanently claimed for themselves (and arguably want the most) are significantly hotter than the average star.
But if you broaden the scope to all invasions, the relationship disappears.
Since my driving question is “which systems might the Triglavians invade in the future?” I’m concerned with all invasions, where it seems no star color or age is undesirable.
Security Status and the Geography of Eve
In Eve, all solar systems have a security status. This is a number between -1.0 and 1.0 with higher numbers being safer. Systems are divided into subtypes by security status.
Security status loosely represents how safe you are from non-consentual PVP (player vs player combat). In highsec, this is regulated by the response time of the police (Concord) and by the strength of turrets around stations and warp gates. In lowsec, there is no police response, but there are still (weaker) protective turrets around stations and warp gates. This is effective at reducing non-consentual PVP, but doesn’t eliminate it (even in 1.0 systems, particularly trade hubs).
Eve Geography
There are 8,285 systems total, divided into New Eden, Wormhole space, Abyssal, and Penalty systems.
- The 200 Abyssal systems and 50 Penalty systems have no stars, warp gates, planets, or moons, but do have system ID numbers and names. I tend to ignore those 250 because they have no stars and thus aren’t “solar” systems.
- New Eden is composed of 5,431 systems networked by warp gates (with exceptions) and is divided into Empire Space and Nullsec.
- Empire space is 1,907 systems, and is divided into Highsec and Lowsec
- Highsec systems have a security between 1.0 and 0.5. (1,212 systems)
- Lowsec systems have a security between 0.4 and 0.1. (695 systems)
- Nullsec systems have a security between -0.0 and -1.0. (3,524 systems)
- Wormhole space is 2,604 systems and are not connected to the warpgate network and always have a security of -0.99.
A quick look at system counts vs security status reveals that the Triglavians are congregated exclusively in high and low sec (Empire Space).
By now you now I’m a stickler about color, and had to get the security coloring accurate as well. After a lot of screenshots, and color histograms, I’ve figured out a few things about the relationship between security status and it’s color code in game. First of all, each solar system has a true security status which is a float number with 6 digits after the decimal point. However, the security status in game is a 1 digit float number.
Through measuring the colors of a variety of true securities, I discovered the color used for security status in the route planner uses the rounded security status and the map (first picture) uses the true security status for color. Also, the rounding behavior is 0.05 rounds up, 0.049 rounds down to the nearest 0.1, such as:
System — True Sec — Round Sec
Usteli — 0.950595–1.000
Tew — 0.949794–0.900
Things get weird around a security of zero. Securities > 0 are in lowsec, and securities < 0 are in nullsec, so 14 systems between 0.01 and 0.049 had to be manually rounded up to 0.1 sec.
Lastly, I think of highsec as the ‘land’, lowsec as a continental shelf, nullsec as the deep ocean and wormholes as the abyss. To visualize this, I tried to create a “hypsometric curve” of all solar systems by their true security status. And I want the curve itself to be in the security color used in game.
Now let’s put all of this together.
Empire space is 1,907 of 8,035 systems, or 23.7% of systems.
After I saw that the Triglavians don’t particularly care about star color, but do care about security status, the question became why? If they want to anchor their main systems on hot stars, then why not claim a large section of nullsec with blue stars? One theory was the Triglavians are really after their ancient enemies — either the Drifters or maybe Sansha’s Nation. However, after pulling the systems those factions have invaded from zKillBoard, I found that there is zero overlap between the systems where players have died to the Triglavians, Drifters, or Sansha’s Nation. So the ‘Triglavians are after their ancient enemies’ theory is dead.
Conclusion:
The Triglavians have wreaked havoc on New Eden, severing the biggest trade route and killing over 40,000 players to date. A comprehensive analysis of the systems the Triglavians invade has revealed that they do prefer hotter stars for their “final liminality” systems, but will invade systems regardless of star color and age. The Triglavians do have a strong preference for system securities over zero; they only invade Empire space. This is 23.7% of systems in Eve which is hardly a small hitlist.
If you’d like more details, source code, or to extend my work, my Colab/Jupyter notebook and supporting files can be found on GitHub.
Future work:
Two patterns I haven’t checked yet are
- Do the Triglavians target bottleneck systems (like Niarja)? Define a bottleneck system as a high number of jumps needed to travel in a circle and return to the starting system by a different way than you came.
- Is there a relationship between Triglavian invasion status and how many jumps to the nearest Pochven system? Are the Triglavians defending a “territory?”