Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/envs/pokemon_env/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ print(f"Reward: {result.reward}, Done: {result.done}")
```bash
# Build both images (run from project root directory)
docker build -t pokemon-showdown:latest -f src/envs/pokemon_env/server/Dockerfile.showdown .
docker build -t pokemon-env:latest -f src/envs/pokemon_env/server/Dockerfile.env .
docker build -t pokemon-env:latest -f src/envs/pokemon_env/server/Dockerfile.pokemonenv .

# Create Docker network for container communication
docker network create pokemon-network
Expand All @@ -68,7 +68,7 @@ curl http://localhost:9980/health # Test OpenEnv server
## Configuration

Environment variables:
- `POKEMON_BATTLE_FORMAT` - Battle format (default: `gen9randombattle`)
- `POKEMON_BATTLE_FORMAT` - Battle format (default: `gen8randombattle`)
- `POKEMON_REWARD_MODE` - Reward mode: `sparse` or `dense` (default: `sparse`)
- `POKEMON_MAX_TURNS` - Maximum turns per battle (default: `1000`)
- `POKEMON_PLAYER_USERNAME` - Player username (default: auto-generated)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ COPY src/envs/pokemon_env/ /app/src/envs/pokemon_env/
COPY src/envs/pokemon_env/README.md /app/README.md

# Pokemon environment variables
ENV POKEMON_BATTLE_FORMAT=gen9randombattle
ENV SHOWDOWN_SERVER_URL=pokemon-showdown:8000
ENV POKEMON_BATTLE_FORMAT=gen8randombattle
ENV POKEMON_PLAYER_USERNAME=player
ENV POKEMON_REWARD_MODE=sparse
ENV POKEMON_MAX_TURNS=1000
Expand Down
16 changes: 12 additions & 4 deletions src/envs/pokemon_env/server/pokemon_environment.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import asyncio
import logging
import uuid
import os
from dataclasses import asdict
from threading import Event, Lock
from typing import Any, Dict, List, Optional
Expand All @@ -25,7 +26,7 @@

try:
# Import from top-level poke_env module
from poke_env import Player, RandomPlayer, AccountConfiguration, LocalhostServerConfiguration
from poke_env import Player, RandomPlayer, AccountConfiguration, ServerConfiguration
# Import battle orders from player submodule
from poke_env.player import BattleOrder, ForfeitBattleOrder
# Import concurrency from concurrency submodule
Expand Down Expand Up @@ -247,13 +248,17 @@ def __init__(
self.player_username = player_username or f"player_{uuid.uuid4().hex[:8]}"
self.reward_mode = reward_mode
self.max_turns = max_turns
self.showdown_server_url = os.getenv("SHOWDOWN_SERVER_URL", "localhost:8000")

# Initialize player on POKE_LOOP
logger.info(f"Creating player {self.player_username} for format {battle_format}")

self.player = OpenEnvPokemonPlayer(
account_configuration=AccountConfiguration(self.player_username, None),
server_configuration=LocalhostServerConfiguration,
server_configuration=ServerConfiguration(
f"ws://{self.showdown_server_url}/showdown/websocket",
"https://play.pokemonshowdown.com/action.php?"
),
battle_format=self.battle_format,
max_concurrent_battles=1, # One battle at a time
)
Expand All @@ -264,7 +269,10 @@ def __init__(
logger.info(f"Creating random opponent {opponent_username}")
self.opponent = RandomPlayer(
account_configuration=AccountConfiguration(opponent_username, None),
server_configuration=LocalhostServerConfiguration,
server_configuration=ServerConfiguration(
f"ws://{self.showdown_server_url}/showdown/websocket",
"https://play.pokemonshowdown.com/action.php?"
),
battle_format=self.battle_format,
max_concurrent_battles=1,
)
Expand All @@ -275,7 +283,7 @@ def __init__(
self._state = PokemonState(
battle_format=battle_format,
player_username=self.player_username,
server_url="localhost:8000",
server_url=self.showdown_server_url,
)

# Battle tracking
Expand Down