BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
Free online Caro (gomoku, five in a row) platform for livestreaming, featuring wall board, translation gateway, round table, move branch, engine analysis, and voice control.
AI translation
Bàn cờ caro (gomoku, five in a row) online miễn phí cho livestream: ô tường, cổng dịch chuyển, bàn vòng, nhánh nước đi, phân tích engine, đánh bằng giọng nói.
GamesJavaScript · HTMLGitHub @nguyencongminh090OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Open-source, dependency-free gomoku board editor with variation trees, spiral cell numbers and accessible themes.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
A static gomoku board for livestreamed games. One host runs the page and plays both sides,
while players call their moves over voice (TikTok live, video calls, ...). No server, no build step.Read the full README ↗A static gomoku board for livestreamed games. One host runs the page and plays both sides, while players call their moves over voice (TikTok live, video calls, ...). No server, no build step.
YXPLAYSELF / YXOPPDIST). Walls are sent to the engine, which treats them as line blockers.
The Engine tab loads it and sets rule, time, suggestions, depth, strength, playing style (normal, aggressive, defensive or troll), threads and hash.
Boards up to 22×22 (Rapfi's limit). The board itself still enforces no rules.Keyboard: ← → back/forward · ↑ ↓ switch branch · Home End · S setup · N new game ·
F hide the side panel (board only, for streaming) · A analyze / stop · E engine move.
Open index.html in a browser. It uses plain scripts (no ES modules), so it also works from file://,
except the engine: browsers do not run Web Workers or WebAssembly files from file://. For the engine,
serve the folder: python3 -m http.server 8000 and open http://localhost:8000.
The multi-threaded engine needs SharedArrayBuffer, which browsers only allow on cross-origin isolated
pages (COOP/COEP headers). GitHub Pages cannot send those headers, so when multi-threading is on (the
default), coi-serviceworker.js (registered on every visit) adds them, and loading the engine reloads the page
once if it was not yet in control. Without service workers (or when isolation fails) the single-threaded build is used, and it
stops a search by restarting the engine. See engine/README.md for the engine files, their GPLv3
licence and how to rebuild them.
/ (root).Browsers cache the site's files (GitHub Pages allows about 10 minutes). Before pushing changes, bump the version:
node tools/bump-version.js 1.2.0
It updates index.html: the app-version meta tag and the ?v= query on every stylesheet and script. The engine
worker passes the same query on to the engine's .js, .wasm and .data files, so a returning visitor gets the whole
new release at once instead of a mix of old and new files. The current version is shown at the bottom of Settings.
| File | Role |
|---|---|
js/game.js | Game model: walls and the variation tree (flat node array, parents before children) |
js/board.js | SVG renderer for both themes, hover preview, click-to-cell mapping |
js/coords.js | Edge labels and spiral cell numbering |
js/security.js | Device-bound key pair (non-extractable), key codes, export signing and verification (Web Crypto) |
js/security-panel.js | Security card in Settings and the engine key gate |
tools/add-key.js | Adds a public key code to allowed-keys.json (the engine allow-list) |
js/storage.js | localStorage access, guarded against full or disabled storage |
js/settings.js | Default settings and colour presets |
js/i18n.js | UI strings (vi, en) and the data-i18n markup translator |
js/contrast.js | WCAG contrast ratios, fix suggestions and the board colour audit |
js/engine.js | Engine client: Web Worker lifecycle, search jobs, protocol builder and parser |
js/engine-panel.js | Analyse tab (engine and Explain), engine block of the Play tab, board overlay |
js/main.js | UI wiring, panels, keyboard, import/export |
engine/ | Rapfi WebAssembly builds, their worker host and build script (GPLv3, see engine/README.md) |
tools/bump-version.js | Sets the release version used for cache busting (see Releasing a new version) |
coi-serviceworker.js | Service worker: adds COOP/COEP headers (engine threads on GitHub Pages) and caches the app shell for offline use |
js/install.js | Phone-only banner that offers to install the app |
manifest.webmanifest, icons/ | PWA manifest and icons: the site can be installed on a phone (Chrome: Install app; iOS Safari: Share → Add to Home Screen). The engine is never cached offline |
{
"id": "m1abc2de3f",
"name": "Game 26 Sep 14:05",
"size": 15,
"createdAt": 1790000000000,
"updatedAt": 1790000000000,
"walls": [[3, 3], [11, 11]],
"portals": [[2, 2, 10, 11]],
"torus": true,
"players": ["An", "Binh"],
"nodes": [[0, 7, 7], [1, 8, 7], [1, 6, 6]],
"prefs": [1, 2, -1, -1],
"cur": 2
}
x and y are 0-based with the origin at the top-left. portals entries are [ax, ay, bx, by]
(optional: older saves have none; pairs that break the placement rules are dropped on load). group (the group name shown in the Games tab, up to 40 characters) is optional and written only when set. players (first and second player names, up to 24 characters) is optional and written only when a name is set. torus is optional
and written only when true; portal distances are then measured across the seam. nodes[i] is node i + 1 as
[parent, x, y]; node 0 is the empty board. prefs[n] is the child that Forward follows from
node n (-1 when there is none). cur is the node currently shown.
tests/model.test.js | Model and engine protocol tests: node tests/model.test.js |