ローグライク製作メモTOPページ

[ローグライク製作メモ]
自分がローグライクをつくった際に思ったことなんかをメモとして整理してみようと思います。
ウディタ基準なので、それ以外のツールの人はあんまり役立たないかもです…。

[基本タスクリスト]
0.初めに
ローグライクをつくる

1.ランダムダンジョンを生成する
ランダムダンジョン生成―空間分割
ランダムダンジョン生成―部屋生成
ランダムダンジョン生成―通路生成
[地形生成]セルオートマトンを使う


2.NPC・アイテム・罠を設置する
アイテム、ワナ、キャラの管理について

3.ターン制を実装する
メインループの構築
1ターンの処理内容
PC操作
NPC操作


[TIPS]
変数呼び出し値から主人公を動かす
自動消去メッセージウィンドウの作成
ミニマップの作成
ローグライクの妥協点
スポンサーサイト

不思議のダンジョン ローグの崖と巨大迷宮

14/12/02
サポート終了のお知らせ
ローグの崖と巨大迷宮についてですが、自分の管理がなっていないせいで一部のデータが失われてしまい、これ以上アップデートをできない状態となってしまいました。そのため、プレイヤーのみなさんには申し訳ないですが、サポートを終了させていただきます。


ver105にてセーブデータが正しく保存されないバグが発生しました。ver106で修正したので、ver105をお使いの方はお手数ですがver106に更新をお願いします。
(詳細)ゲーム起動後、2回以上セーブした場合、2回目以降のセーブが元のセーブデータに反映されません。2回目以降のセーブはバックアップデータであるセーブデータ10にのみ保存されます。このような状況が発生してしまった場合は、元のセーブデータ(SaveData01など)を破棄していただき、バックアップデータをそのセーブデータと同じ名前(SaveData10→SaveData01)に変更してお使いください。申し訳ないですが、よろしくお願いします。

14/9/16
ふりーむ様にて公開しました。

↓ダウンロードURL
ttp://www.freem.ne.jp/win/game/7516

アイテムの未識別設定

通路スポットとかと同じく、アイテムの未識別設定も絶対必要ではないけれど不思議のダンジョンでは大切なガジェットです。どのタイミングで導入するかは自由でいいと思いますが、性質上アイテムの処理にふんだんに絡んでくるので、アイテム効果処理を作り込む前にちょろっと作っておくと便利かもです。

で、未識別アイテムなんですが。。
とりあえず、こんな感じでシステムを定義してみました。

・未識別段階は3段階。‐2がアイテム名がまったく分からない状態で、「白い草」とかいう表記。‐1が状態未識別の状態で、アイテム名は分かっているが呪い祝福・装備品の+値が分からない状態。0が完全に識別された普通の状態。
(この‐2、‐1、0表記は便利なので使いまわします。真面目に読みたい方はぜひ覚えてくださいね)
(余談。いわゆる「ひとくいばこ」状態を追加するならもう一段必要だけど、面倒なのでやらなかった。やりたい方はぜひ果敢に挑戦してください)
・未識別アイテム名はアイテム種類ごとにひとつずつ。ダンジョンに入るたびに未識別名もランダム生成される。
・未識別状態は必ず‐1で共有される。(要するに、最初に持ち込んだアイテムとか、一度識別したアイテムとかで名前が分かっている場合は、新たにフロアに配置される場合もアイテム名はすでに判明していて呪い祝福状態・+値のみが分からない状態未識別(‐1)で登場するということ)

なんか面倒くさそうな空気がぷんぷんしますが、がんばっていきましょう。
管理方法はこんな感じ。

前提として、UDBのどこかに未識別アイテム名のプールを作っておく(赤い草とか白い草とか、そういう未識別名をまとめて保管しておく)

ダンジョン入場処理の際に、ダンジョンに登場する・しないにかかわらず、すべてのアイテムに未識別名を設定する。
CDBのタイプをひとつ使うことになると思います。アイテムごとに設定した未識別名、識別状態を入力。自分で名前をつけられるシステムを作るなら、つけた名前もここで管理するといいかも。

ダンジョン入場時の手持ちアイテムを見て、同じ種類のアイテムをすべて‐1(アイテム名のみ判明している状態)に設定しなおす。壺の中もきちんと見るように。

アイテムの未識別状態が変更される場合(草や巻物なら使っただけで名前が分かるようになりますよね)、手持ちアイテムと床落ちアイテムのすべてをみて、同じ種類のアイテムがあったら片っ端から名前を変更。
未識別アイテムに自分で名前をつける場合も同様です。

ざっとこんな感じ。
ここは別に難しいことは何もないので、とにかく気合でがんばれということです。
あ、あと未識別をつくるとアイテム名をたびたび変更することになると思うので、アイテムのパラメータからアイテム名を編集する汎用のコモンをつくっておくと便利ですね。

方向転換の実装

TIPSの方もひととおり主要な処理が終わったので、ここからはより利便性を増すシステムづくりに入っていきます。
ターン制が命なので、方向転換はほぼ必須のシステムですね。
しかも、このコモンの出来によっては敵に囲まれてピンチのときとかに、プレイヤーにやたらストレスを与えまくる設計になりかねないので、がんばりましょう。

