. industry « Torchwood Archives
Torchwood Archives
13Nov/180

EVE industry Profit Chart report for November 2018

Hi industrial minded capsuleers o7

Last month I have published the first Profit Chart report for EVE Online, but it was only partially useful.
Why? Because I missed the most imprtant part required to understand how the report is made.

Methodology

Profit Chart is a module within LMeve application, which compares costs of running the complete production process (invention, subparts, manufacturing) and the lowest sell price.

But what about ME you say? What about Decryptors for Invention?

  • For Tech I items and ships ME 10 is assumed.
  • For Tech II modules no decryptors are used, so ME is 2.
  • For Tech II ships Symmetry Decryptor is used, so ME is 4, and run number on the BPC is 3.
  • For Capital Parts ME 10 is used.
  • For Capital Ships ME 4 is used.

EVE Profit Chart report for November 2018

Let's get in touch

Feel free to comment, if you think other assumptions would be better, or if there is anything unclear that needs further explanation 🙂 I'd like this to be a monthly post, so more useful it is, the better 🙂

Fly safe o7

8Nov/180

LMeve GUI update – Decryptors!

I have recently made two commits to LMeve repository, that add some new functionality and fixed some bugs:

- Added Decryptors to Tech II and III invention
- Decryptor configuration is stored per typeID, so you can choose best decryptor for each item.
- Beautiful LMeve links - added "media" directives for Open Graph and Twitter
- Added Killboard button on login page, if killboard is opened in public mode
- Added print.css for printing pages from LMeve
- View is now rendered to HTML as the last thing, so LMeve pages can now modify title and other header attributes, including media tags.
- fixed JSON output of LMeve Northbound API - numbers are now presented as numbers, not strings (without " quotes)

Speaking of Decryptors. Invention previously assumed no decryptors used (and ME=2 and TE=2 were hardcoded). Now for each item you can choose if and which Decryptor to use.
It will be used everywhere in LMeve - in Profit Chart, in Database and in Logistic Kits. While you choose Decryptors in Database, ME, PE and material lists are updated on the fly, cost calculation requires clicking "Save". This will be fixed in a future release.

Enjoy!

Update is already available on LMeve project page.

29Oct/181

EVE industry Profit Chart report for October 2018

One of the interesting features of LMeve is "Profit Chart". It is able to analyze manufacturing costs (including materials, invention, reverse engineering or manufacturing fees). On the other side it shows the current minimum sell price in Jita and potential profit. It also shows the market volume for the item, so you know if there is much isk to be made, or just a few billion.

Are you interested in knowing which items are best produced in October? Check out this monthly Profit Chart Report for October 2018.

29Aug/140

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.

profit-explorer

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.

7Aug/144

How Crius affects industrial day to day operations

industry

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 Crius After Crius
5 Caldari Large 1 Caldari Large
Monthly fuel costs
3082M ISK 616,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.

Example:

  • 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?

30Jan/146

What’s wrong with Industry in EVE?

The recent survey about industry by CCP Arrow has awakened hope in industry oriented players of EVE. Wait, does it mean something is wrong with the industry in EVE?

To answer this question we should first have a look...

Who is doing industry in EVE and why?

  • alts of PVP oriented characters
  • busy individuals who can't stay logged in game for long

Industry (which is basically how crafting is referred to in EVE) caters to the needs of people who don't want to (or can't) spend a lot of time on EVE. Why? Because industry requires a brief period of activity, and then you are free to do something else. Install another Linux box, change diapers, shoot stuff on another character (* delete where inapplicable). It means industry is a rather passive activity. Should it be made more active? Should mining become a gang activity that requires 100% attention? Should industry be made more active like the hacking minigame was? Well, as long as it adds to the current system, rather than replaces it, I'm ok with it. But EVE requires different types of activities - it is great because you don't always have to grind. Skillpoints are gained regardless if you're logged in or not. There are activitites which require undivided attention, like PVP or Incursions. Or missioning/exploring low sec. There are those which require moderate attention - for example missioning in high sec. And there are activities that require low amounts of attention or none at all. Mining would be example of activity which doesn't require much attention. Do you know why miners are so pissed with James 315 and his crusade to get rid of miners in high sec? Because ganks require miners to pay much more attention that they would otherwise have to. And there comes industry: most of production is done in the safety of a station, be it in high sec or low, or even null, not to mention PI which is as simple as "push button, wait x time, receive bacon".

