Skip to content

Add shapeshifter (JonathanArns' champion snake) - #7

Open
byte-the-bot wants to merge 1 commit into
mainfrom
add-shapeshifter
Open

Add shapeshifter (JonathanArns' champion snake)#7
byte-the-bot wants to merge 1 commit into
mainfrom
add-shapeshifter

Conversation

@byte-the-bot

Copy link
Copy Markdown
Collaborator

Adds JonathanArns/shapeshifter — bitboard minimax, one of the strongest snakes in Battlesnake competitive history, and the first true top-tier strategy snake in the zoo.

The catch: upstream Dockerfile is broken

ENTRYPOINT ["./shapeshifter"] — but cargo build --release puts the binary at target/release/shapeshifter, so the stock image fails to start:

exec: "./shapeshifter": stat ./shapeshifter: no such file or directory

The manifest therefore points at byte-the-bot/shapeshifter, a fork with exactly one changed line (the ENTRYPOINT fix) — same pattern as graeme-hill-snakebot.

Verified end-to-end (linux/arm64)

Built and ran through the actual snake-zoo CLI from this branch:

$ snake-zoo run shapeshifter
Snake         URL
------------  ---
shapeshifter  http://localhost:32768

$ curl localhost:32768/
{"apiversion":"1","author":"JonathanArns","color":"#900050","head":"cosmic-horror-special","tail":"cosmic-horror"}
$ curl -X POST localhost:32768/move -d {...}
{"move":"up"}

/start and /end also return 200. cargo test passes (14/14).

One quirk worth knowing: shapeshifter is written against the current official API — game.map and game.source are required fields on its deserializer, so very old game engines that omit them will get 422s. Fine against the real engine.

Also noted while here: graeme-hill-snakebot (merged in #6) is missing from the README's Community Snakes table — left alone to keep this PR focused.

JonathanArns/shapeshifter is one of the strongest snakes ever fielded
in competitive Battlesnake — bitboard-based minimax, with an MCTS
variant also served under /mcts.

The upstream Dockerfile is broken: ENTRYPOINT ./shapeshifter doesn't
exist after cargo build --release (the binary lands at
target/release/shapeshifter), so the container fails to start with
'stat ./shapeshifter: no such file or directory'. The manifest
therefore points at a byte-the-bot fork with that one line fixed —
same pattern as graeme-hill-snakebot.

Verified end-to-end on linux/arm64 via the snake-zoo CLI itself:
  snake-zoo run shapeshifter
  GET  /     -> 200 {"apiversion":"1","author":"JonathanArns",...}
  POST /move -> {"move":"up"}
  POST /start, /end -> 200

Note: shapeshifter expects the current official API payload shape
(game.map and game.source are required fields on its deserializer).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant