.Torchwood Archives
Torchwood Archives

LMeve dev blog: tuning SQL performance and EVE SSO

Hello industry moguls and third party devs of EVE o7

First off, I'd like to say I respect Rixx Javix greatly for his last post about EVE industrialists and his respect towards them. Much appreciated, dear sir! But today's dev blog post will be about three other things. First is a solution to the performance problems that Aideron Technologies instance of LMeve was having recently. Second is an announcement of a new feature, which thanks to @CCP_FoxFour will soon become widely available: ability to log in to LMeve using your EVE Online credentials (EVE SSO). Last but not least, I've added the new Blueprints.xml API endpoint.

Ohnoes, LMeve slows down!

I've got numerous complaints from my corp members recently about LMeve being slow and unresponsive. It was apparent on many subpages, so at first it was hard to pinpoint. Our database has grown over the past two years, and I thought this performance hit was caused by the amount of records we have accumulated:


When you look at it, there is a few hundred thousands records there. But usually we only need to display the current month, and the rest has to be filtered out:


This prompted me to have a look at how I filter out data by dates to show the current month only:

SELECT (...) FROM (...)
WHERE date_format(beginProductionTime, '%Y%m') = '${year}${month}'
AND (...);

At first glance it looks completely logical (and it actually works). I know the current month and year, so I only select records that have their year and month equal to the current one. But look closely what I've done there. I convert a DATETIME field "beginProductionTime" to a string which shows year and month in YYYYMM format, and then I compare this string with another string. As you probably know, comparing strings is much slower than comparing numbers (it's why in databases you use indexes on text fields that need comparison). But I made it even worse; besides comparing strings, I converted DATETIME, and I did that for each and every record encountered by the query!

Here's a piece of advice when you write an SQL query that sifts through a lot of data:

  • don't run unnecessary functions or conversions on database fields that you use in WHERE clause
  • create indexes on TEXT and VARCHAR fields if you have to compare them

Each function which you put in there will have to execute for every record in the table, which will adversely affect performance.

When you take the two rules above into account, fixing my queries was pretty simple and straightforward. Instead of converting DATETIME values to string, I converted the compared string into a DATETIME:

SELECT (...) FROM (...)
WHERE beginProductionTime BETWEEN '${year}-${month}-01' AND LAST_DAY('${year}-${month}-01')
AND (...);

See? The values I compare beginProductionTime against are only evaluated once, instead of for every record, which means the whole SQL executes way faster than before.


Old query execution time: 37.4 seconds

New query execution time: 0.87 seconds

Op success! o7

Damn, I forgot my LMeve password again

lmeve-ssoWell, this kind of excuse will not be possible anymore, because thanks to @CCP_FoxFour and the limited EVE SSO trial, LMeve can now benefit from the SSO mechanism. CCP FoxFour explained SSO in detail in his dev blog here. How does this work?

  • LMeve redirects user to SSO at https://login.eveonline.com/
  • User logs in with his EVE Online login details and chooses one of the characters
  • EVE SSO redirects user back to LMeve
  • LMeve confirms with the SSO server that the login is valid
  • LMeve accesses the character name and ID and checks if that character is allowed to use LMeve (character must belong to the corporation configured in LMeve, and that character must also be linked to an LMeve account on "Characters" page. Users can do it on their own using their API keys.)

This is of course simplified exchange, because special token and secret values are also exchanged to make sure that nothing got spoofed on the way.

SSO feature for LMeve has already been developed and tested, but to set it up in your own instance of LMeve, you will need a special "client_id" and "secret" values. These values are similar to API keys, and you will be able to generate them  on the new 3rd party developer page (beta of this page working with Singularity server is already available).

New API endpoint

The last feature is the addition of Blueprints.xml API endpoint, which returns data about all the blueprints owned by a corporation, both originals and copies. Information retrieved from it contains ME and TE levels. Previously LMeve users had to input ME and TE manually for each blueprint owned by the corporation. With this new endpoint LMeve does all this automatically. This way all cost predictions made by LMeve always use up to date ME levels.

That's all for today!

You can download the latest LMeve version from GitHub.


(Un)intended game mechanics

EVE is not the only game where unintended game mechanics emerge, but it is a great example of how creative players can be.

Map OPC1 in Quake 3 ArenaFor example, have you ever heard of "strafe jumping" in Quake 3 Arena or other games on Quake's engine? It's a technique which allows players to move around the map much faster than originally intended by the developers. A whole "trick jumping" community emerged around this unintended gameplay, where players would learn and share creative ways how to move from point A to point B on original or custom Quake maps.

Reading forums I stumbled upon a post, which complains about Incursion mothership sites being closed "prematurely" by a group of players and how this is "griefing" the whole incursion community. Players who claim to know EVE and its game mechanics quickly replied that this way of playing incursions is in fact the orignal way intended by the developers. The question arises: is it really? And what should game designers do when players use game mechanics in an emergent and unintended way?

Before we answer these questions, let's have a look at one more example: jetcan mining. New players might not realize, but Mining Barges didn't always have such spacy cargoholds as they do now. One or two cycles of Strip Miners was enough to fill them completely. Bah, Mining Barges in fact didn't even exist initially. Normal combat ships were used for mining, and because of their limited cargo space, players had to dump their ore rather often. Secure Containers (with up to 3900m3 of capacity) could be safely anchored in space and used as temporary 2005. before hauler pilots could pick the ore up and transport it to the nearest station. Each ship can however eject a jettison container, which has a capacity of 27,500 m3, which is far more than anchorable containers. Guess what miners started to do? They used jetcans as their temporary ore buffers. The downside of this was that anyone could take ore from jetcans, but back then it wasn't very common to harass miners - the world of EVE was so big and there was many things to do more interesting than ganking mining ships.

Was this mechanic intended? Now we know that clearly it was not. But back then you had an alternative: either anchor a Secure Container, which you had to pay for first, and then spend 60 seconds on anchoring it, or simply right click and choose Jettison and get nearly 10 times as much cargo space for free. It doesn't take a genious to realize it was (kind of) a design flaw, used by the players. Jetcans high capacity was intended for completely other purpose - to preserve all the cargo which survived the ship explosion, or when you wanted to transfer cargo between ships in space.

What could the game designers do if the mechanic of jetcan mining wasn't intended?

First and easiest, they could simply accept the emergent gameplay and conisder it a valid use case. Secondly they could add bigger anchorable containers to game, so use of a jetcan would simply become less favorable thing to do. Unfortunately, this would break other game systems. Secure containers are "compressors" of sorts. They are bigger inside than they are on the outside by a factor of 1.3x. But if CCP added containers bigger than jetcans, there would be no ships in game that could carry such a big container. The first thought that comes to mind is "if containers are already bigger on the inside, let's just increase their compression ratio, so they are bigger than jetcan but still fit in cargohold". This however would affect hauling, making logistics a bit too easy.
"Well" you could say "Let's just increase the cargo space of the mining ships then". Which again is bad design decision if you look at it, because Mining Barges with huge cargoholds would simply be more favorable to fly than Industrial ships, making the latter obsolete.
"Wait" I hear you say "But mining barges in the end did get cargoholds bigger than jetcans". Yes and no. Mining ships has got "Ore holds" which can only hold Ore, and cannot be used for any other types of cargo. This way Barges didn't obsolete Industrials and Transports, which have general purpose cargoholds. But such specialized cargobays didn't exist in game back in 2005, so game designers couldn't use them to solve the unintended jetcan mining mechanic then.

Let's get back to incursions. How are they supposed to work?

  • incursion consists of a constellation filled with random sites, which have varying tiers of difficulty
  • all systems affected by incursion have NPC induced debuffs
  • NPCs are tuned in such a way which prevents to complete it solo
  • with each completed site NPC imposed debuffs become slightly weaker
  • once players complete a specific amount of lower tier sites, a boss site spawns
  • to encourage players to complete sites, each participant gets the same amount of ISK after the site is completed.

2011.'s the unintended part? The rewards for completing lower tier incursion sites is high enough to make it the best ISK-making activity in high sec space. Players have no intent on completing the boss site, because farming Vanguard sites simply pays better. Now we're back to the original forum post I mentioned at the beginning. Is completing incursions griefing? Or is it just playing the game the way it was intended to be played?

I am not the game designer, so honestly, I can't know for sure. In most games farming is not desired, because it devaluates the rewards for the more casual players, who can't invest the same amount of time (it would be ISK and Concord LP in incursions case).

If I were the game designer, how would I make sure low level incursion sites are not farmed?

There could be a couple of solutions, starting with a simple rule: If enough lower tier sites have been completed to spawn the boss site, I would reduce the rewards for completing the lower tier sites (even down to zero). This way I would make it undesirable for players to keep running lower tier sites instead of completing the boss site. If instead of a hard cut it was a gradual decrease, it would work even better.

One more approach would be to keep lower tier sites from respawning once the boss site has been spawned. Increasing reqrds for boss sites would be risky, because no one would attempt low sec or null sec incursions, if high sec mothership sites dropped the Revenant BPCs.

