Solve problems with large scale bot power! We sought to produce a decentralised approach to amassing learning data from a game to improve on performance for the future whilst seeking an approach to incentivising users to contributing data. What does that all mean? We wanted to improve a learning bot to as good as it can be. This required a lot of data from a lot of users, especially for the strategies we sought, a combination of genetic learning and reinforcement learning. So the ambition was to successfully and in a novel manner implement a version of that which we achieved in JavaScript! For which no other library exists in this language. And we sought to integrate that with an appealing, accessible online solution, which we achieved through a game.

What it does

We built a minimalistic online browser game which users can play, challenging individual users against our bots which improve off that data. During that time, computing power is used to run simulations for computer users which goes to improve future performance, increasing in standard in playing performance as they go..

How I built it

React.JS front-end for HTML canvas browser game. Huge work into reinforced learning, implementing and testing the Tensorflow.JS library. Implemented genetic learning to improve generations of computer players.

Challenges I ran into

Building a multi-agent reinforcement library, as none exist in JavaScript. The Typescript Eco-system is unusually sparse in support for canvas methods and its major packages (konva, react-canvas) all protest to be 'tests' or 'trial' implementations Otherwise:

  • We basically rewrote TensorFlow.JS
  • One of our members suffered a catastrophic loss in WSL halfway through the competition
  • We underwent a Windows Update during this time

Accomplishments that I'm proud of

An aesthetic and functional browser game with powerful technologies behind it that have huge future potentials. The successful tests and implementation of reinforcement learning and rudimentary genetic learning.

What I learned

Certain libraries have specific challenges when paired with languages - JavaScript's handling over asynchronity proved to be a challenge with TensorFlow. We will consider more carefully our choices of stack in future years.

What's next for Ender's Computation

Integrate with newer and more exciting front-end projects to show off the power and adaptability of the learning back-end.

Built With

Share this project: