BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Grand Archive TCG の日本語カードDB(非公式)。英語カードに日本語訳を重ねる検索・デッキ構築・印刷用PDF・大会デッキ検索。
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Grand Archive TCG を日本で遊ぶ人向けの、非公式ファンサイトです。 英語カードに日本語訳を重ねるカードDBを中心に、デッキ構築ツール・印刷用PDF生成・用語解説などのツールを内包します。 フロントはビルド不要の静的サイト(バニラ JS)。デッキ構築ツールのバックエンドのみ Cloudflare Pages Functions + D1 で動いています。 英語版カードに日本語訳を重ねて検索・閲覧できる、Grand Archive TCG の非公式日本語カードDBです。 全カード翻訳済み(約2,240枚。新カードは随時対応)。カードごとの個別ページ・セット別ページも静的生成しています。README 전문 보기 ↗
Grand Archive TCG を日本で遊ぶ人向けの、非公式ファンサイトです。 英語カードに日本語訳を重ねるカードDBを中心に、デッキ構築ツール・印刷用PDF生成・用語解説などのツールを内包します。
フロントはビルド不要の静的サイト(バニラ JS)。デッキ構築ツールのバックエンドのみ Cloudflare Pages Functions + D1 で動いています。
https://ga-card-tools-jp.pages.dev/(Cloudflare Pages)
英語版カードに日本語訳を重ねて検索・閲覧できる、Grand Archive TCG の非公式日本語カードDBです。 全カード翻訳済み(約2,240枚。新カードは随時対応)。カードごとの個別ページ・セット別ページも静的生成しています。
/
├─ index.html カードDB(サイト本体)
├─ app.js / style.css カードDB ロジック・スタイル
├─ cards/<slug>/ カード個別ページ(静的生成・SEO用。約2,240枚)
├─ sets/<prefix>/ セット別ページ(56セット)
├─ tournaments/ 大会デッキページ(静的生成。一覧 / 大会詳細+順位表 / デッキ断片 decks.html)
├─ data/
│ ├─ translations.js 日本語訳データ(用語辞書・メタ訳・カード個別訳の基盤)
│ ├─ tl/ セット別の翻訳ファイル(全セット分)
│ └─ tournaments/ 大会データ(Omnidex APIから取得。index.json / events/ / pending.json)
│
├─ tools/
│ ├─ deck-builder/ デッキ構築ツール(Discordログイン・保存・共有)
│ ├─ print/ 印刷PDFツール(カード画像 → A4に3×3=9枚)
│ └─ glossary/ ひとくちキーワード解説(用語集)
│
├─ shared/ 複数ツールで共有する部品
│ ├─ js/ card-i18n / card-search / card-detail(検索・詳細の共通モジュール)
│ ├─ css/ 共通スタイル(カード詳細モーダル等)
│ ├─ vendor/jspdf.umd.min.js
│ └─ pdf/card-sheet.js PDF生成の再利用コア
│
├─ functions/ Cloudflare Pages Functions(デッキ構築ツールのAPI)
│ ├─ api/ auth(Discord OAuth)/ decks / me / health
│ └─ docs/ docs/配下を本番配信から遮断(404)
├─ migrations/ D1スキーマ(users / sessions / decks ほか)
├─ wrangler.toml Pages/D1 設定(設定のソース・オブ・トゥルース)
│
├─ scripts/ 開発用スクリプト(serve / 静的ページ生成 / validate / 用語チェック)
├─ docs/ 設計書(docs/design/)・開発環境の再構築手順書(dev-setup.md)
├─ CLAUDE.md 開発運用ルール(セッション役割分担・タスク管理・設計書運用)
├─ _headers Cloudflare Pages 用(パス別CSP)
└─ sitemap.xml / robots.txt / ogp.png
/)cards/<slug>/)とセット別ページ(sets/<prefix>/)を静的生成(SEO・共有用)/tournaments/)api.gatcg.com/omnidex/events/*)から主要大会(Store Championship・Regionals・
Nationals・Ascent)の順位表・提出デッキを取得し、日本語訳付きの静的ページとして生成tournaments/<id>/decks.html から取得)/tools/deck-builder/)/tools/print/)/tools/glossary/)Dev Container(Node 20)での開発を想定しています。
npm run dev # 静的プレビュー(ポート3000)
npm run pages:dev # Pages Functions込みのローカル実行(wrangler、ポート8788)
npm run db:migrate:local # ローカルD1の初期化(migrations/ を順に適用。空のDB向け)
npm run validate # データ検証
npm run build:cards # カード個別ページ・セット別ページ・sitemap.xml を生成
npm run build:tournaments # 大会データをスキャンして大会ページを生成
build:tournaments は公式Omnidex APIのイベントidを順に走査して新しい大会を探します
(一覧・検索APIが存在しないため)。取得済みidは data/tournaments/index.json に記録され、
2回目以降は新規idと保留中の大会だけを見ます。--no-scan を付けるとAPIを叩かず既存データから
ページだけを再生成します。sitemapへの反映は build:tournaments → build:cards の順に実行してください。
カードDB・印刷ツールは静的なのでブラウザで開くだけでも動作します(公式APIへ fetch するためオフラインでは一覧が空になります)。
デッキ構築ツールのAPIを動かすには pages:dev + ローカルD1 + .dev.vars(.dev.vars.example 参照)が必要です。
環境を一から作り直す手順は docs/dev-setup.md(ディザスタリカバリ手順書)を参照してください。
パスごとに Content-Security-Policy を出し分けています(_headers)。
/tools/print/* … 外部通信なしの厳格な self のみhttps://api.gatcg.com への connect / img、Discordアバター用の
cdn.discordapp.com(img)、Cloudflare Web Analytics のみ追加許可style-src 'self' のためHTMLのstyle属性は使えません。動的スタイルは data 属性+CSSOM で適用します各 HTML にも <meta http-equiv="Content-Security-Policy"> を入れており、
ヘッダ非対応ホストでも最低限のCSPが効きます。
card.slug をキーに、window.GA_I18N.cards へ訳を追記します。少数の追加は
data/translations.js の cards に、セット単位のまとまった翻訳は
data/tl/ 配下のセット別ファイルに書き、index.html で translations.js の後に読み込みます。
"card-slug-here": {
name: "日本語カード名",
effect: "日本語の効果テキスト(**太字** / *斜体* / 改行 \\n が使えます)",
flavor: "フレーバーの訳(任意)",
},
表記ルール(用語の統一・自己名参照の「」など)は TRANSLATION.md を参照してください。
本番は Cloudflare Pages で公開しています(main への push で自動デプロイ)。
ビルド不要・出力ディレクトリはリポジトリのルート(/)で、_headers によるパス別CSPがそのまま適用されます。
migrations/ のファイルだけを本番D1へ単体で適用する
(npx wrangler d1 execute DB --remote --file=migrations/000N_xxx.sql)。
⚠️ 必ず「本番D1へ適用 → push」の順。逆順にすると、コードだけが本番に出た数分間、
新しい列を読むクエリが no such column で落ちます(列の追加は既存クエリを壊さないため、先に適用しておくのは安全)wrangler.toml が設定のソース・オブ・トゥルースのため、plain_text はデプロイごとに消えます).github/workflows/build-tournaments.yml が
毎日 03:00 JST に大会スキャン → ページ生成 → 差分があれば main へ直接 push します
(push をトリガーに Cloudflare Pages の自動デプロイが動きます)。
workflow_dispatch で手動実行できますdata/tournaments / tournaments / sitemap.xml / cards / sets /
data/card-meta-index.json / data/featured-sets.json / index.html
(⚠️ #30 以降、カードページ・セットページ・トップページも含みます。新セットが出た日は
数百〜数千ファイルがレビューなしで自動publishされます)
git add 行です。
⚠️ 変更したらこの列挙も直してください(npm run validate が一致を検査し、食い違うと exit 1 します)