As you can see, solutions that would stop people from farming lower tier sites are simple. The fact that CCP didn't do anything against incursion farmers means that this kind of player behaviour is not entirely unwanted.


Invention, Tiericide and Unlimited Skill Queues

Invention and Reverse Engineering are one

On November 4th Phoebe is going to be released and it will bring a second wave of industry changes, this time focusing on Invention and Reverse Engineering, which will be merged into one industrial activity. Both activities are very similar: they take some items (initiator, modifiers) put them into a lab, and give Tech II or Tech III blueprint copies as a result. Because of these similarities, CCP decided to put it all together:

phoebe-inventionAs you can see from the graph, Data Interfaces are being removed. CCP Ytterbium said that they don't provide any interesting gameplay (besides you need to obtain them if you want to start doing Invention). All Data Interfaces will be reimbursed when CCP removes them from the game. If I were you, CCP, I would leave them in game as more less useless collector items, but that's just me: "These units used to be essential for Invention in the early days of capsuleer industry, but since every laboratory in the cluster has them built in now, they've become obsolete".

Another change is Meta Items, which will not be used for Invention after Phoebe. Instead, CCP will add additional Teams, just like the ones introduced in Crius, but these new ones will affect Invention input instead (=reducing Datacore cost).

The formula which governs the succes rate has been changed and will now give arbitraly 50% at max skills.

Base * ( 1 + (Science 1 + Science 2)/50 + (Racial Encryption)/100 )

This means about 20% lower chance if you used Meta 4 items, and about 40% less for Reverse Engineering. While this seems an obvious nerf, combined with the multiple possible outcomes and some datacores returned for failed attempts, it does not seem so bad.

What are the multiple outcomes? Invention currently has two possible outcomes: an outstanding success, which results in a ME2/TE2 BPC, or a complete failure, which results in, well, nothing. This will change after Phoebe, as more possible outcomes will be introduced (chances for maxed skills):

  • 2,52% chance  - Success (exceptional): gives a ME +2 and TE +3 to the resulting BPC
  • 5,04% chance  - Success (great): gives a ME +1 and TE +2 bonus to the resulting BPC
  • 10,08% chance  - Success (good): gives a TE +1 bonus to the resulting BPC
  • 32,76% chance  - Success (standard): basic unmodified BPC
  • 32,24% chance  - Failure (standard): returns 50% of datacores
  • 9,92% chance  - Failure (poor): returns 25% of datacores
  • 4,96% chance  - Failure (terrible): returns 10% of datacores
  • 2,48% chance  - Failure (critical): no datacores returned

Having multiple outcomes is more lifelike, but as a result, you will obtain different ME/TE BPCs, which will affect the ability to plan exact material consumption. Tools like LMeve will have to use average material amounts instead of definitive amounts like they do now. Fortunately, percentage difference is so small, that additional logistics resulting from this change is negligible.

With the percentages above, Tech II manufacturing materials should be calculated using ME 0,2 (0,998 * material amount)

The required Datacore amount will also be modified, because on average, 38,5% of datacores will be returned (0,615 * datacore amount)

CCP is also going to do a big cleanup in the Science Skills and Datacores required to invent items, in order to distribute Datacore usage more evenly (right now Mechanical Engineering and Electronic Engineering are the dominating ones). I'm sure you're interested in details, so I will point you to the original dev-blog by CCP Ytterbium.

Removal of meta items from Invention is not a random thing

It is connected to another set of changes: Module Tiericide that has been partially introduced in Oceanus, and is described in detail in this dev blog by CCP Fozzie. While I like the idea of item rebalancing, and the general direction Fozzie's team took is generally ok, the yet-another-renaming of modules is in my opinion a terrible idea. But let's have a look at the new names first:

  • Upgraded - for named modules where no specialization is possible
  • Compact - for named modules that specialize in reduced fitting cost
  • Enduring - for named modules that specialize in lower cap use or otherwise longer running time
  • Ample - for named modules that specialize in extra capacity (damn, I never used Ample as an adjective except for... you know what :x)
  • Scoped - for named modules that specialize in longer range
  • Restrained - for named modules that specialize in reduced drawbacks

First, there is gigabytes of information stored in EVE blogs, third party programs, saved fittings and player-written guides. When modules are renamed en-masse like this (and in the past), all this information becomes obsolete. Ship Fittings stored on websites and blogs won't import anymore (despite the great feature introduced in Oceanus, which allows one to copy & paste ship fittings between EVE and websites or third party apps).  Not to mention the ability to find anything on the market. Previously, when I was searching for a specific Stasis Webifier I would just enter "X5" into the search window. After the Module Tiericide I will enter "Compact"... and it will give me thousands of results, instead of the single Webifier I'm looking for. Not to mention a large part of the game flavour (different item names, just like in real life) will be gone.

