UE4のソースコードを落として読んでみた

# はじめに

* 時は2014年。このげいむ業界はUnity帝国の統治により平和な日々(!)を過ごしていた。しかし突然、地底からUE4が・・・(伝記 戦争の歯車の冒頭より)
**でも実は、[UEの歴史はすごく古いデス。](http://ja.wikipedia.org/wiki/Unreal_Engine)**
<BR>
※僕も実はアンリアル1の頃からMod作るためにちょこっとエディタ触ってました。ValveのSorceエンジンやQuakeエンジンのエディタより断然使いやすかったなぁ( ´∀｀)
<BR>

## GDC2014で歴史的発表がなされた。
[【GDC 14】Epic Games、「Unreal Engine 4」にサブスクリプションモデルを導入―月額19ドルで全ての機能が利用可能に gamespark](http://www.gamespark.jp/article/2014/03/20/47188.html)
**→ 2015年3月3日から無料になりました＼(^o^)／**

 **え？今更オープンソース化？カーマック先生(Quake・Doom開発者・現Oculus CTO)は昔からやってたよ！あれちがう！？安いとは言え金取るのかよ！！今までと変わらんじゃないか！**

と発表直後は思いました。

しかしよく調べてみると、

* 最新のエンジン・グラフィックス技術の実装が見放題
* ソースコードは自由に改変可能
* 契約はいつでもやめて良い。その時取得したソースコードはそのまま持っといてもOK。プログラムのアイデアを自分のコードに反映することは全然構わない。（UE以外のプロジェクトへの転用は不可）
* 対応プラットフォームは、Windows、Mac、iOS、Android、(PS4・XBOX ONEも対応予定？)
* 売上が発生した場合には総収入の5％のロイヤリティ支払えばOK。良心的(・∀・)

**あれ。コレって速攻契約しなきゃ損ってやつじゃんよ？**

#ってことでVS2013でソースコードビルドするとこまで簡単に説明
* とりあえずビデオ見ながらが早い。[Downloading and Building UE4 Source](https://www.youtube.com/watch?v=usjlNHPn-jo) 
* このページを見てもなお「ソースコードなんていらねぇやい！」って人は、https://www.unrealengine.com/dashboard の **Latest Download** からDLすれば、ビルド済みのエディタが手にはいります。

##ビルドに必要なもの
* 月々2千円(プライスレス)
* GitHubのアカウント
* VS2013(無料版でも可らしい)
* DirectX SDK
* 割りとハイスペックなマシン(エンジンのビルド・実行に相当CPUとメモリを使います)
* ソースコードへの愛と情熱<BR>
**※あと、[VisualAssistX](https://www.wholetomato.com/)とかあると解析がとても捗ります。購入を強くおすすめします。**
<BR>


##ビルドまでの簡単な手順
1. [UE4のページ](https://www.unrealengine.com/blog/welcome-to-unreal-engine-4)にアクセスして、「GET UNREAL」をクリック。アカウント作ります。
1. 淡々と個人情報を入力していきます。クレジットはInternationalなやつじゃないと使えないので注意。住所の入力方法に癖があるのでネットで調べながら入力。
1. アカウントが作成出来たら、[さっきのトップページ](https://www.unrealengine.com/)から、SignIn します。
1. GitHubとの連携的な項目があるので[説明](https://www.unrealengine.com/ue4-on-github)に沿って設定。
1. GitHubは、Git(ギット?)っいう大リーナス神が考案したバージョン管理システムを使ってるので、TortoiseGitをインストールするなり、[SouceTree](https://www.atlassian.com/ja/software/sourcetree/overview)を使うなりしてインストールします。面倒ならZipで落としてきてもOK。
1. あとは、GitHubの [**Getting up and running**](https://github.com/EpicGames/UnrealEngine) に書かれてるとおりに、dependencies(追加の依存ファイル)を落としてきて、ソースフォルダに上書きする。(Optional/Required_1of2.zip/ Required_2of2.zipの3つ)
1. エンジンのルートフォルダの、README.mdの手順に沿って、GenerateProjectFiles.bat を実行。(ここでなんかハマった気がするけど忘れた)
1. VS2013を起動して、フルビルド。しばらくアニメでも見ながらビルドが終わるのを待つ。<BR>
2. ビルドが終わったら実行してみる。

#ソースコード解析のポイントなど

* UE4のGUI部分はC#。エンジン部分はC++で書かれてる。
* エディタ起動しながらの、C++コードのホットロードの実力を体感せよ！(エディタ起動しながらビルドして即反映の仕組み)
* UnrealEngine\Engine\Source\Runtime\Engine 以下フォルダがエンジンのコアのソースコード
* 描画系は、UnrealEngine\Engine\Source\Runtime\Renderer の当たり。
* シェーダーは独自言語。UnrealEngine\Engine\Shaders 以下の.usfファイルがシェーダーファイル。
* 話題沸騰のBluePrint(ノードベーススクリプティング環境。旧Kismet)のコードは、UnrealEngine\Engine\Source\Runtime\Engine\Private\Blueprint.cpp らへん。
* UObject がすべてのクラスの基底クラス。シリアライズ/デシリアライズや、エディタとの連携処理などが実装されてる。
* Actorは、定期更新処理を持つオブジェクトの基底。キャラとかエフェクトとかギミックはコレを継承して作られてる。
* オキュラス関連は、UnrealEngine\Engine\Plugins\OculusRift\Source\OculusRift

* APIドキュメントといいつつDoxygenそのまま。あまり整備されてないからちょっと見づらい。
 UnrealEngine\Engine\Documentation\CHM\API.chm

#まとめ
 * 月額2000円でソースコード見放題とかそのへんのエッチなサイトより断然安い＼(^o^)／(コラ
 * ソースコードを読むには、ゲームエンジンの構造に関する知識が必要なので、gemsや[ゲームエンジン・アーキテクチャ](http://www.amazon.co.jp/dp/4797360712/ref=cm_sw_r_tw_dp_wGNmtb1N3EB35)など読んで事前に勉強した方が良いかも。ネットにも情報は沢山あります。

 * UE4を自作ゲームで使う・使わないに関係なく、プログラムスキルを磨くために見ないと損。

ってことで簡単に導入まで書いてみましたとさ。

# その他ソースコードが読める3D向けゲームエンジン達
## 無料
 * [Blender Game Engine](http://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Game_Engine)
 * [Helium Engine](https://github.com/HeliumProject/Helium)
 * [いるりっひたん(irrlicht Engine)](http://irrlicht.sourceforge.net/)
 * [Project Anarchy](https://projectanarchy.com/jp)
 * [Torque engine](http://www.garagegames.com/products/torque-3d) 
 * そーすえんじん( ´∀｀) (あっ

##有料
 * [CryEngine](http://www.cryengine.com/)

 * [Esenthel Engine](http://www.esenthel.com/)
  * [Esenthel Engineというゲームエンジンが予想外に面白かったのでメモ](http://qiita.com/yasei_no_otoko/items/a85c677714fb12903f81) by @yasei_no_otoko