妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

UE4のソースコードを見てもわからないことはある

妹「関数の中身がもうちょっとわからないもんかなあ。ブループリントのだったらダブルクリックして中身見えるけど、シー何とかのやつだと、なんか見えないし、見えてもわかんないんだけど」

「何を見るの?」

妹「何をっていうほどのことはないんだけど。たとえばSqrtとか、どうやって計算してんのかなあ、と」

「一応ソースコードをたどっていけば、わか……らないね。これはわからないやつだ」

妹「わかんないの? 見ようと思えば見えるものなのでは?」

「そうなんだけど、この場合」

f:id:una_unagi:20180419234805p:plain

「ずーっと追いかけていって、ここまではたどり着けたんだけど、でもここで最終的に呼び出してるsqrtfっていう名前の関数は、C++の標準ライブラリだから。UE4ソースコードには中身が含まれてない。元々ある関数を呼び出してるだけ」

妹「じゃあその標準ライブラリというやつの中身を見れば?」

コンパイラ自体もオープンソースの場合はそれも可能だけど、UE4で使ってるVisualC++というのは、ソースコードを公開してないコンパイラなものだから、そこから先はブラックボックスになっている」

妹「そういうこともあるんだ……」

「他にもオープンじゃない部分というのはいくつかある。Epic社が作ってない部分だから勝手に公開できないやつ」

妹「全部わかるわけじゃないんだ」

「ゲーム機とかスマホとかの中身もわかんないからね。この関数を使えば出来ますよ、という状態になってて、その関数を呼び出すところまではわかる。でも関数の具体的な中身はわからない」

妹「じゃあ例えば、Sqrtの中身がバグってた、なんて場合はどうするの?」

「標準のやつの中身を勝手に書き換えできないから、標準関数の代わりに自分の関数を呼び出すように変更する。ゲームエンジン内部で使う分はそのままでいいなら、ブループリントでSqrt2とか何とかの適当な関数を作って使ってもいいし。ブループリントだと速度的には問題ありそうだけど」