League of Legends Build Manager
Parent repository of the League of Legends Build Manager project for the The Riot Games API Challenge 2.0 contest entry.
Category: Item Sets
Renārs Vilnis Role: Programming, Project leader Country: Latvia City: Bergi LOL Summoner: citrons LOL Region: eune
Anete Jakobsone Role: Design Country: Latvia City: Bergi LOL Summoner: GorgeousCupcake LOL Region: eune
Idea is to help players get better at League of Legends by helping them learn new champions quicker by using the capabilities of League of Legends item-sets. We all have a time when we lookup a build in mobafire, probuilds, solomid etc.., it is easy to remember the spell order, but when it comes to champion build we usually end up alt-tabbing during the game. We feel like it could be done better and created an application that helps aid players get their desired champion builds into the game.
Under the hood
For now we have created a Chrome extension that checks a tab if it is supported by the Build Manager, if is then it displays an icon in the action bar of Chrome that allows with a single click to import the guide into the native application and thus into the game. It is achieved by registering a custom protocol in the operating system, similar like 'mailto:' to redirects you to your email client. Because of the code reusability and modularisation it is trivial to create additional browser extensions.
Now to the main show - the native app. It created using Electron framework which allows to create cross platform desktop applications using web technologies and io.js (node.js fork). The goal is to add support for Windows and OSX, although for now we only support OSX, but the logic inside the code already handles Windows enviroment.
The native application allows its user to manage builds and guides, either externaly created or imported by the application. Even if the user hasn't installed any browser extension, he is able to manualy add a guide from a url within the application. The native application doesn't deal with the management of individual builds - changing items, build blocks. We just leave the League of Legends client to do so.
To make the application work offline - with limited functionality (no importing), we cache item and champion information and images through League of Legends static data api, this makes for a quicker and better user expierence. On each application launch it checks if there is a new League of Legends game version and automatically does any update processes related to cached items to keep the user up-to-date.
Please visit challenges.md for a detailed description about the problems face during the development process and how we dealth with them.
- Build system: babel, gulp, browserify, bower
- Frameworks & libraries: React.js + Biff (for flux implementation), Electron framework
As of the time applying for the contest the application isn't yet considered usable. Due to the tight time constrains, new technologies, testing out different things we where unable to get the product to a level we considerate it done. But we will continue working on it, about the latest version please check the github repository.
Future support plans
- Add windows support
- Create additional browse extensions
- Add more website support
- Map and champion specific guides
Project was structurized into several repositories as it provides a way to create isomorphic and reusable code.
- lol-build-manager-design - contains design files and export files related to all applications, used in other applications as a depenency to load assets through bower
- lol-build-manager-config - node module that contains configuration for League of Legends Build Manager applications
- lol-build-manager-util - node module that contains utility functions that are used accross League of Legends Build Manager applications
- lol-build-manager-chrome-extension - Google Chrome Extension that communicates with the native application and provides the user a fast way to import builds into the native application
- lol-build-manager-electron-app - Star of the show - Windows and OSX application that enables the user to import League of Legends champion guides from supported 3rd party services.