Code Monkey home page Code Monkey logo

autoleagueplay's Introduction

YOU PROBABLY SHOULDN'T PULL THIS REPO

Bot Makers Read This!

If you just want to make a bot, you don't need to be here. Instead, start with one of these:

If you just want to play with some bots, you can go to RLBotGUI to easily start matches with bots

Framework Contributors

This repository is currently incomplete to meet the legal needs of the Psyonix API. It is missing the source code behind RLBot.exe, and a few other files. If you want to make a code change that involves RLBot.exe (or the interface dll since it's closely related), you'll need some help from someone with access to the closed repo.

We expect we'll be able to open-source everything eventually, and then this repo will be back in business.

NOTICE: We intend to cherry-pick any commits you make here into the closed repo. At a later date, when we have permission to open-source everything, we will force push the closed repo to this master branch. Your commits will still be there with proper attribution, but if you have any work in progress, it will need to be rebased at that time.

RLBot

Framework Info

The RLBot framework helps people create bots for use in Rocket League's offline modes, just for fun. It provides values from the game like car and ball position, and carries back button presses. RLBot works for up to 10 bots reliably; it can be used up to 64, but can result in issues (bots disappearing after goals, spawning inside one another, etc).

Requirements

Rocket League, Python 3.6+

Quick Start

  1. Run setup.bat (or equivalent if you're on Linux or Mac)
  2. Open a terminal and execute python runner.py

Development Workflow

The first thing you'll want to do is run setup.bat. This does a lot of important things:

  • Sets up your rlbot installation in pip to link to your local files in this folder. Once you've done this, running rlbot from anywhere on your computer will reference these local files, including the dlls, etc.
  • Generates important code based on the .fbs message spec. Therefore it's a prerequisite for running anything.
  • Installs python package dependencies.

If you're doing work that affects our .dll or .exe files, you should also be aware of:

  • copy-dlls.bat - This copies the debug versions any built dlls from visual studio into the correct subdirectory in the python source folder.
  • copy-dlls-release.bat - This copies the release versions any built dlls from visual studio into the correct subdirectory in the python source folder.

For deploying changes, please see https://github.com/RLBot/RLBot/wiki/Deploying-Changes

When you're done with development and want to get back to the official rlbot version vended from https://pypi.org/project/rlbot/, the easiest way to do that is simply pip uninstall rlbot. Then the next time you execute a bat file from one of the RLBot*Example repos, a fresh copy will be installed from pip.

Wikis

There's tons of good information at https://github.com/RLBot/RLBot/wiki

Extras

Community Info

Video Example

Video

Tournament History

Tournament results are recorded in our braacket league.

Videos:

The best part

Psyonix Cone gave us a thumbs up! Thumbs up

autoleagueplay's People

Contributors

domnomnom avatar niceastvillage avatar skyborgff avatar tarehart avatar viliamvadocz avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

autoleagueplay's Issues

ALP should be resistant to bot compile errors and crashes

ALP can currently test if bots work by starting a match and detect if they move. This isn't error proof (maybe the bot was hit by the ball or the enemy) and the bots might still crash during game play. And some errors and crashes stop ALP.

ALP should test if the python bots compile (I think this is possible) as part of the testing. It should also not crash in case a bot crashes. In this case ALP should deem the match invalid and just continue. Afterwards the host should be notified of invalid matches.

(however, division by zero might not kill the bot, which makes this problem a bit harder)

Use of git lfs is making it challenging to do pull requests

$ git push origin condensed:condensed
batch response: @tarehart can not upload new objects to public fork tarehart/AutoLeague
error: failed to push some refs to 'https://github.com/tarehart/AutoLeague.git'

Seems like I'm hitting this issue: git-lfs/git-lfs#1906

I'm not blocked because I have write access to this repo, but others might get stuck.

Make `forfeit` command to easily create forfeits for a bot that doesn't work

Sometimes a bot doesn't work, and to make ALP skip the matches containing the bot, it would be nice if we could just call a command that constructed the necessary result files.

Example; SpeedBot does not work and is supposed to play against Levi, Beetle, and Beast from the East. The command autoleagueplay forfeit "SpeedBot(The Bot)" Levi Beetle "Best from the East" would create results where SpeedBot loses to those bots. Like:

SpeedBot(The Bot)_vs_Levi.json:

{
    "blue": "SpeedBot(The Bot)",
    "orange": "Levi",
    "blue_goals": 0,
    "orange_goals": 0,
    "blue_shots": 0,
    "orange_shots": 0,
    "blue_saves": 0,
    "orange_saves": 0,
    "blue_points": 0,
    "orange_points": 0,
    "forfeit": true,            <------- maybe a value to indicate forfeit
    "winner": "Levi",
    "loser": "SpeedBot(The Bot)",
}

The hard part is knowing which team the bots are on, which is important since ALP names files as blue_vs_orange. The underdog is typically blue though, maybe that can be used. We could also generate files for both combinations to solve that issue or make the user in control by using another command syntax than the one I suggested above.

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.