Dear CCP, Tiericide is great, but seriously, please reconsider the new naming scheme. Even a compromise like "Compact 'X5 Engine Enervator' Stasis Webifier" will be much better than the bland names proposed in the dev blog.

Unlimited skill queue

This is one of the changes I'm looking forward to most. As my play times have been greatly reduced in the past couple of years, I not always have the time to log on every day to add skills to training queues. With the ability to train all three characters on the account at once it's become even more of a problem. CCP realized it can be an issue for the players, so they are going to remove the artifical 24h cap on the skill queue. EVEMON skill plan import from clipboard coming next?


iPad games to play when PC is away

There are times when it's not possible to access the gaming PC, be it a hardware failure, summer vacation or a trip to family. In my case, the last two weeks was house repairs, which means the PC was hidden deep under furniture from the other rooms.

How to play EVE Online in such a case? Well, if you have a laptop with a separate video card, then you're lucky. But what if you're only left with an iPad?

Well, you won't be able to play EVE on it yet, but there surely are some other great AAA titles available.

First game I've played when my PC was unavailable was...

World of Tanks: Blitz

That's right, Wargaming made an excellent port of their flag game, World of Tanks for Apple iOS. It plays great and while it's easy to learn, it is very hard to master. It's worth mentioning, that the game is not an exact 1-to-1 port from PC. Game rules and the content are a little different.

First, there is only a Random Battle game mode, where during a seven minute match, two 7-player teams try to blow the other team up, or conquer "the base", whichever comes first.

Visuals are a little different, too. WoT: Blitz looks much like older PC version of WoT, but considering this game is  running on iPhone or iPad, visuals are simply excellent.

Unfortunately for PC WoT players, all the progress that you've made on PC will not transfer to your tablet, mainly because there are only three Tech Trees: German, Soviet and US. The amount of available tanks is smaller, too.

World of Tanks: Blitz is free to play, just like it's PC counterpart, so in order to start playing, you don't have to pay. If you are willing to support Wargaming devs for their hard work, you can choose between buying premium tanks (which are usually faster, but weaker than their free counterparts), adding premium time (+50% to exp and rewards), or converting experience points earned by premium tanks to so called "free experience" that can be used to unlock more "free" tanks on the Tech Tree. If you don't want to pay, that's ok, you don't have to.

To sum up, you get a great quick fix PVP tank game, that looks much like it's PC counterpart, that you can play when your gaming rig is inaccessible.

IMG_1388 IMG_1404 IMG_1393 IMG_1392 IMG_1391 IMG_1390 IMG_1389 IMG_1438

What was the other game? You've guessed it right, it's...

Hearthstone: Heroes of Warcraft

Hearthstone is a digital Collectible Card Game by Blizzard, set in the Warcraft universe. This game is a complete port of the PC version. The cards you bought or unlocked on your PC will wait for you on your tablet. The same applies to progress and stats. When playing the game online, you play against both tablet and PC players.

Visuals are amazing and besides some textures being in a slightly lower resolution, the game looks exactly identical to the PC original.

The game has several playing modes, but all of them, even single player, require a network connection. You can test your deck and level the basic cards by playing against AI, you can play against other players in Casual mode, or in Ranked mode, where each win gives you a "star" (and a set of stars make a rank), and each loss above rank 20 takes a star from you. The last mode is "The Arena" which is nothing else, but a draft tournament. You choose your cards from a random pool and compete against other players.

Hearthstone is free to play, and you can buy additional cards either completely free by using in-game "gold" or with real money. The same applies to Arena entrance fee (150 gold or 1,79 EUR).

Is Hearthstone fun? Is it challenging? 20 Million players think it is.

Photo-20-04-14-23-33-15-2 Photo-20-04-14-23-33-15-3 Photo-20-04-14-23-33-16-4 Photo-20-04-14-23-33-17-9 Photo-20-04-14-23-33-19-13 Photo-25-04-14-09-30-56-0 Photo-2014-08-04-18-10-55_1349

Wrapping up

As you can see, tablet games are already catching up to what's available on the PC. I hope a mobile client for EVE becomes available at some point (even with reduced set of things that a pilot can do).


Evernus – third party market tracking app

I have recently stumbled upon a third party program, which in my opinion, deserves a spotlight.