とはいえ、方向転換なんてさしたるコモンじゃない。
方向転換キーを押されたら主人公が移動しないようにして、向きだけ変えればいいんじゃないの?

とか思っている方。
自分もそう思ってました。
で、最初に適当に組んだイベントがこんな感じ。

(並列実行)
方向転換キー(Sキー)を監視。
キーが押されたら方向転換中のフラグを立てて、主人公が動かないよう設定。
8方向のキー入力を受け付けて、入力された方向に方向転換。

とりあえずこれだけの内容をパパッと書いてテストプレイしてみたら驚愕。
なぜか斜め方向に方向転換できない!
いや、できるんだけど、異常に感度が悪くて使い物にならん!
上下左右はすんなり方向転換できるんだけど、斜め方向に調節するのが至難の業。
ゲームパッドならいいけど、キーボードで遊ぶ人がいる以上、これじゃいくらなんでも不便すぎる。

で、斜め方向のキー入力について調べてみたんですが、どこにも載っていなかったので他のウディタ製ローグライクゲームで確かめてみました。
そしたら、やっぱり斜め方向(特に右下)のキー入力にはかなり難がある。
方向転換でも斜め方向にはかなり向きづらい模様…。
どうやらウディタ自体の仕様に近いものがあるみたいですね。
移動のときは8方向受付でもわりとすんなりいくのに、なぜだろう。

まぁ、考えても仕方ないので打開策を考えました。
試行錯誤の末できたのが、4方向の入力状態のみで8方向入力を判断するシステムです。
要するに、右上なら右+上、左下なら左+下と解釈して読み取ろうというわけですね。
4方向のキー入力受付を2回行い、右+上だったら右上を向く(上+右も同様)みたいなことにしました。
こうしたらわりと素直に斜めも向いてくれるようになったので、ひと安心です。

ここまできたら、あとは方向転換用グリッドを作ったり、敵が周囲にいたらそっちを向くようにしたり、好きにカスタマイズして利便性を高めていくだけです。
本当なら30分ちょっとで作る予定が何時間も困り果てる羽目になった思い出深いコモンですが、とりあえずこれで方向転換も制覇です。

通路・部屋スポットの実装

これもいちおうTIPSの方に入ってはいますが、不思議のダンジョンだったら欠かせないガジェットですよね。
ということで作り方ですが、最初に素材を用意しなくてはいけません。

1.通路スポット用に、真ん中に穴が開いた黒背景の画像(ウディタ公式のコモンからお借りしました。ありがとうございました)
2.部屋スポット用に、なんでもいいんだけどとにかく黒色の四角形画像

素材を用意したらコモンづくりです。
分かるとは思いますが、並列実行のイベントになりますね。
内容はこんな感じ。

・主人公が通路にいるか部屋にいるか判断

分岐1:通路にいるとき
通路スポット用の画像を、主人公画面X座標、Y座標を中心にして描画。
こちらは特に難しいことはないですね。

分岐2:部屋にいるとき
部屋にいる場合は、主人公が前回の処理から部屋を移動していた場合のみ描画します。
要するに、新しく部屋に入ったとき以外は処理しないということですね。
で、部屋スポットの作り方ですが、減算表示を使うとか自由変形でいろいろやるとかありそうですが、
自分の場合は一番分かりやすい方法で、黒色ピクチャを4枚使って部屋の周りを囲むということにしました。

ブログ説明

部屋の角の画面XY座標は、前回の「マップ座標から画面XY座標取得」のコモンがあればいくらでも取得できますね。
あとは黒色ピクチャの透明度を設定して、自由変形で適切な位置に表示すればOKです。
もちろん、このままだと主人公が動くのと一緒にピクチャも動いてしまうので、「スクロールとリンク」にチェックを入れるのをお忘れなく。

これでとりあえず、部屋と通路のスポットが作れました。
しかしこのままではただ部屋の外が暗いだけで、敵の姿が丸見えです。
ということでスポット外にいる敵はグラフィックを変化させなければなりませんね。
これは別に難しくもないので詳しくは書きませんが、現在スポットが当たっている範囲を格納して、敵の位置がその範囲内だったらグラフィック表示、範囲外なら透明に変更するみたいなことを全敵分やります。なのでスポットがあると処理は若干重くなりますね。
敵のグラフィック表示状態に合わせて、ミニマップのNPC位置の描画にも手を加えてやるとスポット関連は完成です。

余談:ウディタの変数呼び出し値ってXY座標はもちろんのこと、高さやら影番号やらなんでも取得できるイメージですが、なぜかグラフィック番号は取得できないみたいです。これがあればいろいろ楽になりそうなものですが、仕方ないのでグラフィック変更したら逐次CDBにグラフィック状態を格納することにしましょう。

動画投稿とか

自分でのテストプレイも一周してしまって暇なので、ぽちぽち宣伝動画とか作ってました。



デバッグ作業の方は、デカいバグはだいたい取り除けたと思うけど、小さいのがどれだけ埋蔵されているかは未知数。
50万エラーのバグだけはきちんと潰せていますように、と祈る毎日なのです。
Twitter
カテゴリ
最新コメント
月別アーカイブ
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR