Game Programming Patterns再読

はいどーもこんばんは、ニートです。
本日は『Game Programming Patterns』を再読した感想記事を書きたいと思いますよ。
ちなみに前回の記事はコチラです。

理解度は大いに深まった

前回読んだときは大いに感動したのですが、今回は感動が大きいと言うよりは知識の復習の感じが強かったです。
例えばオブザーバパターンはUniRxを利用しているなら理解することが必須のパターンです。
「現在のオブザーバ」として紹介されている「JavaScriptのイベントシステムでは、オブザーバを特別なEventListenerプロトコルをサポートしたオブジェクトとすることもできますが、単なる関数として実装することもできます」という意味が当時はよくわかりませんでしたが、現在はそれぞれが何を指しているのかよくわかります。
UniRxも特定のプロトコルをサポートしたオブザーバをSubscribeすることはできますが、それよりもOnNextで特定のデリゲートを実行できるようにした方が何かと便利なので、そういうオーバーロードが用意されています。
そのことなんでしょうね(もちろんObserverを登録することもできます)。

他の項目についても「これは今まで使っていた○○パターンと比較するとわかりやすいぞ!」というものがいくつもありました。
また半年後あたりに再読したら何か新しい発見があるのかなあ、なんて今からワクワクしています。

型オブジェクトはScriptableObject

Unityを使っている方ならScriptableObjectを使ったことがあるかと思います。
ScriptableObjectを利用してデータベースを作るのは多分一般的な手法かと思うのですが、これがまさに型オブジェクトパターンだなと思いました。
型オブジェクトパターンの問題として「ビヘイビアの定義が困難」というものが挙げられていて、同じことはScriptableObjectにも言えます。

データ駆動型で開発したい

ビヘイビアの定義が困難なら、それを楽にしようとするのがプログラマでしょう。
そこで本書ではバイトコードというものが紹介されています。
バイトコードの目的の一つには「プログラマ以外の人がデータを簡単にいじれるようにする」ということがあるかと思います。
例えば先程挙げたScriptableObjectの中にビヘイビアを簡単に定義できるようにするのですね。
これは非常に魅力的なのですが、バイトコードを作るのがそもそも難しいので、Unityで使える何か汎用的な方法ってないのかなあ……なんて妄想しています。
あるんですかね?

難しい部分もあった

僕は今まで「最適化」ということをあまりやってきませんでした。
もちろんある程度は速度を気にして組むことはありましたが、それよりは「使いまわしやすさ」「管理のしやすさ」を重視してコードを組んでいます。
なので「最適化のパターン」として紹介されているコードがいまいち理解できない(もといやった事がないのでどこで適用するべきかうまく掴めない)ところがありました。
その最たるものが「データ局所化」のパターンですね。
これは他の方に質問したりして、ようやく理解度50%くらいかなといったところですw
ダーティフラグとオブジェクトプールは比較的マシで、空間分割は単純に難しかったです。

終わりに

それなりに収穫があったので大満足です。
次に読む本は何にしようかなと思案中なので、オススメがあったらTwitterでこっそり教えてください。

ほなそんな感じでまた。

フォローする