米国Epic Gamesが開発したゲームエンジン。ミドルウェア。 2004年には「Unreal Engine 3」が発表。 2013年には「Unreal Engine 4」が発表。 PCから家庭用ゲーム機までサポートする汎用のゲームエンジンで、MIDWAYや2K Gamesなど欧米を中心に多くの企業が採用している。 近年はバンダイナムコゲームスやスクウェア・エニックスなど日本でも採用するメーカーが増えてきている。
*1:Unreal Engine 2.5を独自拡張した「Evolution Engine」を使用。
*2:後に自社開発のゲームエンジンに変更
*3:PLAYSTATION 3版はUnreal Engine 2.5を使用
研修の概要 研修の目標 研修の流れ、内容紹介 資料や動画を見て学ぶ ゲームメーカーズ:ゲームづくりを始めよう! オンラインラーニング:BPの基礎概念 書籍での学習 Unreal Engine 5で極めるゲーム開発 実際にゲームを作ってみる ゲームをパッケージ化して提出 発表会とフィードバック 作品紹介 おわりに サマーインターンシップ詳細 こんにちは。 株式会社アドグローブ ゲーム事業部エンジニアの山崎です。 新入社員が4月に入社してから、あっという間に2ヶ月が経過しました。年々時間の流れが早く感じるのは、私だけではないはずです。現在も研修中の方がいれば、すでにプロジェクトに配属されて現場での…
はじめに 株式会社ヒストリア様主催の第23回UE5ぷちコンにてアイディア賞をいただきました。ありがとうございました。 応募作品はLinkage!!です。 www.youtube.com この記事では制作の振り返りを書いていこうと思います。 この記事は「各論編」です。どういう実装にしたのか細かい記述がメインです。長くなってしまったので感想とか全体のまとめ的なものが知りたい方は、このあと書く予定の「振り返り・まとめ編」だけ読めば十分かなと思います。 はじめに 記事の方針的なもの:試行錯誤の過程を意識低めにゆるく 企画フェーズ ぷちコンへの参加 企画の検討 企画の決定 制作フェーズ プロトタイプ制作…
Hitとは 衝突イベントのうち、 コライダーどうしで行われ、すり抜けないもの。 コライダー すべてのアクターが衝突できるわけではなく、 player stertやtarget pointなど衝突できないものもある(概念的なもの)。衝突ができるアクターを「コライダー」という。 Hitは衝突ができるオブジェクトどうしで行われる。 スイープとすり抜け 位置更新はtickごとに断続的に行われるので、 コライダーのコリジョンをちょうどまたいでしまい、 Hitせずにすり抜けることがある。これを防ぐには更新の間部分でHitしていないかどうかを調べる方法 「スイープ」でやる。処理が重くなるので必ずやるわけでは…
ナビメッシュとは何か AIの経路探索処理に使うデータ。 マップ形状から事前計算して作る。 ナビメッシュを生成する ナビメッシュ生成領域を指定するボリュームNav Mesh Bounds Volumeで、 生成したい地面をボリュームに入れる。 ボリュームの出し方 どのように配置すればいいか 生成したいところの地面がボリュームに入っていればいい。薄くていい。 ただし、床面が高いところにもあるなら、縦方向に大きくしてもいい。1個のボリュームで様々な高低差の地面全体を覆うのはよくない。 複数個小さめのを使う。 平らでつながっている箇所を1つずつボリュームで覆っていく。例) ・1階と2階の平らな地面でそ…
HID(ヒューマン インタフェース デバイス):入力装置 入力には2種類ある デジタル入力:01(off/on)の2種類の値を扱う アナログ入力:幅のある値を扱う デジタル入力 01(off/on)の2種類の状態があり、状態が変わった時に実行する。 ボタン等強度という概念はなく、ただ実行するか否か。 押し続けることで、1方向は扱える WASDキーのDキーを押し続けたら、右に進む等。しかし、1つのデジタル入力装置で、1方向が限界。 2方向を扱いたい場合は、もう1つデジタル入力を増やす。 (Aキーもあれば左方向も扱える) アナログ入力 -1~1など、幅のある値を扱える。 スティック、マウス移動等 …
アクタを動かす方法 ・BPやC++コードで、座標を直接書き換える ・移動コンポーネントを使ういずれのやり方であっても、 トランスフォーム更新をするならば、 必ずアクタを「Movable」に設定すること。 アクタのBPやC++コードで、座標を直接書き換える 大きな流れとしてはTickなどのイベント時に、 set actor locationで座標を指定する。新しい座標はself(自身の参照)にget actor locationで座標を取得し、 差分を加算して作る。 (クラスのメンバ変数を直接触れないから、 セッター関数を呼び出して取得している感じ?) 移動コンポーネントを使う 使い方 アクタに…
ロジック処理か、描画処理か UWorld::Tick()はロジック処理 (アクタの位置更新、AI,BP,物理処理、アニメーション)レンダリングは描画処理 (ライトの描画、影処理、ピクセル単位のレンダリング) アクターの可動性と事前計算 Static オブジェクトがゲーム実行中に動かない(スタティック)なことがわかっていれば、 事前にデータを計算しておく(ベイク)。実行時の描画負荷が非常に軽い。 ベイク 事前に「ビルド(Build Lighting)」で ベイク(光と影をテクスチャやマップに書き込む)で、実行時には一切計算しない《どんな処理を事前に行うか》 ライトの当たり方(Lightmap) …
ブループリントの種類 主に2つある。 レベルブループリント(マップ読み込み時に一度だけ実行、状態変数がない処理) アクタのブループリント(アクタに対して付けるので使いまわしできる) どこに、何を書けばいいのか レベルブループリント レベルに対して行う。 主にイベント挙動を書いていく。 レベルのブループリントに書くもの ・マップを読み込むたびに、必ず一度だけ行う処理(状態変数もなし) 例 マップ開始時に、必ずムービーを1本再生する マップ開始時に、画面をフェードインさせる マップ開始時に、BGMを切り替えるマップをロードしなおせば、初期化されるのがメリット レベルブループリントの編集の仕方 アク…
設定の種類 プロジェクト設定 「ゲーム全体に影響」「全員影響」する設定 エディタの環境設定 「個人のエディタにだけ影響」する設定 ワールドセッティング 今開いているパーシスタントレベルが所属するワールドに対しての設定プロジェクト設定とかぶっている項目(デフォルトのGameMode)などは、 ワールドセッティングの方が優先される 設定の保存されている場所 .iniファイルに、「キー=値」形式で保存 Config/DefaultEngine.ini Config/DefaultInput.ini Config/DefaultGame.ini Config/DefaultEditor.ini プロジ…
Unreal engineの設計はフレーム処理をしていくことで、結果として時間が進んでいくタイプ ※反対にクロックは時間は勝手に進んでいく中で、各タイミングで処理をしていくタイプUnreal Engineの設計世界では、誰も時間を進めてくれず、 1フレーム分の処理(Tick)を進めることで、結果としてゲーム世界の時間が進んでいく。Tick処理は進められるだけ進めようとする。 (そのため、1秒間に進められるフレーム数を表す「フレームレート」がある) ※「ポーリング処理」は処理の必要があるかを自分で判断していること(監視) (判断用関数を自分で呼び出しているのも含む) ※一方イベント駆動はどこかか…