
ゲーム開発日記8(6月24から7月1)
週一の進捗日記8
コードとかは乗せるかもしれないけどゲーム部分、ストーリーやギミックのネタバレは避けます
ゲームエンジン godot4.2 OS windows10 開発ゲーム:リミナルスペースをもとにしたメトロイドヴァニアホラーアクション
5月ぐらいから作り始めたのでちょうど二か月がたちました、 godotの知識などは格段に増えた物の、じっさいにメトロイドヴァニアホラーアクションがどれだけできてるかというとほとんどできてない 修正が必要なBaseEnttyと当たり判定ぐらい あとは演出用のツールをいくつか作ったくらい
さすがにやり方を変えなくてはならない、今週は計画と設計の重要性が身に染みた週でした
進捗報告
いままでヴィジュアルばかりやっていて日記にもそればかり書いていた、さすがに何か中身を作ろうと思いマップシステムを作りはじめた
まだ作成途中、
部屋ラベルの作成のところまでは進んでいるが現時点ではそこで止まってる 部屋ラベルの設計をそこまでして考えてなかったのノード構成を考え中、
その過程でLIne2Dの使い方で躓いた
前から進捗の遅さに焦りを感じていた なので計画というのを立ててみることにした、 つまりいきなりコードを打ちながら考えてやるのではなくちゃんと設計を作ろうと試みた(逆に今までやってなかった)
効果はたった一日で現れたので計画の重要性を心から身に染みた
計画の利点として未来を見据えた行動ができることや行き詰りづらくなる事だけでなく ファイルが整理されることだ、関数名などもすでに決まっているためリファクタリングの手間もぐっと減る
マップシステムの作成
プレイヤーだけでなく一部のエンティティが部屋を超えて徘徊するようなゲームにしたいと思っている、 予定ではボス部屋というのはラスボスなど例外を除いて存在しないようなゲーム性にしたい そして徘徊するボスは真正面からたたくだけじゃなく誘導したり罠にはめたり、はめポイントを見つけたりして賢く倒せるようにしたい
そのため単にプレイヤーがいる部屋だけを読み込むみたいなシステムではだめ
そこでマップ全体とモブの移動を管理するシステムを作ることにした
構成としてはマップの下に実際のステージがあるイメージになる、この設計だと地図を手書きしたりする必要がなくなり正確性の担保にもつながるというおまけつき
エディター上からマップを作れるようにしたかった、つまりエディターでラベルかなんかを継承したものをペタペタ張っていくことになる(ヴィジュアルスプりくてぃんぐというやつの光景が近いような気がする)
しかしエディター上で作った物を実行前にリソースとして保存したりするようなスキルはない ノードをいちいちリソース化するのは処理が重いだろうしスマートじゃない かといって愚直に一つのラベルに一つの部屋を担当させて地図なんかにたくさんのノードの塊を使用して容量を増やしたくない
そのためエディター上で作ったマップをリソースなりバイナリなりで保存しておく方法が必要だ @toolを使えばできるのだろうが調べてみるけど完全沼だ、正直触りたくない
ので以下の方法をとることにした
マップにもなるラインとラベル、地図データリソースとは別にマップ制作用のシステム デバッグ用可視化システムを作成する
マップ制作用のシステム デバッグ用可視化システムは独立していて本体ゲームには使わない
小さなマップ作製ゲーム?みたいなのを作ったわけだ、デバッグモードならエンティティの移動もアイコンで表示されるようにするので徘徊するエンティティの挙動も容易に確認できる
さらにこの配置をそのままミニマップにも使える かなりいいシステムができると思う
リソースについて
実装する上でリソースに関する知識が深まったのでメモ
リソースは要はデータ 画像とか音声とかもリソース さらにシーンもリソースらしい、リソースの中にシーンがあるらしい...(公式より)
godotではシーンとノード、シグナルには大変感心したがリソースもこれに並ぶぐらいすごいものだと気づいた 他のゲームエンジンはどうなっているわからないがシーンとノード、シグナルに並ぶぐらいには強調してもいいと思う
暇ができたらgodotの魅力を語るだけのブログも作ってみようと思う
リソースは今後かなり使っていくことになるだろう 何よりデータが安全に扱えてブラックボックスな部分をかなり減らせる クラス側の負担を減らし冪等性が高まる!!!
ストーリーのテキスト、敵の動作、パラメータほとんどの物はリソース化してみてもいいだろう セーブデータとかもセーブデータ用のカスタムリソースを作ってもいいかもしれない
いままでエンティティのパラメータは辞書で扱っていたがこれもリソース化しようと思う
またテキストディタから直接値をいじれるのも非常にうれしい デバッグやテストプレイの強い味方になるだろう
多くの変数をリソース化させればテストが大幅に楽になる、設計によってはテキストエディタでリソースちょこっといじるだけで自由にゲームの状態をいじれる わざわざデバッグモードの実装をする必要がないかもしれないのだ
注意点
@exportをつけないと保存されないので注意
ヴィジュアルの気づき
いろいろヴィジュアルを試してるうちにある勘違いに気づいた パララックススクロールの威力をなめていた
前にそれだけじゃだめで疑似3Dをどうのこうのと言っていたが疑似3Dの出番はだいぶ限られるかもしれない 立体感が出なかったのは単に私の画力不足だ
言い素材とデザインなら上下左右に動かすだけで立体感が出る それが平坦でもパースがおかしくても、 人工物でも....
課題、
マップシステムを完成させる
・line2Dの使い方のチェック
・応急的に作ったラベルと線の再設計
・ラベルを見やすくする
実際にマップエンティティが徘徊するようになるまでは作る
そのあとは実際のステージやエンティティを実装していく予定
ヴィジュアル
・決まったはずのヴィジュアルのほう格子柄が再び錯綜し始めた
・スクリーンと焼きこみリニアの見え方の差を改善
・GDshederの関数や変数についての情報が少ないまま
・ リムライトや鏡面反射は自分で実装する必要がありそう
・絵のクオリティ向上
・動き関連の知識とノウハウが少ないので強化する必要がある
・スケルトン2Dについては相変わらずようわかんまま
絵素材は自分で書けるからいいが音楽とか音ほんとにどうしよ、BGMは必須だよな でもフリー素材は被る