薪割りゲームを作ったのをきっかけに、マタギのアクションゲームを作ってみた。
⇩ゲームはここから⇩
一枚のHTMLファイルに、猟師の一年を詰め込む。
狩りの舞台を、ブラウザの中に
ORIGIN
「超マタギ村」は、モバイルブラウザだけで遊べる横スクロール型の狩猟アクションゲームとして始まった。
特別なインストールも、専用エンジンもいらない。HTML一枚、Canvas一枚で獣を狩り、
雪山を越え、村を守る。ライブラリに頼らず素のJavaScriptで組んでいるぶん、動きの一つひとつに手触りが残る。
最初の森林ステージから始まり、少しずつ舞台を広げてきた。竹林、渓谷、雪山——そして最奥の
クマの巣窟。地図が育つたびに、村も少しずつ賑やかになっていった。
ワールドマップという「村の顔」
WORLD MAP
ステージが増えると同時に、それらを見渡すワールドマップを実装した。木の看板をあしらったマーカー、
進行度に応じて外れていく🔒錠前、そして奥へ続く一本道。プレイヤーが「次はどこへ向かうか」を
地図の上で選べるようになったことで、ゲーム全体がひとつの村として呼吸し始めた。
薪割り小屋や射撃訓練場といったミニゲームも、この地図の上に生えている。狩り一辺倒だった
ゲームに、寄り道と息抜きの場所ができた。
クマの巣窟 ― 5連戦のボスラッシュ
BOSS RUSH
雪山の先、洞窟の奥に据えたのが「クマの巣窟」。ヒグマ、パンダ、シロクマ……そして最後に
待ち構える強敵まで、5体を連続で相手取る耐久ステージだ。
視覚的にも他ステージと差をつけたくて、洞窟らしい薄暗さと岩肌のテクスチャを別で用意した。
終盤1分間は時間経過で画面が暗くなり、夜行性の強力な狼が湧く——という仕掛けも、この頃に
組み込んでいる。緊張感を演出するタイマー駆動のギミックは、単純な実装のわりに手応えが大きかった。
やり込みに応える、恒久アイテム
REWARD SYSTEM
ミニゲームやボス戦を「やり込む理由」が欲しくなって、恒久強化アイテムの仕組みを追加した。
一度手に入れれば、以後ずっと本編に効果が乗り続ける。localStorageにフラグを一つ立てるだけの
シンプルな設計だが、プレイヤーの目標設計としてはよく効いた。
ワールドマップの隅には、所持しているアイテムのバッジを並べて表示している。地図を開くたびに
「自分がここまで積み上げてきたもの」が目に入るのは、地味だが効果的な演出だと思う。
小さなズレを、ひとつずつ正す
POLISH & FIX
機能を積み重ねるほど、細部のズレが目立ってくる。ステージクリア画面に「もう一度」ボタンが
不要に残っていたり、右下に並べたはずのバッジ同士が重なっていたり。プレイヤー目線のスクリーンショット
一枚から気づく不具合は多い。
→
クリア画面:マップへのみ
→
右下に3つ縦並びで整理
localStorage.removeItemを呼ぶだけでなく、表示を管理するapplyUnlocks()まで呼び直して初めて直る。状態を変えたら、「見た目を更新する関数」もセットで呼ぶ——という当たり前のことを、何度も再確認した。
積み上げてきた、開発の作法
WORKING NOTES
この村を育てる中で、いくつかの習慣が身についた。
1. 構造を変える前には、必ずバックアップを取る
2. 一度に一つだけ変更し、都度動作を確認する
3. 編集のたびに Node.js で構文チェックをかける
4. ctx.save() / ctx.restore() は必ず対で書く
5. localStorage のキー構造を変えたらバージョンを上げる
特に3番目は地味だが裏切らない。数百行のCanvas描画コードを触ったあと、
ブラウザで動かす前にterminalで一呼吸置くだけで、防げる不具合の数がまるで違う。
まだ、道の途中
雪山の先にも、地図の外にも、まだ描いていない場所がある。
次に狩るべきは、きっとまだ見ぬ獣だ。


コメント