見出し画像

ゲーム開発日記2(5月13から5月20)


週一で進捗の日記を書くことにしました 

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

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

進捗報告

TImeMapの解決

tilemapが置けた!
前回書いてなかったかもしれないがTileMapが置けない問題があった しかし今回書くことに成功し原因もなんとなく分かったので記述しておく
TImeMapがかける条件

  1. 下パネルの下部がTileSetsではなくTileMapを選択している

  2. タイル/パターン/地形と同じ高さ下パネルの上部が ペイント(D)などのかける物になっている

  3. 選択モード(Q)になっている

  1. この三点に気おつければ書けることが分かった、

操作性の問題

ジャンプや走りの動作になんか違和感がある 要は操作性が悪いという問題があった(そもそも作りこんでなかった)がそれがだいぶ改善した
少なくともアクションはしている
ただ検証してるうちに慣れてしまって客観性が足りてないところがある 知人に頼むかアーリーアクセスとかのフィードバックに頼った方がいいかもしれない
またBASEEnttyクラスやらコードの設計書やらを書き直した、そのおかげでだいぶコーディングが楽になった

ヴィジュアルの問題に若干解決の兆しが見えた、 

2Dでリミナルスペースを実現するという無茶ぶり、丸いものを置いてパースをごまかすことも物を前後においてごまかすこともできない、
だが奥行きと立体感、あの虚無という言葉が似あうだだったぴろさを表現しなくてはならない しかしその遠くが気になりすぎるとゲームの不自由感が
出てしまうのでバランスが必要なのだ、あいまいさが、、、いい感じというやつが、、、

で2Dで作ろうにもパララックススクロールとかだけじゃ厳しそう、
建物の中はパースの狂いが目立ってしまい悪い違和感が生まれる、そして一枚絵ならともかくカメラが移動するなら見る角度も変わるゲームだから、

あういうのは丸いものが前後にいっぱいある空間でないと機能しない
背景だけを3dだけで作るのは論外、デフォルメ度合いが統一できない、 3Dだとパースが正確すぎるのだ

んな立体感の問題に対して解決の見込みができたというほどはないが、一応は進んだ 、ようは対応の方向性はわかった 来週ぐらいには画像の一つぐらい公開できるようにしたいと思う
ただその対応を実現するにあたってシェーダーを学ぶことになった
まあ全体像はおぼろげながらつかめた感じ、 ただ行列とか三角関数なら多少なんとかわかるが 知らないものが結構あるので数学とか3Dの仕組みとかいろいろ学ばないといかんくなった
とはいえやってみた感じ難解な知識というよりも応用力とかセンスとかのほうが重要そうだ、学習すべき情報量は案外少なそう(暗記がほぼないというのはとてもうれしい)

とりあえず勉強して分かったことの一部をメモしていく

シェーダーはGdshaderというやつで書く CanvusItemにsherderをつける欄があるのでそこにアタッチすればいい
Gdshaderというのは使ったことあるやつで一番近いでいうとC#に似ている 情報だとC言語に似てるとか、まあ
Cは使ったことないので知らん GDscriptと違ってpythonライクじゃない


vertex()
  各頂点に対して処理を行う、ワールド座標に従い  形とかを操作する時に使う
fragment()  UV座標系を使用してテクスチャを適用するテクスチャとか光をいじるときに使う
light()についてはまだよくわからん 各ピクセルとライトに対して実行されるらしい??? チュートリアルでも飛ばされてた
uniformで引数を設定できる なんかglobalなuniformもあるとかないとか、これで
VERTEXの単位がよくわからん、多分回転ビボットからの相対的な距離なんだと思うがUVみたいに0から1みたいなわかりやすい感じじゃない

途中までしていた勘違い
2dのスプライトにシェーダーを当てていじっていたからてっきりfragment()はすでにレンダリングされた画像に対して何かしてるものだと思ってた(実際2dだとそう思ってても問題はでなかった)
しかし実際にはもっと前段階の工程で実行される関数らしい  ポリゴンという石に 銀紙を張り付けるような物らしい(3dを扱うなら気をつけないといけない)

ついでに学んだ数学知識

法線ベクトルはある面や線に対して垂直になる線の向きを表すベクトルである
注意点として0を起点としたベクトルで角度を表しており そのため平面ならvec2で、空間ならvec3で表せる
頂点法線ベクトルという物も存在し それは隣接する面、あるいは線の法線ベクトルの平均である

値の大きさ自体には意味がないため、すべての要素を2倍しても変わらない (0.333,0.333,0.333)と(0.666,0.666,0.666)は同じ意味をもつ

y =ax + cというグラフがあるとする、cは定数なので値を変えてもこのグラフの傾きは変わらないなので計算しやすいよう 0 = a0 + c にうまいこと持ってくる
、そして原点を0にあわせなんやかんやして直角の角度を求め(たぶん虚数の回転とか使ってんだろ)法線ベクトルを手に入れるわけだ、たぶん
うん証明? Light2dのことか?知らんな

用途
テポリゴン(頂点、面)はさすがに前から知っていたが法線ベクトルなんてものがあるとは初めて知った
平面法線ベクトル :面の角度を表す値
頂点法線ベクトル :隣接する平面の法線ベクトルの平均

これらは主に表面の角度を求めたり光の反射などに利用できる

少ないポリゴン数の物を滑らかに見せる技術があり法線マッピングという物があるらしい(かならずしも必要な工程ではない)
タンジェント空間なるものもあるらしくそれを使ってなんやかんやするらしい

改善点、課題

課題を一つ解決したら また新たな課題が増える、この現象は今後もより悪化していくに違いない 

(new)シェーダーのお勉強
特に用意されている関数や変数についての情報が少ない、あとライトの情報が全然見つからない

ヴィジュアルの問題、イメージはつかめたが実際書いて見ると案外うまくいかない、もう少し知見を集める必要がある

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

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


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