Commit Graph

73 Commits

Author SHA1 Message Date
Brian Fertig 5f9f7c8bd8 feat: add Spire Climb single-player roguelike deckbuilder
Implement a complete Slay-the-Spire inspired game with:

- **Core engine** (`SpireClimbLogic.js`): Turn-based combat state machine,
  seeded RNG, map generation, enemy AI, relic hooks, and a headless verifier
  (`verifySpireClimb.js`) that auto-plays 1,000+ combats across both classes.

- **Game scene** (`SpireClimbGame.js`): Phaser UI for class select, branching
  map, animated combat (card fly-in, health-bar drain, enemy lunge/buff FX),
  rewards, shop, events, and treasure nodes.

- **Content** (`SpireClimbData.js`): Two classes (Warrior, Rogue), 30+ cards
  with upgrades, relics, potions, 10 enemies/elites/bosses, events, and map
  tuning.

- **Art pipeline**: Procedural rendering by default with drop-in sprite sheets
  (`spireclimb-creatures.png`, `spireclimb-cards.png`) wired through
  `spireclimb-artwork.json`. Includes a Node script to regenerate the creature
  spritesheet and a full art spec (`sprites.md`).
2026-06-26 20:30:36 -06:00
Brian Fertig 0435ad7c38 feat: add Pai Gow Poker game with AI opponents and hand-setting UI
- Implement complete Pai Gow Poker game using Phaser with drag-and-drop
  hand-setting panel for splitting 7 cards into 5-card high and 2-card low
- Add pure logic module (PaiGowPokerLogic.js) with full hand evaluation
  supporting Joker substitution, 9 hand ranks including Five Aces, foul
  detection, house way splitting, and commission-based resolution
- Add AI bet sizing module (PaiGowPokerAI.js) for opponent betting
- Register game in server registry (casino category, 1-6 players)
- Register scene in main.js and GameRoomScene slug dispatch
- Add comprehensive test suite (verifyPaiGowPoker.js) covering deck,
  evaluation, comparison, foul detection, house way, state management,
  chip math (wins/losses/pushes/fouls/copy rule), and AI betting
- Update StrategoGame to trigger portrait emotions on piece captures
- Update game-icons sprite sheet
2026-06-23 19:58:11 -06:00
Brian Fertig 4e222a89bb feat: add Bookwork word-battle game with 20-level campaign
Introduce Bookwork, a single-player word puzzle game where players
battle opponents by forming words from a 5×5 letter grid. Features:

- 20 levels with unique opponents, escalating difficulty, and special
  tile drops (fire, poison) via AI-driven attack system
- Grid mechanics: adjacent tile selection, word validation, damage
  calculation with gold/diamond multipliers, and fire tile self-damage
- Progression system with HP milestones, potion unlock, and server-
  persisted level completion
- Polished battle UI with animated word submission, fireworks, HP bars,
  portrait system, and victory/defeat overlays
- Full test suite (verifyBookwork.js) covering grid generation, damage
  formulas, refill logic, AI probabilities, and level data validation
2026-06-20 15:51:55 -06:00
Brian Fertig 762792f9f5 feat: add Katamino single-player pentomino puzzle game
Implement Katamino, a 5×N grid tiling puzzle using the 12 standard
pentominoes. Players select a grid width (3-12) and solve puzzles by
placing all chosen pieces to fill the board.

Key features:
- Three-screen flow: penta select → set select → play
- Scrollable puzzle card grid with completion progress tracking
- Piece rotation (R), flip (F), and lift-to-reposition
- Pre-generated puzzle bank (katamino.json) with all valid tilings
- Offline generator script (genKatamino.js) using backtracking solver
- Progress saved to localStorage per puzzle
- Registration in server registry and scene dispatchers
2026-06-20 08:26:23 -06:00
Brian Fertig e3fc11d13a feat: add Genius Square single-player game with AI opponent
Implement Genius Square, a 6x6 grid puzzle game where players place 9
polyomino pieces to fill the board around randomly placed blockers.

Key features:
- Pure JS game logic (GeniusSquareLogic.js) with backtracking solver
- AI opponent with 5 skill levels using pre-computed solutions
- Phaser-based UI with piece tray, grid rendering, and animations
- Dice-based blocker placement using zone partitioning for balanced boards
- Orientation support: rotate (R), flip (F), and piece lifting
- Win/loss overlay with play again and menu options
- Register game in server registry and scene dispatchers
2026-06-20 00:16:34 -06:00
Brian Fertig 036947885d feat(risk): redesign panel UI and add default opponent configuration
- Redesign Risk panel layout with player portraits, colored rings, and
  inline name/stats display (territories, armies)
- Add active player gold ring highlight on portrait
- Support custom playfield background images with fallback color
- Refactor button/hint positioning for cleaner control rendering
- Add defaultOpponents configuration to game registry
- Default Risk to 3 opponents on seat selection
- Update game-icons asset files
2026-06-17 21:01:40 -06:00
Brian Fertig ae30299838 feat: add Risk board game with AI opponents
Implement the classic Risk board game with full game logic, AI players
with adjustable skill levels (1-5), and Phaser-based rendering.

New files:
- RiskData.js: map data, adjacency graph, continent bonuses, card deck
- RiskLogic.js: pure game engine (reinforce, attack, fortify phases)
- RiskAI.js: heuristic AI with 5 skill tiers and configurable behavior
- RiskGame.js: Phaser scene with combat animations and UI
- tutorial.md: in-game tutorial ("A Field Manual by General Ironside")
- verifyRisk.js: headless fixture and self-play verification script

Integrates with existing game framework via registry, game room dispatch,
and preload scene. Includes board image and updated pawn sprites.
2026-06-17 20:30:14 -06:00
Brian Fertig 8a79b6909d feat: add Gin Rummy card game with AI opponents
Implement a fully playable Gin Rummy game with Phaser-based UI,
pure logic engine, and heuristic AI (skill levels 1-5).

Features:
- Complete Gin Rummy rules: draw, discard, knock, gin, layoff, scoring
- Meld detection with optimal deadwood minimization
- 2-4 player support with AI opponents
- Drag-to-reorder hand, visual meld highlights, turn indicators
- Round and game-over overlays with score tracking
- Headless verification script with unit tests and self-play simulation

Files added:
- public/src/games/ginrummy/GinRummyData.js (card helpers, layout, constants)
- public/src/games/ginrummy/GinRummyLogic.js (deterministic game engine)
- public/src/games/ginrummy/GinRummyAI.js (AI decision making)
- public/src/games/ginrummy/GinRummyGame.js (Phaser scene)
- server/scripts/verifyGinRummy.js (headless test harness)

Also updates game-icons/opponents assets and registers the game
in the server registry and game room scene dispatcher.
2026-06-14 20:51:15 -06:00
Brian Fertig f2da9bfb20 fix: correct container hitbox double-shift in Canasta & Cribbage
Fix hitbox misalignment where Phaser's Container displayOrigin already
centers bounds, causing manual Rectangle offsets to double-shift.

feat: add Rummikub game with AI, immutable engine, and solver

- Implement full Rummikub gameplay: drag & drop, sets/runs, jokers,
  table manipulation, opening meld rule, and scoring
- Add immutable game engine (RummikubLogic) following existing patterns
- Add rules solver (RummikubSolver) for set validation and AI planning
- Implement 5-level heuristic AI (RummikubAI) with configurable delay
- Register game in registry and routing, include tutorial markdown
- Add headless verification script (fixture tests + AI self-play)
2026-06-14 16:23:44 -06:00
Brian Fertig 24678602f4 feat: add 2048 single-player puzzle game
- Implement complete 2048 game with Phaser.js scene and game logic
- Add customizable theme picker with multiple color schemes
- Include smooth tile slide, merge, and spawn animations
- Add sound effects (scifi-plink, scifi-plonk) and particle effects
- Track best score in localStorage
- Register game in server registry with icon frame 67
- Update Wordle name to "Wordle Race"
2026-06-14 10:26:44 -06:00
Brian Fertig 59ee3eca0c feat: add Dot Link puzzle game
Introduce Dot Link, a Flow-Free-style single-player puzzle game where players connect matching colored dots to fill the grid. Includes:
- Pure JS puzzle engine with deterministic board generation, DFS solver, and win validation (`DotLinkLogic.js`)
- Phaser 3 UI scene featuring a cyberpunk/synthwave theme, level select, daily runs, hint system, and smooth path-drawing mechanics
- Deterministic bank of 100 hand-tuned puzzles (`dotlink.json`)
- Node scripts for puzzle generation and verification
- Full integration into the app's preload, routing, and game registry
2026-06-14 05:18:03 -06:00
Brian Fertig f5b0c545f4 feat: add Cribbage and Canasta single-player card games
- Implement full game logic, scoring, and UI scenes for Cribbage and Canasta
- Add heuristic AI opponents with 5 skill levels and reaction delays for both games
- Cribbage: race-to-121 track, pegging, crib scoring, and cut mechanics
- Canasta: 108-card shoe, partnership melding, canastas, frozen/blocked piles, and go-out rules
- Include headless verification scripts (fixture + self-play tests) for both games
- Register new games in server registry and update scene routing
- Add tutorial markdown files and update game icon assets
2026-06-13 21:54:20 -06:00
Brian Fertig fc7ae2c53d feat: add themed tutorials and overhaul Monopoly AI trading
- Add new tutorials for Labyrinth and Mexican Train with unique character voices
- Redesign Battleship and Mahjong tutorials with narrative themes and assets
- Implement AI-initiated trade proposals and counter-offer system in Monopoly
- Add AI-to-AI trading with rate-limited proposals and mutual benefit validation
- Enable tutorial flags for Labyrinth and Mexican Train in game registry
- Add new character assets and tutorial videos
2026-06-13 19:30:12 -06:00
Brian Fertig d34ab83b39 feat: add slot machine artwork and update game registry
- Add new slot machine themes: Pharaoh's Fortune and Abyssal Treasures
  - 10 symbols each with corresponding PNG assets
  - Cabinet artwork for both themes
- Update slots-artwork.json with image paths for all new symbols
- Reformat registerGame calls in registry.js for consistency
- Update slots iconFrame from 54 to 63

Adds complete artwork and configuration for two new slot machine themes,
bringing the total registered games to 63.
2026-06-13 10:45:21 -06:00
Brian Fertig 09d94a6ae7 Added Slot Machines 2026-06-12 19:42:27 -06:00
Brian Fertig 3cd0f2b2e7 feat: add Bejeweled Blitz and Mini Motorways games
- Implement Phaser scenes and pure JS logic modules for both games
- Register games in server registry and scene routing
- Add headless verification scripts for Bejeweled and Mini Motorways logic
- Update game-icons sprite sheet
2026-06-12 13:52:27 -06:00
Brian Fertig d51d026352 feat: add Zuma marble-shooter game with 20 levels
Implement a complete Zuma-style puzzle game featuring:

- Pure game engine (`ZumaLogic.js`) with Catmull-Rom path animation,
  segment-based chain physics, match-3 popping, and power-ups (slow,
  reverse, accuracy, explosion)
- Phaser scene (`ZumaGame.js`) with procedural textures, laser sight,
  and full UI (level select, overlays, scoring)
- 20 hand-designed levels across 6 path shapes (s-curve, horseshoe,
  spiral, zigzag, double-loop, figure-eight) with calibrated difficulty
- Level generator (`genZuma.js`) and verification suite (`verifyZuma.js`)
  for path geometry, parameter ranges, and engine correctness
- Platform integration: game registry, scene dispatch, preload asset
2026-06-12 00:15:51 -06:00
Brian Fertig d01a2917b1 feat: add Jewel Quest game and fix Portrait memory leaks
- Register new Jewel Quest game across client and server
- Update game icons spritesheet with new frame (59)
- Fix memory leaks in Portrait components by implementing proper
  cleanup with double-destruction guards and returning destroy function
2026-06-11 19:07:43 -06:00
Brian Fertig bbb9c329c7 feat: add 4-player Hong Kong style Mahjong with AI opponents
- Implement pure logic engine for tile management, shanten calculation, claim resolution, and faan scoring.
- Add heuristic AI (5 skill levels) using shanten minimization, ukeire tiebreaking, and adaptive defense.
- Build Phaser UI with tile rendering, dynamic scoreboard, claim prompts, hand-end modals, and a scoring reference panel.
- Integrate into frontend routing, opponent selection, and backend registry.
- Include headless verification script for tile catalog, scoring fixtures, and AI self-play invariant checks.
- Update game icon assets and add in-game tutorial.
2026-06-11 18:18:45 -06:00
Brian Fertig dd749bc570 feat: add Mahjong Match solitaire game with 6 layouts and guaranteed-solvable deals
- Add complete Mahjong Match game (MahjongLogic.js + MahjongMatchGame.js) with pure board model and Phaser UI
- Implement 6 layouts: Garden, Crossroads, Pyramid, Butterfly, Fortress, and classic Turtle (up to 144 tiles)
- Generate guaranteed-solvable deals by simulating reverse removal of free pairs
- Add tile matching logic using half-tile coordinate system for proper layer overlap detection
- Include 38 tile face images (bamboo, circle, pinyin characters, winds, dragons, flowers, seasons)
- Add hint system, shuffle functionality, timer, best time tracking per layout
- Register game in server registry and scene dispatch tables
- Add headless verification script for face set validation and random self-play testing
2026-06-11 16:23:17 -06:00
Brian Fertig bf47c50dfa Added Block Fighter game 2026-06-11 10:03:22 -06:00
Brian Fertig c5971d8eb1 Added new game: Shift 2026-06-11 09:05:57 -06:00
Brian Fertig ea44758f7d feat: add Jell-o Monsters (Pudding Monsters) slide-and-merge puzzle game
Introduce a new single-player logic puzzle game where players flick jelly
blobs across a grid to slide and merge them into a single monster.

- PuddingMonstersLogic.js: pure slide-and-merge model with BFS solver,
  no Phaser/DOM dependencies; shared by client and generator
- PuddingMonstersGame.js: Phaser scene with drag-to-flick, arrow keys,
  undo/reset/hint, par tracking, star collection, death on spikes
- genPuddingMonsters.js: offline level generator using seeded RNG and
  BFS solver; produces 40 levels across 5 difficulty tiers
- puddingmonsters.json: generated level data (40 levels, 5–7 grid sizes)
- Update main.js, GameRoomScene.js, PreloadScene.js, registry.js to
  wire the new game into the app
- Update game-icons assets
2026-06-08 21:58:28 -06:00
Brian Fertig 147ef4b89b feat: add Hexsweeper logic game
- Register Hexsweeper game in server registry with icon frame 52
- Add HexsweeperGame import and scene configuration in main.js
- Add hexsweeper slug mapping in GameRoomScene.js
- Update game-icons sprite sheet with new icon
2026-06-08 19:09:40 -06:00
Brian Fertig 3d3d09a9fb feat: add Rush Hour puzzle game with logic category
- Register Rush Hour game in server registry (logic category, single-player)
- Add "Logic & Puzzle" tab to game menu
- Integrate RushHourGame scene in client-side main.js and GameRoomScene
- Load rushhour.json game data in PreloadScene
- Add puzzle API routes for server-side puzzle management
- Configure tab icon frame for new logic category
2026-06-08 17:57:24 -06:00
Brian Fertig 4fbc868305 feat: add Freecell card game and improve Triominoes tile visibility
- Register Freecell game in server registry with card game configuration
- Import and configure FreecellGame in main.js and GameRoomScene
- Update game-icons sprite sheet with new icon frame for Freecell
- Fix Triominoes to dim all tiles when no legal moves are available
2026-06-07 20:31:46 -06:00
Brian Fertig a231d821ca **feat: add Tri-Ominoes game with AI opponents**
Introduce Tri-Ominoes, a triangular grid tile-placement game for 2–4 players. The implementation includes a pure rules engine (`TriominoesLogic`), triangular grid geometry and data (`TriominoesData`), a Phaser scene (`TriominoesGame`), and a heuristic AI with 5 skill levels (`TriominoesAI`).

Key features:
- Corner-matching tile placement on an equilateral triangular grid
- Scoring with pip sums, hexagon-closing bonuses, and going-out rewards
- Draw-from-pool and pass mechanics with forced pass when blocked
- Animated AI tile placement from opponent portraits
- Board panning and re-centering for large play areas
- Game-over modal with final scores and history posting

Also updates the game registry, scene dispatch, opponent select skill controls, and adds two new character portraits (beth, blackwind).
2026-06-07 18:59:57 -06:00
Brian Fertig 1a7dcfe9a3 Moved Farkle to Cards and Dice 2026-06-07 17:26:50 -06:00
Brian Fertig 10ac18ab6e feat: add Monopoly board game
- Add complete Monopoly implementation with pure state engine (MonopolyLogic.js),
  static data (MonopolyData.js), AI (MonopolyAI.js), and Phaser scene (MonopolyGame.js)
- Implement full game rules: property buying, auctions, building houses/hotels,
  mortgages, jail, chance/community chest cards, rent calculation, bankruptcy
- Add 5-level AI with configurable greed, blunder rate, and thinking delay
- Add spritesheet loading for monopoly pawns and cards with graceful fallbacks
- Register game in registry, main.js, and game room scene dispatcher
- Add spritesheet creation guide (sprites.md) and update game-icons.png
2026-06-07 14:37:06 -06:00
Brian Fertig 1b7efd5107 refactor: rename Yatzi to Zahtzee and update category persistence
- Rename game from "Yatzi" to "Zahtzee" across UI and server registry
- Move game category from tabletop to cards
- Persist last selected menu category using _lastCategory
- Update game-icons asset files
2026-06-07 11:20:25 -06:00
Brian Fertig 8a69710946 feat: add Kiitos word game with 3-round progression and AI
- Implement Kiitos game logic: build-a-word mechanic with forced plays,
  deviations, and pass resolution when stuck
- Add 3-round progression escalating rules (4+ words, prepend, super-Kiitos
  insert-anywhere, double scoring)
- Create server-side dictionary engine with prefix trie, word validation,
  and skill-aware AI move selection
- Build cozy Nordic café-themed Phaser scene with drag-and-drop letter cards
- Support 1 human + up to 3 AI opponents with turn-based play
- Integrate Kiitos into game menu, room scene, and opponent selection
- Add game icon to game-icons sheet
2026-06-07 11:00:17 -06:00
Brian Fertig 19898bf157 feat: add Stratego game with AI, setup phase, and battle animations
- Implement full Stratego rules, including hidden information, combat,
  and flag capture mechanics
- Add 5-level AI with heuristic evaluation, unknown enemy reasoning,
  and skill-scaled blunders/lookahead
- Create setup phase allowing piece swap and shuffle before battle
- Add detailed unit reference panel with scrollable ability notes
- Implement turn-based battle animations with sci-fi sound effects
- Integrate Stratego into game menu, room scene, and opponent selection
- Add spritesheet assets (stratego-pieces.png) and game menu icon
- Register Stratego in server game registry
2026-06-07 09:53:58 -06:00
Brian Fertig 6aa331cf97 fix: correct game spelling to "Farkle" and add Catan-style dice animation
- Rename "Farkel" to "Farkle" in UI title and server game registry
- Replace tumble animation with new animateDice method featuring:
  - Dice thrown from elevated position with arc trajectory
  - Random face cycling while airborne
  - Bounce landing with per-die staggered timing
  - Spin and scale animations
  - Squash-bounce effect on final die
