ゲーム開発の進捗:4日目
昨日書いた通り進めていこうとしたら、思わぬバグを発見した。
プレイヤーキャラが操作できない。
なんで!?と思って色々と見て回った結果、部屋を作る際の穴掘りがちゃんとできていないということが判明した。
自分のゲームでは、フィールドいっぱいにブロックを敷き詰めた後、部屋の座標をランダムに作って、座標内のブロックを消すという方法で部屋を生成している。
しかし、最初に敷き詰めたブロックが部屋生成の時に何らかの理由で残ってしまっているらしい。
見た目にはちゃんと消えているように見えたが、console.logでデバックしてみると、よくわからないオブジェクトが入っていたので間違いないと思う。
ブロックの削除にはphina.jsのremove関数を使っているので消えるはずだけど、なんで残っているのか後でちゃんと確認しないといけない。
余計なことに時間を取られたが、とりあえずよくわからないオブジェクトを消すようにして事なきを得た。
↑が修正後のgif
昨日の宣言通り、青いブロックはやめてちゃんとした素材を使うようにした。
素材はドット絵世界の森と草原1からお借りした。
借りた素材はそのままでは使えなかったので、gimpで切り抜きをして使っている。
一応利用規約を見て、「自由に編集してお使いください」と書いてあったので、大丈夫だと思う。
次にフィールドを区分けして、区域ごとに部屋を生成するようにする。
しかし、ここでも問題発生。
領域がおかしなことになって、穴が掘れないというバグがでた。
オレンジのエリアが分割した区域になる。重なるほどオレンジが濃くなる。
まずなんでこんなに区域が狭いのか謎だし、そもそも重なる理由がわからない。
でもまあ、どこが間違っているのかがはっきりしたのは嬉しかった。
これ表示するまで1時間くらい格闘していたので、霧が晴れるような気持になった。
区域の生成部分を直したのがこちら
さらに見やすいように色分けした。
これで区域設定は完璧なはず。
だが、部屋が生成できない。ということは、区域の情報をもとに部屋を生成する部分もおかしいということなので、そちらも直していく。
Why!?なぜずれる!?
下の段の真ん中の部屋ひどいな。なんかの国旗みたいになってる。
他にも0.5ブロックだけ区域がずれてることに気づいたりしたが、ぶっちゃけそれはあまり大きな問題ではない。
あー頭おかしくなるで。
なんで動かないんですかねー?
変だな、穴掘り法の前は動いていたはずなのに・・・
今日はここまでにします。
寝不足で頭があまり働いていない感じがするので、これ以上コードをいじっておかしくならないようにします。
実際にゲームを作ってみて、プロのゲームクリエイターの方々はすごいのだと実感する。僕は4日経ってもまだ通路すら生成できていないのだから。
追記
あの後、どうしても悔しくて夕飯食べた後に再挑戦しました
そしたら、部屋を作る時に区域内からはみ出していないかチェックするための関数を書いていなかったことに気づき修正したところ、ちゃんと部屋が生成されるようになった。
これで、穴掘り法による部屋の生成までが完成したので、明日から通路づくりに入っていこうと思う。長かった。