Giter Club home page Giter Club logo

playfulbot's Introduction

PlayfulBot: Organize Programming Tournament

Warning
Playfulbot is currently in alpha stage and some features are not yet implemented. You can see a demo version at playfulbot.com.

What is PlayfulBot

It is a free and open source platform enabling the organization of programming tournaments.

Designed for team building

This platform is mainly designed for IT teams in need of a team building event. However it can be used by any group of developers enjoying a challenge (students, etc…​).

Nowadays IT teams often have remote teammates. Remote work usually reduces the opportunities for casual chat and bonding. Team building events are a good way to overcome this issue but it is not always possible to do them in person:

  • travel time can be expensive for the company and tiring for teammates.

  • teammates have to take care of their family.

  • regular travels are not eco-friendly.

PlayfulBot complements in-person team building events with regular remote team building events. It specifically targets IT teams because its events require programming skills.

Programming Tournaments

PlayfulBot enables you to organize programming tournaments in a few clicks. Participants group into small teams and program bots which will compete against other teams in a game.

Tournaments have time constraints on purpose.

  • tournaments are short. They shouldn’t go beyond office hours or you will disadvantage teammates with families.

  • tournaments include multiple rounds with a first round starting early in the competition. This encourages an agile approach, i.e. releasing a new bot version for each round even if it is not perfect.

Bots can be programmed in many different programming languages. For now only JS/TS is supported but Java, C++, C# and others are planned.

Players can see how their bot plays direcly in their browser. Bots run on players' computers, which means that they can use all their preferred tools and even do step-by-step debugging.

Deploying PlayfulBot

Bots run on teammates computers. Thus the server is a simple Node.JS process. There are plans to make it scallable later.

PlayfulBot is currently deployed with Docker Compose. Note that it is a demonstration version. It enables you to program bots and let it play games but the full tournament experience is not there yet.

Open Source and extensible

This project is open source so that additional games and features can be added by the community later on. Note that some refactoring needs to be done before we can add games via plugins, but the general architecture already supports it.

Performance

The last benchmark showed that the server can handle approximately 150 games/second with a single server process. This is enough for a team building event of 40-60 teammates. Note that these performances depend on the game. The benchmark was made with a 2 player game where each player plays 50 turns and both players play simultaneously.

Roadmap

You can look at this github project to see the status of version 1.0.0.

Many ambitious features are envisionned for later versions and are not yet visible, for example:

  • design games accessible to people with visual impairment.

  • enable players to learn agorithms they need to win the game.

playfulbot's People

Contributors

nharraud avatar

Stargazers

 avatar

Watchers

 avatar

playfulbot's Issues

Add a deadline to competition games

Sometimes bots will stop responding or take a long time to play. This is ok for debug games but not for competition games. Competition games should have a deadline. The main difficulty will be to decide if somebody won the game. The simplest solution is that each bot has a maximum time to play. The first bot to consume all its time to play loses.

Add Credits page

The landing page currently uses multiple icons from https://thenounproject.com. They are under Creative Common license, which means that authors' name should be mentioned somewhere. The easiest solution is to have a "credits" page.

Debug Arena should show the game result

WHY

Players will test their Bots in the Debug Arena with many games. They should see immediately which bot won the game.

WHAT

The debug arena view should show the game end state instead of the start state. Animations are less important and should be disabled for now.
Once the game is finished the winner and loser should be made explicit.

Provide via GRCP API JSON Schemas for Game State and Game Actions

Playfulbot will enable users to chose between different games. Each game has its own Game State and set of valid Game Actions. Players should be able to understand the structure of Game States and Game Actions.

JSON Schema is a good way to document these structures.

Games should provide a page describing game rules

WHY

Playing a game requires the players to understand the rules.

WHAT

Games should provide a subpage which will be automatically added to the tournament info page. This page should describe how to play and win a match.

Add a page describing how to program and connect a bot

WHY

Players need to understand how to program a bot. They should have clear and simple instructions for the programming language of their choice. The page should also describe how to connect bots to debug and competition arenas.

WHAT

As a first version this ticket will only target Typescript and Javascript programming languages.

It should be easy to create a tournament starting now.

WHY

Users will want to try a tournament in a few clicks. Thus it should be easy to create a tournament which starts immediately.

WHAT

The tournament creation page should by default create tournaments starting immediately. It will still enable to provide a later start date.

Enable debug games against bots in the competition arena

WHY

Players shouldn't have to wait for a round to know how if their improvements work against other teams' bots.

WHAT

Players will be able to test their bots against other teams' bots connected to the Competition Arena between rounds. They will simply start a game in the Debug Arena and ask a team's bot to play in it against their bot.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.