BeamNG.Earth
BeamNG.drive용 1:1 비율 실시간 지구, 실제 고도·위성 이미지·부동 원점·보조 서버에서 LOD 스트리밍
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
上から降ってくるひらがな文字をタップして集め、制限時間内に単語を作ってスコアを競うWebゲーム。 バックエンドサーバーを持たず、React(フロントエンド)+ GitHub Pages(静的ホスティング)+ Firebase Realtime Database(Anonymous Auth + 任意のGoogleログイン)のみで完結する構成のPoC実装です。 詳細な仕様は CLAUDE.md / mojifuru-design-doc.md を参照してください。 判定用辞書(public/dict.dawg)と単語一覧(public/wordlist.json)はリポジトリに含まれていません。 ビルド前に一度だけ生成してください(Mozc辞書・JMdictのダウンロードにネットワーク接続が必要です)。 src/game/ 以下の純粋関数(文字の降下ロジック・DAWG判定・得点計算)を中心にユニットテストしています。 対戦モード・全体ランキングを有効にするには Firebase プロジェクトが必要です。README 전문 보기 ↗
上から降ってくるひらがな文字をタップして集め、制限時間内に単語を作ってスコアを競うWebゲーム。 バックエンドサーバーを持たず、React(フロントエンド)+ GitHub Pages(静的ホスティング)+ Firebase Realtime Database(Anonymous Auth + 任意のGoogleログイン)のみで完結する構成のPoC実装です。
詳細な仕様は CLAUDE.md / mojifuru-design-doc.md を参照してください。
npm install
判定用辞書(public/dict.dawg)と単語一覧(public/wordlist.json)はリポジトリに含まれていません。
ビルド前に一度だけ生成してください(Mozc辞書・JMdictのダウンロードにネットワーク接続が必要です)。
npm run fetch-dict # scripts/.cache/ にソースデータをダウンロード(初回のみ)
npm run build-dict # public/dict.dawg, public/wordlist.json を生成
npm run dev
npm run test
src/game/ 以下の純粋関数(文字の降下ロジック・DAWG判定・得点計算)を中心にユニットテストしています。
npm run build
対戦モード・全体ランキングを有効にするには Firebase プロジェクトが必要です。
<user>.github.io、Cloudflare Pagesのドメインなど)を追加
(Googleログインはポップアップ方式。未追加のドメインでは auth/unauthorized-domain になる)firebase.rules.json をルールとしてデプロイ
(firebase deploy --only database、または Firebase CLI 未導入ならコンソールから手動で貼り付け).env.example を .env.local にコピーし、Firebaseの設定値を入力Firebaseを設定しない場合でも「ひとりで遊ぶ」モードは通常どおり動作します。
Firebaseプロジェクトで Google Analytics を有効化している場合、.env.local の
VITE_FIREBASE_MEASUREMENT_ID(Firebaseコンソール > プロジェクトの設定 > 全般 の測定ID、G-から始まる値)
を設定するとGA4計測が有効になります。GitHub Pagesへのデプロイ時は VITE_FIREBASE_MEASUREMENT_ID
をリポジトリのActions Secretsにも登録してください。未設定の場合はAnalyticsが無効化されるだけで、
他の機能には影響しません。react-router-dom によるSPA内遷移も page_view として個別に送信されます
(src/App.tsx の AnalyticsTracker)。
vite-plugin-pwa(generateSWモード)によりオフライン起動・ホーム画面追加に対応しています。
public/pwa-192.png / pwa-512.png / apple-touch-icon.png / favicon-96.png)は
ブランドカラー(マゼンタ→オレンジ→アクアのグラデーション)+「も」の白抜き文字で、public/favicon.svg
と同じデザインコンセプト。maskableアイコン(Androidの各種形状マスク)のセーフゾーンに収まるよう調整済みnpm run build 時に dist/sw.js が生成され、JS/CSS/HTMLに加えて辞書データ(dict.dawg /
wordlist.json)も事前キャッシュされるため、初回読み込み後はオフラインでも起動・プレイできますstart_url / scope はビルド時に vite.config.ts の base(/mojifuru/)へ
自動的に合わせて解決されますvite.config.ts の base はリポジトリ名 mojifuru を前提に /mojifuru/ を設定しています。
npm run build で生成される dist/ を GitHub Pages(gh-pagesブランチ、または Actions
によるPagesデプロイ)で配信してください。
src/
├── game/ 文字の降下・DAWG判定・得点計算(純粋関数)
├── firebase/ Firebase設定・ルーム同期・ランキング・戦績・未登録語収集
├── hooks/ useGameSession(上記の純粋関数をReactに配線するフック)
├── context/ 辞書読み込み状態・プレイヤー名などのグローバル状態
└── components/ 各画面(タイトル/ゲーム/結果/一覧/ランキング/ライセンス/対戦ルーム)
scripts/
├── fetchDictSources.ts Mozc辞書・JMdictのダウンロード
├── buildDict.ts フィルタ・クロスチェック・DAWG変換
└── dawgBuilder.ts DAWG(Directed Acyclic Word Graph)構築アルゴリズム