Basic code and description for GoBigger challenge 2021.

Overview

GoBigger Challenge 2021

en / 中文

Challenge Description

  • 2021.11.13 We are holding a competition —— Go-Bigger: Multi-Agent Decision Intelligence Challenge. Come and make your agents in the game!

Multi-agent confrontation is an important part of decision intelligence AI, and it is also a very challenging problem. In order to enrich the multi-agent confrontation environment, OpenDILab has developed a multi-agent confrontation competitive game, named GoBigger. Based on GoBigger, the purpose of this challenge is to explore the research of multi-agent games and promote the training of technical talents in the fields of decision intelligence, so as to create a "global leading", "original" and "open" decision intelligence AI open source technology ecosystem.

This challenge needs competitors to submit their agents. We will return the score for agents to help competitors have a more correct understanding of the performance of the submitted agent. At the end of the challenge, we will fully test all submissions and the final ranking of the participating teams will be conducted.

Specific Task

This challenge uses Go-Bigger as the game environment. Go-Bigger is a multi-players competitive environment. For more details, please refer to the Go-Bigger documentation. In the match, each team participating in the challenge controls one team in the game (each team consists of multiple players). Contest participating teams need to submit an agent to control a certain team in the match and the players it contains, and obtain higher scores through teamwork, thereby achieving a higher ranking in the match.

Submission

Here in submit, we provide examples of submission for all teams in our challenge. We also provide BaseSubmission, and participants should implements their owned submission based on the code.

class BaseSubmission:

    def __init__(self, team_name, player_names):
        self.team_name = team_name
        self.player_names = player_names

    def get_actions(self, obs):
        '''
        Overview:
            You must implement this function.
        '''
        raise NotImplementedError

Note that all submission should extend with BaseSubmission. We will provide team_name and player_names for each submission as their basic parameters. team_names means the name of team which this submission controls. We also know that there are several players in a team, which is relative with the player_names in the parameters. We will call get_actions() when we try to get actions from this submission. So that participants should implements get_actions() in their submission. This function will receive obs as its parameters, which is similar with what we provide in tutorial. For example, submissions will get obs as following:

global_state, player_state = obs

global_state in details:

{
    'border': [map_width, map_height], # the map size
    'total_time': match_time, # the duration of a game
    'last_time': last_time,   # the length of time a game has been played
    'leaderboard': {
        team_name: team_size
    } # the team with its size in this game
}

Participants can find their team_name in submission matched with the team_name in leaderboard.

player_state in details:

