ultratears
Unofficial native Windows port of Tears of the Kingdom 1.4.3 using static recompilation. Builds locally from the player's own extracted game dump; no game files included.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
正在加载完整 README。 以下为已保存的摘录。
A browser-based Battleship game in which you take on Admiral Byte, a sarcastic AI naval commander. It's built with React and Vite and runs entirely in the browser. There's no backend, no account and no tracking.查看完整 README ↗A browser-based Battleship game in which you take on Admiral Byte, a sarcastic AI naval commander. It's built with React and Vite and runs entirely in the browser. There's no backend, no account and no tracking.
R to rotate, click to place, click a placed ship to pick it back up). Overlapping, out-of-bounds and diagonal placements are rejected, and the live preview shows invalid positions.prefers-reduced-motion support plus a manual Motion toggle (Auto / Full / Reduced).localStorage.| Concern | Choice |
|---|---|
| UI | React 18 (JavaScript) |
| Build / dev server | Vite 5 |
| Styling and animation | Plain CSS (custom properties, keyframes) |
| Tests | Vitest 2, jsdom, Testing Library |
| Linting | ESLint 9 |
| Sound | Web Audio API (synthesized) |
The only runtime dependencies are react and react-dom.
Requires Node.js 18+ (developed on Node 20).
git clone <your-repo-url> operation-deep-blue
cd operation-deep-blue
npm install
npm run dev # http://localhost:5173
Other scripts:
npm test # run the full test suite once
npm run test:watch # watch mode
npm run lint # ESLint
npm run build # production build into dist/
npm run preview # serve the production build locally
Deterministic games: add ?seed=<number> to the URL (for example http://localhost:5173/?seed=777) to get the same fleets and AI choices every time. This is useful for reproducing bugs and for scripted browser tests.
New battle in the header restarts at any time, including mid-turn.
The AI code is in src/engine/ai.js and is deliberately simple and deterministic given a seed. It only sees the results of its own shots (getAIView). It never reads your ship positions.
Every candidate is filtered against cells it has already fired at, so the AI never repeats a shot. The tests check this by playing thousands of shots across many seeds.
npm test
There are 64 tests across 7 files:
board.test.js: placement validation, overlap and bounds rejection, random fleet placement across many seeds, sinking.attack.test.js: hit/miss/sunk resolution, duplicate rejection, immutability.ai.test.js: no repeated shots over full games, neighbour targeting after a hit, line extension, return to hunt after a sink, no access to hidden ships.game.test.js: turn sequencing, win/loss detection, no moves after game over, reset, stale AI moves from a previous game being ignored, manual placement rules.stats.test.js / dialogue.test.js: accuracy, ranks, debrief, no repeated dialogue lines.App.test.jsx (integration): full rendered games, rapid clicking during the AI turn, restarting mid-AI-turn, the game ending during an animation, reduced motion, and that sound is muted by default.The game was also played through in a real browser with Playwright scripts. See BUGFIXES.md.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