What's wrong then? It seems industrialists are pretty happy with the state of affairs, no? They have their activities in EVE, that don't force them to sit at the computer for hours on end. So, again: what's wrong?

GUI is wrong. Well, maybe not in a strict sense wrong. It is wrong as in seriously outdated. It haven't changed much over the years. Yes, it was iterated upon, for example when Reverse Engineering was introduced in Apocrypha, but it was rather adding a new record in an already existing database.

The core problem with industry in EVE is clickfest

Every industralist's favourite window

Every industralist's favourite window

Most activities are highly repeatable. You have to login every x hours to start 10 invention and 10 manufacturing jobs. Starting up each job is 9 mouse clicks and 1 or 2 entries from keyboard.That gives 180 clicks just to set up one batch of invention and manufacturing jobs. It's funny how CCP changed the first implementation of PI to reduce the amount of clicks. This is exactly what manufacturing, invention and copying needs: getting rid of the clickfest.

Possible solutions:

  • Introduce ability to start multiple jobs with just one set of clicks:
    • Choose an installation with free slots: Corp lab/assembly array or NPC factory
    • Set up parameters for a single run like you would right now
    • Choose to repeat the same job x times
    • As long as installation has free slots, there are correct number of blueprints and materials that meet the criteria, the job is inserted this many times
  • Make GUI remember past choices.
    • It already remembers if we used Corp or Public installations. Why can't it remember the last invention/decryptor choice?
    • client should remember the choice for each blueprintTypeID
  • pick-installationChange the "Pick Installation" window to have installation list on the left, and production lines on the right, rather than one on top of the other.
    • In corporations with many installations (over 50)  the majority of time is spent on scrolling this list.  Why scrolling? Because the size of the installation list is fixed, and cannot be resized after reaching a certain height.
    • If the lists were displayed next to each other, the height limit would be the size of the window. This should make it possible to see either most or all available installations

Contribution tracking

Manufacturing and invention are very much like real ife work, so many corporations decide to pay their members for the work contributed towards corp goals. Unfortunately besides the API, game offers no GUI to track participation in the S&I program. Even if CCP wanted to introduce it in EVE it will be hard, because some corporations will choose to pay for the time character spent on manufacturing or invention jobs for corporation, promoting long jobs over short ones. Other corporations will choose to promote people who do a lot of clicking, paying for the amount of jobs installed, rather than for how long it took to complete them. There will also be those who would be willing to pay a share of the profit on specific item. As you can see, there is a multitude of options to choose from (which is bad for implementation).

timesheetSince there is no tools in game, Aideron Technologies has chosen to build our own tool (this is how LMeve was born). We have also chosen to pay for the amount of time, because if people run jobs for corp, they can't run jobs for themselves.

What should CCP do?

  • Make a report available to corp Directors, which allows contribution tracking
  • The report should show (for each character)
    • How many jobs have been installed (per activityID)
    • How much time they took (per activityID)
    • How many products (t2 BPCs, items) have been produced

This would allow CEOs to pay their members for their chosen contribution metric. A contribution-to-isk calculator, that says how much corp owes their members would be perfect.

Progress Tracking

tasksCorp members can have many different production tasks assigned by corp. How would they know how many more Heavy Neutron Blasters they should build or invent? This is where progress tracking chimes in. Each character should have a small UI that shows their progress through the tasks that the Directors/Production Managers assigned to them. This way corp member "A" can invent exactly 100 BPCs, and corp member "B" can build exactly 100 modules, not to mention corp members "C" and "D", who will make enough R.A.M.s and tech II parts to make said modules.

Planning

So the corp wants to make 200 Covert Ops Cloaking Devices II. This requires quite some effort:

  • 400 Tech I BPCs have to be copied
  • 200 Ishukone and 200 CreoDron R.Db.s have to be made to enable copying
  • 200 Tech II BPCs have to be invented
  • 50 Electronics R.A.M.s have to be made
  • Photon Microprocessors and Graviton Pulse generators have to be made (4000 and 3000 respectively)
  • Finally, 200 Tech II Covert Ops cloaks can be manufactured
  • of course Logisitcs have to provide all the materials, including PI, moon goo, minerals and datacores