Evernus is a market tracking app made for Windows, but it is open source and written in Qt, which means with a little effort it can be compiled for Linux and Mac as well (there's actually a .dmg ready for download). This is something worth noting, because there is almost no EVE apps for Mac or Linux at the moment.

What does it do?

Evernus is basically a market/margin trading tracker application, so it is focused on prices comparison and buy/sell order tracking. It takes character skills into account when calculating profits and taxes, so it is pretty accurate. Of course to track orders and automatically update your character's skills, you need to supply the app with your API key.

If your character doesn't have all trade skills at level 5 yet, but you would like to experiment and see if training them to 5 is worth it, you can manually tune all relevant skill levels as well.

evernus-character-full1Of course Evernus shows pretty graphs, so at a glance you know if you're making profit or not.

Don't like graphs? Want exact values? You're covered, simply view it as a table.

evernus-assets-full2 evernus-orders-full2Evernus can use price data from several sources. First, it's your EVE client's market exports. Secondly, it can scrape client cache (but please mind CCP considers it a breach of EULA, and Evernus shows a proper warning, if you try to enable this feature), or from internet. Lastly, you can also import your data from other apps such as EVE Mentat.

What's also a very useful feature is in-game browser integration. Evernus can run a tiny web server on your PC, and you can access it directly from the inside of the EVE client, simply by opening in-game browser and pointing it to your own computer's address, plus a port number which you set in options.


One more thing

Evernus is being actively developed by Pete Butcher, a member of polish EVE Online community. New features come out literally DAILY. Moreover, Pete contacted me, and LMeve integration is coming soon as well (Evernus will be able to access LMeve's features like Industry Task tracking and item manufacturing costs).

All in all, if you're a station trader, Evernus is a tool really worth looking into.


EVE Online cloaking effect evolution

The constant evolution of EVE is one of the main things that keeps me hooked to it. Today's post is one of those posts about EVEolution of EVE :-)

First discovered by those, who frequent Singularity test server, and then officially confirmed by both CCP Seagull and CCP Manifest in dev blog and on YouTube, Cloaking Device effect gets a visual overhaul in Oceanus! This new effects complements warp and jump animations and the recently added warp blink after ship leaves and before it enters the grid. This new cloaking effect looks quite original, but it bears some similarity to Predator's cloak from Aliens, which was most likely the inspiration for this new shader. Behold:

But did you know this is not the first time CCP attempts to change the cloaking effect?

First time CCP done it was in 2007 when Trinity was still in development. In Trinity CCP has done an immense graphical overhaul. All starships have been redesigned into higher poly models and have been given higher resolution textures. As you know, Cloaking Device icon shows half of the ship visible and the other half cloaked, so the effect introduced in Trinity was obviously trying to reflect that:

Second attempt was in 2009 when Apocrypha was being developed. If you logged on to Singularity to have a look at the then-new Wormhole Space, you could also notice this "Triage" like cloaking effect:

Eventually, both of the above visuals have been rolled back to a simple "vanishing" animation.

I must say the new cloaking effect in Oceanus looks really cool and I hope it stays in the game. It is just as good as visuals in some modern sci-fi series (but please mind the one in EVE is rendered in real time, while the ones on the TV shows have been rendered during visual post-processing).

Kudos (again) to CCP's art departament!


LMeve dev blog: security, guidelines and a handful of new features

In the last couple of weeks I focued on polishing LMeve. Especially that the project has a new contributor, who is both user and developer at the same time ;-) Say hello to @MarqAideron from Stay Frosty!

Security & CCP Guidelines

About two weeks ago @FuzzySteve suggested that EVE third party devs should use nonce values (also known as CSRF tokens) in all their web apps.

What's that? Well, it's a security mechanism, and a quite important one, too.

Let's assume you are an admin of an open source web application (whether it's a forum, blog or anything else). You log in to that application (of course using secure HTTPS protocol and a very secure password). Application then creates a random session identifier, verifies if user is connecting using secure connection and verifies the credentials. Then website then sends the session identifier back to the web browser in a cookie file. Each time you navigate around your app, web browser sends the cookie file to the server, so server knows which user he's talking to.

Now let's assume a hacker wants you to create an account for him in your app. Of course he can't simply ask you to do it, but he knows your app, becuase it's open source. He doesn't know your password, or your session cookie, because it's completely random. But he does know that adding a user in your app is done by this URL: https://your-app.com/?action=adduser&user=hacker_login&pass=1eK4Gaq4gj$g==

All the hacker needs to do, is make you open this URL while your web browser is logged to the application, for example by sending you an email with some embedded images. However, one of the images addresses is not an image at all: it will be the URL which creates a new account! What does your browser do when you open such email? It will attempt to load all images be default, including the crafted URL. It's your browser, so it knows the session cookie for your application. Server will belive this is a genuine request coming from you, and application will create the account for the hacker! I don't have to tell you what happens next. This is an attack known as Cross-site Request Forgery, or CSRF in short.

