ゲーム開発日記13(7月29 ~ 8月12)
週一の進捗日記 15週目
コードとかは乗せるかもしれないけどゲーム部分、ストーリーやギミックのネタバレは避けます…もう15週かあえ?作り始めて100日ぐらいたってる??想定開発期間1年だったけど1割もできてないよ? これは言いたくないが、あと260日….(まあ個人だしいくらでも遅延できるけどWW)
いま手を付けているモジュールはアクション部分全般を管理するエンティティシステム マップと部屋移動を管理するマップシステム あとほとんど作りかけのヴィジュアル
ゲームエンジン godot4.2 OS windows10 開発ゲーム:リミナルスペースをもとにしたメトロイドヴァニアホラーアクション
進捗報告
前回から二週間で実際にエンティティのAI 攻撃モーションを作るところまで行った ただスキンに関してはノータッチずっと残っているスケルトンボーンの問題に手を付けるときが来たかも そして重大な問題に気づいたアクション部分の細かい仕様を決めていない まずそこを決めないと、そのためにはストーリーやら世界観も絡んでくる ゲームの難易度設定も絡んでくる
そこまで具体的には詰めていない 次何すべきがあやふやになってしまっている アクションの具体的な仕様設計のコツとかあるんだろうか?
あとは攻撃判定の部分やAI関連のコード設計を考えないと…うんまだ後回しにできる
humanenttyあたりまで完成した(人型エンティティの継承元)
これより下は実際の敵やプレイヤー キャラになる
マップシステムの仕上げも行った あとは実際にいくつか部屋を作ってエンティティシステムとの結合テスト待ちの状態
設計に悩んでいたタイルマップのカスタムデータの管理も実装できた
またオリジナル要素として前後の移動も作成した
前後の移動
たとえば右からプレイヤーが来たとして 斜め上(階段を想像するとわかりやすい)とそのまままっすぐ進むの二つの分かれ道を用意するとする
この場合通常の2Dなら以下のような物がある
1 あスレによって二つに分ける 2梯子や特定の方向からはすり抜けれる床を使う
アスレ床 ジャンプで登るか隙間を通って下を行く
梯子やSキーですり抜けれる床を使う
つまり以下のよう階段はできない
これを解決するため疑似的な前後移動を実装した 仕組みは単純 ステージ用のコリジョンレイヤーを複数作ってそれを指定する 当初コリジョンレイヤーの仕組みを勘違いしててコリジョンレイヤーでは実現できないと思い込んでしまっていた そのせいで結構時間がかかった
以下のようなシングルトンを用意すると切り替えが楽になる
extends Node
#class_name ZLocationManagemer
#defoltには地上に割り当てるレイヤーをすべて乗せておく
const defolt = {28:0,
29:10,
30:10,
31:10,
32:10,
}
#Zインデックス, collisonMaskの値
var stage_layers :Dictionary
#mask のリスト
#Z軸と maskインデックス
func _ready():
setting(defolt.values())
#Z値 mask名
func setting(Z_indexs:Array):
var z_location = 0
var i = 0
for mask_num in defolt.keys():
z_location += Z_indexs[i]
stage_layers[mask_num] = z_location
i+=1
func change_layer_Zlocation(new_Zlocation,move_node:CollisionObject2D = null):
#レイヤーを取得
var layer = -1
for z in stage_layers.values():
layer+= 1
if new_Zlocation < z:
break
if move_node:
change_layer(layer,move_node)
return layer#stage_layers.keys()[layer]
func change_layer(layer,move_node:Node2D):
#レイヤーを取得
#レイヤーを総入れ替え
for v in defolt.keys():
move_node.set_collision_mask_value(v,false)
move_node.set_collision_mask_value(stage_layers.keys()[layer],true)
課題
スキンコンポーネントを作る スケルトンボーンも解決
マップシステムとエンティティシステムの結合テストをする
ビジュアルのモジュールを本格的に作っていく
音楽素材はフリーであきらめるしかないのか?