Lugo Bots

An exciting multi-agent AI game

From basic code to multi-agent RL models, your strategy is the key to victory!

  • Easy to code, easy to debug, easy to submit.
  • No installs, Docker is the only requirement to run the game.
  • Exciting to watch, cheering like a sport.
JetBrains logo. Alura logo.
class Bot:
        def on_disputing(self, inspector: GameSnapshotInspector) -> List[Order]:
            """
            This is called when no one has the ball possession
            """
            pass

        def on_defending(self, inspector: GameSnapshotInspector) -> List[Order]:
            """
            This is called when an opponent player has the ball possession
            """
            pass

        def on_holding(self, inspector: GameSnapshotInspector) -> List[Order]:
            """
            This is called when this bot has the ball possession
            """
            pass

        def on_supporting(self, inspector: GameSnapshotInspector) -> List[Order]:
            """
            This is called when a teammate player has the ball possession
            """
            pass

        def as_goalkeeper(self, inspector: GameSnapshotInspector, state: PLAYER_STATE) -> List[Order]:
            """
            This is only called when this bot is the goalkeeper (number 1). This method is called on every turn, and the player state is passed at the last parameter.
            """
            pass
    
export interface Bot {
{

    /**
     * OnDisputing is called when no one has the ball possession
     */
    onDisputing: (inspector: GameSnapshotInspector) => Order[]

    /**
     * OnDefending is called when an opponent player has the ball possession
     */
    onDefending: (inspector: GameSnapshotInspector) => Order[]

    /**
     * OnHolding is called when this bot has the ball possession
     */
    onHolding: (inspector: GameSnapshotInspector) => Order[]
    /**
     * OnSupporting is called when a teammate player has the ball possession
     */
    onSupporting: (inspector: GameSnapshotInspector) => Order[]

    /**
     * AsGoalkeeper is only called when this bot is the goalkeeper (number 1). This method is called on every turn, and the player state is passed at the last parameter.
     */
    asGoalkeeper: (inspector: GameSnapshotInspector, state: PLAYER_STATE) => Order[]
}
type Bot interface {

    // OnDisputing is called when no one has the ball possession
    OnDisputing(ctx context.Context, inspector SnapshotInspector) ([]proto.PlayerOrder, string, error)

    // OnDefending is called when an opponent player has the ball possession
    OnDefending(ctx context.Context, inspector SnapshotInspector) ([]proto.PlayerOrder, string, error)

    // OnHolding is called when this bot has the ball possession
    OnHolding(ctx context.Context, inspector SnapshotInspector) ([]proto.PlayerOrder, string, error)

    // OnSupporting is called when a teammate player has the ball possession
    OnSupporting(ctx context.Context, inspector SnapshotInspector) ([]proto.PlayerOrder, string, error)

    // AsGoalkeeper is only called when this bot is the goalkeeper (number 1). This method is called on every turn, and the player state is passed at the last parameter.
    AsGoalkeeper(ctx context.Context, inspector SnapshotInspector, state PlayerState) ([]proto.PlayerOrder, string, error)
}

Step 2

Push a Docker image

Step 3

Wait for bot to be approved

Last 5 matches

2024-11-13T07:06:37+00:00

2024-11-13T01:05:34+00:00

2024-11-12T19:07:53+00:00

2024-11-12T13:06:52+00:00

2024-11-12T07:06:50+00:00

Top 5 bots

1 (370.5 Points)

202 W

69 L

33 D

2 (317.0 Points)

159 W

16 L

16 D

3 (226.0 Points)

143 W

42 L

8 D

4 (189.5 Points)

159 W

76 L

12 D

5 (182.0 Points)

116 W

101 L

37 D

6 (169.0 Points)

101 W

55 L

22 D

7 (163.5 Points)

111 W

98 L

31 D

8 (114.0 Points)

78 W

80 L

13 D

9 (110.5 Points)

105 W

61 L

3 D

10 (89.0 Points)

83 W

69 L

16 D