BeamNG.Earth
A 1:1 scale streamed Earth for BeamNG.drive: real elevation and satellite imagery, floating origin, LOD streaming from a companion server
スマホを振り上げて、ちゃぶ台を競技場の彼方へ飛ばせ!
Translation pending
GamesJavaScript · CSSGitHub @techgymjpOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
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 ↗スマホを振り上げて、ちゃぶ台を競技場の彼方へ飛ばす 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 です)。