How to protect against this?

First: use POST in your forms instead of GET. This will make it harder for the hacker, because he won't be able to use a simple URL to deceive the user (he will need a web form to send the crafted request).

Second: add a random hidden field in all your forms. When you draw the form for the user, you add a field with random "token" value. Save this token on the server side (it can be a session variable or a record in database). It should also have a short expiration timeout. so it cannot be used if it was somehow intercepted by the hacker. When user fills in the form and submits it, you verify if the value sent by the user is equal to the one you saved earlier. If both values are the same, request is considered genuine ,and otherwise it should be ignored.

CCP Bugartist followed on the conversation started by @FuzzySteve, and suggested a way to generate the CSRF tokens using openssl:

Don't abuse the API, or else...

A few days later CCP FoxFour suggested adding an User-Agent field in third party apps, because instead of banning API (ab)users, CCP would prefer to contact the developer instead.

LMeve poller already used context setup in file_get_contents() so I simply added User-Agent field to it. Op success!

LMeve new features!

Ok, end of technicalities, let's get down to business ;-) Last two weeks saw three new features added.

API character Self-register

This one was well overdue. I have mentioned it for the first time about a year ago. Why is it important? By default, LMeve doesn't know which in-game characters belong to which person. This information is useful, because LMeve can then highlight the information regarding user's characters, or simply limit the amount of information displayed only to these characters.

Previously only people with "Administrator" permission were able to link LMeve accounts to in-game characters, but with this new feature everyone can do it now. And it's very simple, too.

First, input your account level API KEY first. If you don't have a key ready, simply follow the link.

api-self-linkWhen ready, user clicks OK. LMeve will now access personal API (just this one time) to download the characters. Then it will compare the corporations these characters belong to with corporation that owns this particular instance of LMeve. When corporations match, LMeve will check if these toons are already visible in corporation API. If all checks are green, characters become linked to the account:

api-self-link2Simple, eh? And no administrator input is needed.

This will become even more important when EVE SSO becomes openly available, because once characters are linked to the account, users will be able to use their EVE Online password to log in to LMeve. there will be no need to remember another password!

Industry Facilities and Logistics

Everyone who's done some industry in EVE knows just how important logistics are. Without ingredients corporation cannot invent or produce anything, so a constant flow of materials is the only way to keep productivity high (and this in turn directly impacts the amount of ISK earned).

Previously I've added a way for users to track the materials needed for their specific tasks, so users could refill their own labs easily. Most corporations however has a few dedicated pilots who do hauling and logistics, and they would benefit if they knew the materials needed by a specific assembly array, rather than specific character. With the information about Industry Facilities now available in the API, we only need to assign tasks to specific facility.

facilitiesWith this information available it's then quite easy to calculate the materials required in each Lab:

facility-logisticsI've done the logistics and hauling recently, and you can believe me, it's really useful!

What to build to become a real EVE Online industry mogul?

This is a tricky question. Profit on a single item is not enough to make a well informed decision, because some items, while profitable at single unit level, don't sell very well. Other items have smaller margins, but because of their high sales volume, they give much higher profit. So what should you build? LMeve comes to the rescue.


Under Database you can now find Profit Explorer and Profit Chart. The first one is very similar to normal Item database view, but it also calculates manufacturing cost and compares them with market prices. Please note that:

a) items must have their prices tracked (you must turn on "Fetch Prices" in Database for each item and each material; only minerals are turned on by default after LMeve installation)

b) items must have a bleuprint (so they can be built and their manufacturing cost can be calculated)

That's all for today!

You can download the latest LMeve version from GitHub.


Tranquility connectivity issues – August 12


EDIT: Tranquility and eveonline.com are now back online

Since the official website and forums are down, I put this friendly heads-up here:

Tranquility is suffering from a third party networking problem, and CCP is working with their partners to resolve the issue. Tranquility,  EVE Online website and forums are currently inaccessible.

This is an excerpt from CCP Falcon's forum post:

Hey guys,

Apologies for the connectivity issues some of you are experiencing right now. We're currently having a few login issues and are investigating.

I'll update this thread once I have more information.

Thanks for your patience, and apologies for the inconvenience!

- F



Good luck to CCP and their ISP in resolving the issue!

PS. Feel free to check Chribba's eve-offline website to check if EVE is back up.


How Crius affects industrial day to day operations


