An item build path and item-set generator for League of Legends
http://tercenya.github.io/fortifica
The project is divided into three components, the ui, the analyzer, and the dataminer.
The UI is a one-way databound single page react/flux application.
The flux implementation is handled via goatslacker/alt, which vastly reduces the boilerplate. Routing is handled via rackt/react-router. Curly braces are eschewed in favor of coffeescript. React components are full ES6 classes with JSX transformation. Asset pipelining and compilation is handled via webpack.
- nodejs v0.12.X
- npm
- compilation tools (Xcode and command-line tools, or build-essentials)
To install and run,
cd ui
npm install
npm run hot
You can view the development website at http://localhost:5001/fortifica/. The server will hot-reload upon source-code changes to facilitate development. You may want to replace the ui/analysis
folder with output from your own analysis runs.
To build a production version of the website, run npm run build
. The ui/output
folder will have a self-contained version of the website, which is checked into the gh-pages branch on github. Don't forget to include an analysis
folder.
Avoid use the (soon-to-be) deprecated React mixins or React.createClass
.
Don't require('analysis/Champion.json')
- you severely bloat the application, assuming you don't OOM the transpiler first.
The analyzer takes match data provided by the dataminer and builds node-trees of used item paths. It will comb any .json
files located in analyzer/data
as source material. A convenient solution is to provide one or two sample games for testing. You can also symlink a datamined match folder to perform a bulk run. The output it placed in analyzer/output, and are also static data files. No database is required for this application.
WARNING: the analyzer is memory intensive. a typical run of 5000 games usually requires at least 4GB of RAM, and running the full 5.14 provided match dataset exceeds 24GB and numerous CPU hours.
- ruby 2.X
- bundler
To install and run,
mkdir analyzer/data
# copy some match json files into analyzer/data
cd analyzer
bundler install
./run.rb
Downloads bulk match data. Unlike the API 1.0 competition, Riot provided data set indexes; this dataminer has been stripped down to efficiently download the massive datasets via the match-v2.2 endpoint.
- ruby 2.X
- bundler
Add your riot API key to config/api.key
. A sample configuration file is provided.
The config/api.key
file is intentionally excluded from source control. Do not check in your api key.
The dataminer can easily exceed developer key rate limits, and can get you blacklisted. You will need at least a temporary production key to run this code. Various sleep
statements have been removed from lib/riot/api.rb
, which can be reimplemented if throttling is required. See invalesco for a more conservative/well-behaved dataminer.
To install and run,
cd dataminer
bundler install
./bin/parallel.rb
The dataminer is not general-purpose, and requires configuration of inputs in bin/parallel.rb
and outputs in lib/riot/api.rb
.
Fortifica isn't endorsed by Riot Games and doesn't reflect the views or opinions of Riot Games or anyone officially involved in producing or managing League of Legends. League of Legends and Riot Games are trademarks or registered trademarks of Riot Games, Inc. League of Legends © Riot Games, Inc.
Fortifica - Item Set Evolution for League of Legends Copyright (C) 2015 Craig M. Wellington
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see http://www.gnu.org/licenses/.