个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗スマホを振り上げて、ちゃぶ台を競技場の彼方へ飛ばす WEB アプリ。 名作アプリ「ちゃぶ台返し」のスマホブラウザ版リメイクです。
主人公はハゲ親父。砲丸投げの競技場で、ちゃぶ台をどこまで遠くへ飛ばせるかを競います。 ごくまれに、ちゃぶ台ではなく親父が飛んでいきます。
横画面で遊びます。 縦向きのときは横にするよう案内が出ます(Android は全画面にして横向きに固定)。
センサーが使えない端末(PC など)では、画面をぐるぐる回して右上にフリックするタッチ操作になります。
日本語と英語に対応しています。 端末の言語が日本語なら日本語、それ以外は英語で表示し、タイトル画面で切り替えられます(英語のタイトルは「TABLE FLIP REMEMBER」)。
画面の文言は js/i18n.js にまとめています。Android のアプリ名も、日本語の端末では「ちゃぶ台返しリメンバー」、それ以外では「Table Flip Remember」です。
加速度センサーだけだと記録が数段階に固まってしまうので、複数のセンサーを混ぜて記録をばらけさせています。
| 要素 | センサー | 効果 |
|---|---|---|
| 腕力 | 加速度のピーク | 初速 |
| 瞬発力 | 加速度の変化率(加加速度) | 初速 |
| 手首のキレ | ジャイロの角速度ピーク | 初速、ちゃぶ台の回転 |
| 回転 | ジャイロ(鉛直軸まわり)を積分した体の回転量 | 初速。回りすぎると親父が飛ぶ確率アップ |
| 気合 | マイク音量のピークと叫んだ長さ | 初速 |
| 振り上げ角度 | 加速度ベクトルの仰角(姿勢センサーで鉛直方向を判定) | 射出角 |
| 正面からのズレ | 構えた向きからの回転角 | 左右の方向。セクター(34.92°)の外に出るとファウル |
| 恵方 | コンパス | その年の恵方に向かって投げると縁起ボーナス |
| 風 | ランダム | 追い風/向かい風 |
計算式は js/physics.js にまとまっています。
ビルド不要の静的サイトです。モーションセンサーとマイクは HTTPS でないと使えないので、 GitHub Pages などの HTTPS ホスティングに置いてスマホで開いてください。
ローカルで確認する場合:
python3 -m http.server 8000
# http://localhost:8000 を開く(PC ではタッチ/マウス操作モード)
iPhone ではモーションセンサーの許可ダイアログが出るので「許可」を選んでください。
Vercel に置く場合は vercel.json の設定で npm run build を実行し、www/ を公開します(Android アプリに同梱するのと同じファイルです)。
見出しのフォント(Dela Gothic One)は、ゲームで使う文字だけに絞ったものを fonts/ に同梱しています。
新しい文字を画面に足して、その文字だけ別のフォントになる場合は、元のフォントから作り直してください
(pyftsubset で、index.html と js/*.js に出てくる文字、かな、英数字を含めます)。
Google Play で公開中:https://play.google.com/store/apps/details?id=jp.techgym.chabudai (Web 版のタイトル画面にもリンクがあります。iPhone・iPad とアプリの中では表示しません)
Capacitor でゲームのファイルをアプリ内に同梱しているため、ネットにつながっていなくても遊べます。
アプリ ID は jp.techgym.chabudai です(Google Play に一度公開すると変更できません)。
Android アプリでのみ広告を表示します(Web 版には広告は出ません)。
| 広告 | タイミング |
|---|---|
| インタースティシャル(全画面) | 結果画面で「もう一度」を押したとき、2 回に 1 回 |
| リワード | 結果画面の「広告を見て、次の1投を追い風にする」。最後まで見ると、次の1投が追い風 +3.0m/s になる |
js/ads.js の production、AdMob のアプリ ID は android/app/src/main/res/values/strings.xml の admob_app_id です。
ID が未設定(XXXXXXXXXX やテスト用のアプリ ID)のままだと、Google Play 用のビルド(ADMOB_MODE=production)は scripts/build-web.js がエラーで止めます。chabudai.apk)は常に Google のテスト広告 を表示します。自分でタップしても問題ありません。GitHub Actions(自動): Web 版や android/ を変更して push すると、.github/workflows/android.yml が動作確認用の APK を作ります。
既定ブランチのビルドは GitHub の Release(android-latest)に自動で載るので、Android 端末で次の URL を開くか QR コードを読み取るだけで最新版をダウンロードできます。
https://github.com/techgymjp/chabudai/releases/latest/download/chabudai.apk
配布・掲示用にタイトル入りの QR コード(docs/apk-qr-card.png)もあります。
ダウンロードした chabudai.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 で開く
アイコンと起動画面は assets/ の元画像から npx @capacitor/assets generate --android で作っています。
| 名前 | 内容 |
|---|---|
ANDROID_KEYSTORE_BASE64 | base64 -i upload.jks | tr -d '\n' の出力 |
ANDROID_KEYSTORE_PASSWORD | キーストアのパスワード |
ANDROID_KEY_ALIAS | upload |
ANDROID_KEY_PASSWORD | 鍵のパスワード |
chabudai-release-aab(.aab)ができるストアに載せる画像(アイコン・日英のフィーチャーグラフィック・日英のスクリーンショット)と掲載文の下書きは docs/store/ にあります(docs/store/listing.md)。
バージョン番号(versionCode)は Actions の実行回数が自動で使われます。表示用のバージョン名は package.json の version です。
Android 版と同じ Capacitor のプロジェクトに ios/ を足しています(Bundle ID は jp.techgym.chabudai)。
Mac でのビルドと App Store への提出の手順は docs/IOS_BUILD.md にあります。
js/ads.js の ios)。AdMob のアプリ ID は ios/App/App/Info.plist の GADApplicationIdentifiernpm run ios:release(本番広告)、実機での確認は npm run ios:sync(テスト広告).github/workflows/ios.yml が push のたびに、署名なしでビルドできるかを GitHub の Mac で確かめるdocs/store/ios/、追加の掲載項目(サブタイトル・キーワードなど)は docs/store/listing.mdindex.html / style.css — 画面とUIjs/main.js — 画面遷移とゲーム進行、Android アプリ向けの処理(戻るボタン・シェア・広告)js/sensors.js — 加速度・ジャイロ・姿勢・コンパスの取得と投てき判定、タッチ操作js/audio.js — マイク音量と効果音の合成js/physics.js — センサー値から初速・角度・ファウルなどを決めるjs/world.js — 投てきアニメーション、飛行の物理、カメラjs/render.js — 親父・ちゃぶ台・食器・競技場の描画js/ads.js — AdMob 広告(Android アプリのみ)js/i18n.js — 日本語・英語の文言と切り替えscripts/build-web.js — Android アプリに同梱するファイルを www/ にまとめるandroid/ — Android プロジェクト(Capacitor)ios/ — iOS プロジェクト(Capacitor)著作権はテックジム株式会社に帰属します(All rights reserved)。許可なく複製・改変・再配布すること、 Web サイトやアプリ(Google Play、App Store など)として公開・販売すること、名前・ロゴ・アイコン・画像を使うことを禁止します。 テックジムの受講生が学習目的で複製・改変することは許可しますが、アプリストアでの公開・広告の掲載・販売などの商用利用は禁止です。 詳しくは LICENSE を見てください(同梱しているフォントは SIL Open Font License 1.1 です)。