A 2–4 player offline strategy game for Android and iOS, built with Expo + React Native.
- Each vertex shows its jump value — your move must trace exactly that many edges.
- Pieces of other players on the path are captured; the destination must be empty.
- A player is eliminated when they have no pieces or no legal move on their turn (their pieces are removed from the board).
- Running out of the 60s turn timer only skips your turn; it does not eliminate you.
- Eliminated players become spectators.
- Final ranking: last standing wins, then players are ranked by how late they were eliminated.
npm install
npx expo startOpen the Expo Go app on a device, or press a (Android emulator) or i (iOS simulator).
App.js— root, fonts, navigation containersrc/game/engine.js— pure JS rule engine (no React)src/screens/— Title, Setup, Game, Resultssrc/components/—Board,PlayerCorner,PrimaryButton,ScreenBackgroundsrc/theme/theme.js— palette, player colors, typography, shadows
Expo’s native config (app.json) expects PNG (or JPEG) for icon, splash.image, android.adaptiveIcon.foregroundImage, and web favicon. SVG is not supported for those fields in production builds.
Workflow in this repo:
-
Edit the vector sources in
assets/:icon.svg,adaptive-icon.svg,splash.svg,favicon.svg. -
Regenerate PNGs:
npm run assets:png
This runs
scripts/rasterize-assets.js(uses sharp). Outputs:icon.png(1024²),adaptive-icon.png(1024²),splash.png(1284×2778),favicon.png(64²).
Keep the SVGs in version control as the master artwork; PNGs are build artifacts you can regenerate anytime.
node scripts/test-engine.jsSee step.md for: building an APK for testers, publishing on Google Play, and adding AdMob after each match (native build required; not in Expo Go alone).
npm install -g eas-cli
eas login
eas build:configure # only the first time
eas build --platform android # APK or AAB
eas build --platform ios # needs an Apple developer accountSubmit:
eas submit -p android
eas submit -p iosscripts/make-placeholder-assets.js writes solid-color PNGs into assets/ so Expo can build day-one. Replace assets/icon.png, assets/adaptive-icon.png, assets/splash.png, and assets/favicon.png with real artwork before submission.
- Window-fit, no scrolling. Board scales to viewport via
onLayout. - All game logic lives in
src/game/engine.js— UI is a pure projection. - The HTML prototype (
index.html) is a reference only; the mobile app does not load it.