BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
A very small, single-page poker-scoring roguelike: play poker hands for
chips × mult, clear an escalating chip target each round, and spend money on
a handful of simple jesters between rounds.README 전문 보기 ↗A very small, single-page poker-scoring roguelike: play poker hands for chips × mult, clear an escalating chip target each act, and spend money on a handful of simple jesters between acts.
A dark baroque masquerade court: you are the fool, and your head is the ante. The venues climb from the Scullery to the Throne Room, and each act is an audience (Small, Grand, Royal Command), and poker hands keep their plain poker names. The mask cards are the Masquerade Ball, tarot-style cards are Decrees, and a portrait of the King reacts to how the act is going. Playing cards are drawn as aged ivory stock with serif indices and split court-card panels.
No build step, no dependencies — just index.html, styles.css, and the
plain scripts in src/. Open index.html directly, or serve the folder with anything
static (it's also set up for GitHub Pages).
prefers-reduced-motion.?debug runs save to their own slot, separate from normal play.?debug to the URL for a debug shop, a Win button that instantly clears the current act into the real shop, and a starting hand of jesters.assets/jesters/missing_no.png instead.Mid-act saves, a much larger jester roster, more consumable card types, alternate
decks, and difficulty tiers. This is the "real basic" version — small and
deliberately scoped, not a sprawling feature set. (Card art is a partial
exception: a lightweight, optional <img> hook and generated art for the
jesters landed early since it's additive and non-breaking — see
assets/jesters/PROMPTS.md; mask, decree, boss and King portrait prompts live in
assets/masks/, assets/decrees/, assets/bosses/ and assets/court/;
tools/imagegen/queue_cards.py queues them into ComfyUI and
tools/imagegen/export_cards.py copies finished renders into place at 150px.)
Dev tooling only — the game itself still has no build step and no runtime dependencies.
The game is a set of classic <script> files in src/, loaded in the order
index.html lists them and sharing one global scope (no modules, so opening
index.html from disk keeps working):
data.js, jesters.js, court.js — constants, mask/decree/prop pools, the
jester roster, boss modifiers, venues.state.js, scoring.js — the run's state, deck and act setup; hand
detection and scoring.actions.js, score-sequence.js, shop.js, consumables.js, run.js —
what the player can do: select/play/discard, the scoring animation,
shopping, using masks and decrees, new runs and saving.drag.js, cards-view.js, render.js, overlay.js — drag-to-reorder and
everything drawn on screen.main.js — wires up the page, plus the Node-only test hooks.sounds.js, backdrop.js — audio and the candlelit canvas backdrop.Because the scripts share globals, ESLint is given each file's neighbours'
top-level names (read from index.html, see eslint.config.js), and
test/globals.test.js flags top-level names nothing uses. Tests load the
scripts through tools/load-game.js.
Tests run on Node's built-in test runner, no install required:
node --test
Three layers, each testing what the one below it can't reach:
test/scoring.test.js — pure scoring-math regression tests (hand
detection, jester effects, target scaling).test/game-flow.test.js — game-flow/integration tests (play, discard,
shop, act/venue transitions, win/game-over) driven directly against the
state machine, no DOM.test/render.test.js — UI/wiring tests: real button clicks and keyboard
events against a real DOM (via jsdom, attached to Node's own global so
it's coverage-tracked, not window.eval'd in a separate context), for
the rendering and event-wiring code the other two layers can't exercise.Branch coverage is gated at 90% (npm run test:coverage, needs a one-time
npm install for jsdom):
npm install
npm run test:coverage
Linting also needs that same npm install (ESLint is a dev dependency only):
npm run lint