Project Plateau
Project Plateau: four glass plates, one living valley, and the road back to camp.
翻訳待ち
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗艦長目線で戦艦大和を指揮し、絶え間なく襲いかかる米艦載機の猛攻に耐えて沖縄到達を目指すブラウザゲームです。
index.html をブラウザで開くだけで遊べます(Three.js は js/vendor/ に同梱)。
端末(ブラウザ)の言語が日本語なら日本語、それ以外は英語で表示します。タイトル画面の「日本語 / English」で切り替えられ、選んだ言語は次回も使われます。
文言は js/i18n.js にまとめています。Android のアプリ名も端末の言語に合わせて切り替わります(日本語「戦艦大和 天一号作戦」/ 英語「Yamato: Ten-Go」)。
視点は艦橋最上部の防空指揮所です(史実でも有賀艦長はここで指揮しました)。 結果画面から X・LINE・Facebook へシェアできます(https://techgym.jp/column/claude-code-game-yamato/)。 BGM はゲーム内で合成するオリジナルの管弦楽風楽曲です。
レールガンとミサイルはゲーム独自の架空兵装です。
Google Play: https://play.google.com/store/apps/details?id=jp.techgym.yamato (Web 版のタイトル画面の右上と結果画面に、このページへのテキストリンク「Android アプリ版(Google Play)」を表示しています。新しいタブで開きます)
Google Play へのリンクや Web 用のシェアボタン(X・LINE・Facebook・リンクのコピー)は、index.html と js/i18n.js の中で目印(HTML は <!-- web-only --> 〜 <!-- /web-only -->、CSS は /* web-only:start */ 〜 /* web-only:end */、JS は // web-only:start 〜 // web-only:end)で囲んでいます。
アプリ用のビルド npm run build:app(android:sync / ios:sync / ios:release と GitHub Actions が使う)は、この範囲を取り除いて www/ に入れ、ストアへのリンクが残っていたらビルドを止めます。
アプリの中で隠しているだけの機能は、iOS の審査で「審査中に隠した機能」(Guideline 5.6)と見なされることがあるためです。Web 版の公開(Vercel)は従来どおり npm run build です。
Capacitor でゲームのファイルをアプリ内に同梱しているため、ネットにつながっていなくても遊べます(Three.js も js/vendor/ に同梱)。
アプリ ID(パッケージ名)は jp.techgym.yamato です(Google Play に一度公開すると変更できません)。
Android アプリでのみ広告を表示します(Web 版には広告は出ません)。
| 広告 | タイミング |
|---|---|
| バナー(画面下) | タイトル・結果・一時停止の画面だけ(プレイ中は操作ボタンと重なるので出さない)。表示中は画面の内容をバナーの高さぶん上にずらす |
| インタースティシャル(全画面) | 結果画面で「再び出撃」を押したとき、毎回 |
| リワード | 傾斜が 30° に達したときの画面で「広告を見て応急修理」を選ぶと、傾斜 12° まで戻して戦闘続行(1 回の出撃につき 1 回まで、10 秒で自動的に沈没) |
js/ads.js、AdMob のアプリ ID は android/app/src/main/res/values/strings.xml にあります。
アプリ ID・バナー・インタースティシャル・リワードとも本番の ID を設定済みです(ID を空にした種類は、Google Play 版では出しません)。yamato.apk)は常に Google のテスト広告 を表示します。自分でタップしても問題ありません。ADMOB_MODE=production で本番の広告に切り替えます(scripts/build-web.js が js/ads-config.js を書き換えます)。GitHub Actions(自動): Web 版や android/ を変更して push すると、.github/workflows/android.yml が動作確認用の APK を作ります。
既定ブランチのビルドは GitHub の Release(android-latest)に自動で載るので、Android 端末で次の URL を開くか QR コードを読み取るだけで最新版をダウンロードできます。
https://github.com/techgymjp/yamato/releases/latest/download/yamato.apk
| APK を直接ダウンロード | リリースのページを開く |
|---|---|
リリースのページ: https://github.com/techgymjp/yamato/releases/tag/android-latest
ダウンロードした yamato.apk を開き、「提供元不明のアプリ」のインストールを許可するとインストールできます。
動作確認用の署名鍵(android/app/debug.keystore)はリポジトリで固定しているので、新しいビルドもアンインストールせずに上書きインストールできます。
(Release に載る APK はデバッグ版です。Google Play には下の手順で作る署名済み .aab を使います)
手元の PC(Android Studio):
npm ci
npm run android:sync # Web ファイルを www/ にまとめて Android プロジェクトへコピー
npm run android:open # Android Studio で開く
アイコンと起動画面は python3 scripts/make-icons.py で assets/ の元画像と Android の各サイズを作り直せます。
| 名前 | 内容 |
|---|---|
ANDROID_KEYSTORE_BASE64 | base64 -i upload.jks | tr -d '\n' | pbcopy でコピーした文字列 |
ANDROID_KEYSTORE_PASSWORD | キーストアのパスワード |
ANDROID_KEY_ALIAS | upload |
ANDROID_KEY_PASSWORD | 鍵のパスワード |
yamato-release-aab(.aab)ができるバージョン番号(versionCode)は Actions の実行回数が自動で使われます。表示用のバージョン名は package.json の version です。
Android 版と同じ Capacitor のプロジェクトに ios/ を足して作っています(Swift Package Manager の構成。CocoaPods は不要)。
jp.techgym.yamato(Android のパッケージ名と同じ)。iPhone 専用・横画面固定・全画面・プレイ中は画面を消さないjs/ads.js の UNITS.android / UNITS.ios)。iOS では同意確認のあとに App Tracking Transparency の確認を出すios/App/App/Info.plist の GADApplicationIdentifier(設定済み)。iOS のバナー・インタースティシャル・リワードとも本番 ID を設定済みdocs/store/ios/(スクリーンショット 2622 × 1206 日英各 4 枚、ヘッダ 3840 × 1646、検索結果 3840 × 2560).github/workflows/ios.yml が、署名なしでシミュレーター向けにビルドできるかを確認する.github/workflows/ios-release.yml が、本番広告でビルド・署名し、App Store Connect(TestFlight)へ自動でアップロードする(Secrets はリポジトリに登録済み)Mac でのビルドと App Store への提出の手順は docs/IOS_BUILD.md にあります。
npm run ios:sync # テスト広告で iOS プロジェクトへコピー(実機での確認用)
npm run ios:release # 本番広告で iOS プロジェクトへコピー(App Store 用)
npm run ios:open # Xcode で開く
All rights reserved. 著作権はテックジム株式会社に帰属します。無断での複製・改変・再配布、Web サイトやアプリとしての公開を禁止します。ただし、テックジムの受講生が学習目的で複製・改変することは許可します(商用利用は不可。詳しくは LICENSE)。
同梱の Three.js は MIT License です(js/vendor/THREE_LICENSE)。
index.html ゲーム本体(画面構成・3D モデル・ゲームロジック・BGM)
js/vendor/three.min.js Three.js r128(MIT License)
js/i18n.js 表示言語(日本語 / 英語)の文言
js/ads.js Google AdMob 広告(Android アプリのみ)
js/ads-config.js 広告のモード(test / production)
js/build-info.js タイトル画面に出すバージョン
scripts/build-web.js www/ にアプリ同梱用のファイルをまとめる
scripts/make-icons.py アイコンと起動画面を作る
assets/ アイコン・起動画面の元画像
android/ Android プロジェクト(Capacitor)
ios/ iOS プロジェクト(Capacitor・Swift Package Manager)
capacitor.config.json Capacitor の設定(appId: jp.techgym.yamato)