- Refactor die rendering to use containers for transform animations
2026-06-06 18:44:25 -06:00
Brian Fertig 246d60e2a9 feat: add Farkel game and update Video Poker CRT theme
- Add new Farkel dice game (2-4 players, tabletop category)
- Update Video Poker CRT screen from green phosphor to royal blue theme
- Refresh game-icons sprite sheet for new game assets
2026-06-06 18:01:50 -06:00
Brian Fertig 371833a0e6 Basic Video Poker 2026-06-06 17:17:36 -06:00
Brian Fertig 8f1e3faaec Labyrinth Initial framework and basic animation. 2026-06-06 16:00:49 -06:00
Brian Fertig 9cb05f5f44 Crossword Changes and added Tectonic 2026-06-05 23:24:11 -06:00
Brian Fertig 6a33bf500b feat: add Splendor board game support
- Register Splendor in server game registry with metadata
- Import and register SplendorGame in frontend main.js
- Map 'splendor' slug to SplendorGame in GameRoomScene
- Preload splendor-cards spritesheet in PreloadScene
- Update game-icons assets for the new game
2026-06-02 12:12:20 -06:00
Brian Fertig efb8842368 feat: add Forbidden Island card spritesheet and register Solitaire Tour game
- Implement visual card rendering for Forbidden Island using a new spritesheet with procedural fallback
- Register and wire up the new "Solitaire Tour" game across client, server, and preload scenes
- Update game icon and card asset bundles
2026-06-02 00:02:12 -06:00
Brian Fertig 7eaf0183e2 Forbidden Island Initial Commit 2026-06-01 20:36:18 -06:00
Brian Fertig 9dda7f4487 feat: add Mini Crossword game (5x5 curated puzzles, single-player)
- Frontend: Phaser scene for grid/clue rendering, keyboard navigation, win detection, and difficulty selection.
- Logic: Pure helpers for slot mapping, cell validation, and answer checking.
- Backend: Puzzle engine, JSON bank of 15 puzzles across 3 difficulties, API route, and game registry.
- Integrates into existing game menu and routing.
2026-06-01 18:27:50 -06:00
Brian Fertig 50292b4a69 feat: add Spelling Bee solo word puzzle game
- Implement client-side Phaser scene and pure scoring/rank logic for the honeycomb-style word game.
- Add server-side puzzle generation engine with difficulty bands (easy/normal/hard) and dictionary pre-filtering.
- Register game metadata, frontend scene routing, and backend API endpoint (`/words/spellingbee/start`).
- Implements NYT-style rules: 7 letters (1 required center), 4+ length words, pangram bonus, and tiered rank progression.
2026-05-31 21:00:18 -06:00
Brian Fertig aa9a3a0f6c feat: add Blokus board game with heuristic AI and Phaser UI
- Implement pure state engine for Blokus rules, move generation, and scoring
- Add board geometry, polyomino definitions, and orientation transforms
- Integrate heuristic single-ply AI with 5 skill levels (configurable noise/blunders)
- Create Phaser scene for board rendering, piece tray, ghost placement, and HUD
- Register game in server registry and update client routing/dispatch
2026-05-31 20:16:21 -06:00
Brian Fertig 2bb4d14c97 feat: add Old Maid card game
- Implement core game logic, AI opponent with skill scaling, and Phaser UI
- Register game in server registry and wire into app routing
- Add card assets and sprites
2026-05-31 19:14:30 -06:00
Brian Fertig da0dc25cdd feat: add game icons to menu and animated dock arrows to Battleship
- Replace `gameicons` spritesheet with `game-icons` and load it in PreloadScene
- Add `iconFrame` support to game registry and render icons next to menu buttons
- Introduce animated dock arrows in Battleship to improve ship placement UI
- Clean up arrow lifecycle management in Battleship scene
2026-05-31 18:25:32 -06:00
Brian Fertig 63df39442c feat: add Boggle word game with AI opponents and board solver
- Implement full Boggle frontend using Phaser, featuring a wooden tray UI, player word sheet, opponent cards, and an animated hourglass timer.
- Add AI scheduling system that simulates opponent word finds based on configurable skill levels and word length/rarity weighting.
- Introduce pure game logic for adjacency validation, path checking, and classic scoring with duplicate-word resolution.
- Add backend board generation and exhaustive solver using a dictionary trie, exposing `/api/words/boggle/start` for board setup.
- Register Boggle in the game registry, scene router, and opponent selection UI.
- Include tutorial assets for Parchisi.
2026-05-31 15:17:00 -06:00
Brian Fertig 588925e564 feat: add Connect 4 game and image support to tutorial modal
- Register Connect 4 in server registry and frontend game config
- Add Connect 4 to slug dispatch and opponent select skill controls
- Update TutorialModal markdown parser to render embedded images
2026-05-31 13:39:00 -06:00
Brian Fertig 2c5bcbd478 Backgammon Tutorial 2026-05-31 12:22:51 -06:00
Brian Fertig 676a4d3106 feat: add Mastermind decryption duel game with 5 AI skill levels
- Introduce core game logic, AI engine, and Phaser UI for a cyberpunk-themed Mastermind implementation.
- AI features 5 difficulty tiers using random, consistent, and Knuth minimax strategies.
- Implement turn-based duel mechanics where player and AI race to crack each other's secret codes.
- Add neon visuals, peg-fly animations, staggered feedback reveals, and 7 custom sound effects.
- Register game in server registry, update menu/room scenes, preload assets, and include tutorial docs.
2026-05-31 09:53:37 -06:00
Brian Fertig 98e799bf25 feat: add tutorial modal system and register battleship game
- Introduce `hasTutorial` flag to game registry
- Add "?" button on game menu to open tutorial modals
- Implement shared hover tooltip on game menu
- Add tutorial modal CSS styling
- Register Battleship game with tutorial flag
- Load Battleship sound effects
2026-05-31 00:04:01 -06:00