kitsHow did I know how much work is required? Well, everything was in the Static Data Export, all I've done was connect and display that information. What should the GUI do in such case?

  • Insert a Copy task
  • Insert all intermediate Manufacturing tasks
  • Insert an Invention task
  • Insert a T2 Manufacturing task
  • Generate a shopping list for Logistic pilot

Of course some of the items above can be sourced from market instead of manufacturing them in-house. By the way, I'm pretty sure the ISIS interface would be great to visualize even the most complicated production process.

What's wrong with Industry in EVE?

First, it's a clickfest. It takes several mouse button presses to set up a single job. Secondly, game offers no tools to coordinate large scale S&I efforts. The GUI works good enough for a solo manufacturer, who uses either public or limited number of player owned installations, but is completely unprepared for corps which own hundreds of labs and run thousands of jobs each month. There are also no tools for planning or tracking S&I activities of a group.

The result: a multitude of third party tools to choose from

All the above results in players making third party tools which help with tracking and planning:

By the way. You know player-made killboards, right? Ever heard of War Reports feature in EVE? Guess which was first.

21Oct/130

LMeve dev blog #2

A few months ago I've written a post about how the development of LMeve goes, and I feel it's in order to write another one, because a lot of things have been changed and/or improved since that last post in May.

New Features

In the last post I have outlined what new features we want developed and why. Due to time restrictions I haven't been able to implement everything from that list, but I have covered quite a sizeable amount.

lmeve-materials-drake First off, the complete materials list and production cost estimation. Every manufacturer in EVE wants to know which items have the best profit margin. Of course prices of resources fluctuate, so the production and pricing strategy has to be revised in regular intervals.

The material data comes from the Static Data Dump and is correctly affected by the ME level set in the fields seen above (in real time!). If user has the correct permissions, it is also possible to save the ME and PE in the database for future reference (why save it? for automatic kit building of course). Prices are being downloaded from eve-central.com using their own API.

lmeve-kitsSecondly, after one of our members put all the ME levels from our BPOs to the app (thanks!) it was possible to implement the Kit Builder. What is it? As you remember, every member has a list of tasks, that have to be completed within a given month. Each member has a bunch of labs assigned to them at one of our POSs, and has to refill them with materials to maintain the production lines busy. Previously everyone had an excel file with the amounts of materials needed to complete tasks for a given month. Excel. File. Why do we have to use Excel, if we already build tools for thisk kind of reference?

Each task has two buttons now: Full kit and Remainder kit respectively. What do they do? If you press the Full kit button, our app will display a list of materials required to make all the jobs under the selected task (enough for an entire month). The "Remainder kit" button will display the amount of materials required to finish the task (entire month minus what has already been done).

lmeve-tasks1Speaking of Tasks, another one of our members requested a feature that shows the jobs currently in progress (and when they finish). This let's members know when they can log on to cycle their jobs. I think I might want to make two views of it, one summary view (aggregated by typeID and only display the time when the last item of that batch is finished). The current "complete" list of jobs in progress would become the second view.

lmeve-database-drakeNow something else entirely. Ever heard of CCP WebGL? Well, it's a javascript framework that allows displaying 3D ships and other game assets on a webpage. It's the same tech that can be seen in the Ship Viewer on the eveonline.com page. Well, I have incorporated it to our Database page. So when you're away from EVE and would like to spin your ships - feel free to do so. Since the window is rather small, I have decided to give it a "fullscreen" button, for all the ship-spinning pleasure (pressing F11 to first make the browser go full screen makes it look even better).

