← Back to Home

How to Play

Watch Tutorial

Game Rules - Free For All

Victory Condition

Player with the highest XP at the end of the match wins.

Gaining XP

Earn experience points by:

  • Collecting items scattered around the map
  • Defeating other players
  • Killing monsters

Character Progression

  • Gain 1 skill point per level up to level 20
  • Spend points on: Speed, Attack, or Health

Gameplay Rules

  • Only one power up can be equipped at a time
  • Dash ability only works when near danger (enemies, players, bombs, etc.)
  • Unlimited deaths with a respawn delay
  • Fixed number of monsters and items spawn on the map
  • Kill streaks enable overclocking to boost speed, damage, and enable health regeneration. Each kill prolongs the overclocking.

Game API

Every game tick, Botomy sends your code the current game state (level data). Your code processes this data and returns an array of actions. The game then executes these actions in sequence. Whether you use the in-game editor or an external server, the data format remains the same.

Level Data Format

{
  "own_player": {
    "position": { "x": 100, "y": 200 },
    "health": 100,
    ... // Other player attributes
  },
  "enemies": [
    {
      "id": "Enemy1",
      "position": { "x": 400, "y": 300 },
      "health": 80,
      "type": "ghoul",
      ... // Other enemy attributes
    }
  ],
  "items": [
    {
      "id": "Coin1",
      "position": { "x": 250, "y": 150 },
      "type": "coin",
      ... // Other item attributes
    }
  ],
  ... // Other game data
}

Actions Format

// Return an array of actions
[
  // Movement
  { "move_to": { "x": 400, "y": 300 } },
  
  // Combat
  "attack",      // Attack nearest enemy
  "shield",      // Activate shield
  
  ... // Other actions
]

In-game JavaScript Editor

Perfect for quick iterations and learning. Write and test your code directly in the game.

Getting Started

// 1. Launch the game
// 2. Press "Script Mode"
// 3. Write your code
// 4. Test and battle!
Example Codegame.js
export default function play(levelData) {
  const moves = [];
  const { own_player, enemies, items } = levelData;

  // Collect nearby coins first
  const coin = items.find(item => item.type === "coin");
  if (coin) {
    moves.push({ 
      move_to: { 
        x: coin.position.x, 
        y: coin.position.y 
      }
    });
  }

  // Use shield if low health
  if (own_player.health < 30) {
    moves.push("shield");
  }

  return moves;
}

External API Server

Create a local API server for advanced strategies. Use your favorite editor and tech stack.

Quick Setup (Node.js)

# Get started with our template
git clone https://github.com/botomy/botomy-node-starter
cd botomy-node-starter
npm install
npm start

# Connect in game
1. Press "API Mode"
2. Ensure server runs on port 3000
3. Press "Run"
API LevelDataPOST /
{
  "own_player": {
    "position": { "x": 100, "y": 200 },
    "health": 100,
    ... // Other player attributes
  },
  "enemies": [
    {
      "id": "Ghoul1",
      "position": { "x": 400, "y": 300 },
      "health": 80,
      ... // Other enemy attributes
    }
  ],
  ... // Other game data
}
Response
[
  {"move_to": {"x": 400, "y": 300}},
  "attack",
  "shield"
]

Available Moves

Basic Moves

Move

Move action demonstration
{ 
	"move_to": 
		{ "x": 400, "y": 0 } 
}

Move to a specific position

Attack

Attack action demonstration
"attack"

Attack nearest enemy

Shield

Shield action demonstration
"shield"

Activate protective shield

Items

Big Potion

Big Potion action demonstration
{"use":"big_potion"}

Use a big potion to restore health

Ring

Ring action demonstration
{"use":"ring"}

Use a ring to become cloaked for a short time

Speed Zapper

Speed Zapper action demonstration
{"use":"speed_zapper"}

Use a speed zapper to slow down enemies

Special Powerups

Bomb

Bomb action demonstration
"special"

When equipped, you can drop bombs

Shockwave

Shockwave action demonstration
"special"

When equipped, you push enemies away from you

Freeze

Freeze action demonstration
"special"

When equipped, you can fire an icicle to freeze enemies

Combine Moves

Shield + Attack

Shield + Attack action demonstration
["attack", "shield"]

Use shield and attack together

Dash + Move

Dash + Move action demonstration
[ 
	"dash",
	{ "move_to": 
		{ "x": 400, "y": 0 }
	}
]

Combine dash with move to quickly reach a position. Dash only works if you're close to an enemy.

See the complete list of moves and their detailed explanations in our moves documentation.