BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证JackiOh is a 1v1 card game. Inspired by Hearthstone and Yu-Gi-Oh. Play with your friends online.
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
A 1v1 card game: Hearthstone-style mana, combat and keywords played on Yu-Gi-Oh-style lanes with
a hidden trap backrow. Games are short: 20-card decks with no duplicates, 4 max mana, 30 health
and a 30-turn cap. Every card has a stronger Radiant form. A pure, seeded rules engine runs every
match, so any game replays exactly from its seed and action log. You can play hotseat, online, or
against a practice AI.
Node 22.13 or newer and pnpm 11.
CLAUDE.md lists every command, including the server, the database suites and the Cypress specs.查看完整 README ↗A 1v1 card game: Hearthstone-style mana, combat and keywords played on Yu-Gi-Oh-style lanes with a hidden trap backrow. Games are short: 25-card decks with no duplicates, 4 max mana, 30 health and a 30-turn cap. Every card has a stronger Radiant form. A pure, seeded rules engine runs every match, so any game replays exactly from its seed and action log. You can play hotseat, online, or against a practice AI.
| Read | For |
|---|---|
SPEC.md, spec/ | The rules, all 632 cards and 139 tokens of Core, Classic, Classic+, Meditative, Meditative+, Stinkyscape and Training Grounds, the architecture and the engine design, one note per section and per ruling. The only source of rules |
BUILD.md | The work order: milestones, acceptance criteria, the definition of done |
REVIEW.md | The audit procedure |
CLAUDE.md | How the codebase is laid out, the rules every change follows, and the commands |
bot/README.md | The night bot that builds issues while nobody is awake |
bot/machine/README.md | The two AWS boxes: the night box and the training box |
The rules engine, the 318 card scripts, the deck validator, the practice AI, the server and every tool are Rust, in one Cargo workspace; the browser client is TypeScript and React, and runs the engine and the AI as WebAssembly.
| Path | What |
|---|---|
crates/engine | the rules, the wire types and the deck validator: pure and seeded |
crates/cards | catalog.json, one script per card with its tests, the patch history |
crates/ai | the practice opponent |
crates/wasm | the engine, cards and AI as WebAssembly for the browser |
crates/server | the HTTP API and the match actors, one binary in a Docker image |
crates/tools | jackioh: fuzz, replay, the catalog and spec checks, the AI's gates, the training arena |
apps/web | the client (Vite, React) |
e2e | the Cypress specs |
training | the AI training lanes |
Rust 1.97 (pinned in rust-toolchain.toml), Node 22.13 or newer and pnpm 11.
cargo test --workspace --features jackioh-engine/testkit # every crate's tests
cargo jackioh fuzz --seeds 200 # seeded random games, each replayed to its hash
pnpm install
pnpm --dir apps/web dev # the client at http://localhost:5173 (hotseat at /dev/hotseat, AI at /practice)
pnpm --dir apps/web test # the client's tests
CLAUDE.md lists the everyday commands, including the server, the database suites and the Cypress specs,
and where the rest are.
flowchart LR
subgraph play["Playing"]
W["web client<br/>Cloudflare, Vercel for staging"]
SV["jackioh-server<br/>Render, Ohio"]
DB["Postgres and Auth<br/>Supabase, us-east-2"]
W -- "API, WebSocket" --> SV
SV --> DB
end
subgraph gh["GitHub"]
CI["CI on every pull request"]
NB["the night bot and Squishy<br/>GitHub Actions"]
HR["GitHub's runners<br/>the Claude accounts' work"]
NB -- "work job" --> HR
end
subgraph aws["AWS, us-east-2"]
NV["night box<br/>Codex, agy, Muse"]
TB["training box<br/>improve, unban, gather"]
ST["starter Lambda<br/>every 5 minutes"]
ST -- "starts it when a job waits" --> NV
end
NB -- "work job" --> NV
TB -- "ai/* pull requests" --> CI
NB -- "bot pull requests" --> CI
| Part | Where | What runs there | Read |
|---|---|---|---|
| The web client | Cloudflare; Vercel is staging | the Vite and React app, with the engine and the AI as WebAssembly | apps/web, docs/deploy-cloudflare.md |
| The server | Render, in Ohio | jackioh-server: the HTTP API and one match actor per match. /readyz is Render's health check, and deploy-watch polls /api/catalog | crates/server, render.yaml |
| The database and sign-in | Supabase, in us-east-2 | Postgres and Auth | docs/deploy-cloudflare.md |
| CI | GitHub's runners | the five required checks on every pull request, and the slow suites once a day | CLAUDE.md, CI |
| The night bot | GitHub Actions | bot-commands.yml answers comments and labels within seconds; each bot-night.yml run is four jobs: gate, plan, work and deliver. Only the work job runs a model, and it holds no GitHub write token | bot/README.md |
| The Claude accounts' work | GitHub's runners | the work jobs of claude-1 to claude-8, logged in from secrets | , Subscriptions |
The AWS account is on the Free plan: its credits pay for both boxes, and a Lambda opens an issue
when they fall under $20. docs/architecture.md covers the code's own
architecture: the crates, the wire and the client.
@jgoetzmann-bot builds the issues you hand it, at any hour, on whichever of its subscriptions is
free: eight Claude accounts (Opus and Sonnet), and ChatGPT through Codex, Gemini through agy and
Muse on the night box. Label an issue bot:build, assign it the bot, or comment
/harness build or @jgoetzmann-bot <what you want>.
Every item has a difficulty, which decides who may plan, build and approve it. A medium or strong
model plans it first (a strong one for a hard item) and rates an item nobody rated. One
subscription owns it from then on: it builds it, runs the checks, and reviews itself in a fresh
adversarial session, never an approval from its own context, fixing what that finds for up to 3
rounds (10 for a hard item). Then the lane's final audit approves it: a strong model for a medium
or hard item, a medium one for an easy item. The pull request merges itself once CI passes on the
commit the audit approved. When nothing is queued, the bot suggests improvements as issues, at
most ten at a time. /harness status, /harness halt and /harness start work in any comment,
and the pinned Night bot status issue shows what it is doing.
flowchart LR
A["Issue labelled bot:build<br/>or @jgoetzmann-bot ..."] --> P["plan<br/>(medium or strong;<br/>strong for hard)"]
P --> C["lane owner builds<br/>(Opus / medium / weak)"]
C --> D["repository checks"]
D --> E{"fresh adversarial<br/>self-review session"}
E -- "findings" --> F["same owner<br/>fixes them"] --> D
E -- "approved" --> FA["lane final audit<br/>(Opus, or medium for easy)"]
FA --> G["pull request<br/>with auto-merge"]
G --> H{"CI"}
H -- "green" --> I["merged into main"]
H -- "red" --> F
P -- "queue empty" --> J["up to 10<br/>suggestion issues"]
bot/README.md has the full picture: commands, labels, subscriptions, safety,
setup and operations.
bot/README.md| The night box | AWS EC2, m7i-flex.large, tagged jackioh-night-vm | the work jobs of Codex, agy and one of Muse's lanes, each a Linux user of its own with its own runners, and Muse's in gpt's or agy's lane while that one cannot start work. A Lambda starts it when a job waits, and it powers off after 30 idle minutes | bot/machine/README.md |
| The Muse box (the training box) | AWS EC2, m7i-flex.large, tagged jackioh-train-box | three of Muse's four lanes of its own, and the gather lane as a systemd service outside the night bot (#1677 stopped improve and unban); it powers off after 30 idle minutes too | bot/machine/README.md, training/README.md |
| Squishy | GitHub Actions and GitHub's runners | @squishy-squooby, the same harness on its own Claude account | bot/README.md |
| The local runner | the owner's PC, in Docker | the learned evaluation's self-play exports, and night-box jobs while the PC is idle | bot/machine/README.md |