lmeve-buy-calcIn the previous post I have also mentioned the Buy Calculator. We used to have a gdocs spreadsheet for that. What does it do? Aideron Technologies has a buyback program, which allows corp members to sell minerals, datacores and other materials to corp at Jita buy prices. Saves our corpies going to Jita to sell their goodies, and saves us the trip to buy the materials from Jita. A win-win scenario for everyone. It was only matter of time for the Buy Calc to arrive in LMeve as a web form. It's worthe mentioning, that it behaves just like the gdocs did, only better. See, spreadsheets have this fun feature of selecting next cell when you press enter. It makes entering a lot of data quicker. Web forms don't do this by default, so I had to write some javascript to make it behave like spreadsheets do. What gdocs was unable to do, was displaying a summary window that tells you exactly what to put it the in-game contract. Moreover, we save the pricings in the database, and then match it with in-game contracts. This way we don't even have to manually verify all the prices in game - everything is done automatically! And it works in IGB, too.

Speaking of Market features, we now have a list of Market Orders, too. First, to see what is the best-seller item, secondly, to see which items have been already sold out and need to be produced to satisfy the demand. Unfortunately our market information is classified and there is no screen of this feature.

lmeve-timesheetPreviously I've mentioned that our corp members get paid for their hard work. Well, they do! But some players have more than one character involved in production, and would like to see how much they've earned in total on all their characters. A very nice feature request, and quite easy one to implement. The Timesheet module now shows the characters of the logged user on top of the table with a nice wrap-up with the sums for all characters owned. Also one of our members have got himself a new nickname: "The King of Alts".

lmeve-graphs-2-apiHave you noticed the graph by the way? Well, a few Graphs have arrived in LMeve, too. First the one with corp production activity, that shows the number of jobs that have been installed on each day. Next one is the EVE API monitor. It shows how long it took for the poller to refresh all the API feeds. Since some feeds are refreshed less often than others, some poller cycles take longer, because more data needs to be downloaded (and then parsed into the DB). The last graph is the wallet activity, which shows us when goods have been sold (or materials bought).lmeve-graphs-1

The last feature is skins - the app is CSS skinable, and there is a distinct possibility that Aideron members can be very surprised that the screens here look very different to what they are used to. That's because there are three skins two skins! One is very similar to Aideron Robotics (because our corp is a spin-off from AR), second skin, which looks very much like EVE Online forums (CSS isn't a direct copy though, it's only very similar colors). The last one is very simple, and can be considered "work safe".

lmeve-skins3 lmeve-skins1 lmeve-skins2

The future

Whew! That was a productive five months there, not only because LMeve has several new features now, but because of the tool we were able to break our profit, turnover and production records every month!

There is still one big feature that needs to be coded (I didn't have the time to do it yet) the Inventory. We have to track the materials and sub-products (like capital parts or Tech II parts). Inventory will show us how much of given type we have, and how much we need to produce (or buy) to keep the stocks full. Maintaining the smallest stocks, that allow uninterrupted production is one of the crucial logistic tasks for every corp. Every time we run out of materials and members can't cycle their jobs is time when we don't make profits.

The other ideas mentioned in the previous post are still in the queue to be implemented as well:

  • Industry Goals (similar to Tasks, but at the corp level). Ideally I would like to draw pretty production lines for Tech II and Capital items with all the intermediate products.
  • Linking characters to accounts using EVE API (currently admin has to link characters to account manually)
  • Simple character API reader to run background checks on prospective recruits.

PS. The app is in closed beta (Aideron Technologies only). Open Source release date is still to be determined.
PS.2 As of 23rd of Oct the Aideron skin has been removed and will be no longer available. A new skin will be created in it's place.

23May/130

On the development front – LMeve dev blog #1

Industry Tracker - Login Screen

When I first started this project, I knew it will take more than a day to complete. In fact, I have assumed it will take at least a month (1-2 hours a day) to finish basic features. I was wrong: it took one and a half month. The result however, is better and more functional than the original Specification required.

First I would like to say a big thank you to my corp mates, who are testing LMeve restlessly. Beta test has also raised some excellent improvements and ideas, some of which are implemented already, and some have been added to the drawingboard. Thank you guys!

Features developed since the last post

Tasks is a module, which allows planning and tracking industry jobs over the course of one month. Currently the only person with edit rights is the CEO, so he can plan manufacturing, invention and copying for each corp member. Members can view their own task list, which shows the completion state of their tasks.

LMeve task tracking page

LMeve task tracking page

It looks almost exactly like the Task page on Marcel's aideronrobotics.com (this was one of the specified requirements). Crysis McNally, one of our members has proposed to add a tooltip over Progress and Success bars, which shows how many jobs have been already done. This way corpies know exactly how many more runs are needed to reach 100%. This is one of the features we've missed in the original aideronrobotics.com industry tool.

Database is a module mainly used for planning and reference (and since there is no "Kit Builder" yet, it also tells the amount of materials required for production). It's also the first module to display price data from eve-central.com (data itself has been downloaded for more than a month). We plan to add a drop-down ME field, which will recalculate required materials, and a setting if we want to get (or stop getting) price data from eve-central.com.

Ah, the beauty of Excel in space ;-)

