はかせのラボ

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

UE4ソース読み WinMainから始まると思い込んではいけない

あいさつ

どうも、はかせです。
ようやっとUE4のビルドまで行けるようになり
動くことが確認取れたのでソースコードを読んでいきたいと思います。

UE4の始まり

私は最初ウィンドウが出るものだから
WinMainから始まるだろうと思い、
Ctrl+Fを使ってソリューションの中のWinMainを全て探し
ブレークポイントを貼ってF5実行しました。
(WinMain探すのにも数分かかりましたw)

そうしたらまさかのどれにもヒットせず、
ただ一瞬コンソールが出て終了してしまいました。

その後もmainという名前が入っている関数に片っ端から
ブレークポイント貼って探していきました。
ですが、UE4のファイル数と行数はえげつないです。
全部人力で見ていったらとてもじゃないですが時間が足りません。

どうすればいいんだと途方にくれていたんですが
F11でステップイン出来ることを思い出しました。
(普段F12のタイプミスでしょっちゅうやってるのにね)

ということでF11を押してみました。
そうしたらこんなとこに出ました。
BlankProgram.cpp
f:id:hakase0274:20190309234336p:plain

INT32_MAIN_INT32_ARGC_TCHAR_ARGVとは??
MAINって入ってるからmain関数の仲間なんだろうと予測は出来るけど
今まで見たことも聞いたこともないぞ?

ということでググってみました。
f:id:hakase0274:20190309234804p:plain

どうやらUE4のみに存在するものっぽいです。
ということで今度はUE4内でジャンプしてみます。
f:id:hakase0274:20190309234934p:plain
どうやらビルド時の設定によってmain関数を振り分けるマクロっぽいです。

UE4はまずコンソールで起動してから
各種ウィンドウを生成していくって感じなんですかね。
確かにエンジンは複数ウィンドウがあるので、
そちらの方が効率的に管理ができるのかもしれませんね。

あとがき

今回はUE4が起動するところの発見で終わってしまいました。
F11でステップインできることをすぐ思い出せていれば
もう少し解読が進んでいたかもしれません。

UE4ソースコードは膨大です。
なので端から端まで順に読んでいくというよりか
ポイントポイント絞って読み進めたいと思います。
(boostも読まなきゃだしね)

それでは今回はこの辺でノシ