見出し画像

ゲーム開発日記5(6月3日から6月10日)



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

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

進捗


今週は光についての勉強の週だった 逆に制作は何もできてない、

主にLight2D と LightOccluder2D についてだ そしてCanvus ItemとCanvus Layerについての理解も深まった、また周辺のあいまいだった理解が明確になった
基本的にここの内容について勉強したhttps://docs.godotengine.org/ja/4.x/tutorials/2d/2d_lights_and_shadows.html

CanvasModulate Canvas Item Canvas Layer

CanvasModulateはCanvas LayerにModulateパラメータを追加するものだ、チュートリアルではまるで影を作るもののように書かれているが実際は色身を調整するもので光とは直接的には関係ない
Canvas Layer だいたいクリスタのレイヤー機能と似てる 表示順はLayerパラメータによって制御される(ちなみにレイヤーのクリッピングに相当する機能はclip_childrenを変えることで実現できる)

ライト

現在の僕の解釈だと オルクーダーとの相互作用、および疑似的なZ軸と法線マッピング機能をもった 覆い焼き発光効果を持つSprite2Dだ(addmodeにおいては)
ちなみにチュートリアルで代替として紹介されていたSprite2D側でCanvusSherderのAddmodeをつける方法は 調べた限りスクリーンと同じ効果だった Multiplyは乗算レイヤー

color 色身を調整する ライトの場合Modulateは無効化されるようです
Energy  光の強さ

当たる物当たらないものの調整は以下になりそう
キャンバスレイヤー
親のCanvusLayerのLayerプロパティが  そのLight2Dの(Layer Min ・ Layer Max)の間にある場合 子のCanvusItemは影響をうける

Z_index
そのCanvusItemのZ_indexがそのLight2Dの(range_z_min ・ range_z_max)の間にある場合 そのCanvusItemは影響をうける

レイヤーフィルター
range_item_cull_maskで光のレイヤーを指定できる(キャンバスレイヤーとは違うレイヤーである、ややこしい)
Canvas Item側のlight_maskで選択されている値が同じCanvus Itemだけ相互作用できる、Collisonのレイヤーと同じ

オルクーダー

そのライト2Dの中心点を基準に光を遮ってくれる、基本的にはこれだけ

法線マッピングの話がでたりチュートリアルとかでも変に影が立体的に見えてしまうせいで2Dなのに立体な影を作る機能があるように感じてしまうが
基本的にはXy軸でしか影は作られない、2Dの陰である

法線マッピングのような3D的な光に必要なパラメータがシェーダーを書く時に使えるというだけだ

満足いくレベルの立体感のある光を出すにはひと工夫必要なのは変わりない、法線マッピングを使うことになるだろう 結局シェーダーをもっと勉強しなければならない

理解

少なくともGodot 2dでのライトは光とか物理とかよりは イラスト制作のライヤーや合成モードととらえた方が理解しやすいように思った
PointLight2D DirectionalLight2D LightOccluder2DだけでなくCanvas Item とCanvas Layerについての理解も必須だという事だ

表示の若干な違い

Lightの挙動について 覆い焼き発光と同じといったがあれは嘘だ、実際にはレイヤー透明度を70%にした覆い焼き発光と似ている、だ しかも微妙に色合いが違うまま 
右がクリスタ側で合成してインポートした画像、(覆い焼き発光)
左がSprite2DにLight2Dをつかって重ねたやつ(ライト)

Spriteの合成モードについて

右がクリスタ側で合成してインポートした画像、(スクリーンと乗算)
左がSprite2DをAddmodeにした大体ライトをつかって重ねたやつ(合成モード)

ほとんどいろとかは同じだが微妙におかしいことになっている 特にグラデーションが辺

理由は不明 インポート関係 あるいは表示の違い 色空間が違うなどだろうか?調査と修正が必要である

シェーダー

ライトがよくわかってないままクリスタのスクリーンレイヤーや乗算レイヤーみたいなのあったら便利だなと思って自分で実装しようとしていた時期があった、 そのためにクリスタでいう下のレイヤー godotでいうそのSpriteがなかったらその場所に表示されている色を取得する必要がある
その方法が探しても見つからない じっそうできないまま悩んでいた

問題点


1GDshederで同じ位置にある他の色を取得する方法を知る
2疑似3Dをtilemapにも使えるようにする,あとディティールのスタイルも決めないと
3クリスタ側とGodot側での見え方の違いを改善する
4GDshederの関数や変数についての情報が少ないまま
5 リムライトや鏡面反射は自分で実装する必要がありそう
6絵のクオリティ向上

7 ロジックを知るのは必須だが使い方をああだこうだ言っても実際に使って確かめてみないといけない、つまり経験が必要だ はよ作り始めないと開発期間2年とかになりそう

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

絵素材は自分で書けるからいいが音楽とか音ほんとにどうしよ、BGMは必須だよな でもフリー素材は被る なあ、一年で音楽ってどれぐらいうまくなれる??
 メロディ..コード...リズム... うーん

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