{
    player_name: {
        'feature_layers': list(numpy.ndarray), # features of player
        'rectangle': [left_top_x, left_top_y, right_bottom_x, right_bottom_y], # the vision's position in the map
        'overlap': {
            'food': [[position.x, position.y, radius], ...], 
            'thorns': [[position.x, position.y, radius], ...],
            'spore': [[position.x, position.y, radius], ...],
            'clone': [[[position.x, position.y, radius, player_name, team_name], ...],     
        }, # all balls' info in vision
        'team_name': team_name, # the team which this player belongs to 
    }
}

However, we will only provide the submission with the player_state matched with its players. That means, if player_a and player_b (both are player name) are in the team belongs to this submission, and player_c not belongs to this team, participants will only get player_a and player_b in the submission.

After getting the obs, submissions should return actions in get_actions(). actions should look like:

{
    player_a: actions_a,
    player_b: actions_b
}

Remember that both player_a and player_b should be the name in your submission's player_names. And actions_a should be a list, which contains there items, which are the same with what we propose in action-space.

Examples and Test

We provide RandomSubmission and BotSubmission. RandomSubmission provide actions randomly, and BotSubmission provide actions based on a script. Both of them could be an example of your submission. More details in code.

We also provide an example for the pipeline of the submission. Please refer to submission_example for more details. You can also develop your agent in this directory. Once you finish your my_submission.py, you can call python -u test.py to check your submission and finally get the .tar.gz file to upload.

Supplements

If you want to add other things in your submission, such as model checkpoints or any other materials, please place them in ./supplements and tar them with submission.

Finally

You should place all your code and materials under my_submission/. Use tar zcf submission.tar.gz my_submission/ to get your final submission files. The final submission.tar.gz should be:

    - my_submission
    | - __init__.py
    | - requirements.txt
    | - my_submission.py
    | - supplements/
        | - checkpoints or other materials

Attention: __init__.py should be an empty file.

Try your first submission

Maybe you are not very familiar with our competition, but don't worry, we provide the simplest case submission! Try the following code to quickly generate a my_submission.tar.gz for submission!

$ cd submit/submission_example
$ python -u test.py

The above test.py will check whether your submission is correct. If it is correct, you will get the following output:

Success!
###################################################################
#                                                                 #
#   Now you can upload my_submission.tar.gz as your submission.   #
#                                                                 #
###################################################################

Now you only need to submit your my_submission.tar.gz!

  • Note: This submission is made of a random policy. You can check the code and change the policy to get better performance.

Submission based on DI-engine

We also develop submission_example_di based on DI-engine. You can place your ckpt in supplements to get a completed submission.

Resources

Owner
OpenDILab
Open sourced Decision Intelligence (DI), powered by SenseTime X-Lab & Shanghai AI Lab
OpenDILab
🌍💉 Global COVID-19 vaccination data at the regional level.

COVID-19 vaccination data at subnational level. To ensure its officiality, the source data is carefully verified.

sociepy 61 Sep 21, 2022
Banking management project using Tkinter GUI in python.

Bank-Management Banking management project using Tkinter GUI in python. Packages required Tkinter - Tkinter is the standard GUI library for Python. sq

Anjali Kumawat 7 Jul 03, 2022
Python library to natively send files to Trash (or Recycle bin) on all platforms.

Send2Trash -- Send files to trash on all platforms Send2Trash is a small package that sends files to the Trash (or Recycle Bin) natively and on all pl

Andrew Senetar 224 Jan 04, 2023
Simple dotfile pre-processor with a per-file configuration

ix (eeks) Simple dotfile pre-processor with a per-file configuration Summary (TL;DR) ix.py is all you need config is an ini file. files to be processe

Poly 12 Dec 16, 2021
Notifies server owners of mod updates, also notifies of player deaths and player joins through Discord.

ProjectZomboid-ServerAssistant Notifies server owners of mod updates, also notifies of player deaths and player joins through Discord. A Python based

3 Sep 30, 2022
Pdraw - Generate Deterministic, Procedural Artwork from Arbitrary Text

pdraw.py: Generate Deterministic, Procedural Artwork from Arbitrary Text pdraw a

Brian Schrader 2 Sep 12, 2022
A python implementation of differentiable quality diversity.

Differentiable Quality Diversity This repository is the official implementation of Differentiable Quality Diversity.

ICAROS 41 Nov 30, 2022
This is a survey of python's async concurrency features by example.

Survey of Python's Async Features This is a survey of python's async concurrency features by example. The purpose of this survey is to demonstrate tha

Tyler Lovely 4 Feb 10, 2022
1 May 12, 2022
🌲 Um simples criador de arvore de items feito em Python para o Prompt 🐍

Esse projeto foi feito em Python com, intuito de fortificar meu aprendizado de programação. Sobre • Tecnologias • Pré Requisitos • Licença • Autor 📄

Kawan Henrique 1 Aug 02, 2021
Remove Sheet Protection from .xlsx files. Easily.

🔓 Excel Sheet Unlocker Remove sheet protection from .xlsx files. How to use Run Run the script/packaged executable from the command line. Universal u

Daniel 3 Nov 16, 2022
Superset custom path for python

It is a common requirement to have superset running under a base url, (https://mydomain.at/analytics/ instead of https://mydomain.at/). I created the

9 Dec 14, 2022
Custom component to calculate estimated power consumption of lights and other appliances

Custom component to calculate estimated power consumption of lights and other appliances. Provides easy configuration to get virtual power consumption sensors in Home Assistant for all your devices w

Bram Gerritsen 552 Dec 28, 2022
Python solutions to Codeforces problems

CodeForces This repository is dedicated to my Python solutions for CodeForces problems. Feel free to copy, contribute and/or comment. If you find any

Shukur Sabzaliev 15 Dec 20, 2022
Scientific Programming: A Crash Course

Scientific Programming: A Crash Course Welcome to the Scientific Programming course. My name is Jon Carr and I am a postdoc in Davide Crepaldi's lab.

Jon Carr 1 Feb 17, 2022
Tool that adds githuh profile views to ur acc

Tool that adds githuh profile views to ur acc

Lamp 2 Nov 28, 2021
ClamNotif: A tool to send you ClamAV notifications

A tool to forward notifications to different recipients categorised by two severity levels of the regular health reports produced by `clamscan` bundled with the ClamAV antivirus engine.

PiSoft Company Ltd. 1 Nov 15, 2021
E5自动续期

AutoApi v6.3 (2021-2-18) ———— E5自动续期 AutoApi系列: AutoApi(v1.0) 、 AutoApiSecret(v2.0) 、 AutoApiSR(v3.0) 、 AutoApiS(v4.0) 、 AutoApiP(v5.0) 说明 E5自动续期程序,但是

34 Feb 20, 2021
System Design Assignments as part of Arpit's System Design Masterclass

System Design Assignments The repository contains a set of problem statements around Software Architecture and System Design as conducted by Arpit's S

Relog 1.1k Jan 09, 2023
Implementation of the MDMC method to search for magnetic ground state using VASP

Implementation of MDMC method ( by Olga Vekilova ) to search for magnetic ground state using VASP

Utkarsh Singh 1 Nov 27, 2021