Godot Engineを調べてみた

※この記事は「AltPlus Advent Calendar 2016」の18日目の記事です。

新卒の佐藤です。
現在はサーバーサイドエンジニアとして働かせていただいおります。
技術ブログは初めてなので読みづらい点など多々あると思いますが、ご容赦ください。

今回ですが、タイトルのとおり『Godot Engine』という名前のゲームエンジンを知る機会がありましたので、それについて記事を書こうかと思います。
ちまたでは、豊富なマルチプラットフォーム対応に加え、本格的な2D、3Dゲームの作成が可能ということで、Unityに代わる新たなゲームエンジンとなるのでは、と言われているらしいです。

とりあえず、サンプルプロジェクトを見て、どういうことができるのかというところ確認してみたいと思います。

Godot Engineについての説明や細かい解説などは[こちら](http://3dnchu.com/archives/godot-engine-1-0/)や[こちら](http://ch.nicovideo.jp/Arasen/blomaga/ar703729)で紹介がされておりますので、そちらを参照いただければと思います。


## ダウンロード

[公式サイト](https://godotengine.org/)のトップにあるダウンロードリンクへ行きます。
ダウンロードページから自分の使用しているOSを選択してください。
あと、今回眺めていくデモプロジェクトをここからDLします。
![dl_site.png](https://qiita-image-store.s3.amazonaws.com/0/106568/46e4d9a2-efd7-1667-0f01-5ca224750a85.png)

DLしてきたものは、解凍してテキトウな場所に置いときます。

僕の場合は一つのファイルにまとめました。
![folder.png](https://qiita-image-store.s3.amazonaws.com/0/106568/66d05fa7-f89c-3078-43c9-cb0ccfa96293.png)


デモフォルダはこんな感じです。
![demo_folder.png](https://qiita-image-store.s3.amazonaws.com/0/106568/6657b58f-61fa-a694-dea5-ea1c97ba5b9b.png)


## デモプロジェクトを立ち上げる
とりあえず出てきたexeファイルを実行します。
すると、こんな感じのものが立ち上がります。

![waik_up.png](https://qiita-image-store.s3.amazonaws.com/0/106568/0abcd00a-cccc-52fd-2359-77a8e8ae8146.png)




サンプルプロジェクトを立ち上げるには、まず右のImportを選択してください。

![import_push.png](https://qiita-image-store.s3.amazonaws.com/0/106568/41c681e2-cab1-a42a-5a1b-cb13bd9f9326.png)

で、ここのBrowseを押すとファイルの選択画面に行くので、デモプロジェクトのところまで行きます。

ここから、興味のあるものを見に行きます。
今回は「kinematic_char」というフォルダを選択しました。

中に入るとengine.cfgというファイルがあるので、選択してOpenボタンを押します。
![open_before.png](https://qiita-image-store.s3.amazonaws.com/0/106568/b7c572a8-7e3e-8143-00f2-408dc60d3244.png)

その後「Import」でプロジェクトがProject Listに追加されます。

追加されたプロジェクトをダブルクリックすると、こんな感じのエディタが出てきました。

![project.png](https://qiita-image-store.s3.amazonaws.com/0/106568/6771630e-e0cb-84eb-ac8d-f4d21af87ae1.png)

とりあえず実行してみます。

![first_play-iloveimg-compressed.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/6b952fe7-8688-7624-9409-59fb9bc30834.gif)


動きます。


## 中身を軽く見てみる
このサンプルプロジェクトは名前通り2D上での物理挙動とキャラクターの操作に関してのものらしいです。
また、マップに関してはタイルマップベースで編集することが可能っぽいです。

![edit-compressor.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/38bc0883-aa31-764d-c1cf-cbc83fc096ca.gif)
クソマップ

ほかにもいろいろ見ていきますと
 - オブジェクト一覧が表示されている『Scene』
 - 各オブジェクトのパラメータ等を設定する『Inspector』
 - 画像やスクリプトなどのリソースファイルが表示されている『FileSystem』

があります。Unityにあるやつと一緒っぽいですね（Unity以外のGUIゲームエンジンを触ったことがないのでこれが標準なのかもしれませんが...）

こういうのを見るととりあえずキャラクターの移動速度やら何やらを変更したくなるので、スクリプトを見てみます。

上のScriptをクリック（3Dとかは別で使用？AssetLibは見た感じUnityのアセットストア的なものっぽい）

![script.png](https://qiita-image-store.s3.amazonaws.com/0/106568/0ef494c6-06f0-5a7e-3e9a-be9820dede7a.png)
なんと専用エディタ。ありがたい

　どうやら、Godot Engineは『GDScript』という独自のスクリプト言語を使用しているようです。Pythonに似た言語らしいですが、詳しくは[公式のDocs](http://docs.godotengine.org/en/stable/reference/gdscript.html)（英語）を参照してください（英語苦手）。
　Pythonを扱ったことがないので細かいところは分かりません、変数宣言とかが明示的に行えるみたいです。
　
　この辺の細かいことは後々勉強していくとして...
　とりあえず、ジャンプ力とかスピードを書き換えて再度再生。

![play-compressed.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/cdc2d382-2411-68bd-e7f7-af05c7fe4a44.gif)
早すぎる。

　ついでにゴールした際のメッセージを日本語に変更してみたのですが、対応していないようです。最後に打った3点リーダーのみ表示されています。

## 他のプロジェクトも見てみる
ほかには...

![light_test.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/e5605c90-0034-260a-93af-fb8267b48fc0.gif)

ライトの描写テストだったり

![tansaku_test.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/acad33b5-a7c1-53ee-fbec-cf85e68ae35b.gif)

経路探索のデモや

![map_create_test-iloveimg-compressed.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/f4cdef19-d959-e24b-592c-bfb4378a7bb2.gif)

別のタイルマップ操作だったり

![play_test.gif](https://qiita-image-store.s3.amazonaws.com/0/106568/495579df-4e30-32bb-b5bc-38cd132d8dcd.gif)


普通にゲームっぽいやつもありました。ほかのサンプルも興味がございましたら是非ご覧ください。

## まとめ
デモをいじっただけなのですが、非常に軽量でサクサク動いている印象でした（複数のプロジェクト起動でも全然問題なし）。
時間があれば、今度は１からゲームを作ってみたいと思います。