開発日誌 #12 — 60ミリ秒の真・一閃と、武将が震える話
ISSEN の核は「斬撃の手応え」です。手応えがダメなら、世界観も墨絵もマーケも全部無駄。だから一番神経を使った場所の話を書きます。
60ミリ秒の窓
斬撃判定の中心は PERFECT_BAND = 22px、その外側に GOOD_BAND = 72px。間合い線を炎が横切る瞬間、22px の窓に当てれば 真・一閃——朱の閃光、画面全体の薄い墨ライン、コンボ加算、スコア上振れ、そして 90ms のヒットストップ。
22 ピクセル × 60Hz の流れ = およそ 60〜80ミリ秒。これが、ISSEN の手応えの正体です。短すぎれば運ゲー、長すぎれば「Fruit Ninja」になる。
ヒットストップ・触覚・呼吸
斬った瞬間にやっていること:
hitstop_until = now + 90ms:時間が一瞬止まり、「斬った」が体に伝わる
_haptic(28):iOS のタップティック・Android の Vibration
breath += 18(真・一閃は +18、Good は +5):「ととのう」ゲージが満ちると、画面全体がスローモードに入れる
連続真・一閃で 「真・一閃 ×N」 が画面下に積み上がる
「触覚 × ヒットストップ × スロー」の三層が、たった一筆を 気持ちいい に変える装置です。
武将戦の演出を、二段重ねで作った
v1.0.4 で武将ボスを背景に立たせました。ここで手応えをもう一段押し上げる工夫を入れています。
idle(待ち姿): ゆっくり大きく揺らぐ(振幅 ±10px、周波数 0.3〜0.7Hz)。妖怪が漂うような不気味な浮遊感
open(斬撃姿): 一瞬で 小刻みに震える(高周波 47〜113Hz 合成、振幅 ±5px)。「いま斬れ」と体が分かる
早斬りで返り討ち: 朱の閃、シェイク 10.0/260ms、ハプティック 55、画面中央に 「返り討ち!」が ±16px で激しく震えながら 1.4 秒
そして勝負が決した瞬間——
勝利: 金の「あっぱれ!」が 108pt で 2 秒、ゆっくり減衰する震えで残る
時間切れ: 朱の「気力尽きたり!」が 78pt で 2.2 秒震えてから game over へ
文字には 白縁取り 9〜12px。武将画像の濃い黒鎧の上でも読める。

「斬れ!」を一瞬に
「今!」を「斬れ!」に改名し、open フェーズを 0.30〜0.57 秒から 0.18〜0.38 秒 に短縮しました。迅速タイプはさらに 72%。
短すぎる、と最初は思いました。でも違った。短さこそが、見切れたときの「成功感」を爆発させる。コンマ秒の判断は、人体にとって明らかに 自分の腕 で勝った感覚になる。
ととのうボタンの配色も直した
副次的だけれど大事な話。
ボタンが「使える / 使えない」が一目で分からないと、緊張感は別の場所で削られる。v1.0.4 で 無効時 = 彩度ゼロの灰色アウト、有効時 = 朱の文字+脈動する modulate に変えました。呼吸が満ちた瞬間、ボタンが息づくように朱に脈打つ。これも手応えの一部です。
正直な部分
60ms はキャリブレーションの一点でしかありません。ホールド時間・離す位置・スワイプ速度——どれかひとつでもズレれば、判定窓は別の数字になる。これは仕様書ではなくテスターと一緒に詰めるしかない領域です。
v1.0.4 をリリースして、いま実機で多くの人に試してもらっている段階。あなたが「斬撃が気持ちいい」と感じたら、それが正解。
次回は手描きと手続きの境界——「画像ほぼ0枚」を貫きつつ、なぜ16枚の武将像だけは別格にしたかの話。
ISSEN(一閃)について
PixelRyu の和風タイミング斬撃。息を整え、集中し、ただ一筆ですべてを決める。Google Play 公開中。 詳細:
#ゲーム開発 #個人開発 #インディーゲーム #ゲーム制作 #Godot #スマホゲーム #開発日誌 #ゲームデザイン #UXデザイン #ものづくり #侍 #和風 #アプリ開発 #GooglePlay #創作 #ISSEN #PixelRyu
