はかせのラボ

私の頭の中を書いていく雑記ブログです

DirectX 魔改造開始 ~根っこの部分の作り直し~

あいさつ

作り直し大好きはかせです(トオイメ)
今回はもう何回目かわかりませんが作り直しです。
(実はブログに上げてないところでもちょこちょこやってますw)

なんで作り直し?

前回シーン管理を作り始めました。
そこでシーンごとに独立すべきみたいなことを言いました。
これが今のままでは相当しんどいので作り直しています。

具体的には?

大分前に作ったクラス図です。
f:id:hakase0274:20181024214812p:plain

今とは構成がだいぶ変わってる部分もありますが
基本は変わっていません。

①ゲームオブジェクト(以下GO)
②GO管理クラス
③その他機能クラス

この3つが相互に作用しあって動作していく。
そんな感じの構成です。

なんとなくクラス図を見てもらってもわかると思うんですが
GO管理クラスがとても肥大化しています。
俗に言う神クラスというやつですねw

他はそこそこ細かい粒度で作ってあったので変更追加が容易でしたが
この神クラスと相互に依存しているGOの変更が
とてもめんどくさい大変です。

このまま突き進んでいくのも不可能ではないですが
あまり得策ではありませんし、そんな脳筋プログラムは
自他共にためになりません。

ということでこのはた迷惑な神クラスをバラシていくわけです。

分解プラン

いつもならこう変えましたみたいに話すのですが
残念ながらまだ出来てないのでプランだけ。

いやね、色んな所にいる神クラスだから
バラシて移植するだけでも結構大変なんですよ・・・

この神クラスがやっていることは
①GO生成・管理
②ゲームループの構築
③衝突
④各クラス間の依存解決

・・・・はい
1つのクラスでやっていいことを大きく逸脱してますねw
基本的にクラスは1つの機能を持ちそれ以外は持つべきではありません。

ということでこの4つの機能を分けていきます。
①→シーンごとに生成・管理
②→GOの配列を持ち各種処理を走らせる
③→丸ごとクラス化しゲームループに組み込む
④→必要な機能をクラス化し各クラスに埋め込む

今はこういった感じで切り分けながら作り直しています。
バグや動作結果が変わったりするといろいろ困るので慎重に進めています。

ただあともうちょいで各クラスのコーディングが終わり、
繋げてテストができるようになります。
なので結果などに関しては明日投稿できるかなーっと思ってます。

今回はちょっとした報告回でした。
それでは作業に戻るので今回はこの辺でノシ

今回作ったものはgithubに上げました
github.com