Engineに最近キャッチアップしてたので、そのノートです。普段はiOSエンジニアをしています。ゲーム開発は未経験ですが、以前Unityでアプリ開発をしたことがあります。Engineは完全に名前だけしか知らない状態でした。EngineはEpic社が提供しているゲームエンジンです。Engineがゲームエンジンの二大巨頭です。ゲーム開発以外の用途でも、建築の設計図、自動車の設計図、動画の制作などにも使われているそうです。Epic社とはあまりにゲームに詳しくないので、Epic社の立ち位置をよく混乱するのですが、ざっくり言うと下記の会社です。Store)も運営しているFortniteの開発会社Apple/Googleのデジタルコンテンツの30%手数料に対して訴訟を起こして裁判中ゲームメーカーであり、ゲームエンジンの提供サイドでもあります。Engineのはじまりです。そこから社外向けに、ライセンス販売ビジネスとして広げていきました。2015年から、現在の基本無償提供、ただし売上が一定以上になったら何%か手数料引く方式に変わりました。4)手数料はその後何度か変更があったようですが、現在は100万ドル/年を超えたら売上の5%を支払う義務が出るそうです。5が出て、今に至ります。Engineを採用するメリットは、グラフィックの強さです。Engineが向いていると思われます。本も出てますが、僕の場合、タイムリーにZennであったので、↓をもとに学習を進めました。4のものは結構ありますが、5はまだあんまりないように感じました。あと、ソフトウェアの学習に本ってちょっと微妙だなという気持ちが年々強くなってるので、動画コンテンツの方がまだいいかもしれません。Engineで検索して出てきた動画見るだけでも結構進むかもです。本当に正しいことを知りたいときは、公式ドキュメントをおすすめします。Engineをインストールします。Engine本体だけでなく、Epicのアプリがたくさん入ります。その中から「UnrealEditor」を開きます。こんな感じでエディタが立ち上がります。Person」かが使いやすいと思います。Person」設定で、「MyProject」を作成します。するとエディターが立ち上がります。この記事はあくまでさっくり進めたいので、エディターの詳細はこの記事とかを見てください。Engineにはレベル(Level)という概念があります。これがすごく大事な概念です。今エディタ上で表示している3D世界は、1つのレベルです。Unityをやったことがある人なら、Sceneに相当します。マリオみたいなゲームで、4ステージあるとすると、ゲーム開発としてはステージごとに4つレベルを作成します。1stステージ用のレベルで、プレイヤーがクリア条件を満たしたら、2ndステージ用のレベルを呼び出す、みたいにして使います。ここでいうレベルは、RPGのキャラクターのレベルのことではなく、おそらく(建物の)何階みたいな意味のレベルなんだと思います。Engineでつくるゲーム世界は、複数のレベルで構成されます。.umapファイルです。レベルは、概念としてはマップやステージとほぼ同じなので、文脈によってはそっちで呼ばれることもあります。デフォルトレベルとして指定されています。デフォルトレベルの変更が可能です。レベルの移動は、後述するブループリントなりC++なりで記述します。最初僕はこの辺の仕組みがわかってなくて、新しいレベルを作成したらデフォルトのレベルに戻れなくなりました。Engine上で、テキトーにオブジェクトを増やしていくのは、GUI操作でできるので、なんとなくできると思います。Engineではアクターと呼びます。フォルダの中にある素材のことをアセットと呼びます。この記事を読むにあたっては、レベルとアクターだけわかっておけばOKです。Unity経験者だと、座標軸が違うので、そこに戸惑います。Engineだと垂直方向はZ軸です。Engineの方がいいですが、ちょっと戸惑います。動きをつける静的なオブジェクトを追加するのは、GUI操作でなんとかなります。Engineでは、オブジェクトの操作のために、ブループリントとC++という2つの選択肢があります。どちらもプログラミングなので、プログラミング未経験でゲーム開発したい人はここが壁かもです。ブループリント英語で「設計図」を意味するBlueprintですが、UEにおいては、ノードベースのプログラミングシステムです。具体的には、こんな画面です。コードを直接書く必要がないので、プログラミング未経験であれば、だいぶとっつきやすいかとは思います。C++C言語系のプログラミング言語です。Engineの推しとしては、ブループリントみたいです。コード書かなくても、ゲームがつくれる世界を提供したいみたいです。触った感じだと、かなりイベントがたくさんあるので、大抵のことはブループリントでできる印象でした。ブループリントの問題としては、差分の確認がしづらいので、プロジェクトの規模が大きくなると、レビューが大変になったり、保守が困難になってきたりするところでしょう。教科書的には、ブループリントの手軽さと、C++のコードベースの良さとを上手いこと適材適所で使ってくのがいいでしょう。個人のゲーム開発者であれば、とりあえずブループリントで動かして、限界を感じたらC++を勉強し始めるでいいのではないでしょうか。ブループリントクラスブループリントは2種類の配置場所があります。レベルブループリントは、レベルに紐づくものです。ステージが始まった瞬間に何か実行したい処理があったとすると、レベルブループリントの中に書くのが適切です。敵キャラの登場のときに実行する処理、たとえば「画面にキャラが表れたら火を吹く」みたいな処理を書くとしたら、レベルそのものよりも、敵キャラのアクターに紐付けたいですよね。ここで使うのがブループリントクラスです。詳しい設定は下記をご覧ください。https://zenn.dev/daichi_gamedev/books/unreal-engine-tutorial/viewer/blueprint-level-blueprintブループリントでキーボードの入力を受け付けてみるとりあえずさっくりサンプルプロジェクトにアクションを追加してみました。こんなブループリントを追加します。https://twitter.com/0si43/status/1565923219227287552?s=20&t=B2EgD-WxUq3_otqr4VpNCgすると、Fキーを押すと主人公キャラ周辺が燃える、というアクションが追加できました。やったね!UIをつけるゲームはアクションだけでなく、色々なUIパーツをつける必要があります。HPバーメッセージ設定ボタンなどなど。Graphics)という機能が提供されていて、UI部品がつくれます。これもブループリントの仕組みが使われていて、アセットとしてはウィジェットブループリントという名前がついています。アセットを開くと、こんなエディタが開きます。これでポチポチウィジェットをつくります。つくったら、何らかのブループリントを設定して、表示します。↑こんなブループリントです。当初の想定より記事全体が長くなっているので、詳細は↓こちらの記事を参照してください。Developerバッジを贈って著者を応援しようバッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。Proよくある質問LinksX(Twitter)GitHubメディアキットLegal利用規約プライバシーポリシ。