Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
翻译准备中
正在加载评论。
正在确认登录状态。
正在加载完整 README。 以下为已保存的摘录。
A fan-made wiki for the Hololive Official Card Game — card database, search, and deck
builder, in seven languages.
2,559 cards with full rulings, filterable by colour, rarity, card type, bloom level, tag
and set code, plus a deck builder that round-trips a deck through a shareable URL.
Node 24 (pinned in .node-version) is all you need:查看完整 README ↗A fan-made wiki for the Hololive Official Card Game — card database, search, and deck builder, in seven languages.
→ hololive-ocg-wiki.tskrlabs.com
2,559 cards with full rulings, filterable by colour, rarity, card type, bloom level, tag and set code, plus a deck builder that round-trips a deck through a shareable URL.
| You want to | Go to |
|---|---|
| Use the wiki | the site |
| Report a bad translation, or a bug | open an issue |
| Contribute code or site copy | CONTRIBUTING.md |
| Understand the design | docs/v2-plan.md, then docs/adr/ |
| See what is being worked on | docs/progress.md — the maintainer's working log |
Node 24 (pinned in .node-version) is all you need:
npm install
make dev # site on :3000, API on :8787, against local fixtures
make help # list all targets
make dev needs no Cloudflare credentials and no Python. The Worker runs against a
local D1 seeded from 34 committed fixture cards and a local R2 seeded from committed
artifacts, and those fixtures deliberately cover every card type, every rarity, all 9
colours including both fused codes, all 7 locales and 546 Q&A items — so the edge cases are
reachable without an account.
That property is verified from a scratch clone, and it is what separates a public repo from
a contributor-ready one. CONTRIBUTING.md has the rest.
packages/schema/ the card contract — pydantic → JSON Schema → TS types → D1 DDL
pipeline/ Python pipeline (uv), `holo-data` CLI — scrape, translate, publish, seed
content/ editorial site copy (info.json), published to R2
fixtures/ 34 cards covering every edge case, for credential-free local dev
apps/api/ the Worker — Hono + Zod over D1 and R2
apps/web/ Nuxt 4 SPA, generated static and served as Worker assets
One Cloudflare Worker serves both the API and the static site from a single origin, on free tiers throughout.
The card shape is defined once, in packages/schema/src/holo_schema/. Everything
else — the JSON Schema, the TypeScript types, the enum lists the filter UI iterates, the
D1 schema, and the local-development fixtures — is generated from those pydantic models.
import type { Card, LocalizedCard } from "@holo/schema";
import { RARITIES, DEFAULT_LOCALE } from "@holo/schema/enums";
from holo_schema import Card, CardCollection, localize
If you edit a model, run make generate && make golden. This is the one trap in the repo,
and CONTRIBUTING.md explains what it protects.
This is v2, rebuilt from the ground up. The v1 repo is
lichingchester/hololive-ocg-wiki.
The rebuild exists because of one bug class. In v1 the card shape was hand-written in four places — a TypeScript union, a SQL schema, a JSON fixture and the scraper — and they drifted, until 24 cards were silently unfilterable in the live UI because one union was missing a rarity. Nothing was broken enough to notice, which is why it lasted. Generating all four from a single pydantic definition makes that particular bug impossible rather than unlikely; see ADR 0001.
The design and the reasoning behind every decision are in
docs/v2-plan.md; decisions taken while building are in
docs/adr/. Neither is required reading to contribute.
This wiki is a fan-made, non-official project. All content is created by the community and follows Cover Corp.'s Derivative Works Guidelines. Hololive names, images, and related content are the property of Cover Corp. This site is not affiliated with or endorsed by Cover Corp. or hololive production.
Code is Apache-2.0; the licence covers this repository's code, not the card data or images.