Skip to main content

Python SDK for running bots on Game AI Arena

Project description

Game AI Arena SDK

Python SDK for running bots on Game AI Arena.

Installation

pip install game-ai-arena-sdk

Getting Your Credentials (via API)

# Set your server URL (get this from your admin)
SERVER="https://abc123.trycloudflare.com"

# 1. Create account
curl -X POST $SERVER/ibba/auth/signup \
  -H "Content-Type: application/json" \
  -d '{"email": "you@example.com", "username": "yourname", "password": "SecurePass123"}'

# Response: {"access_token": "eyJhbG...", ...}
# Copy the access_token value and set it:
TOKEN="paste_your_access_token_here"

# 2. Create a bot
curl -X POST $SERVER/ibba/bots/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"bot_name": "MyBot", "game_type": "flipflop_3x3"}'

# Response: {"message": "Bot created successfully", "bot_api_key": "..."}
# Save the bot_api_key - it's only shown once

# 3. Get your bot ID
curl -X GET $SERVER/ibba/bots/ \
  -H "Authorization: Bearer $TOKEN"

# Find your bot in the list, copy its "id" field

Quick Start

import random
from game_ai_arena_sdk import Bot, start, GameType, Move, GameStateLoop

class MyBot(Bot):
    async def on_move(self, state: GameStateLoop) -> Move:
        piece = random.choice(state.legal_moves)
        dest = random.choice(piece.valid_moves)
        return Move(from_pos=piece.pos, to_pos=dest)

bot = MyBot(bot_id="YOUR_BOT_ID", api_key="YOUR_API_KEY")
start(bot, GameType.FLIPFLOP_3X3, matchmaker_url="wss://SERVER/matchmaking/ws")

GameStateLoop

Received in on_move:

Field Description
board Board string representation
my_side Your side ("white" / "black")
current_turn Whose turn it is
legal_moves List of PieceMovesInfo you can move

Each PieceMovesInfo has name, pos, and valid_moves.

Hooks

All optional except on_move:

async def on_move(self, state: GameStateLoop) -> Move  # Required
async def on_ready(self) -> None
async def on_match_found(self, match_id: str) -> None
async def on_game_start(self, state: GameStateLoop) -> None
async def on_game_end(self, winner: str | None, state: GameStateEnd) -> None

Multiple Bots

import asyncio
from game_ai_arena_sdk import run

async def main():
    await asyncio.gather(
        run(MyBot("id1", "key1"), GameType.FLIPFLOP_3X3),
        run(MyBot("id2", "key2"), GameType.FLIPFLOP_3X3),
    )

asyncio.run(main())

Game Types

FLIPFLOP_3X3, FLIPFLOP_5X5

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

game_ai_arena_sdk-0.1.0.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

game_ai_arena_sdk-0.1.0-py3-none-any.whl (12.6 kB view details)

Uploaded Python 3

File details

Details for the file game_ai_arena_sdk-0.1.0.tar.gz.

File metadata

  • Download URL: game_ai_arena_sdk-0.1.0.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for game_ai_arena_sdk-0.1.0.tar.gz
Algorithm Hash digest
SHA256 163f5575d2e1468c3c7a4d9ce8e9f1e9b8fbeb502838d3b35de65c76efecae14
MD5 1dced25d9e373044f4434c3c2338d8c7
BLAKE2b-256 d91ffbc0f7ed27d824be16395be906ae5dea06bd7d525bdc8d81a01a9e6d45a7

See more details on using hashes here.

File details

Details for the file game_ai_arena_sdk-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for game_ai_arena_sdk-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 184e20443b7659db7fa1b5f81bc73957208061b89e9bf5dc15504e6f7ce34288
MD5 65ff459fb3bd16eec408ff29e14dca21
BLAKE2b-256 4d824a9056ba801e287d732741ac15539804724b622caef8a63abb4f77debd4e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page