見出し画像

ゲーム開発日記9(7月1から7月8)


週一の進捗日記8
コードとかは乗せるかもしれないけどゲーム部分、ストーリーやギミックのネタバレは避けます

ゲームエンジン godot4.2 OS windows10 開発ゲーム:リミナルスペースをもとにしたメトロイドヴァニアホラーアクション

s進捗報告

前週から作り続けていたマップシステムの作成がほぼ完成した
マップエディタ サブマップの作製 エンティティの移動システムまで完成

前回の計画には問題があった
一つの部屋のノードの描画を一つのノードにしていた
せっかくノードを増やしたくないという理由でマップエディタという別のプログラムを作ったのに本末転倒だ
一つのノードですべての部屋と廊下を描画するよう書き直した
ただエンティティやマップ中のアイコンなど動くものは別のノードが担当する

もう一つ前回の計画には問題があった それはマップエンティティの位置だ
ミニマップやHUDを管理するノードの下に置かれることになる しかしマップエンティティは部屋を移動できるグローバルなエンティティだ
HUDの下にそのような重要なノードがあるのは気持ちわるい

それの解決として表示用と実際のマップに分ける方法だ
表示用はマップデータをもたず 実際のマップ の参照を持つ その参照をもとにマップを描画し実際用の描画更新シグナルで連動して更新される
ノードがきれいになるだけでなく 複数のテレビの中に同じマップが表示される、のような演出も簡単になった

line2Dは使う必要がなかった

マップエディタの操作性を改善した

一応予定では部屋は最終的に160個以上増える予定だ なので部屋をポチポチ奥作業は結構大変
だからマップエディタの操作性は案外重要になる 部屋はそのままおけばいいが問題はドアだった 

ドアはformとtoの二つのノードの参照を設定する必要がある インスペクタから設定できるようにしていたがこの工程が結構めんどくさい  
シーンツリーから探さなくてはいけなくなる ちゃんと正しくつながっているかの確認もしづらいし探すのがだるい 
MarKar2Dを使って操作性を改善した マーカーから一番近い部屋ノードを自動で子に設定されるようにした、これで感覚的にドアをつなげれるようになった

ほかにも
ノードの名前が部屋のidになるようにする
部屋の下にドアノードを置けばformは自動で設定される
表示の改善
などなどのマイナーチェンジ

結果的には以下のようになった
部屋を作る場合 
1シーンの適当な場所に部屋ノードを置く 名前を任意で設定し 
2部屋リソースを作成、
3本来なら部屋リソースの中に紐づける実際のステージをドラッグ ( 現状この機能は未実装)

ドアを作る場合
1シーンツリー上で出発点にしたい部屋ノードの子ににドアノードを置く ドアの位置はどこでもいい
2ドアノードの子にMarker2Dを作成目的地にしたい部屋ノードの近くに配置する
改善前よりはかなり手順が簡略化され操作性が向上した ただ部屋の数が多くなると視認性の問題がでたりする 視認性を改善したほうがいいだろう

一応できた物を載せておく

メモ

_redeyの順番
これで結構詰まった、今後も同じ問題は起きるだろうし要注意、 _redeyはどうやらシーンツリーの順番でじっこうされるようだが今回のコードとはそれが相性悪い 一度リストに格納して後から追加処理を行うように工夫することで解決した

_draw() というものがあり図形や線を簡単に表示できる

_enter_tree(): がプラグインがONになった時に起動される
_exit_tree(): がプラグインがOFFになった時に起動される
この二つにはprintとかも使えるので起動タイミングが容易に確認できる

カスタムノードの追加
add_custom_type  はカスタムノードを登録できる 
remove_custom_type  で開放する必要がある

ドッグの追加
add_control_to_dock(DOCK_SLOT_LEFT_UL, dock) #
remove_control_from_docks(dock) # 解放

パネルの追加
add_control_to_bottom_panel(panel, 名前) # で下の所,アニメーションやオーディオとかと同じ列に追加できる、
remove_control_from_bottom_panel(panel)#開放 そうしないとプラグインをONにするたびに枠が増えて面白いことになる

ドッグやパネルとは、 
インスペクターとか アニメーションプレイヤーを設定する時のタイムラインとかシーンツリーとかフォルダー表示してくれるところとかのこと
ドッグやパネルもシーンで作られている(Control系ノードで作る必要がある) 少なくともRootはControl派生でないといけない godotがgodotで作られているとかいう話を聞いたことがあるがその意味が分かった気がする

godot プラグイン

プラグイン化する方法を調べた プラグイン化するのには成功したが
そのプラグインを他のプロジェクトとしてインポートしてみるのに難航している
プラグインとして独立させる方法が調べても出てこない

課題、

マップシステムを完成させる
・まだデバッグがすんでいないのでテストする必要がある
・プラグイン化して別のプロジェクトに入れてみる
・プレイヤーが訪れてない部屋は表示させたくないのでその管理システムを作る


ヴィジュアル
・決まったはずのヴィジュアルのほう格子柄が再び錯綜し始めた
・スクリーンと焼きこみリニアの見え方の差を改善
・GDshederの関数や変数についての情報が少ないまま
・ リムライトや鏡面反射は自分で実装する必要がありそう
・絵のクオリティ向上
・動き関連の知識とノウハウが少ないので強化する必要がある

・スケルトン2Dについては相変わらずようわかんまま

絵素材は自分で書けるからいいが音楽とか音ほんとにどうしよ、BGMは必須だよな でもフリー素材は被る 


この記事が気に入ったらサポートをしてみませんか?