Many bloggers already covered in detail all the changes introduced by the newest EVE Online patch known as Crius. Some have even speculated, how it will change industry in the game.

Some time has passed and we can now answer the question how it really affected industrial corporations. We will do that by looking at each feature mentioned by CCP Greyscale in his dev-blog.

No more remote blueprint installation

This feature is a major game changer, and a big pain for many industrialists. Before Crius it was possible to install BPOs in POS labs remotely, from the safety of NPC station. Well, it's not possible anymore. CCP believes that industry needs more risk involved, probably because the rewards can be pretty high.  Solution is simple: use NPC station for copying, and store your precious BPO there. Another idea is to have a copy-only POS with one Design Laboratory and some sizable defenses. TL;DR: it is an inconvenience, but there are workarounds.

ME and TE

No big changes here. Blueprints are usually researched once after they've been bought, so in typical day to day operations nothing has changed. What did change is that the perfect ME is now well known without using blueprint calculators - and is simply equal to 10.

Invention and copying

Tech II BPCs invented without decryptors now yield ME 2% and TE 4%, but since all Tech II blueprints had their base materials multiplied by 1,5 it means that invented items actually take 2% less materials than they used to. However BPO owners are much less happy, because their perfect researched blueprints now require 35% more materials than they used to. Aideron Technologies can consider themselves lucky in that regard, because we did not own any Tech II BPOs.

Copying is a funny one, because some blueprints took much more time to copy than to manufacture. This has been changed in Crius to a static 80% of manufacturing time. CCP also changed invention and it now takes 1 run from a BPC, so you can either use 1 run BPCs or reuse a multi run BPC as many times as the number of runs on it. This means less clutter in corp hangar, as we no longer need so many BPCs at all times. This one actually seems to be a good change.

Slot removal and NPC job cost

Right now even jobs which you install in your own POS cost you ISK. This means on top of fuel costs to run these 10 POSs, you will also need to pay ISK for each and every job you installed in them! For many people it seemed simply outrageous. But fear not, with slots gone, we only need 1 or 2 Large POS now. And with the standing requirement for anchoring Control Towers gone, you can freely move our operation in case a system gets too crowded and the install costs are too high. According to the formula, if we assumed uniform distribution of industry jobs over the whole k-space, the cost index is about 0.0136, which translates to NPC install cost of 1,36% of material value per manufacturing run, but it can be more (or less) depending on the system you're in.

With the number of POSs required to run industrial operation substantially reduced, corporations will save tons of ISK in fuel. This did not affect ice and fuel prices just yet, but probably will in the nearest future. On the other hand corporations have to pay for every job they installed, even at their own POS. Let's see which is bigger: fuel savings or install costs.

We used to have 5 Caldari Large POS towers before Crius, and now we only need one.

Pre CriusAfter Crius
5 Caldari Large1 Caldari Large
Monthly fuel costs
3082M ISK616,5M ISK

This is a reduction of 2466M ISK monthly. Now 30 days of manufacturing in our system (cost index 2,6) would yield 416M ISK of additional costs. So in the end this change is a very much positive one, saving us roughly 2 billion ISK monthly.

UI changes

I love the new S&I UI in terms of both features and look & feel. Previously installing a single job required 7-9 clicks, now it's 1 drag and 1 click. Awesome! The new GUI is much more informative, too. While we still need LMeve to do job planning at the corp level, at individual player level, the amount of information displayed in the new Industry GUI is more than enough. Granted, the new UI is still a little buggy, but all CCP needs to do is add a little polish here and there.

Unfortunately, like every rose, this one has some thorns as well. The new UI is really bad performance-wise. Our corporation is doing a heavy duty operation and we own hundreds of BPOs and thousands of BPCs, not to mention about 120 containers in corp hangars. This new UI will try to scan for each and every single bleuprint, so with the amount of data our corporation has, it becomes really bad.


  • When I open S&I window, I have to wait 21,6 seconds before I can interact with it,
  • Once it loads, I drag a Tech II BPC into it and the game literally freezes for 18,2 seconds,
  • Then I enter the amount of 10 runs (game freezes for 3 seconds),
  • Then I click "Start" and the game freezes for an additional 14,7 seconds,
  • Then I drag another BPC and the story repeats.

As you can see, all time savings related to the reduced amount of clicks are quickly diminished by the amount of time I have to wait.

EDIT: According to CCP Nullarbor and Crius 1.8 patch notes, one of the performance issues when submitting industry jobs has already been fixed. Devs are still working on performance improvement for long blueprint lists.

By the way, while I appreciate the possibility to install jobs from a container, the list of corp hangar divisions and containers under input and output is way too long in our case. A tree approach (only hangar divisions visible initially, and containers shown only after you've clicked a specific division would be perfect).

* times measured on Intel Core 2 Quad Q6600 running at 2,4 GHz & with 4GB RAM.

** the performance problem has been reported to CCP in the form of a bug report with attached log server logs

And how did Crius affect YOUR industry processes?


Polish EVE Community hot dropped in Warsaw

EVE Online player gathering Warsaw 2014I was very excited (and a bit worried) about it, because it was the first time for me to organize an EVE Online player gathering. I simply couldn't wait! I am now really happy and relieved, that it turned out to be a really good time for everyone present.

It's that day!

Me and my wife have arrived earlier to set up a counter with ID cards and an attendance list. Additionaly, SokoleOko, a player well known in the Polish Community, wished to give a presentation to say a few words about the status of nullsec. So we've needed to set up a laptop for that as well. When we've arrived at Hard Rock, there was alaready a bunch of people waiting. We've quickly introduced ourselves and started giving out the IDs. People at Hard Rock are very helpful, so all the preparations for the presentation went smoothly. CCP Gargant showed up shortly after, and still well before 19:00. CCP provided an open bar for the participants, so everyone who picked up their ID could go and grab a beer (or in many cases, something to eat as well).

After half an hour we had 75% of the list already there, and we've decided to give it a go. SokoleOko started his presentation about why nullsec is broken, and how to fix it (you can see his presentation here). After the presentation, I went to the stage and welcomed our guest with two gifts, that Polish Community deemed the most appropriate. First was a bottle of vodka, re-branded as "Frachtówka" (polish for "Freighter Vodka"). I quickly covered the story of that label, and feel free watch that history here yourself. The other gift was a beverage as well (we Poles like gifts that are useful!), but it has quite a different story - it was mead, a drink that had been already known to humanity almost 4000 years ago. Afterwards CCP Gargant has officially confirmed that he will be the one running Alliance Tournament this year, and askedthe crowd if there will be any AT teams from Poland. There were two. So Gargant asked if BUFU is in C0ven. Kharim Katelo responded: "It's not BUFU that is in c0ven, it's c0ven that is with BUFU".

With the official part over, people quickly formed into small groups (who know each other from game), and of course everyone enjoyed themselves.

Some time has passed, and Gargant asked me how we should proceed with giving out the swag that Guard sent over a week before the event. Having no experience with this I asked Gargant if he had an idea himself. He did. We had an attendance list, so we've asked the crowd to give out a number, and then asked that person to the stage. People were being asked some trivia questions ("What are the names of the new Sister of EVE ships?") and given a reward when the answer was correct. Besides this, Gargant gave everyone a code for ship skins - either for an Iteron or Nefantar Mammoth. I don't know how Guard knew how many codes to send, because there was 47 people and exactly the same number of those codes!

The official part ended at about 23:00, but this was not the end of the party. Gargant and a bunch of players went on a Pub Crawl, which lasted almost until dawn!

A bit of background

I first spoke with Guard about player gathering in Poland when my blog was appointed an official fansite. Polish Community is a bit fragmented: there is C0VEN and BUFU, there is Unseen Academy, The Nameless Alliance, Exiled Ones, and the rest is either people playing in international corporations, or smaller Polish ones. I wanted to do this, because integrating all these small communities would be really cool.

Guard promised to get back to me regarding this and he did. So I've scouted some restaurants and pubs around Warszawa Centralna, and forwarded their pricings and offers to CCP. We've chosen the most appropriate venue, and CCP Guard reserved it for us (remotely). When it was a week before, he sent over some swag by DHL. In the meantime, I've designed the ID cards (with some excellent feedback from both my wife and from the Community) and then written a script, which downloaded all Corporation and Alliance names from the EVE API for the registered participant's character nicknames. This way all the IDs were filled automatically using Mail Merge ;-) Getting the gifts was the most tricky one, because almost all brands of vodka in Poland have some carvings on the bottle, so it's impossible to glue a new label on them (and the gift would be meaningless if it weren't a "Frachtówka"!).

Op success \o/

Everyone had a great time, and I'm sure we will repeat it in future! Organizing all this was a bit of a challenge (if you've ever herded a bunch of cats, you'll know what I mean), and I'm really glad everything went so smooth. I hope next time we will see more familiar faces from CCP (yes Mr G. , I'm looking at you ;-))!

Polish EVE Community & CCP Gargant ID cards

But wait, Lukas is retired as a player, isn't he?

Well... I was. For the past six months I didn't have time to play games. It's slighly better now, so yes, you can say I'm back :-)