These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
Previous page12
 

iveeCore: The PHP engine for industrial activities and CREST library

Author
Aineko Macx
#21 - 2014-09-20 17:09:36 UTC
Since the announcement of the (Crius compatible) version 2.0 beta a lot was done to improve the library and squash bugs. So now it is time to "officially" release version 2.0 (Hyperion compatible). TADA!

Feel free to use & break it. Feedback is always appreciated.

CCP announced reworked invention and reverse engineering activities in an upcoming expansion, but from the looks of it these are moderate changes, which should not be difficult to implement in iveeCore.
Aineko Macx
#22 - 2014-11-08 09:43:42 UTC
Aineko Macx
#23 - 2014-12-14 18:07:00 UTC  |  Edited by: Aineko Macx
Version 2.2 relased.

Apart from Rhea support some notable refactoring was done. See RELEASENOTES for details.
Switching from EMDR to authed CREST for market data will be done in an upcoming release.

Note: Calculating Confessor build slot cost is currently not possible as public CREST is not returning the required adjustedPrice of an input material atm.
EDIT: CREST started returning adjustedPrice for Self-Assembling Nanolattice on the 17th, so this works now.
Aineko Macx
#24 - 2015-01-20 20:45:55 UTC
Version 2.3 released.

Moderate changes this time, notably Redis caching support via Predis, and a Starbase (as in control tower) class for fuel consumption calculation.

IveeCrestâ„¢ is still in development, but a small goodie is this single file webscript that allows you to get a CREST refresh token for your app: https://gist.github.com/aineko-m/15121de81feee5a66b56#file-getrefreshtoken-php
Aineko Macx
#25 - 2015-04-09 08:06:49 UTC
Version 2.4 released.

In a nutshell:
- Adapted to Scylla
- Removed Teams
- Replaced Redis support based on Predis with php-redis
- Refactoring of the cache design in preparation of the merging with iveeCrest.
Aineko Macx
#26 - 2015-05-15 16:58:32 UTC
Version 2.4.1

- Adapted to Mosaic release.
- Added Composer/Packagist support, courtesy of Talos Katuma.
- Fixed a floating point precision issue that could make industrial activities use too much materials.

Version 2.5

- Refactoring to remove Defaults by extending IndustryModifier with new functionality and adding CharacterModifier and BlueprintModifier. CharacterModifier allows for lookup of skills, time and implant factors, standings, taxes and efficiencies based on skills and standings. BlueprintModifier is used for blueprint research level lookup. These are now used throughout the code, making for a cleaner and more flexible API. Developers will likely want to customize those by extending them or implementing the appropriate interface.
- Basic support for player built outposts and conquerable NPC stations.
- DoctrineCacheWrapper, courtesy of Talos Katuma.
- Replaced the AssemblyLine SQL additions for blueprint compatibility with logic in code.
- Fixed cache invalidation.
- Fixed multi-key cache invalidation under HHVM or memcached extension below version 2.0.0.
Aineko Macx
#27 - 2015-07-27 17:00:03 UTC  |  Edited by: Aineko Macx
Version 2.6 released!

The biggest new feature is a fully fledged CREST client by virtue of merging the iveeCrest library. It has been fully integrated, completely replacing all EMDR related market data functionality. With this change there's no more dependency on non-standard PHP modules or libraries, which also makes it 100% HHVM compatible.
iveeCrest brings lots of other goodies, one of which is the support for parallel asynchronous fetching of data from CREST, allowing for high speed bulk collection of data.

Head over to the github page for updated readme and full release notes.

A future update will bring a feature I've been wanting for some time: By enlisting the help of a math student we are going to be able to give you a compression calculator with a simplex based optimization algorithm. This means you'll be able to specify the desired amounts of minerals and the calculator will return the amount of (compressed) ores required to meet those targets while minimizing cost. All written in PHP, so no external external linear algebra solver libraries required.
Entourage Madullier
Federal Navy Academy
Gallente Federation
#28 - 2015-08-22 04:45:09 UTC  |  Edited by: Entourage Madullier
Hi Aineko Macx and thank you for your tool !
I have a few questions:

- Is it shipped with an interface or do we have to dev it ?

- If it already have a front-end can you please post screenshots ?

- Why you no use an MVC framework ? :( :( :(

- Without additional dev, does iveeCore calculate T3 production cost from reactions price or from raw gas ? I mean:

T3 cost = T3 subpart.A + T3 subpart.B + T3 subpart.C...
T3.subpart.X = sleepers salvage + polymers
polymer = gas.A + gas.B...

All available tools only take the price of polymers so for my case the estimated cost is wrong, it would be very nice to have a tool for that
As most T3 manufacturers process there own gas I think it would be a nice feature to add if it's not already there (I'll try to do it myself if I find a way to understand the schema you provided :p )

Again, thanks a lot for this tool, as a dev myself I have an idea of how much time you spent to create such tool and to make it free and open source is just awsome !!

Entourage


Edit: Last question, for a given BPC is it possible to have the material list in compressed ore instead of mineral ?
Aineko Macx
#29 - 2015-08-22 08:28:09 UTC
Hi,

iveeCore is an engine/library that you can use in your own web apps or scripts, and it handles all the interaction with the SDE DB, CREST and does the calculations for you. It is not a ready to use application and thus doesn't come with an interface (not counting the CLI tool to run CREST updates and the webscript to pull refresh tokens).
Implementing MVC would not make sense, as iveeCore doesn't present anything and the controller part is something that would be completely dependent on the use-case of the developer using it. You could at most say iveeCore provides a (class) model for the SDE types, but it's strictly read-only as the data from the SDE is immutable.
You can, however, use iveeCore in an MVC framework. In fact, my own private web app is based on Yii and I have also written other web apps with Phalcon using iveeCore as an external library.

iveeCore does support recursive component building (the ProcessData objects are chained together forming trees of processes), but that currently doesn't include the reaction activity. I'm now looking into making the build recursion also allow reactions.
Regardless, you can do the reactions manually by getting the total MaterialMap for your process tree, iterating over the material types and checking the ones that are instance of ReactionProduct and replacing them with their ReactionProcessData equivalent.

As for minerals in compressed ore form: That's something in development. For this to be cost efficient, you actually need to do non-trivial linear algebra solving (reach target amount of minerals with compressed ores while minimizing cost). I enlisted the help of a math student for that, but it takes time (I want to avoid dependencies on external libraries so we need to implement it ourselves in vanilla PHP). The current prototype returns a valid result, but likely not the optimal one.
Aineko Macx
#30 - 2015-08-27 19:35:53 UTC
Rehashing the changes of version 2.6.1 (August 9th):
- Lots of improvements of the CLI CREST update tool for much more carefree operation. Now users can call it frequently with the -all flag without having to worry about redundant updates or starting the script multiple times in parallel.
- Improved consistency and use of the maxPriceDataAge variable which controls when market data needs to be updated.

Today I released version 2.6.2:
- Recursive reaction calculations. Now industry processes that take a ReactionProduct as input can recurse into the reaction.
- Changed recursion control from a boolean parameter to a recursion depth int; also added an reaction recursion depth int parameter.
- Some refactoring of the ProcessData classes.
Previous page12