米国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を使用
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秒間に進められるフレーム数を表す「フレームレート」がある) ※「ポーリング処理」は処理の必要があるかを自分で判断していること(監視) (判断用関数を自分で呼び出しているのも含む) ※一方イベント駆動はどこかか…
UEのクラス 標準か、自分で作る ・標準で準備されているクラス。汎用的 ・自分で作るクラス(C++、ブループリントクラス) クラス名の先頭は種類のアルファベットを付ける クラス名の先頭に種類を示す1文字のアルファベットをつけるルールがある AActor(アクタクラス) ワールドに存在できるもののクラス。 トランスフォーム情報を必ず持つ。 AActorの構造 AActorのメンバ変数に「機能」を表すコンポーネントをセットして使う。 各コンポーネントに値を設定していく AActorをアクタたらしめているコンポーネント USceneComponentというトランスフォーム情報だけを持つコンポーネント…
span.author.vcard { display: none; } article img { max-width: 100%; height: auto; } .content img { display: block; max-width: 100%; height: auto; width: auto; /* これを追加 */ } .text { line-height: 150%; font-weight: bold; font-size:100% } .text > span { background: linear-gradient(transparent 50%, #FFE…