KLきりとラボ

開発記:Robloxゲーム「灯火の島」ができるまで

・ きりと

灯火の島の全景。青い光の柱がランタンの場所
島の全景。青い光の柱が、まだ灯っていないランタンの目印です。

なぜRobloxで作り直したのか

「灯火の島」は、もともとブラウザで遊ぶひとり用の3D探索ゲームとして作っていたものです。日没までに7つの精霊ランタンを灯して、最後に祠のビーコンに火をつける。このルールを気に入っていたので、「これ、友達と手分けして遊べたらもっと楽しいのでは?」と思ったのがきっかけでした。

友達と同じ島に集まるなら、サーバーもアカウントもフレンド機能もそろっているRobloxがいちばん近道です。そこで、ルールはそのままに、Roblox向けの協力ゲームとして作り直しました。

島は「地形ごと」コードで組み立てた

Roblox Studioで手で地形を盛っていくこともできますが、今回はサーバーが起動したときに島をまるごと組み立てる方式にしました。島の形は、中心からの距離でなだらかに海へ落ちていく高さに、ノイズで起伏を足したもの。北側には尾根を一本通して、どこから見ても「あの山の向こう側」と言える目印にしています。

そのうえで、

  • 中央の祠のまわりは平らな台地に
  • 7つのランタンの足もとも小さく平らにならす
  • 祠から各ランタンへ向かう道だけ土の色にする

という3つの「ならし」を入れました。特に土の道は効果が大きくて、迷ったら道をたどれば次のランタンに着きます。石灯籠、鳥居、木、海辺の小屋、桟橋も、全部Robloxの基本パーツの組み合わせです。

Roblox Studioで島を確認している画面
Roblox Studioで島の見え方を確認しているところ。

コードはRojoでファイルとして管理していて、島の形やランタンの位置を決める部分はRobloxの外でもテストできるように分けてあります。「7つのランタンが全部陸の上にあるか」「お互い離れすぎず近すぎないか」をすぐ確かめられるので、島の形をいじるのが怖くなくなりました。

鬼火は「少しだけ遅い」

鬼火(青い光の玉)は、近くにいるプレイヤーを追いかけてきます。いちばん悩んだのが速さでした。速すぎると理不尽、遅すぎると緊張感がない。

最終的には「プレイヤーの歩く速さよりほんの少し遅い」に落ち着きました。まっすぐ逃げれば振り切れるけれど、ランタンを灯している1秒ちょっとの間に追いつかれる、というくらいです。日が傾くほど少しずつ速くなり、数も増えます。人数が多いときは鬼火も多めに出るので、ひとりでも大人数でも同じくらいの忙しさになります。

もうひとつ大事なのが「灯したランタンのまわりには入れない」というルール。鬼火から逃げるときの行き先がはっきりするので、灯すほど島が自分たちの陣地になっていく感覚が出ました。

夕暮れに灯った石灯籠
灯った石灯籠。このまわりは鬼火が入れない安全地帯です。

タイマーの代わりに、空を暮れさせる

制限時間は約4分。でも画面の数字をにらみながら走るのは味気ないので、ゲーム内の時刻そのものを動かすことにしました。昼過ぎから始まって、時間がたつほど太陽が傾き、夕焼けになり、夜になったら時間切れです。画面下にも「日没まで」の残り時間は出していますが、空の色だけで「そろそろまずい」がわかるようにしています。

島に浮かぶオレンジの「残り火」を拾うと、日没が12秒延びます。寄り道するか、まっすぐランタンへ向かうか、ちょっとした判断ポイントです。

ビーコンが点火した夜の祠
7つ灯してビーコンに点火した瞬間。夜空に光の柱が立ちます。

確認のしかた

協力ゲームは、ひとりで遊んでいるだけでは確かめきれないところがあります。そこで、ラウンドの始まりから「ランタンを灯す → 鬼火に触れると灯火が減る → 残り火で時間が延びる → 7つそろうまでビーコンは点火できない → 点火でクリア → 次のラウンドで全部元に戻る」までを、変更のたびに同じ手順で確認できるテストを用意しました。今のバージョンは33項目すべて通っています。

スマホでも遊びやすいように、画面の表示はすべて画面下の中央にまとめました。右上はRobloxのプレイヤー一覧、左下と右下はスマホの移動スティックとジャンプボタンが来る場所なので、そこを避けています。

あそびかたパネルと画面下のランタン数・残り時間・灯火
はじめて入ったときに出る「あそびかた」。画面下にランタン数、日没までの時間、灯火(ライフ)。

これから

次にやりたいのは、クリアタイムの記録とランキング、霧や雪の別の島、そして効果音とBGMです(どれもまだ予定です)。遊んでみた感想や「こうしてほしい」は、X(@kiritolab_)に気軽に送ってください。

使ったもの: Roblox Studio / Luau / Rojo(コードのファイル管理)