============================================================   あいもげリズムゲー   aimoge-rhythm v1.3.48 ============================================================ 好きな音楽(mp3 / wav / flac / ogg 等)や動画(mp4 / webm 等)を 放り込んで、自分の曲で遊べます。 ■ はじめに:遊ぶ人向けまとめ ━━━━━━━━━━━━━━━━━ ・好きな音楽(mp3 / wav / flac / ogg 等)や動画(mp4 / webm 等)を 入れると、自動で譜面を作って遊べます。 ・v1.3.29〜v1.3.31 で、自動でついた BPM がどれくらい当たって いそうかを判定し、あやしい曲は読み込み時に教えてくれるように しました(譜面の作り方そのものは変えていません)。 ・むずかしい変更履歴は、各バージョンの「★ かんたんに言うと」だけ 読めば大丈夫です。 ■ v1.1からv1.3.19までの主な変更点 ━━━━━━━━━━━━━━ v1.2.x で多数のバグ修正と機能追加、v1.3.0 で操作系・データ 管理・配布サイズを総まとめで強化。続く v1.3.1〜v1.3.19 で 譜面生成エンジンと音ハメ精度を大幅にブラッシュアップしました。 最新版で追加された特に大きい変更を抜粋すると: ・🎯 譜面生成アルゴリズムの根本見直し(衝突直接判定、動的intensity) ・🎶 音ハメ精度の強化(オンセット吸着、終端ノーツ剪定) ・🤚 手バランス対応の配置(D/F/J/K の左右負荷を均等化) ・🎮 ロングノーツの自然な扱い(持続音検出、終端ぶつ切り解消) ・📊 難易度統計ログ(avgNPS、peak密度、chord数、レーン偏り) ・🐛 プレイリスト連続再生の各種バグ修正(音ノードリーク等) ・🏅 楽曲別ハイスコアの永続保存 ・📖 プレイリストのリザルトでページ送り ・⌨ キーボードショートカット ・📦 統合バックアップ(設定+レコード一括) ・🪶 スマホ版を 17MB → 約2MB に軽量化(WebP化) 詳しい変更履歴は下記の「変更履歴」を参照してください。 ■ 変更履歴 ━━━━━━━━━━━━━━━━━━━━━━━━━ 【v1.3.48】── 手動譜面を画像(PNG)で受け渡しできるように(スレ配布用) ★ かんたんに言うと: 自分で作った手動譜面を、1枚の画像(PNG)として書き出せるように しました。この画像をスレに貼れば、他の人に譜面を渡せます。あいもげは PNG画像を添付できるので、譜面の受け渡しがスレの中で完結します。 エディタの「🖼 譜面を画像でやり取り」から、 ・「枠1→画像」「枠2→画像」「枠3→画像」…その枠の譜面を画像に書き出す ・「🖼 画像から譜面を取り込む」…もらった譜面画像を読み込む 書き出した画像には曲名・難易度・ノーツ数が表示され、見た目でも どの譜面か分かります。中に譜面データが埋め込まれています。 ※譜面データだけなので、遊ぶには受け取った人も同じ曲ファイルを  各自で用意する必要があります(曲そのものは画像に入っていません)。 ── 以下くわしい話(読み飛ばしてOK)── ・PNGの tEXt チャンク(画像の見た目を変えずにテキストを埋め込める PNG標準の仕組み)に、gzip圧縮+base64した譜面JSONを埋め込む。 外部ライブラリ不使用(CRC32・チャンク操作・gzipは自前/標準API)。 ・埋め込むのは安定6フィールド+曲名・難易度・ノーツ数などのメタ情報。 ・取り込み時、譜面の曲名と今読み込んでいる曲が違えば警告を出す (タイミングが合わない可能性の注意)。 ・取り込んだ譜面はエディタに反映されるので、確認して枠に保存できる。 ・譜面データの無い普通の画像を読み込んでも、誤検出せず案内を出す。 ・曲(動画)への埋め込みは今回は見送り(メタデータが配布途中で失われ やすい・曲の再配布は権利面の懸念があるため)。まず確実に動く PNG方式を用意した。 ・セーブ・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.47】── 全体バックアップに手動譜面と手動記録を含めるよう修正 ★ かんたんに言うと: 「💾 設定 → 📦 全体出力」で作るバックアップに、これまで手動譜面と その記録が含まれていませんでした。このままだとバックアップして 別ブラウザに移ったとき、作った手動譜面が消えてしまいます。 全体出力・全体取込の両方に、手動譜面データとその記録を含めるように 直しました。これで手動譜面もバックアップ・引っ越しできます。 ── 以下くわしい話(読み飛ばしてOK)── ・全体バックアップJSONに userCharts(手動譜面本体)と userChartRecords(手動譜面の自己ベスト)を追加。取込時も両方復元。 ・取込の確認ダイアログと完了表示に、手動譜面・手動記録の件数を表示。 ・容量について:手動譜面の記録が増えると localStorage 使用量も増えるが、 容量オーバー時は従来どおり警告が出て保存をスキップするだけで クラッシュはしない。多くの曲で手動譜面を作り込むヘビーユーザーは、 定期的に「📦 全体出力」でのバックアップを推奨。 ・セーブ・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.46】── 手動譜面に「専用の記録」を追加(AUTO譜面とは別枠で残る) ★ かんたんに言うと: 前のバージョンで手動譜面のスコアを記録しないようにしましたが、 それだと自分の譜面で上達しても記録が残らず盛り上がらないので、 考え直しました。手動譜面には「手動譜面専用の自己ベスト」を 付けるようにしました。 ・AUTO(自動生成)譜面のハイスコアとは完全に別枠なので、混ざりません。 ・手動譜面で自己ベストを更新すると、ちゃんと「NEW RECORD」が出ます。 ・保存枠(枠1・枠2・枠3)ごとに別々の記録を持ちます。 つまり「他人と比べるAUTO譜面ランキングは汚さない」「自分の作った 譜面では上達を楽しめる」の両立です。 リザルトの表示も「✏️ 手動譜面(自分の譜面の記録に反映)」に変えました。 ── 以下くわしい話(読み飛ばしてOK)── ・手動譜面のスコアは専用キー aimoge_user_chart_records_v1 に保存。 通常の楽曲ハイスコア(aimoge_song_records_v1)とは完全に分離。 ・記録キーは 曲名|szサイズ|難易度|slot番号。保存枠ごとに自己ベスト。 ・commitSongRecord() で手動譜面プレイ時は通常記録に進まず、 commitUserChartRecord() で専用記録に保存して自己ベスト判定を返す。 ・詳細オプション(無敵・nofail・autoLane等)使用時は、手動・通常を 問わず従来どおり記録対象外(v1.3.44の判定が先に効く)。 ・セーブ・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.45】── 手動譜面でのプレイも通常ハイスコア記録対象外に(公平性) ★ かんたんに言うと: 自分で作った手動譜面で遊んだときのスコアは、通常のハイスコアには 記録しないようにしました。手動譜面はノーツの数も難しさも自分で 変えられる(極端には1ノーツだけの譜面も作れる)ので、自動生成の AUTO譜面と同じハイスコア欄に混ぜると比較できなくなるためです。 手動譜面で遊ぶこと自体・リザルト表示は今までどおりで、記録だけ されません。リザルトに「✏️ 手動譜面使用中(記録対象外)」と出ます。 ── 以下くわしい話(読み飛ばしてOK)── ・前バージョン(v1.3.44)の詳細オプション記録除外と同系統の穴。 手動譜面プレイ(useUserChartThisPlay)時も commitSongRecord() で 保存せず戻すようにした(戻り値 manualChart: true)。 ・記録対象外の判定順:練習(AUTO/無敵) → 詳細オプション → 手動譜面。 いずれも結果は「通常ハイスコアに記録しない」。 ・将来、手動譜面の自己ベストを残したくなったら、通常とは別キーで 分離した手動譜面専用ランキングにする想定。 ・セーブ・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.44】── 詳細オプション使用時はハイスコア記録対象外に(公平性)+内部整理 ★ かんたんに言うと: 無敵・オートレーン・ノーフェイル・速度変更・開始位置変更・地雷・ 視界系などの「詳細オプション」を使って遊んだときは、ハイスコアに 記録しないようにしました。これらは普通に遊んだときと比べられない (有利になる)ので、記録に混ざるとハイスコアの意味がなくなるためです。 オプションを使ったプレイでも、遊ぶこと自体・リザルト表示は今まで どおりです。記録だけされず、リザルトに「詳細オプション使用中 (記録対象外)」と出ます。 ミラー・ランダムは「譜面の配置が変わるだけ」で有利になる補助では ないので、これまでどおり記録されます。 ── 以下くわしい話(読み飛ばしてOK)── ・記録判定 isOptionsRecordingDisabled() が定義されていたのに記録保存 処理に繋がっていなかった(結線漏れ)。commitSongRecord() の冒頭で これを見て、対象オプション使用時はレコードを保存せず戻すようにした。 対象:blind / stealth / dark / mine / wave / shuffleColor / 速度変更 / 開始位置変更 / autoLane / easyゲージ / nofail。mirror / random は対象外。 ・AUTOプレイ・無敵モードは従来どおり記録対象外(こちらは元々判定あり)。 ・リザルト表示に記録対象外の理由を表示。 ・未使用関数を2つ削除(drawPerfectRatioChar:旧マスコット描画演出、 generatePlaylistShareLines:旧プレイリスト共有行生成)。どちらも どこからも呼ばれていない遺物で、削除しても動作に影響しない。 ・再生中(曲を流しながら編集)にノーツ移動・選択移動を押すと再生 ヘッドが衝突する問題を修正(押したら再生を止めるようにした)。 ・セーブ・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.43】── 動画(mp4)の曲でエディタ再生が無音になる不具合を修正 ★ かんたんに言うと: 動画(mp4)を曲として読み込んで、一度テストプレイしてリザルトから 戻ると、その後エディタの「▶ ここから再生」で音が鳴らなくなる、 という不具合を直しました。音声(ogg/mp3)では起きていませんでした。 動画(mp4)でも、聴きながら編集できるようになります。 ── 以下くわしい話(読み飛ばしてOK)── ・原因:mp4音声は bgVideo 要素で音を出すが、プレイ→リザルトを通る 過程で bgVideo が muted=true(BGA用に消音)にされることがあり、 エディタ再生時にミュート解除していなかったため無音になっていた。 ogg/mp3 は WebAudio 経路で bgVideo のミュートと無関係なので鳴っていた。 ・修正:エディタの動画再生時に bgVideo.muted=false を明示し、既存の 音量ヘルパー applyBgmVolume() で音量を合わせてから再生するようにした。 ・セーブ・記録・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.42】── 曲を流しながら編集(音ハメ)+ 表記の整理 ★ かんたんに言うと: エディタに「▶ ここから再生」ボタンが付きました。これを押すと、 今の再生位置から曲が流れて、ノーツが判定ラインに向かって動きます。 曲を聴きながら D / F / J / K を押せば、その瞬間の位置にノーツが 置かれるので、音に合わせて譜面を作れます(音ハメ)。 もう一度押す(⏸ 停止)と、その位置で止まります。 シークボタンを押すと再生は止まり、その位置から置き直せます。 あわせて、エディタ入口のボタン名を実態に合わせて直しました。 「👁 譜面を確認する(手直し準備)」→「✏️ 譜面を手直しする(自動譜面から)」 「📄 空の譜面を確認する(準備中)」→「📝 空の譜面から作る(一から)」 (もう確認だけでなく、実際に編集・保存できるため。「準備中」表記も外しました) ── 以下くわしい話(読み飛ばしてOK)── ・再生はエディタ専用の軽い仕組みで実装(プレイ本体のロジックには 手を入れていない)。音声(audioBuffer)は WebAudio の BufferSource を editorHeadTime の位置から start(0, offset) で鳴らし、ループ毎フレーム audioCtx.currentTime の経過から editorHeadTime を進める。 ・動画音声の曲は bgVideo.currentTime をセットして play、bgVideo の currentTime をそのまま再生位置として使う。 ・再生中はノーツ配置・削除なども可能(押した瞬間の editorHeadTime に 置かれる)。シーク・エディタ退出時は再生を必ず止める。 ・再生中の毎フレーム更新は時刻表示だけの軽量処理に分離し、保存枠の localStorage 読み込みを毎フレームやらないようにした(負荷対策)。 ・終端まで再生したら自動で停止。 ・セーブ・記録・遊び方・自動生成譜面・手動譜面データには影響しない。 【v1.3.41】── 譜面エディタ 実用最小完全版(編集・保存・手動譜面プレイ) ★ かんたんに言うと: ついにエディタで「ノーツを置く・消す・動かす」ができるように なりました。さらに、作った譜面を保存して、その手動譜面で 遊べるようになりました。これで「自動で作られた譜面を、自分で 手直しして保存し、その譜面で遊ぶ」が一通りできます。 エディタ画面(メニューの「👁 譜面を確認する」から入る)で できること: ・再生位置を動かす(±0.1 / ±0.5 / ±1 / ±5秒、先頭/終端) ・いまの位置に D / F / J / K のノーツを置く ・ロングノーツを置く(「ロング開始」を押す→シークで先に進む  →「ロング確定」を押すと、その間が長押しノーツになる) ・ノーツを消す(選んだノーツ、または再生位置に近いノーツ) ・ノーツを選んで動かす(前の/次の で選択、時刻±0.1、左右レーン) ・もどす(Undo)/やりなおす(Redo) ・「💾 この曲の手動譜面を保存」で保存 保存した手動譜面は、その曲をプレイするとき、画面の「譜面」タブで 「🤖 AUTO譜面 / ✏️ 手動譜面」を選べます(難易度のすぐ下に常に出ます)。 手動譜面をまだ作っていない曲で「手動譜面」を選ぶと、「まだありません」と 案内が出て、AUTO譜面でプレイします。 手動譜面は曲ごと・難易度ごとに保存されます。 (保存せずに「もどる」を押すと、編集は消えます。確認が出ます。) 今回はまだ入れていないもの:複数選択、コピー&貼り付け、 範囲選択、BPMに合わせたマス目(スナップ)、地雷ノーツの配置、 譜面の共有コード。これらは今後の予定です。 ★ 保存枠(3つ)について: 手動譜面は、1曲・1難易度につき「枠1・枠2・枠3」の3つまで保存 できます。「ここまで作ったけど、この先どうしようか」と迷ったとき、 今の状態を1つの枠に保存しておいて、別の枠で別案を試す、という 使い方ができます(下書きの控え・枝分かれ用)。 エディタの下に「枠1/枠2/枠3」の保存ボタンと読み込みボタンが あります。保存ボタンには最後に保存した日時が出るので、どれが 新しいか・どれが空きか一目で分かります。読み込みボタンは、 中身がある枠だけ押せます。 プレイ時に「手動譜面」を選ぶと、一番新しい枠の譜面で遊びます。 ── 以下くわしい話(読み飛ばしてOK)── ・編集はすべて editorNotes(自動生成notesのコピー)に対して行い、 自動生成譜面そのものは絶対に書き換えない。 ・保持する安定フィールドは lane / time / type / duration / char / source の6つだけ。y / holding / cleared は持たない・保存しない。 ・Undo/Redo はスナップショット方式(毎操作の前に editorNotes 全体の コピーを履歴へ積む)。操作ごとの差分管理より事故りにくい。上限100手。 ・置くと二重置きガード(同レーンで時刻差0.03秒未満は同一とみなす)。 ロングは最短0.10秒未満を拒否。ロング作成中は黄色い点線ガイドを表示。 ・選択中ノーツは白い枠で強調。サイドパネルに選択中の レーン・時刻・種類を表示。 ・保存先は localStorage キー aimoge_user_charts_v1。保存は必ず safeSetLocalStorage 経由(容量警告を見たら将来 IndexedDB ミラーへ 移行できる既存方針に乗せる)。 ・1曲+1難易度につき3枠(slots[0..2])保存できる。各枠に notes と 保存日時を持つ。旧形式(notesを直持ち)のデータは読み込み時に 自動で枠1へ移行するので、既存の手動譜面は失われない。 ・保存キーは既存の楽曲レコードと同じ形式(曲名|szファイルサイズ| 難易度)。曲+難易度ごとに1つ保存。別の曲・難易度の譜面は混ざらない。 ・「譜面」タブ(AUTO/手動)は難易度の下に常時表示。手動を選んで その曲+難易度に手動譜面があれば notes を手で作った譜面に差し替えて プレイ。無ければ案内を出してAUTOでプレイ(プレイは止めない)。 手動譜面のときは mirror / random / mine の自動加工は適用しない。 ・タブで AUTO を選べば従来どおり自動生成譜面でプレイ=AUTOへ戻す導線。 ・移動ボタンの表記を分かりやすく調整(「左レーン/右レーン」→ 「ノーツを左へ/右へ」、「時刻±0.1」→「少し早く/少し遅く」)。 主語を「選んだノーツ」に統一して誤解を減らした。 ・EXE版(Electron)で動かない prompt() を全廃。保存枠の選択は 画面のボタン方式に、譜面コードの貼り付けは入力欄方式に変更。 ・譜面共有コードの表示を、表示専用から「入力できる欄」に変更。 ここにコードを貼り付けて「📥 貼り付け」を押すと適用できる (EXE版でクリップボードが使えない場合の対策)。 ・既存のセーブ・記録・遊び方・自動生成譜面には影響しない。 【v1.3.40】── 譜面エディタの画面まわりを整理(まだ見るだけ) ★ かんたんに言うと: 前回作ったエディタを、ちゃんと「エディタ画面」として 見やすく整えました。エディタに入ると、左の操作パネルが 通常プレイ用(スレ立て・落とす・詳細オプションなど)から エディタ専用のパネルに切り替わります。これで「いま自分は エディタにいる」のがはっきり分かります。 入口のボタン名も、いまの段階に合わせて 「👁 譜面を確認する(手直し準備)」 「📄 空の譜面を確認する(準備中)」に変えました。 (前回は「手直しする」と書いてあるのに何もできず、  分かりにくかったため。編集機能は次のバージョンで付きます。) エディタ専用パネルには、ノーツ数・いまの再生位置の表示と、 再生位置を動かすボタン(-5秒/-1秒/+1秒/+5秒、先頭へ/終端へ)、 「もどる」ボタンが付いています。 今回もまだ編集(追加・削除・移動・保存)はできません。 見てほしいのは、エディタ画面とプレイ画面(譜面プレビュー)で、 ノーツの位置や流れる速さがズレていないか、です。 (あわせて、エディタ画面で長いノーツ(ロング)が早く消えて  しまう表示の不具合も直しました。) ── 以下くわしい話(読み飛ばしてOK)── ・前バージョンに、エディタに入っても左パネルが通常メニューの ままで、エディタ画面に切り替わらない不具合があった。 原因は、パネル切り替え処理が存在しないID(menu)を 参照していたこと。正しいID(panelLeftNormal / panelLeftEditor)に修正し、エディタ進入時に通常UIを隠して エディタ専用UIへ差し替えるようにした。 ・左パネルを2系統に分離。panelLeftNormal(通常プレイ用UI)と panelLeftEditor(エディタ専用UI)。EDITING中は前者を隠し 後者を表示する。canvasに重ねる操作オーバーレイ(editorPanel)も 同時に表示する。 ・入口ボタンの文言を現段階(確認のみ)に合わせて変更。 ・エディタ専用パネルのノーツ数・現在位置は updateEditorUI()で 上部バーと同時に更新(edSideCount / edSideTime)。 ・再生位置移動ボタンは上部バー・サイドパネル共通で .ed-seek クラスに結線(-5/-1/+1/+5秒、先頭=-99999/終端=99999で クランプ)。 ・STARTガード追加:EDITING中にスレ立て(START)を押しても プレイを開始せず、先にエディタを閉じるよう促す。 ・前バージョン同様、自動生成譜面(notes)は直接いじらず、 エディタはコピー(editorNotes)に対してのみ操作。保持する 安定フィールドは lane/time/type/duration/char/source の6つ。 ・座標計算(layout)はプレイ画面と共通のまま。エディタ画面と プレイ画面でノーツ位置が一致することの確認が引き続き目的。 ・ロングノーツ表示の不具合を修正。エディタ画面で、頭が判定 ラインを通り過ぎた瞬間にロング帯ごと消えてしまっていた (プレイ画面では押しっぱなし区間の間ずっと残るのが正しい)。 可視判定を「頭」だけでなく「終端」も見るようにし、終端も 通り過ぎたときだけ消すよう修正。頭の太線も、頭が判定ラインを 過ぎたら描かないようにしてプレイ画面と挙動を合わせた。 ・セーブ・遊び方・記録・譜面生成には一切影響しない。 【v1.3.39】── 譜面エディタの土台づくり・第1段階(まだ見るだけ) ★ かんたんに言うと: 自動で作られた譜面を、自分で手直しできるようにするための 最初の一歩です。今回はまだ「見るだけ」で、置く・消す・動かす といった編集はできません。 メニューに「✏️ 譜面を手直しする(おすすめ)」と 「📄 空の譜面から作る(上級者向け)」の2つのボタンが増えました。 押すとエディタ画面が開き、4本のレーンと、いま作られている ノーツが並びます。下のボタンで再生位置を前後に動かして、 譜面の流れを眺められます。「もどる」かESCキーで戻れます。 今までのセーブ・遊び方・記録には一切影響しません。 (この段階で見てほしいのは「編集しやすいか」ではなく、  エディタ画面とプレイ画面で、ノーツの位置がズレていないか  だけです。ズレていなければ土台は成功です。) ── 以下くわしい話(読み飛ばしてOK)── ・ゲーム状態に EDITING を追加。メインループは EDITING のとき 通常のゲーム描画を完全にスキップし、エディタ描画だけ行う。 ・入口は2つだが中身は共通。「手直し」=既存notesをコピーして 入る/「空から作る」=空配列で入る。編集画面・保存形式・ 再生は今後すべて共通化していく。 ・自動生成譜面(notes)は絶対に直接いじらない。エディタは必ず コピー(editorNotes)に対して操作する設計。今回は表示のみ。 ・エディタが保持する安定フィールドは lane / time / type / duration / char / source の6つだけ。描画位置(y)やプレイ中 状態(holding/cleared)は譜面データに含めない。 ・エディタ画面のレーン・判定ライン・ノーツ位置は、プレイ画面と 同じ座標計算(layout)をそのまま使用。再生ヘッドの時刻を 「現在時刻」とみなして各ノーツの位置を出すため、プレイ時と 完全一致する(=この一致の確認が本バージョンの目的)。 ・「手直し」は音声未読込だと開けない(自動生成する譜面が必要)。 必要なら開いた時点で譜面を生成する。空譜面はいつでも開ける。 ・ESC/「もどる」でメニューへ安全に復帰。土台は仮編集が無いため 確認ダイアログは出さない(編集を入れる段階で追加予定)。 ・編集・追加・削除・保存・Undo/Redo はまだ未実装(次段階以降)。 ・既存のIndexedDBミラー基盤・セルフチェックは無傷(5/5 PASS)。 【v1.3.38】── セーブの新基盤づくり・第1段階(裏側だけの変更) ★ かんたんに言うと: 遊び方・見た目・セーブの動きは何も変わりません。 将来セーブの保存先を容量の大きい仕組み(IndexedDB)に 引っ越すための準備として、保存のたびに「控えのコピー」を 裏で取るようにしました。本番のセーブは今までと完全に同じ 場所・同じ動きです。控えが壊れてもゲームには影響しません。 ── 以下くわしい話(読み飛ばしてOK)── ・💾 IndexedDBミラー(二重書き込み・段階1/3) 保存の正本は従来どおり localStorage。読み込みも100%従来どおり。 保存が成功するたび、同じ内容をIndexedDB(鏡)にも書き込む。 起動時に全キーを鏡へ同期し直すので、鏡は常に正本の完全コピー。 IndexedDBが使えない環境では黙って無効になり、影響ゼロ。 ・🔍 セルフチェックに検査5「IndexedDBミラー整合」を追加 Ctrl+Shift+T で、鏡が正本と完全一致しているかを両方向で確認 できる(5項目になった)。 ・🗺 今後の予定(別バージョンで1段階ずつ) 段階2: 読み込みをIndexedDBへ切替(localStorageは保険に残す) 段階3: 保存もIndexedDB主体に。容量警告とおさらばする。 ・🔧 譜面生成・判定・表示・共有コードは変更なし 【v1.3.37】── セルフチェック機能(開発用の安全装置) ★ かんたんに言うと: 遊ぶ人には何も変わりません。今後ゲームの土台部分を改修して いくときに「壊れていないか」を一発で確認できる検査機能を、 開発用として内蔵しました。普段は完全に眠っていて、自分から 起動しない限り一切動きません。 ── 以下くわしい話(読み飛ばしてOK)── ・🔍 runSelfCheck() を追加(Ctrl+Shift+T か、開発者ツールの コンソールで runSelfCheck() と入力すると実行) 検査は4項目。結果はコンソールに「✅ 4/4 PASS」のように出る。 1) 譜面コードの往復検査:コードを読み書きして値が一切 変わらないこと、壊れたコードをちゃんと弾くことを確認。 2) セーブデータ検査:楽曲レコードや設定がちゃんと読める 形で保存されているかを確認(読むだけで書き換えない)。 3) 譜面生成検査:テスト用の仮ビートから譜面を作り、時刻順・ レーン範囲・同じコードなら同じ譜面になること(決定性)を 確認。検査後は元の状態に完全復元する。プレイ中はスキップ。 4) 定数・素材検査:画面レイアウトの数値が壊れていないか、 キャラ画像8枚が読み込めているかを確認。 ・🛡 全項目「読み取り専用」設計。ゲームの動作・判定・譜面・ セーブデータには一切手を触れない。 ・🔧 ゲーム本体(譜面生成・判定・表示・共有コード)は変更なし 【v1.3.36】── ロングノーツの見やすさ&初心者向け案内 ★ かんたんに言うと: 「押しっぱなしが苦手」という声に応えて、ロングノーツを 分かりやすくしました。終点に白い●マークが付き、押している間は 判定ラインが光り、早く離すと「早離し⚠️」と教えてくれます。 判定やスコアの仕組みは一切変えていません。見た目と案内だけです。 ── 以下くわしい話(読み飛ばしてOK)── ・🎯 ロングノーツの終点マーカー ロングノーツの終端に、太い白のキャップと●マークを表示。 「どこまで押し続ければいいか」が一目で分かるようになった。 ・✨ 押しっぱなし中の「しぶき」エフェクト ロングを押せている間、判定ラインからレーン色のしぶきが 出続ける。「今ちゃんと押せている」が見て分かる。 しぶきは手前側にだけ飛び、後から来るノーツには重ならない。 ・💥 早離しの「破裂」エフェクト+表示 終点まで0.3秒以上残して離すと、オレンジのしぶきが弾けて 「早離し⚠️」と表示。ここで離した、が一目で分かる。 スコアやペナルティの計算は従来と同じで、見た目だけの追加。 「最後まで押し続ける」コツを遊びながら覚えられる。 ・😎 はじめての人向け案内 難易度の EASY に「←はじめてはここ推奨」を追記。 キーコンフィグの下に、ロングノーツの操作ヒントを1行追加。 ・🔧 譜面生成・BPM推定・判定ロジック・共有コードは変更なし 【v1.3.35】── プレイリストの並べ替え機能 ★ かんたんに言うと: フォルダや複数選択でプレイリストを作ったあと、曲順を自由に 並べ替えられるようになりました。「名前順」「長さ順」「シャッフル」 のボタンと、1曲ずつ上下に動かす手動並べ替えが使えます。 並べ替えはプレイを始める前だけできます。 ── 以下くわしい話(読み飛ばしてOK)── ・🔀 並べ替え3種+手動移動(折りたたみ式) プレイリスト欄の「並べ替え」ボタンを押すと、「名前順 / 長さ順 / シャッフル」ボタンと曲リストが開く(普段は閉じていて場所を取らない)。 曲リストの各行にある ↑ ↓ で1曲ずつ手動移動もできる。 名前順 … ファイル名を数字順で並べる(2 が 10 より前) 長さ順 … 曲の短い順(秒数が分かったものから昇順) シャッフル … ランダムに並べ替え ・⏱ 曲の長さを先読み表示 プレイリストを作ると、各曲の長さ(秒)を軽く先読みして 曲名のとなりに表示する。重い譜面解析ではなくメタデータだけを 読むので軽い。長さ順の並べ替えにも使う。 ・🔒 並べ替えはプレイ開始前のみ プレイ中に順番を変えると進行がズレるため、まだ1曲目を 始めていない状態(メニュー)でだけ並べ替えボタンが有効になる。 プレイ中は自動でボタンが無効化される。 ・🔧 譜面生成・BPM推定・共有コードは変更なし 曲の順番を入れ替えるだけで、各曲の譜面そのものは変わらない。 【v1.3.34】── フォルダ読み込みの曲順を自然な並びに修正 ★ かんたんに言うと: フォルダを読み込んだとき、サブフォルダ(フォルダの中のフォルダ) に入れた曲が先に来てしまうことがあったのを直しました。 これからは「フォルダ直下の曲が先、サブフォルダの中の曲は後」 という、エクスプローラーで開いたときに近い並びになります。 ── 以下くわしい話(読み飛ばしてOK)── ・🔢 曲順を2段階ソートに変更 v1.3.33ではパス文字列をそのまま比較していたため、サブフォルダ 内の曲がフォルダ直下の曲より前に来ることがあった。 今回から (1)階層の浅い曲を先に → (2)同じ階層なら名前を数字順 (2 が 10 より前)でソートするように変更。 例:親/01.mp3, 親/02.mp3 …のあとに 親/サブA/a.mp3 …が続く。 ・🔧 フォルダD&Dとフォルダ選択ボタンの両方に反映 どちらも同じ共通処理を通るので、並び順は共通。 譜面生成・BPM推定・共有コードは変更なし。 【v1.3.33】── フォルダごとまとめて読み込み(D&D/選択ボタン) ★ かんたんに言うと: 曲がたくさん入ったフォルダを、まるごとドラッグ&ドロップ (または「📁 フォルダを選択」ボタン)で読み込めるように なりました。中の対応ファイルを自動で集めて、ファイル名順の プレイリストにします。譜面の作り方は変えていません。 ── 以下くわしい話(読み飛ばしてOK)── ・📁 フォルダのドラッグ&ドロップに対応 フォルダを画面にドロップすると、中身を再帰的に読み(サブ フォルダも辿る)、対応する音声/動画ファイルだけを抽出して プレイリスト化する。曲順はフォルダ内のパス+ファイル名を 数字順で自然ソート(2 が 10 より前に来る並び)。 ・📁「フォルダを選択」ボタンを追加 ドラッグ&ドロップが使いにくい環境向けに、明示的にフォルダを 選ぶボタンも用意(webkitdirectory)。こちらも同じく中の曲を まとめてプレイリスト化する。 ・⚠ ブラウザでindex.htmlを直接開いた場合の制限 Chrome等で index.html を file:// で直接開くと、ブラウザの セキュリティ制限でフォルダD&Dの中身が読めず0件になることが ある(コンソールに Unsafe attempt to load URL ... が出る)。 その場合は案内を表示するので、「📁 フォルダを選択」ボタンか、 EXE版(インストール版)を使うとよい。EXE版では問題なく動く。 ・🔁 既存の読み込みはそのまま 単一ファイルD&D・複数ファイルD&D・ファイル選択は従来どおり。 フォルダから集めた曲も、既存のプレイリスト処理に流すので、 曲数上限・巨大ファイル警告・長尺警告・プレイ中の読み込み ガードはこれまでと同じように効く。 ・🔧 譜面生成・BPM推定・BPM信頼度・共有コードは変更なし 【v1.3.32】── ユーザー報告対応の小修正パッチ ★ かんたんに言うと: 難易度とノーツ速度が、ゲームを開き直すと毎回リセットされて いたのを、自動で覚えるようにしました。あわせて .wav も使える ことを分かりやすくし、一部の読めないWAVには案内を出すように、 また index.html を直接開いた版で、リザルトの保存画像に あいもげちゃんが出ないことがあったのを直しました。 譜面の作り方そのものは一切変えていません。 ── 以下くわしい話(読み飛ばしてOK)── ・💾 難易度・ノーツ速度の自動保存 難易度(diffSelect)とノーツ速度(speedSlider)を変更すると localStorage に保存し、次に開いたとき自動で復元するように。 保存キーは aimoge_difficulty / aimoge_note_speed。 EASYで速度を自分好みに調整したら、次回もそのまま遊べる。 既存の設定エクスポート/インポートとは別経路で、壊さない。 ・🎵 音声・動画ファイル表記の改善(.wav / .webm 等が分かるように) 左パネルの表記を「音声ファイル (.mp3等)」から 「音声ファイル (.mp3 / .wav / .flac / .ogg 等)」に変更。 BGA差し替え欄も「(.mp4等)」から「(.mp4 / .webm 等)」に変更。 読み込みロジックは元から wav/flac/ogg や webm 等に対応している ため変更なし(ドラッグ&ドロップの対応拡張子もそのまま)。 ・⚠ 一部WAVが読めないときの案内を改善 拡張子が .wav のファイルがデコードに失敗したときだけ、 「16bit PCM WAV または mp3 に変換して試してください」という 補足を表示。原因究明用に、WAVヘッダーの fmt 情報(形式・ チャンネル数・サンプルレート・ビット深度など)を Console に 出力する。独自のWAVデコーダーやffmpegは導入していない。 (SUNO製WAV等で、拡張子は同じでも内部形式が標準デコーダーに 合わず読めない個体差への対処) ・🖼 index.html直開き版のリザルト保存画像キャラ消失を修正 index.html を file:// で直接開いた版だけ、リザルトの 「画像で保存」で左のあいもげちゃんが空白になることがあった。 外部画像(./aimoge.webp)を保存用Canvasに描くと、file:// では Canvasが汚染(taint)され保存に失敗していたのが原因。 保存画像のときだけ、汚染しない data URI 版の画像を優先して 描くように変更。画面表示は従来どおり外部参照のまま、 EXE版・mobile版の挙動も変わらない。画像なし保存への フォールバックもそのまま残している。 ・🔧 譜面生成・BPM推定・BPM信頼度・共有コードは変更なし 今回はQoL(遊びやすさ)と案内まわりの小修正のみ。 v1.3.31 のBPM信頼度の警告表示も従来どおり動作する。 【v1.3.31】── 低信頼の曲に読み込み時の注意表示 ★ かんたんに言うと: 自動解析が苦手そうな曲を読み込んだとき、「譜面生成完了!」の お知らせに目立つ注意が出るようになりました。譜面の作り方は 一切変わっていません。あやしい曲を事前に知らせるだけです。 ── 以下くわしい話(読み飛ばしてOK)── ・💬 信頼度が低い/不明のときだけ案内を表示 bpmConfidence(v1.3.30で算出)を見て、score < 0.45 または level==='不明' のときだけ、読み込み完了 alert に注意文を追加。 score >= 0.45 の曲では何も出さず、従来どおりの完了メッセージ のみ(Consoleログは全曲で従来どおり出力)。 ・🚨 目立つ装飾 上下を !!!! の帯で囲み、⚠️🚨(不明時は🎵)の絵文字を添えて 見落としにくくした。表示は3段階: 不明 → 等間隔寄りの譜面になります score<0.35 → BPM解析が不安定です 0.35〜0.45 → BPM解析がやや不安定です ・🎬 通常音声・動画音声モードの両方に対応 mp3等の通常読み込みと、mp4を音声として読み込んだ場合の 両方の完了メッセージに同じ案内を追加。 ・⚠ 譜面生成・BPM推定・共有コードには一切影響なし 既存の alert に文字列を足すだけ。新しいモーダルやボタンは 増やさず、操作も止めない。 【v1.3.30】── BPM信頼度スコアの計算を辛めに調整 ★ かんたんに言うと: v1.3.29で入れた「解析の信頼度」の出し方を見直し、低音が 多いだけの曲を高評価しすぎないようにしました。これも譜面の 作り方そのものは変えていません。 ── 以下くわしい話(読み飛ばしてOK)── ・🔧 単純平均から重み付けに変更 旧来は onset/regular/phase の3指標の単純平均だったが、 低音(キック)が多い通常曲では onsetScore がほぼ1.0に張り付き、 間隔がガタガタな曲まで「中」と出やすい甘さがあった。 confScore = onset*0.2 + regular*0.45 + phase*0.35 に変更し、 実際に当たり具合を左右する regular(間隔の揃い)と phase(グリッド一致)を重視。 ・🛡 安全弁の追加 regular < 0.15 かつ phase < 0.45 のときは、どれだけ低音が 多くても confScore を最大 0.49 に制限。低音は大量にあるが 拍が揃っていない曲を「高」と誤判定しないようにした。 ・📊 判定ラインは据え置き 高 >= 0.60 / 中 >= 0.35 / 低、および 不明 の区分は v1.3.29 と同じ。今回は計算式だけの調整。 【v1.3.29】── BPM推定の信頼度の見える化 ★ かんたんに言うと: 自動でついた BPM が「どれくらい当たっていそうか」を内部で 判定し、ログに出すようにしました。まだ画面表示はせず、 F12のConsoleで確認できる開発用の指標です。 ── 以下くわしい話(読み飛ばしてOK)── ・🎯 信頼度スコアの算出 BPM推定の直後に、(1)低域オンセット数、(2)間隔の揃い具合、 (3)位相フィット(bestScoreの正規化)の3指標から 0〜1 の スコアを計算し、高/中/低/不明 の4段階で判定。 bpmConfidence = { level, score } に保持。 ・🪵 Consoleログ出力 [bpm-conf] BPM=128 信頼度=高 (score=0.72 / onset=... ) の 形式でログを出力。低域不足でBPM推定をスキップした曲は 信頼度=不明 とする。 ・⚠ 譜面生成には不使用 beatTimes / detectedBPM は一切書き換えず、純粋に表示用の 指標として算出するのみ。譜面の作り方は変更なし。 【v1.3.28】── 左右ステージのサイド演出強さ調整 ★ かんたんに言うと: 画面の左右で光ったり動いたりする演出の強さを、スライダーで 抑えられるようにしました。にぎやかすぎると感じる人向けです。 ── 以下くわしい話(読み飛ばしてOK)── ・🎚 サイド演出強さスライダーを追加 左右ステージのスポットライト/ミニキャラ乱舞/ネオン点滅を 0.0〜1.0 で抑制できる sideFxStrength を追加。0% でもキャラの 固定表示は残り、コンボ時のネオン点滅だけを止めて落ち着いた 見た目にできる。設定はローカルに保存・復元。 【v1.3.27】── BGA同期補正&背景エフェクト強さ調整 ★ かんたんに言うと: 動画を背景(BGA)にしたときの映像と音のズレを微調整できる ようにし、コンボ時の背景エフェクトの強さも変えられるように しました。見た目の調整だけで、判定やスコアには影響しません。 ── 以下くわしい話(読み飛ばしてOK)── ・🎬 BGA同期補正スライダーを追加 背景動画(BGA)の表示タイミングを ms 単位で補正する userBgaOffset を追加。映像と音楽の見かけのズレを調整できる。 あくまで表示用の補正で、共有コードやレコードには含めない 純ローカル設定。 ・🎆 背景エフェクト強さスライダーを追加 コンボ時に背景へ放射される演出の強さを 0.0〜1.0 で調整できる bgFxStrength を追加。演出のみでゲーム進行には影響しない。 【v1.3.26】── 読み込み失敗メッセージの改善 ★ かんたんに言うと: 対応していない音声や、壊れたファイルを読み込んだとき、「なぜ読めな かったか」がわかるメッセージを出すようにしました。失敗してもゲームが 変な状態にならず、すぐに別の曲を試せます。 ── 以下くわしい話(読み飛ばしてOK)── ・⚠ 失敗理由を具体化 音声のデコード失敗(decodeAudioData)の理由を DOMException の種類 (EncodingError など)から推測し、「対応していない形式/ファイル破損 の可能性」といった案内に。末尾に技術的な詳細(name/message)も添えて 開発時のログ追跡もしやすくした。describeDecodeError() を追加。 ・🧹 通常音声の失敗時にクリーン化 以前は mp3 等のデコードに失敗すると、デフォルト譜面にも戻らず中途半端 な状態(解析未完了・前曲データ残り)になることがあった。失敗時に clearAudioFile() を呼び、デフォルト譜面状態へ確実に戻すよう修正。 ・🎬 動画音声モードの文面修正 「ビート解析非対応コーデック」と断定していたのをやめ、破損やデータ 不正の可能性も含む案内に変更。音声を解析できない場合に等間隔譜面へ フォールバックして遊べる挙動は従来どおり(変更なし)。 【v1.3.25】── 曲識別キー強化(スコア汚染対策) ★ かんたんに言うと: 別々の曲のハイスコアが、ごくまれに混ざってしまうことがあったのを 防ぎました。今までのハイスコアはそのまま引き継がれ、譜面の内容や 共有コードはこれまでと一切変わりません。安心してそのまま遊べます。 ── 以下くわしい話(読み飛ばしてOK)── ・🔑 楽曲別ハイスコアの識別キーを衝突耐性のあるものに強化 旧来はキーの一部に file.size % 88888 由来のシードを使っていたため、 ファイル名が同じでサイズが合同になる別曲どうしが「同じレコード」に 化け、ベストスコアが混ざる可能性が残っていた。識別にはフルの file.size を使うよう変更し、衝突を大幅に低減。 ・🤝 既存レコードは自動で引き継ぎ(遅延マイグレーション) 旧キーで保存済みの記録は、その曲を次にプレイしたタイミングで 新キーへ自動移送。スコア・精度・MaxCombo・FC/AJ達成・プレイ回数 (合算)・初回日時を安全に引き継ぐので、過去の記録は失われない。 ・🧩 譜面と共有コードは一切不変 譜面生成のシード(currentSongSeed = file.size % 88888)は据え置きの ため、同じ曲の自動生成譜面はこれまでと完全に同一。譜面共有コード (aimoge:v1-…)の形式も変更なし。今回の強化は「レコードの取り違え」 だけを対象にした堅牢化で、プレイ体験には影響しない。 ※ サイズ不明の状況(デフォ譜面/曲ファイル未ロードでコードだけ貼付) は従来どおりの旧キーで動作。 【v1.3.24】── バックアップ取込データの正規化(クラッシュ/注入対策) ★ かんたんに言うと: 他の人からもらったスコアや、自分のバックアップを読み込んだとき、 そのデータが壊れていてもハイスコア画面が固まったり落ちたりしなく なりました。こわれた取込ファイルでも安全になりました。 ── 以下くわしい話(読み飛ばしてOK)── ・🧼 取込レコードを読み込み時・取込時に型矯正 バックアップJSONや他プレイヤーのレコードJSON経由で、壊れた型の レコード(精度が文字列、スコア欠損、NaN など)が混入すると、 レコードビューアの toFixed() / toLocaleString() が落ちる恐れが あった。全フィールドを期待する型・範囲へ矯正し、矯正不能な レコードは破棄する normalizeSongRecord() を追加。通常レコード取込 (マージ/上書き)・全体バックアップ取込・読み込みの全経路に適用。 ・🛡 レコード一覧のグレード表示の HTML注入を封じる レコードビューアの bestGrade がエスケープされずに描画されていた ため、壊れたバックアップ由来の値で HTML/JS 注入の余地があった。 グレードを既知の値(SSS〜F/?)のホワイトリストに矯正して無効化。 【v1.3.23】── キャラ画像の用途別最適化+WebP一本化 ・🔍 全使用箇所の表示サイズを実測 - 左マスコット aimoge: 最大258px(lW=130幅制約) - mp3のみ時の背景 burumoge: 高さ580px - 判定カットイン演出: ノーツ画像が中央220px描画→5倍拡大 - 右マスコット shiran/burumoge: 最大258px ・🪶 用途に応じた最適サイズに縮小 キャラ素材: 高さ1024px(PC)/640px(mobile) ノーツ素材: 短辺256px(PC/mobile共通) ※ノーツはカットイン演出で220px描画されるため、 モバイル版も短辺256pxを維持して鮮明度を確保。 ・📱 PC版とモバイル版で素材を分離 PC版(外部参照index.html)は通常素材、 モバイル埋め込み版(aimoge-mobile.html)は更に縮小した -mobile.webp 素材を使用。build-embedded.js が -mobile サフィックスを優先採用するロジックに改修。 ・🧹 PNG/GIF を完全廃止(WebP一本化) v1.3.0でモバイル埋め込み版はWebP化していたが、PC版の imgSources は './aimoge.png' 等を参照したままで、配布物が WebPのみなのに参照名がPNGのままという不整合が残っていた。 imgSources を全て .webp 参照に書き換え、build-embedded.js の candidates からも PNG/GIF を撤去。 ・📦 配布サイズの削減 aimoge-mobile.html: 2.05MB → 1.26MB (39%削減、約790KB減) PC版素材合計: 916KB → 540KB (41%削減) モバイル版素材合計: 916KB → 351KB (62%削減) PNG/GIF原本ファイル群を配布から除外(ユーザー側で原本保管推奨)。 ゲーム挙動・譜面生成・レイアウト・各演出は一切変更なし。 ・🔧 package.json/build.files の整理(v1.3.23 + 0.1) WebP一本化に伴い、Electron-builder の build.files から *.png / *.gif を削除推奨。版数も 1.3.0 → 1.3.23 に更新。 gonext.mp3 は data URI として index.html に埋込済みのため、 外部ファイルとしての同梱は不要(サンプル曲のmp3とは別)。 【v1.3.22.2】── 確認ダイアログ順序整理+XSS対策強化 ・🐛 「キャンセルしたのにプレイだけ止まる」を修正 v1.3.22.1 では canLoadFile/checkFileSize 直後に resetGame を 呼んでいたため、後続のプレイリスト関連確認(30曲超え/10曲超え) や isVideoAudio時の再ロード確認でキャンセルされると、ロード しないのに元プレイだけ中断されていた。 「全ての確認を済ませてから最後に resetGame」の順序に変更。 ・🛡 譜面コードコピーボタンの XSS 対策 レコードビュアー・プレイリストリザルトの譜面コードコピー ボタンが inline onclick で ${code} を直接埋め込んでいたため、 バックアップ由来の壊れた shareCode で JS文字列注入の余地が あった。data-code 属性 + イベントデリゲーション方式に変更。 【v1.3.22.1】── v1.3.22 の取り残し修正(ChatGPT監修) ・🐛 プレイ中ガードの実中断処理を追加 v1.3.22 では confirm するだけで resetGame() を呼んでいなかった ため、OK選択後に gameState=PLAYING のまま新曲解析が走る ゾンビ状態になりうる致命バグを修正。 isLoadSafeState() で判定→needReset を先に保存→canLoadFile() →checkFileSize()→needResetなら resetGame() の順序に。 ・🛡 BGA差し替え経路もガード対象に handleVideoUpload() が canLoadFile/checkFileSize の対象外 だったため、プレイ中BGA差し替え+isVideoAudio時のOK経路に 穴があった。同じガードを追加。 ・🛡 ランキング表示のHTMLエスケープ renderRanking() が playerName / バックアップ由来 name を そのまま innerHTML に入れていたため、悪意のあるバックアップ JSON 取込で HTML注入可能だった。escapeHtml() を適用。 【v1.3.22】── 堅牢化パッチ(異常入力対策) ・🛡 プレイ中のファイル読み込みガード プレイ中・カウントダウン中・遷移中などにファイルを誤って ドロップしたり選択した場合、確認ダイアログが出るように。 OKで現在のプレイを中断して新曲ロード、キャンセルで継続。 ・⚠ ファイルサイズ警告 100MB以上で警告(続行可能)、300MB以上は読み込み拒否。 巨大ファイルでブラウザがフリーズするリスクを抑制。 ・⏱ 長尺ファイル警告 15分以上で警告、30分以上は強警告。譜面品質低下リスクを通知。 通常の楽曲(10分以内)の使用を推奨。 ・💾 localStorage保存失敗の可視化 保存容量超過 (QuotaExceededError) 時に黙って失敗していたのを、 ユーザーに通知+対処法案内するように変更。 safeSetLocalStorage() ヘルパで全localStorage書込を統一。 【v1.3.21】── ドラッグ&ドロップ対応 ・📂 ファイルを画面上にドロップで読み込み 画面のどこにドロップしても、対応形式の音楽/動画ファイルなら 自動で読み込み開始。ファイル選択ボタンを押す必要がなくなる。 ・🎨 視覚的フィードバック ドラッグ中は画面全体に「📂 ここにドロップ」オーバーレイ表示 ・🎵 単一/複数の自動振り分け 1ファイル → 単曲再生 / 複数ファイル → プレイリスト化 既存の handleAudioUploadEntry に流すため動作は従来と同じ ・🛡 対応形式チェック mp3/wav/ogg/m4a/aac/flac/opus/mp4/webm/mov/mkv を受け付け それ以外は警告表示してスキップ 【v1.3.20】── BGA差し替えの旧来バグ修正 ・🐛 v1.0.3 から続いていたバグを修正 「音声ファイル」に動画(mp4)を指定した状態で「BGAだけ差し替え」 を実行すると、bgVideo が音声源を兼ねている関係で、新しい 動画の音声でプレイされてしまう現象が発生していた。 ・🛡 状況を検出して確認ダイアログで意図確認 isVideoAudio=true(音声に動画使用中)の場合、videoUpload を 実行すると確認ダイアログが出る。OK選択時は「新しい音声+BGA」 として再ロード、キャンセル時は何もしない。 ・📝 UI 上の注意書きを追加 「⚠ 音声に動画を指定中はこの機能は使えません」を BGA差し替え 入力の下に表示。 【v1.3.19】── 音ハメ精度の強化 ・🎶 ビートグリッドをオンセットに吸着 BPM推定で位相を決めたあと、各ビート時刻を±55ms以内の 強い低域オンセットに寄せる。打鍵音ONで「微妙にズレてる」 感覚が大幅に改善。 ・✂ 終端ノーツ剪定 曲が「ジャン!」で終わるタイプでも、リバーブやノイズで 終端が後ろにズレることがあった。最後の強いアタックを 検出して、それ以降のノーツを物理的に消す。曲が終わった 後にノーツがこぼれる現象を解消。 ・🔍 fill / shortburst の近傍オンセット必須化 埋め草ノーツが「実音のない場所」に出ないように、 近くに音があるときだけ配置するよう変更。 ・🎚 サブグリッドのオンセット吸着 8分/16分の機械的グリッド位置でも、実音が近くにあれば そこに寄せる。リズム感は維持しつつ音ハメも改善。 【v1.3.18】── 配置の質を上げる(手バランス・局所ピーク削減) ・🤚 手バランスロジック強化 直近0.5秒の左右負荷履歴を参照。直前と同じレーンは末尾へ、 負荷差1以上で軽い手側を強制選択。「右手だけ忙しい」 現象を解消。 ・📉 局所ピーク削減(peak0.5s 緩和) 0.5秒スライディングウィンドウで密集区間を検出し、 重要度の低いノーツ(shortburst/fill/sub等)から優先的に 間引く。「平均は適正だが局所的に殺しに来る」を抑える。 beat と sustain は曲の骨格として削除対象外。 【v1.3.17】── 難易度バランス最終調整 ・CHAOSサブ8分2レーン同時を 55%→45% に ・NORMAL multiLane 0.03→0.04 に微調整 ・ギャップ埋め閾値を引き締め(休符を尊重しつつ無音は埋める) 【v1.3.16】── 手バランス対応+NORMAL調整 ・🤚 手バランス対応のレーン選択 D/F=左手、J/K=右手とみなし、直近の負荷を見て軽い手側を 優先選択。melody/sub/fill 全ステップに適用。 ・CHAOSサブ8分2レーン同時を 100%→55% に ・CHAOS 3レーン同時を 10%→4% に絞る ・NORMALのショートバーストを2連までに制限 ・ギャップ埋め閾値を緩めて休符を残す ・📊 レーン偏りロガー追加(D/F/J/K使用回数、L/R比、同時押し数) 【v1.3.15】── 難易度バランス調整(ChatGPT監修) ・addNotesPerSec:HARD 3.0→2.5、CHAOS 4.5→3.2 ・melodyChance:HARD/CHAOS 段階的に下げ(過剰拾い防止) ・📊 難易度統計ログ追加(avgNPS、peak1s、peak0.5s、chords、triple+) EASY 1.2-1.8、NORMAL 2.2-3.2、HARD 4.0-5.8、CHAOS 6.0-7.2 の avgNPS 目安帯で評価。 【v1.3.14】── 楽曲構造への追従+ロングトーン連動 ・🎨 動的 intensity melodyOnsets の時間分布から実際の楽曲メリハリを推定。 固定30% + 動的70% でブレンドし、サビ/Bメロが時間的に ズレる曲でも自然な濃淡に。 ・🔧 ギャップ埋めステップ追加 1秒以上ノーツが無い区間を検出して埋め草を配置。 「Bメロでノーツがなくなる」現象対策。 ・🎵 持続音検出ロング配置 melodyOnset 間の長い空白=メロディの持続音と推定し、 その位置の beat をロングノーツに昇格。メロディが伸びる 箇所に自然なホールドが入る。 【v1.3.13】── 譜面配置ロジック根本見直し ・🎯 「衝突直接判定」に切り替え 旧版の「nxt[lane] による時系列リレーション」を廃止し、 全ノーツとの最小ギャップを直接判定する方式に変更。 これにより beat ノーツがレーンを占有してもmelody/sub/ stair/burst/shortburst が正しく入るようになり、譜面の 多様性が劇的に向上。 【v1.3.12】── beatノーツに intensity 予算 ・⚖ beat にも段階的なキャップを設定 サビ部分で beat が密集してステップ2以降の余地を奪う 問題を解決。サビは厚く、アウトロは控えめにメリハリ。 【v1.3.11】── beatノーツの密度抑制 ・skip 増加(HARD: 1→2)、multiLane 抑制 ・🎵 ロングノーツの終端制御 曲終わり際にホールドが配置されると bgVideo.ended で 強制クリアされてぶつ切りになる問題を防止。 【v1.3.10】── endGuard調整+ロング保険拡大 ・endGuard を 1.5秒 → 3.0秒に拡大(終盤雪崩防止) ・ロング強制クリア保険を 0.5→2.0秒に拡大 ロングノーツが画面上で終端に到達する前に消える 「単発に見える」バグを修正。 ・expectedEnd を曲の自然な終わりまで待つよう改善 【v1.3.9】── セグメント密度キャップ+ショートバースト導入 ・📏 曲を8等分してセグメントごとに密度を管理 ・⚡ 連打アクセント(ショートバースト)を全難易度に追加 既存ノーツの隙間に2〜5連の短いバーストを散りばめ、 「メリハリ」と「連打感」を両立。 【v1.3.8】── ロングノーツホールド中の曲終了処理 ・🐛 AUTO連続ホールド中にbgVideo.endedでコンボ無限増加 するバグを修正。未消化ノーツを強制クリアして 確実にendGame遷移するように。 【v1.3.7】── 「画像+音声」MP4の曲終了検出 ・🐛 動画フレームが音声より早く終わる特殊MP4 (画像添付MP4等)で曲が終わらない問題を修正。 bgVideo.ended を見て確実に終了判定。 【v1.3.6】── 動画ファイル解析の同期化 ・🐛 動画解析完了前にゲーム開始してデフォ譜面が 出るバグを修正。_songAnalysisReady フラグで解析完了 まで待機。ロード進捗表示も3段階に。 【v1.3.5】── 画面常駐デバッグパネル+EXE版F12対応 ・🔧 プレイリスト中に右下に状態スナップショットを表示 (AudioContext状態、idx、bgVideo時刻、ended等) ・🔧 EXE版でも F12 / Ctrl+Shift+I で DevTools が開けるように 【v1.3.4】── audioCtx.resume() ハング対策 ・🐛 AudioContext が suspended のまま固まる場合の 1秒タイムアウト保険を追加。プレイリスト中の 特定タイミングでの完全停止を防止。 【v1.3.3】── AudioContextノードリーク対策 ・🐛 ジングルや音声のAudioNodeが解放されない問題を修正 (8曲目以降の詰まりバグの原因)。src.onendedで 確実にdisconnect、actuallyStartGameで前回ノードを 確実に解放、endGameにstate guard追加。 【v1.3.2】── プレイリスト2曲目詰まりバグ修正 ・🐛 _audioUploadGen 世代カウンタで競合状態を解決 異なる曲のコールバックが入り乱れる問題を解消。 ・PLAYLIST_MAX を 30曲に、judgmentLog のメモリ圧迫対策。 【v1.3.1】── 結果画像保存のフォールバック ・🐛 Canvas tainted エラー対策(crossOrigin=anonymous) ・画像読み込み失敗時は画像なしで結果生成にフォールバック する2段階リトライ機構を追加。 【v1.3.0】 ・⌨ キーボードショートカット リザルト画面で ESC=閉じる / ← →=曲送り / Tab=タブ切替 / C=譜面コードコピー が使えます。レコードビューア(モーダル) でも ESC で閉じられます。 ・📦 統合バックアップ 左パネル「💾 設定」セクションに「📦 全体出力 / 📥 全体取込」 を追加。設定+全レコード+TOP5ランキングを1つのJSONで まるごと持ち運べます。PC引越し用に。 ・📥 レコード取込のモード選択 既存レコードと「マージ(高い方優先)」「上書き(全置換)」 を取込時に選べます。 ・🪶 スマホ版の大幅軽量化 aimoge-mobile.html を 17MB → 約2MB に削減 (画像をWebPに再エンコード、約90%削減) ・🛠 build-embedded.js のWebP対応 ビルドスクリプトが .webp 素材があれば自動採用、無ければ .png/.gif にフォールバックする両対応に。既にdata URI埋め込み 済みのアセット(ジングル等)はファイル不在でもスキップ。 【v1.2.4】 ・🐛 ファイルを消した後でもデフォルト譜面に戻らないバグを修正 曲解析データ(拍検出結果・シード等)が前曲のまま残っていた ため、✕でクリアしてデフォ譜面を遊ぶと前曲の譜面が出る不具合。 ・🎨 背景画像「デフォに戻す」ボタン位置を修正(縦並びに変更) 【v1.2.3】 ・🐛 デフォ譜面が始まらないバグを修正 曲をロード→✕でクリア→START でデフォ譜面を選んでも 時間が進まず無反応になる不具合(内部フラグ漏れ)を修正。 ・🔄 背景画像「デフォに戻す」ボタンを追加 【v1.2.2】 ・📖 プレイリストのリザルトでページ送り対応 複数曲プレイ後、リザルト画面の「単曲スコア」タブ上部に 「← 前曲 / N/M曲目: 曲名 / 次曲 →」ナビバーを追加。 過去の曲のスコア・グレード・タイミング分布・JUDGMENT TRAIL すべて遡って確認できます。 【v1.2.1】 ・🏅 楽曲別ハイスコアの永続保存 曲名×シード×難易度ごとに自己ベストを記録(スコア・グレード・ 精度・MaxCombo・FC/AJ達成・プレイ回数)。NEW RECORD判定も 曲別ベースに変更され、前のベストスコアを併記します。 ・📜 レコードビューアモーダル 右パネルに「🏅 曲別ハイスコア」セクションを追加。一覧モーダル で並び替え・難易度フィルタ・譜面コードのワンクリックコピーが 可能。 ・📤 レコードの出力/取込 JSON形式でエクスポート/インポートできます(クリップボード にも自動コピー)。 ・🎼 プレイリスト集計画面の改善 各曲の譜面コードを行ごとに📋ボタンでコピー可能、 「全曲の譜面コードをまとめてコピー」ボタンも追加。 ・🐛 マスコット飛び交い演出(コンボ15+)の機能不全を修正 フレームレート補正の影響で発火条件が成立しなくなっていた 問題を累積タイマー方式に置換。寿命管理(約10秒)も追加。 ・🐛 保存リザルト画像のあいもげちゃん位置ズレを修正 枠内に下端揃え+中央寄せでゲーム内表示と統一。 【v1.2.0】 ・🎶 曲間ジングル機能(プレイリスト用) プレイリストで次の曲に進むときに小さな「ジングル」が 鳴るようになりました。 ・🐛 ロングノーツ中のコンボがカウントされないバグを修正 ※ v1.1 以前の変更履歴は元の README をご参照ください。 ■ 遊び方は3通りあります ━━━━━━━━━━━━━━━━━━━ このフォルダには3種類の配布形態が入っています。 お使いの環境に合わせて選んでください。 ┌──────────────────────────────────────────────────┐ │ ● EXE版 (Windows用、インストーラ) │ │ ● PC/Mac用 (ブラウザ版 / 画像同梱が必要) │ │ ● スマホ・タブレット用(ブラウザ版 / 1ファイル完結)│ └──────────────────────────────────────────────────┘ 【方法A:EXE版(Windows・おすすめ・ダブルクリックですぐ遊べる)】 1.「aimoge-rhythm_Setup_X_X_X.exe」をダブルクリック (X_X_Xは同梱されているEXEのバージョン番号) 2. インストール画面の指示に従ってインストール 3. デスクトップのショートカット、または スタートメニューの「あいもげリズムゲー」から起動 ※ 初回起動時、Windowsが 「WindowsによってPCが保護されました」という青い画面を 出すことがあります。これは個人配布アプリの宿命です。 「詳細情報」→「実行」をクリックすれば起動できます。 ウイルスではありません。 【方法B:PC/Mac用ブラウザ版(Windows / macOS / Linux)】 1.「index.html」と同じフォルダに、同梱の画像ファイル一式 (aimoge.png / burumoge.png / shiran.png / karinto.png / ramune.png / ebinife.png / miimoge.png / pikasan.gif)が揃っていることを確認 2.「index.html」をダブルクリック 3. ChromeやEdge、Safariなどのブラウザで開きます 4. すぐ遊べます ※ PC/Mac用ブラウザ版は画像を外部ファイル参照しています。 index.html「だけ」をコピーしても画像が表示されません。 必ず画像ファイルと一緒にフォルダごとコピーしてください。 ※ macOSでは Safari / Chrome / Firefox いずれでも動作します。 ファイルをダブルクリックして開けない場合は、 ブラウザを開いてから index.html をドラッグ&ドロップ してください。 【方法C:スマホ・タブレット用ブラウザ版】 1.「aimoge-mobile.html」をスマホからアクセスできる場所に 配置(例: USBで送る/クラウド経由でダウンロード/ ローカルサーバで配信) 2. スマホのブラウザで開く 3. ☰ ハンバーガーボタンでコンソールを開き、 曲ファイルを選んでスタート 4. レーン下部のヒットエリアをタップしてプレイ ★ aimoge-mobile.html は画像が内部に埋め込まれているので このファイル1つだけで動作します。 スマホへ転送するときも aimoge-mobile.html だけでOK。 ★ v1.3.0 から画像をWebP圧縮に変更。約2MBに軽量化されたので モバイル回線でも転送が早くなりました。 (表示にはWebP対応ブラウザが必要ですが、2024年以降の iOS Safari / Android Chrome は全て対応済み) ※ 一部の機種ではタッチ判定にわずかな遅延が出ます。 「自動で測ってもらう」で自動補正してください。 ■ ゲームの遊び方 ━━━━━━━━━━━━━━━━━━━━━━ 1. 左パネルの「音声ファイル(mp3等)」で お手持ちのMP3ファイルを選びます ※動画ファイル(mp4等)を選ぶと音声+BGA同時設定もできます ※複数選択でプレイリスト作成も可能 ※画面に直接ドラッグ&ドロップでも読み込めます (v1.3.21+) 2. お好みで「BGAだけ差し替え」でMP4を選ぶと 背景動画として流れます。 ※ 音声ファイルにmp3/wav等を使っている場合のみ、 音声とは独立してBGAを差し替えできます。 ※ 音声ファイルに動画を指定している場合は、 構造上「BGAだけの差し替え」はできません。 確認ダイアログが出るので、「新しい音声+BGA」として 再ロードするかキャンセルするか選べます。 3. 緑色の「▶ スレ立て (START)」ボタンを押す 4. 「3、2、1、READY?」のカウントダウンの後、 ノーツが上から落ちてきます 5. ノーツが画面下の赤いライン(ジャッジライン)に 重なる瞬間に、対応するキーを押します (スマホはレーン下部のヒットエリアをタップ) Dレーン (1番) → かりんとう Fレーン (2番) → らむね Jレーン (3番) → えびないふ Kレーン (4番) → みいもげ ■ 判定について ━━━━━━━━━━━━━━━━━━━━━━━ ジャストタイミング → 清楚延命✨ +1000点 ちょっとズレた → 金山合格 +500点 かなりズレた → 知らん保留 +200点 押せなかった → 検閲失敗💩 寿命が減る! 画面右端の縦ゲージ(ホセ・ラミレス寿命)が ゼロになるとゲームオーバーです。 全ノーツを叩き切れば、花火演出の後にリザルト画面で SSS〜Fのグレードが表示されます。 ※「判定幅」を 精密/標準/ゆるい から選べます (⚙詳細オプション → 🎯判定) ■ 難易度の選び方 ━━━━━━━━━━━━━━━━━━━━━━ 😎 知らん (EASY) 音ゲー初心者向け 🌭 保留 (NORMAL) ふつう(最初はコレ推奨) 💩 検閲 (HARD) 中級者向け 💥 金山爆破 (CHAOS) 上級者向け・混沌 ■ ⚙ 詳細オプション ━━━━━━━━━━━━━━━━━━━━ 左パネルの「⚙ 詳細オプション」ボタンを押すと タブ式のオプション画面が開きます。 【🔊 サウンドタブ】 ・音色(複数のヒット音から選択) ・音量 ・判定別に音色を変える ・レーンごとに左右に振る(パン) ・AUTOプレイ時だけ鳴らす ・カッ(タッ・サンプリング) ・🎵 楽曲音量(BGM) 楽曲ファイルのBGM音量を 0〜100% で調整可能。 プレイ中でもリアルタイムで変更できます。 【🎮 プレイタブ】 ・再生速度(0.75x/0.9x/1.0x/1.1x/1.25x) ・開始位置(最初から/25%/50%/75%地点から) ・判定ライン位置 (LIFT):−100〜+100px 【🎯 判定タブ】 ・判定幅(精密/標準/ゆるい) ・FAST/SLOW 表示 ・⚡ 判定補助音 【❤ ゲージタイプ(ライフモード)】 ・EASY(減りにくい) ・NORMAL(標準) ・HARD(減りやすい) ・EX-HARD(数ミスで終了) ・NO FAIL(死なない) ・SUDDEN DEATH(1ミス終了) 【💥 混沌タブ(ネタ寄り高難度Mod)】 ・MIRROR(左右反転) ・RANDOM(レーンランダム) ・REVERSE(上下反転スクロール) ・STEALTH(ノーツが透明) ・HIDDEN(下を隠す) ・SUDDEN(上を隠す) ・HID-SUD(上下隠す) ・BLIND(UI・判定結果を隠す) ・MINE(地雷ノーツ混入) ・WAVE(ノーツが揺れる) ・DARK(暗くする) ・SHUFFLE COLOR(色シャッフル) 【🎓 練習タブ】 ・練習モード(記録対象外) 【👁 視認性タブ】 ・NOTE SIZE:小さめ(75%)/標準(100%)/大きめ(125%)/特大(150%) ・ノーツのアルファ・スケール・ブラー ・基準サイズ ・🎭 判定キャラ演出 判定時に対応キャラ画像が一瞬大きく表示される演出。 「キャラ画像を表示」のON/OFF切替と、 「演出の強さ」スライダー(0〜100、デフォルト100)で サイズと不透明度をまとめて調整できます。 ※ MISS時は赤いショック演出付きで「かりんとう」画像が表示されます。 ノーツが見えにくい時は演出の強さを下げてください。 ※「🔄 全部リセット」で初期値に戻せます ■ 🏅 楽曲別ハイスコア(v1.2.1〜) ━━━━━━━━━━━━━ 左パネルに「🏅 曲別ハイスコア」セクションがあります。 ここで楽曲ごとの自己ベストを管理できます。 【記録される内容】 曲名×シード×難易度の組み合わせごとに、以下を保存: ・ベストスコア・グレード・精度・MaxCombo ・クリア達成(○)/フルコンボ達成(✨FC)/オールジャスト(🏆AJ) ※ 一度でも達成すれば永続的に記録(その後の失敗で消えない) ・初回プレイ日時・最終プレイ日時・プレイ回数 ・その時の譜面コード ※ AUTO プレイ/無敵モードのスコアは記録されません 【📜 一覧】 ボタン 全レコードを一覧モーダルで表示。 ・並び順:最近プレイ順/スコア順/精度順/回数順/曲名順 ・難易度フィルタ:EASY/NORMAL/HARD/CHAOS 個別表示可 ・📋 ボタン:その記録時の譜面コードを1クリックでコピー ・モーダルは「✕ 閉じる」「外側クリック」「ESCキー」で閉じられます 【📤 出力】 ボタン 全レコードをJSONファイルとしてダウンロード&クリップボードへ コピー。掲示板で他のプレイヤーとスコア共有するときに便利。 ファイル名は aimoge_records_YYYY-MM-DDTHH-MM-SS.json 【📥 取込】 ボタン 他のプレイヤーから受け取ったJSONを読み込み。 取込時に「マージ/上書き」を選択できます: ・マージ(推奨):既存とベストスコアの高い方を採用 ・上書き:既存を全て破棄して取込ファイルで置換(バックアップ用) 【🗑 全消去】 ボタン 全レコードを削除します。事前に「📤 出力」でバックアップ推奨。 ■ 📦 設定の保存と引越し ━━━━━━━━━━━━━━━━━━ 左パネルの「💾 設定」セクションには2系統のエクスポートがあります。 【設定のみ(aimoge_settings.json)】 ・「エクスポート」:音ズレ補正・音量・キー設定など、設定だけ出力 ・「インポート」:設定だけ復元 【全体バックアップ(v1.3.0〜)】 ・「📦 全体出力」:設定 + 全レコード + TOP5ランキングを1ファイルで出力 (aimoge_full_backup_YYYY-MM-DDTHH-MM-SS.json) ・「📥 全体取込」:上記JSONからまとめて復元 PC買い替え・別ブラウザへの引越し・バックアップ目的なら 全体バックアップを使うと一気に持ち運べます。 ■ ⌨ キーボードショートカット(v1.3.0〜) ━━━━━━━━━━ リザルト画面が表示されているとき: ┌─────┬──────────────────────────────────┐ │ ESC │ リザルトを閉じてメニューに戻る │ │ ← → │ プレイリストの前曲/次曲のリザルトに切替 │ │ Tab │ 単曲スコア⇔集計タブを切替(プレイリスト時のみ) │ │ C │ 譜面共有コードをコピー │ └─────┴──────────────────────────────────┘ レコードビューアモーダル表示中: ┌─────┬──────────────────────────────────┐ │ ESC │ モーダルを閉じる │ └─────┴──────────────────────────────────┘ ※ プレイヤー名入力欄など、文字入力中はショートカット無効化 ■ ちょっとしたコツ ━━━━━━━━━━━━━━━━━━━━━ ・コンボを15以上で繋ぐと、画面全体がゲーミングカラーに  なってマスコットが乱舞します。気持ちいいです。 ・ロングノーツ(縦長のゲーミング発光ノーツ)は  キーを押しっぱなしにしてください。 ・プレイヤー名を設定するとランキングに表示されます。  空欄だと「名無しさん」になります。 ・ノーツ配置は曲ファイルから自動生成されます。  同じ曲+同じ難易度なら毎回同じ譜面なので、  練習して上達できます。 ・最初に「自動で測ってもらう」ボタンを押すと、  お使いの環境の音ズレを自動測定して補正してくれます。  まずこれを実行することを推奨します。 ・プレイリストで複数曲を連続プレイすると、リザルトで  ← → で曲送りして全曲の詳細データを確認できます(v1.2.2〜)。 ■ 譜面共有コードについて ━━━━━━━━━━━━━━━━━ 掲示板でお友達と「同じ曲・同じ譜面・同じ設定」で スコアアタックできます。 【単曲のコードを共有する】 1. 左パネルの「📋 譜面共有コード」エリアにある 「📤 コピー」ボタンを押す 2. クリップボードに譜面コードがコピーされます 例: aimoge:v1-5020-chaos-20-0 3. これを掲示板に貼り付けて公開 リザルト画面の譜面コード(オレンジ色)も クリックでコピーできます。リザルト中は C キーでもコピー可。 【プレイリスト全曲のコードを共有する(v1.2.1〜)】 プレイリストでの譜面コードは「曲ごとに別物」です。 全曲のコードを掲示板に貼る場合: ・プレイリスト集計タブ内、各行の📋ボタンで個別コピー ・「📋 全曲の譜面コードをまとめてコピー」ボタンで 全曲分を整形済みテキストで一括コピー 【コードから譜面を再現する】 1. お友達が共有した曲ファイル(mp3等)を入手 2. 左パネルでその曲ファイルを選ぶ 3. 「📥 貼り付け」ボタンを押す 4. 譜面コードをペーストすれば設定が一括適用される 5. 同じ譜面でプレイ開始 ※譜面コードと曲ファイルはセットで配布してください 違う曲ファイルでは同じ譜面が再現されません ■ 画像の差し替えについて ━━━━━━━━━━━━━━━━━ 配布形態によって画像の扱いが違います。差し替え方法も 変わるので、お使いの版を確認してください。 【方法A:EXE版】 インストール先フォルダ内に画像ファイルが配置されます。 該当のpngを上書き保存して再起動すれば差し替え可能です。 【方法B:PC/Mac用ブラウザ版(index.html)】 index.html と同じフォルダにある同名pngファイルを 上書きすれば差し替え可能です。 例:「aimoge.png」を別の画像で上書き → ブラウザ再読込 【方法C:スマホ用ブラウザ版(aimoge-mobile.html)】 画像がHTML内にbase64で埋め込まれているため、 同名pngを置く方法では差し替えできません。 ・ゲーム内アップロード機能 →「ぶるもげ背景画像」UIから背景画像を差し替え可能 (v1.2.3〜「🔄 デフォに戻す」ボタンで元に戻せます) ・HTMLを直接編集(上級者向け) 1. aimoge-mobile.html をテキストエディタで開く 2. 該当キャラ名の data:image/webp;base64,... の 行を探し、新しい画像のbase64文字列に置換 ※ v1.3.0〜 はWebP形式で埋め込まれています 3. 保存してブラウザで再読み込み ※ base64変換は「画像 base64 変換」で検索すれば ブラウザ上で変換できるサイトが見つかります 【参考:画像と推奨サイズ】 ┌──────────────┬──────────────┬──────────────────┬──────────┬───────────────────────────┐ │ 画像名 │ 表示サイズ │ 推奨作成サイズ │ 縦横比 │ 用途・配置ルール │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ aimoge │ 90 × 110 px │ 450 × 550 px │ 9 : 11 │ 左ステージのキャラクター │ │ │ │ (推奨: 900×1100) │ (縦長) │ 左右中央配置、足元が底辺 │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ burumoge │ 85 × 110 px │ 425 × 550 px │ 17 : 22 │ 右ステージ下キャラクター │ │ │ │ (推奨: 850×1100) │ (縦長) │ ※ミス時に横にミョーンと │ │ │ │ │ │ 膨らみます │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ shiran │ 90 × 110 px │ 450 × 550 px │ 9 : 11 │ 右ステージ上キャラクター │ │ │ │ (推奨: 900×1100) │ (縦長) │ ※キー入力時に一瞬前のめり│ │ │ │ │ │ に傾きます │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ karinto │ 53 × 24 px │ 265 × 120 px │ 2.2 : 1 │ Dレーン ノーツ画像 │ │ │ │ (推奨: 530×240) │ (横長) │ 横長の絵を枠いっぱいに │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ ramune │ 53 × 24 px │ 265 × 120 px │ 2.2 : 1 │ Fレーン ノーツ画像 │ │ │ │ (推奨: 530×240) │ (横長) │ 横向きに寝かせた絵を配置 │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ ebinife │ 53 × 24 px │ 265 × 120 px │ 2.2 : 1 │ Jレーン ノーツ画像 │ │ │ │ (推奨: 530×240) │ (横長) │ 横長の絵を枠いっぱいに │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ miimoge │ 53 × 24 px │ 265 × 120 px │ 2.2 : 1 │ Kレーン ノーツ画像 │ │ │ │ (推奨: 530×240) │ (横長) │ 横長の絵を枠いっぱいに │ ├──────────────┼──────────────┼──────────────────┼──────────┼───────────────────────────┤ │ pikasan │ 36 × 36 px │ 180 × 180 px │ 1 : 1 │ ライフゲージ上のキャラ │ │ │ │ (推奨: 360×360) │ (正方形) │ ライフ満タン=右オフィスで │ │ │ │ │ │ 残業、ライフ0=左の家に │ │ │ │ │ │ 帰れる演出 │ └──────────────┴──────────────┴──────────────────┴──────────┴───────────────────────────┘ 【画像差し替えのコツ】 ・PNG形式(透過対応)を強く推奨します ノーツ画像は枠線の中に表示されるので、 背景を透過しておくと枠と馴染みます ・推奨作成サイズ(高解像度版)で作成すると Retinaディスプレイなどでも綺麗に表示されます ・縦横比を守らないと画像が歪みます 縦長キャラ画像(11:9くらい)と 横長ノーツ画像(2.2:1)を間違えないように ・GIFアニメは ピカさん(pikasan)でも Canvas描画の制限で最初のフレームのみ表示されます ※ピカさんはJSで震え・涙アニメで動きを補完しています ■ 困ったときは ━━━━━━━━━━━━━━━━━━━━━━━ Q. 音が鳴らない → 画面を一度クリック(タップ)してからスタートして ください(ブラウザ版のオートプレイ制限です) Q. ノーツとリズムが微妙にズレる → 左パネルの「自動で測ってもらう」ボタンを押すと 自動キャリブレーションされます → 手動で調整したい場合は「音ズレ補正」スライダーで ms単位調整できます → 曲ファイルの冒頭に無音が長い場合は冒頭をカットした MP3で試してみてください Q. 画面の見た目だけズラしたい(押す感覚はそのまま) → 「視覚オフセット」スライダーは音声判定とは独立して ノーツの見かけ位置だけずらします Q. 名前を入力しようとしたらゲーム操作と被って入力できない → 入力欄を一度クリックしてからキーを打ってください Q. 曲を選んで遊んだ後、✕で消してデフォ譜面を遊ぼうとしたら  時間が進まない/前の曲の譜面が出る → v1.2.3〜1.2.4 で完全に修正されています。 最新版を入手してください。 Q. ブラウザ版でキャラ画像・ノーツ画像が表示されない → 画像ファイルが index.html と同じフォルダに揃っているか 確認してください(aimoge.png / burumoge.png / shiran.png / karinto.png / ramune.png / ebinife.png / miimoge.png / pikasan.gif) → スマホで遊びたい場合は aimoge-mobile.html (1ファイルで完結する版)を使うのが楽です Q. スマホ用版で画像が表示されない(v1.3.0以降) → v1.3.0からスマホ版は画像をWebP形式で埋め込んでいます。 ごく古いブラウザ(iOS 13以下のSafari等)では表示 できないことがあります。お手数ですがブラウザを アップデートしてください。 Q. 判定キャラ演出が邪魔でノーツが見えにくい → ⚙詳細オプション → 👁視認性タブ → 「🎭 判定キャラ演出」の「演出の強さ」を下げるか、 「キャラ画像を表示」をOFFにしてください Q. 楽曲のBGMが大きすぎる/小さすぎる → ⚙詳細オプション → 🔊サウンドタブ → 「🎵 楽曲音量(BGM)」スライダーで調整できます プレイ中でもリアルタイムで変更可能です Q. 譜面コードを貼り付けたのに違う譜面になる → 曲ファイルが違うとシード値が変わるので別譜面に なります。共有元と同じ曲ファイルを入手してください Q. プレイリストで複数曲遊んだ後、最後の曲の詳細しか 見れない → v1.2.2〜 でページ送りに対応しました。 リザルト画面上部の「← 前曲 / N/M曲目 / 次曲 →」 ナビ、または ← → キーで遡れます。 Q. 楽曲別ハイスコアを別PCに引越したい → 「💾 設定」セクションの「📦 全体出力」で 設定+全レコードを1ファイルにまとめてダウンロード → 新環境で「📥 全体取込」を選んで読み込みます。 Q. 取込時に「マージ/上書き」どっちを選べばいい? → ほぼ常にマージ(既存とベストの高い方を採用)でOK。 上書きはバックアップから完全に戻したい時のみ。 Q. ⚙ 詳細オプションで設定をいじりすぎて訳がわからない → モーダル下部の「🔄 全部リセット」で初期値に戻せます Q. 背景画像を差し替えたけど元に戻したい → v1.2.3〜 で「🔄 デフォルトに戻す」ボタンを追加しました。 左パネル「ぶるもげ背景画像」の下にあります。 Q. EXE版が起動しない/ウイルス対策ソフトに弾かれる → 個人配布のEXEのため、署名がなく警告が出る場合があります SmartScreenの場合は「詳細情報」→「実行」で起動できます ウイルス対策ソフトの場合は例外設定が必要なことがあります ■ データの保存先 ━━━━━━━━━━━━━━━━━━━━━━ ゲームの設定とハイスコアはブラウザのlocalStorageに保存 されます。同じブラウザ・同じドメインでなら、再起動しても データは残ります。 【ブラウザを変えた/PCを買い替えた場合】 ・設定だけ:「💾 設定 → エクスポート / インポート」 ・全部一括:「💾 設定 → 📦 全体出力 / 📥 全体取込」 ・レコードだけ:「🏅 曲別ハイスコア → 📤 出力 / 📥 取込」 【ブラウザのプライベートモード(シークレットモード)について】 プライベートモードではlocalStorageがタブを閉じると消えます。 ハイスコアを残したい場合は通常モードでお遊びください。 【localStorageのキー名(参考)】 全データのキーは aimoge_* で統一されています。 ブラウザのDevToolsで Application → Local Storage から 確認・編集も可能です(上級者向け)。 ■ ファイル構成について ━━━━━━━━━━━━━━━━━━━ このフォルダには3種類の配布形態が同梱されています。 【EXE版(Windows用)】 aimoge-rhythm_Setup_X_X_X.exe ← インストーラ(バージョンは同梱版に応じる) 【PC/Mac用ブラウザ版】 index.html ← ブラウザ版ゲーム本体 aimoge.png ← 左ステージキャラ burumoge.png ← 右下キャラ shiran.png ← 右上キャラ karinto.png ← Dレーン ノーツ画像 ramune.png ← Fレーン ノーツ画像 ebinife.png ← Jレーン ノーツ画像 miimoge.png ← Kレーン ノーツ画像 pikasan.gif ← ライフゲージ上のキャラ ※ index.html は画像を外部参照しているので、 上記の画像ファイルとセットで配置してください。 【スマホ・タブレット用ブラウザ版】 aimoge-mobile.html ← 1ファイルで完結(約2MB) ※ 画像をHTML内に埋込済みなので、 このファイル単体で動作します。 ※ v1.3.0〜 はWebP形式で埋め込み、容量を大幅削減。 【ビルド用ソース(再ビルドしたい人向け)】 package.json ← Electronビルド定義 main.js ← Electronエントリポイント build-embedded.js ← スマホ版ビルダー *.webp ← WebP軽量版素材 aimoge.webp / burumoge.webp / shiran.webp / karinto.webp / ramune.webp / ebinife.webp / miimoge.webp / pikasan.webp ※ ご自身で aimoge-mobile.html を再ビルドする場合は これらと index.html を同じフォルダに置いて `node build-embedded.js` を実行してください。 .webp と .png の両方があれば WebP が優先採用され、 .webp が無ければ .png/.gif が採用されます(両対応)。 【共通】 いもげの快男児.mp3 ← サンプル楽曲 音ゲーのバックグラウンド...mp4 ← サンプルBGA動画 README.txt ← このファイル ■ 動作環境 ━━━━━━━━━━━━━━━━━━━━━━━━━ 【EXE版】 ・Windows 10 / 11 ・キーボード推奨 ・画面解像度 1280×720 以上推奨 【PC/Mac用ブラウザ版】 ・Windows / macOS / Linux ・Chrome / Edge / Firefox / Safari の最新版 ・画像ファイル一式を index.html と同じ場所に配置 【スマホ・タブレット用ブラウザ版】 ・iOS Safari 14以降 / Android Chrome の最新版(WebP対応必須) ・タッチ操作対応 ・縦持ち最適化(横持ちでも動作はします) ・aimoge-mobile.html 1ファイルで動作 ============================================================ スレッドが落ちる前にホセ・ラミレス長期契約を更新しよう。 ============================================================