BaghchalAI / README.md
techaaditya's picture
Restore original Space files and editable Bot API URL
ea88929 verified
|
Raw History Blame Contribute Delete
1.78 kB
metadata
title: Baghchal
emoji: πŸ…
colorFrom: yellow
colorTo: green
sdk: static
pinned: false
license: mit
short_description: Play Baghchal in-browser vs a tablebase-checked engine

Baghchal β€” Tigers & Goats

Play the Nepali board game against a real engine. Everything runs in your browser: legal-move generation, the OBX board notation, and the engine ladder from pebble (random) up to phantom (PVS + LMR search).

How strong is phantom? Baghchal is a solved game β€” it is a draw with best play β€” so every move can be checked against the truth. Over 400 sampled positions phantom plays a value-optimal move 90.3% of the time on positions where the choice actually matters: the ones where at most half the legal moves hold the game value. A uniformly random player scores 20.6% there.

That qualifier is the whole point. The unrestricted "agreement with perfect play" figure is 96.0% for phantom β€” but 64.1% for a bot playing at random, because in a drawn game almost any move preserves the draw. Quoting the unrestricted number alone makes a listless engine look nearly perfect, so both are published here. (Reproduce with python -m bagh_bench.agreement --states 400 --time-ms 300 --bots pebble,shepherd,hunter,stalker,phantom,venom.)

There is no server. This is a static Space; the Python engine is CPython compiled to WebAssembly via Pyodide, loaded on your first bot move. If Pyodide cannot start, the board falls back to a lighter JavaScript engine so the game always works.

Set a Bot API URL in the side panel to use a hosted engine instead β€” that is the only way to reach the perfect tablebase bot, which needs an 8.7 GB solved database no browser can hold.