Ah, the beauty of Excel in space 😉

Wallet has been iterated upon, because previously it would display walletTransactions (market sales) and walletJournal (bounties, contracts, taxes, etc.) separately. Market and contracts are now merged, so we know the actual ISK flow (we are buying minerals from corp members using contracts, and the rest of materials from market).

Tips'n'Tricks for Static Data Dump and EVE API

I have already mentioned it in the first post about LMeve, that EVE API can be tricky at times. So does the Static Data Dump.

As it turns out, telling the correct amount of materials required to build an item is not an easy task, because the data is mixed together: skills and "extra materials" are in the ramtyperequirements table, so you have to tell them apart (hint: join invgroups and use categoryID = 16 to separate skills from materials).

Secondly, the invtypematerials table contains the materials you get when reprocessing the item. It should be the same amount as materials required to build an item, right? Well, it only holds true for Tech 1 items. For Tech II, you have to subtract Tech 1 base item materials from the Tech 2 materials (hint: use recycle column in ramtyperequirements table to find the base item). The weirdest thing however is, that for some items it will give the exact results (for example Improved Cloaking Device II), but for some (like Kronos) you will end up with negative values! Of course the only solution is to hide the negative values from output.

Last but not least, EVE API is having hiccups now and then, throwing 1001: cache is invalid error for wallet transactions, wallet journal and message feeds. The main functionality of LMeve does not depend on these feeds (apart from the Wallet module), but for some people, like Somerset Mahm (and his excellent Blink service) it can be quite a pain. Good luck fixing it @CCP!

Story continues

This is not a formal project, so keeping the scope from growing is not much of an issue (the only budget I have here is time), but there is still plenty of features waiting on the drawing board:

  • Industry Goals (similar to Tasks, but at the corp level). Ideally I would like to draw pretty production lines for Tech II and Capital items with all the intermediate products.
  • Inventory (Material Stocks, Buy Calculator for buying minerals from corp members)
  • Market (Monitoring buy/sell orders, Monitoring market prices for materials and products)
  • Settings (Some values are still not editable without phpMyAdmin right now)
  • EVE API monitoring (to gather API statistics and errors over time, currently I only keep the last value)
  • Linking characters to accounts using EVE API (currently admin has to link characters to account manually)

Want to help us test LMeve?

Would you like to join a friendly group of mature players and get paid for cycling corp manufacturing and invention tasks?

Well, now you have a chance! Apply to Aideron Technologies today! Simply contact our recruiter - Razeu - in game.

PS. Please specify AT in the application form, because we still share forum with Aideron Robotics.

13Apr/131

Industry Tracker takes shape

Industry Tracker - Login Screen

In a recent post I have introduced you to the LMeve Industry Tracker. It's a web app, which I'm writing for my corp.

Some time has passed, and despite a hard drive failure, the app is already taking shape. The most important part I have described in the previous post, the API poller, is nearly complete. And it's been working stable for more than a month, which is additional boon. I have decided not to parse all-and-every available api feed (do we seriously need that medal data?), but instead I have chosen to poll the most often used ones. This way I can start working on the GUI, which at this time is the most important thing for us. Of course there is nothing stopping me from adding all other API calls later on.

The following feeds are currently being parsed and loaded to the database:

  • global: ConquerableStationList.xml
  • global: ErrorList.xml
  • global: RefTypes.xml
  • evecentral: eve-central.com/marketstat.xml
  • corp: AccountBalance.xml
  • corp: APIKeyInfo.xml
  • corp: AssetList.xml
  • corp: ContactList.xml
  • corp: ContainerLog.xml
  • corp: CorporationSheet.xml
  • corp: FacWarStats.xml
  • corp: IndustryJobs.xml
  • corp: KillLog.xml
  • corp: MarketOrders.xml
  • corp: MemberTracking.xml
  • corp: StarbaseList.xml
  • corp: WalletJournal.xml
  • corp: WalletTransactions.xml

Each feed is cached according to the API documentation, and if a permanent error is returned, the poller will not attempt to read that feed again.

Me and TheAhmosis (Aideron Technologies' CEO) have decided, which modules have to be up-and-running before we can start using the app for the corp:

  • Timesheet - so we know how much money we owe to our employees (yes, Aideron Technologies is paying their members; wanna become a part of the famous Aideron Industry Program and get paid? Apply now!)
  • Wallet - so we know how much ISK we have made (or lost)
  • Tasks - so every employee knows what to make (and when)

I have added one thing on top of that: role based rights management. My old PHP framework is only using two levels of rights currently: admin and user. In this project however, we would like our corp members to be able to register themselves by using their API keys, so we need a more granular security solution. This way we will also be able to match app username to in-game characters, and display the task list only for characters of that corp member.

Pics, or it didn't happen?

Sure thing:

Timesheet Monthly wallet summaries API Poller statistics Industry overview - by character Industry overview - by item type

29Mar/132

New EVE API project – Industry Tracker

Industry Tracker - Login Screen

Industry Tracker - Login Screen

About two weeks ago I have started a new project, which uses XML feeds from EVE API. The new app is supposed to be a new industry tracker for my corp, because the old one is not being maintained anymore. We could probably use DRK Industry Tracker for that, but our Directorship has raised some doubts regarding security, because our API information could potentially be available to a third party. A decision was made to develop an in-house solution.

I have already written an EVE API app in Java to view character data in the past, so I have volunteered to be the chief architect and developer of the new app, thinking that API holds no secrets from me. Of course I was very wrong, but I will get to that later.

An industry planner app will have several users, who need to have access to it. This forces either a client-server approach (which would be an overkill for an app like this) or web based approach. Since browser applications only run when they are being visited, I would need some way to keep API data complete and without any gaps.

That's how the API poller was born

Poller algorithm

Poller algorithm

I needed to write a poller script, which could be run in crontab periodically. This way I could keep the live data complete and up-to-date, without the need for anyone to trigger the API update (by visiting app's web page for example).

EVE API has some best practices, one of them being respecting cache timers (to prevent unnecessary load on API servers). Another one is not to poll a feed that returned a persistent error (for example permission denied). I took these two as the main guidelines for my API poller.

It takes some experimenting

I've mentioned that I was wrong to say that I know the EVE API well. Well, I was. According to the documentation on the official EVE Wiki, WalletTransactions.xml.aspx only takes three parameters:

keyID, vCode, characterID

It means that the actual call should look like this:

https://api.eveonline.com/corp/WalletTransactions.xml.aspx?keyID=12345&vCode=1a23f91d20c&characterID=12341234

That call will succeed. You will not get an error message, but a parseable XML file with no data in it.

After some research it turns out one needs to provide the accountKey, which corresponds to wallet division. Then and only then will the WalletTransactions feed return the actual data. So the correct call will be:

https://api.eveonline.com/corp/WalletTransactions.xml.aspx?keyID=12345&vCode=1a23f91d20c&accountKey=1001

Getting the data is not even half the trick

Industry Tracker - Timesheet

Industry Tracker - Timesheet

The EVE Static Data Dump is about 300 megabytes of data. The live information downloaded by the poller adds even more data to dig through. This means that the most important thing is analyzing, displaying and managing all this data. GUI has therefore several tasks:

  • authenticate users
  • authorize users
  • allow corp members to self-register in a secure manner
  • plan the industry tasks
  • track the industry tasks
  • run reports
  • view the static data dump information
  • enrich live data by connecting it with static data
  • manage settings and API keys

While it sounds simple, the majority of the work will be done here. Each of these bullet points will be broken into even more actions. Working application however, will help our corp make billions, so all the effort is well worth it.