Quantcast
Channel: historia Inc –株式会社ヒストリア
Viewing all 984 articles
Browse latest View live

[UE4] VectorNoise を使ってみました

$
0
0

UE4.14でマテリアルエディタにVectorNoiseというノードが追加されました。

Noiseと似ていますが、出力する値がVector型で情報量が多いのでより遊び甲斐があります。

 

ここでは主にVoronoiを使った作例を挙げます。

Voronoi分割とは乱雑にばらまいた点(シード点)への距離をもとに空間を分割する手法です。

詳しくはWebで調べて下さい。

 

まずはシンプルに接続してみます。

VoronoiのAlpha成分からはシード点の中心までの距離を出力します。

セルの中心ほど色が黒くなっているのが分かります。

ここまでは従来のNoiseで可能なことです。

参考までに、↓のような設定でほぼ同じような見た目になります。

 

次に、部屋を色分けしてみます。

VoronoiのRGB成分はシード点の座標を出力します。

この座標によって色分けするのですが、

これに役立つのが同じくVectorNoiseのモードの一つ”Cellnoise”です。

Cellnoiseは受け取った座標をもとにランダムな色(値が0~1のVector)を返します。

この際に重要なのが、同じ座標に対しては同じ色を返すという性質です。

前半は変わらず、後半部分でRGB成分をCellnoiseに渡して色を受け取っています。

 

最後に、これをVolumeDecalへ持っていきます。

(VolumeDecalについては以前の記事で扱っています->http://historia.co.jp/archives/5631)。

Voronoi分割とVolumeDecal(レイマーチング法)はかなり相性が良いです。

ある点の属する区切りのシード点への距離は他のあらゆるシード点への距離より小さいため、そのまま距離関数の元として使えます。

こんな感じに組んでみました↓

だいたい前の二つを合わせたような内容になっていることが分かるかと思います。

動かして遊ぶためにMaterialParameterCollectionを使っています。

また、Decalならではの注意点として、LightVectorが座標、OpacityMaskが距離関数(LightVectorで与えられた点からレイの衝突する面までの距離)を表します。

シード点からの距離(から一定数を引いたもの)を距離関数とすることで、球体を表現しています。

 

出力は次のようになります(マテリアルエディタでは見えないのでブループリントにDecalコンポーネントを付けてプレビューしています)。

カラフルなのはいいですね・・・!


[UE4] 4.15新機能を試してみる!シーケンサーアニメーションブレンドとReroute ノード

$
0
0

こんにちは、テクニカルアーティストの渡邊です!今回は4.15の新機能を試してみました。

シーケンサーアニメーションブレンド
わかりやすいように、動かない簡単なポーズを使って試していこうと思います。


グレーマンのこのポーズと

このポーズを、アニメーションとして読み込んでブレンドしていきます。

サブアニメーショントラックを展開するとWeightの項目があります。


0~1の値を+(AddKye)で追加できます。
各アニメーションに対して、Weightの値をキーで追加していきます。

こんなふうに・・・・

そして再生!

おお、綺麗に保管されてますね。

アニメーションブレンドが入ったおかげで
アニメーションのつなぎが滑らかになりそうです!素敵!

Reroute ノード

ついにきました!念願のRerouteノードです。
ダブルクリックで追加できます。
これでスパゲッティノードとはおさらばできますね!

[UE4]第7回UE4ぷちコン応募作品公開!その1

$
0
0

第7回UE4ぷちコンのエントリー作品一覧ページです。

応募いただいた皆様、ありがとうございます!!

第7回UE4ぷちコン応募作品一挙公開!

※コンテストの告知ページはこちらです。

第7回UE4ぷちコン応募作品一挙公開!その2はこちら

第7回UE4ぷちコン応募作品一挙公開!その3はこちら

[エントリーNo.1]   こんにゃく屋敷

Takao さま

▼応募者コメント▼

こんにゃくで屋敷に入ってくる人たちを驚かすVRゲームです。上手く釣り竿を操って多くの人を驚かしてください。

[エントリーNo.2]  お笑い芸人○×ゲーム

板庇 賢一 さま

▼応募者コメント▼

テーマとうまく合っているかが心配ですが、よくあるお笑い芸人の○×ゲームをイメージして作ってみました。クイズは2択で、外れた場合には選んだ先にサプライズ(今回は爆死)が待っているというだけのものです。
クイズに正解した場合は、走りがスピードアップするので、それだけ早い判断も必要になります。
操作は左右の方向キーのみ使用しています。
技術的な作りとしましては、ロブさんのEndlessRunnerを参考にプロシージャルな床(短いタイルを自動生成)、
ヒストリア様のブログにあったCSVファイルの読み込み(クイズとその正誤をE xcelで作成)に初めて挑戦してみました。

[エントリーNo.3] Unreal戦隊ブルーレンジャー vs 俺

もんしょ さま

▼応募者コメント▼

HTC Viveを用いた体験型コンテンツです。
『俺』となって正義の味方であるブルーレンジャーと戦います。
しかし、そこに大きな罠が待ち構えているなど、その時の『俺』にはわからなかった…

[エントリーNo.4]  USS SUPPLIES

蝋燭 さま

▼応募者コメント▼

米海軍サプライ級高速戦闘支援艦をこれでもかと並べ、どっからどう見ても「サプライズ」。えぇ、駄洒落ですとも。

ゲームにあるまじきLOD無し大量ポリゴン使ったのに割と動いて私もサプライズ。

[エントリーNo.5]  Multi Tomunia(マルチタムニア)

おぎまふ さま

▼応募者コメント▼

VR音ゲーを作っているヒストリア様主催のコンテストで、
あえてVR音ゲーをぶつけることでサプライズを狙いました。
楽器はマーチング用マルチタムをイメージしたものです。

[エントリーNo.6]  SPY vs FIXER Betrayal Chess

unwitherer さま

▼応募者コメント▼

このゲームは、チェスのルールを一部改変したオリジナルボードゲームで、「相手の駒を操作できる」という特別なルールのもとでプレイヤーは対戦します。プレイヤーは相手の駒の中から「スパイ(SPY)」を、自分の駒の中から「黒幕(FIXER)」設定できます。
黒幕は、通常のチェスにおける「キング」です。これが取られると負けですが、プレイヤーは互いに黒幕がどの駒か知りません。
スパイは、自分のターンに操作できる相手の駒です。タイミングを見て動かし、相手の不意を突いて驚かせましょう!見た目はチェスですが、独自の改変によって頭脳戦から心理戦へと進化した新しいボードゲームです。

[エントリーNo.7]  妖怪からかっさちゃん

しゅしゅP さま

▼応募者コメント▼

テーマは、「サプライズ」ということで
驚かせる=妖怪が出てくるゲームにしてみました。
ゲームの最後にもサプライズがあります。
レトロなゲームが好きなので、そんな感じに仕上げたつもりです。

[エントリーNo.8]  ユニティちゃんサプライズ

ガウラサン さま

▼応募者コメント▼

ユニティちゃんが落下してくるタライでサプライズリアクションをとるゲームです。
樽にあたると倒れてタイムロスになります。
© Unity Technologies Japan/UCL

[エントリーNo.9]  Dive to Engine Content

PaperSloth さま

▼応募者コメント▼

電脳世界でAssetを取り戻すために戦うというシューティングゲームです。
Assetを奪った黒幕は誰なのか、果たして打ち勝つことが出来るのだろうか・・・!!

[エントリーNo.10]  スリルドライブ

PavilionDV7 さま

▼応募者コメント▼

教習生に扮するプレイヤーが教官を華麗なドライビングテクニックでビビらせるドッキリ番組、という体のゲームです!

[エントリーNo.11]  Whiteness of surprise(驚きの白さ)

Y.Taira  さま

▼応募者コメント▼

真っ白な世界に放り出されたプレイヤー。
唯一持っているのは無限にわいてくる世界を黒に染める玉。
その球を駆使し、元の世界へ戻るための”すべての干渉を受けないプレート”を見つけ出せ!
操作:
クリック:玉を放り投げる。
マウス移動:カメラ操作
WASD:移動
スペース:ジャンプ(使わない)

[エントリーNo.12]  さぷらいずわーず

城黒白 さま

▼応募者コメント▼

言の葉を集めて言葉を作り、サプライズな出来事を起こして神林ゆうこちゃんをゴールに導くゲームです。

[エントリーNo.13]  ネコ歩き

はのば さま

▼応募者コメント▼

サプライズ=プレゼントと解釈しました。
そっけないメスネコにプレゼントをあげて仲良くなりましょう。
メスネコと仲良くなれたら、後はぶらぶらお散歩するなり自由に過ごしてください。

[エントリーNo.14]  仮想アニメ『Grayちゃんの日常』

com04 さま

▼応募者コメント▼

映像作品です。UE4非公式キャラクター「Grayちゃん」の日常系ゆるふわアニメ(仮想)のOPを目指して作りました。

シェーディング改造の勉強も兼ねていましたので、後半にシェーディング変えてみたのも入っています。
UE4でも色んなシェーディングが出来る!

後工程無しでリアルタイムレンダリングです。
UE4バージョン:4.15.0カスタム

[エントリーNo.15]  Alice in wanar land. (アリス イン ワナー ランド) 罠の国のアリス

strato さま

▼応募者コメント▼

箱庭型理不尽脱出アクションゲーム、不思議の国から脱出せよ!操作は至って簡単。 ゴール目指して、マップの中を駆け抜けるだけ!
ただし、マップ上には罠のオンパレード! しかも驚きのノーヒント!
いきなり落ちる、飛ばされる、潰される!と驚きの罠の数々。
理不尽なゲームオーバーの驚きにめげず、罠を回避して、ゴールを目指すゲームです。

[エントリーNo.16]  「グレイちゃんきをつけて!」

Zmix さま

▼応募者コメント▼

「サプライズ」を辞書でひくと、「不意打ち」という意味もあるので、不意打ちしてくる敵の攻撃をガードし、反撃して倒すというゲームにしました。
ゲームはほぼ全自動で進みます。
プレイヤーは、攻撃を予測、または目視してガードボタン(Xキーまたは、ゲームパッドのどれかのボタン)を押すだけです。反撃は自動で行います。敵の攻撃を受けてもゲームオーバーにはなりません。一定距離進めばクリアです。

[エントリーNo.17]  Jack in the Box

墨崎達哉 さま

▼応募者コメント▼

倉庫の中に溢れかえった箱型の魔物をばんばん切って片付けます。

[エントリーNo.18]  絶対に驚いてはいけない脱出ゲーム

平井 佑樹 さま

▼応募者コメント▼

鍵を入手してドアを開けたらクリアです。

[エントリーNo.19]  WHITE BOX

carbo さま

▼応募者コメント▼

ラーニングアセットを使用した作品です。
テーマが「サプライズ」ということで驚けるようなことを入れていこうと思いましたが、
途中からよくわからない方向へ…
見て楽しんでいただけたらとおもいます。

[エントリーNo.20]  Symmetry Quest

ジョナサン・ウィストン さま

▼応募者コメント▼

僕は12歳頃から強迫性障害にかかっている。強迫行為という儀式的な行動を行わなければ、心配していることが実現すると感じる。Marioなどをプレーしている時にも、強迫行為を行っていた。特にシンメトリーについて心配していた。操作しているMarioの体の右側が壁などに触れていたら、体の左側が同じように触れるように操作しなければならないように感じた。そうしないと大変不安が生じた。作ったゲームでは、プレーヤーもその強迫行為を行わなければならない。そのように、このゲームは強迫性障害のシムレイションである。(片言の日本語をすみません。イギリスからの留学生です)

・第7回UE4ぷちコン応募作品一挙公開!その2はこちら

・第7回UE4ぷちコン応募作品一挙公開!その3はこちら

[UE4]第7回UE4ぷちコン応募作品公開!その2

$
0
0

第7回UE4ぷちコンのエントリー作品一覧ページです。

応募いただいた皆様、ありがとうございます!!

第7回UE4ぷちコン応募作品一挙公開!

 

※コンテストの告知ページはこちらです。

第7回UE4ぷちコン応募作品一挙公開!その1はこちら

第7回UE4ぷちコン応募作品一挙公開!その3はこちら

[エントリーNo.21] 21

イセミト さま

▼応募者コメント▼

妻の誕生日の日、部屋で目覚めた主人公は、最近元気のない妻へのサプライズを計画するが…
アクションや謎解き要素はなく、ノベル寄りなゲームです。
5分前後でクリア可能

[エントリーNo.22] Killer

Clock さま

▼応募者コメント▼

殺人者の魔の手から 逃れるFPSゲームです簡単なホラー? 恐怖を煽る感じになってます

サプライズ要素は 推理が間違っていた時のお前なんかい!! 的な驚き、
背後から殺され いきなり ゲームが終わる驚きです。

[エントリーNo.23] さプライズ

かえる さま

▼応募者コメント▼

プライズ品である「さ」を獲得するダジャレシミュレーションクレーンゲームです。アームが弱くてずらしたりして落とす昨今のゲームセンターの雰囲気が楽しめます。

ゲーム性としては筐体によってアームの強さが変わることと、ゲームセンター内の客がアームの強さをつぶやくので
試遊や推理をしてアームの強い筐体を探し、どれだけお金を使わずにプライズ品を獲得できるかというスコア的な面があります。

プライズ(景品)から思いついたダジャレ的なゲームですが、もしかしたら「さ」を集める意味はクリアした際のエンディングで明かされるかもしれません。

[エントリーNo.24] Forgotten Candle

U-MA さま

▼応募者コメント▼

テーマが「サプライズ」ということでサプライズパーティを連想しました。
今回の設定は誕生日パーティなのですが、せっかくなので、ケーキにろうそくが刺さっててほしいなと思い、Grayちゃんにろうそくを刺しに行ってもらおうと思いました。

[エントリーNo.25] My/Your story

近藤銀河 さま

▼応募者コメント▼

初めてゲームを作りました。
「ふと視線を変えたときに、今まで目に入らなかったものが見える」そんなありふれた日常の『サプライズ』をコンセプトにしたWalking Simulatorです。
プレイヤーは、とある島を訪れた人物として、島にあるオブジェを探索していきます。
各所にあるオブジェには、それぞれ独自のテキストが設定されており、ライトを消すと現れるテキストを、自分で編集し、一回きりの対話を織りなすゲームです。
島は、地形や視線誘導を生かし、立ち位置が変わるごと、新しいものが見えるよう、設計されています。この島にはきっとちょっとした驚きが詰まっているはずです。

[エントリーNo.26] Surprise Dungeon

フォーマルハウト さま

▼応募者コメント▼

ハウトちゃんがスマホゲーを楽しんでいると突然ダンジョンに送り込まれます。
ローグライクですが、攻撃・防御は乱数によって可否が決まるため、攻防は毎ターンドキドキです。しかもレベルアップもランダムです。
サプライズ要素はオープニング、乱数の出目による喜び、恐怖、怒り、あとはエンディングが少しびっくりです。

[エントリーNo.27] Surprise Present

FNBS さま

▼応募者コメント▼

画面狭しと溢れかえるプレゼントを集め競うゲームです。
もっとアイテムを増やしてどったんばったんさせるつもりでしたが時間の都合上あまり種類を増やすことは叶いませんでした。

[エントリーNo.28] スパローズ パンドラボックス

K_Z さま

▼応募者コメント▼

 サプライズプレゼントといえば、舌切り雀。ということで、舌切り雀をモチーフにしたシューティングゲームにしました。
自機のモデリングからやりました。
お婆ちゃんが、戦闘機を駆使して、大きなつづらを自宅に持ち帰ります。
魑魅魍魎をハサミ弾で撃破して、小判を集めながらゴールを目指して下さい。
糊攻撃で、敵弾をスローにできます。

[エントリーNo.29] UnityChan LIVE -UE4 ver-

てんちょー さま

▼応募者コメント▼

ユニティちゃんをUE4で使う人はいても、ライブごと持ってくるケースはなかったので作ってみました。

[エントリーNo.30] さわってさわってなんでしょう

かたつむりの中の人 さま

▼応募者コメント▼

サプライズ、驚き。

箱の中に何が入っているのか分からず、
手の感覚だけで想像し、
中身を見て驚く!
そんなバラエティ番組にありがちな場面。

その驚きを再現・・・したかった

[エントリーNo.31] ShrinkingHead

山崎 健廣 さま

▼応募者コメント▼

TPSゲーム
プレイヤーは攻撃すると弱点が小さくなる敵を銃や剣で倒す。
敵は固く、弾数などは限られているので効率よく敵を倒すには弱点への攻撃が必須。
小さくなる弱点を如何に上手に狙うのかがカギ!!

[エントリーNo.32] Exorcism

mao さま

▼応募者コメント▼

 壁と天井に棘が張り巡らされた部屋の中で呪われた人形をお祓いするサバイバルゲームです。
人形に退魔の剣を刺すことでお祓いすることが出来ますが、1発で祓いきれない場合には呪いの力で何かしらの反撃(サプライズ)を受けます。
無事にお祓いして生き延びることが出来たらクリアです。
※初見殺しゲーです

[エントリーNo.33] SSKさんにいつでもサプライズ!? ハッピーバースデーメッセージを贈ろう!!

荻野雄季 さま

▼応募者コメント▼

H社のSSKさんにいつでも365日、Twitterでサプライズハッピーバースデーメッセージを送ることが出来ます。
あなたがSSKさんの誕生日と思った日が誕生日です。素敵なバースデーメッセージを贈りましょう。

[エントリーNo.34]  Shutter Travel

シント さま

▼応募者コメント▼

本作は、カメラを片手にUE4の美しい世界を歩き回ってみたい、そして写真を撮る楽しさを人に伝えたいという自身の気持ちから生まれた、「ステージを自由に歩き回り好きに写真を撮る」ゲームです。

タイトル画面から進むと、「訪れたいステージ」の選択制になります。
一見ステージ設定は固定のようですが、実は同じステージでも訪れるたびに空や葉の色等、自然の様相が都度変化します。とても小さな【サプライズ】ですが、それがまさに写真の楽しさだと思っています。

基本はグレーマンでワールドを歩き回りますが、Fキーを押すとファインダー画面に切り替わります。写真を撮ったり、後から見返す機能もつけています。

[エントリーNo.35]

つける さま

▼応募者コメント▼

CannonManを射出して通行人を問答無用でぶっ飛ばし、奥で一人でたたずんでいる人々へ仲間を作ってあげてください。同じ色なら高得点です。

[エントリーNo.36] VRPG Battle!

白鳥隆士 さま

▼応募者コメント▼

周囲に3つのコマンドが浮かんでいるので、駆使して戦う・・・のではなく、こっちのキャラクターが死ぬ前に相手にコマンドを投げつけまくって倒すゲーム

[エントリーNo.37] わんす ゆー すけあー

HirakenCom さま

▼応募者コメント▼

びっくり箱となってターゲットを探しだし驚かせるゲームです。ターゲットにぶつかると失敗です。

[エントリーNo.38] サプライズバスター

びっと さま

▼応募者コメント▼

 毎週行われるサプライズバトル大会への紹介状を受け取り、会場へやってきた所
からのストーリーです。
ホラーな世界観で行われるコントなバトルでサプライズし合いましょう!

[エントリーNo.39] IDE∀L DEAD

鈴岑 葉月 さま

▼応募者コメント▼

幼馴染の二人がちょっとした洋館に足を踏み入れ、出られなくなってしまう意味怖ホラー脱出ゲームです。
驚きとしては、主人公「凪」がj時間と空間の狂った洋館の中にて友人に殺される意外性だと思います。

[エントリーNo.40] ワンマンお化け屋敷

うら干物 さま

▼応募者コメント▼

 一人でお化け屋敷を切り盛りします。
アルバイトを早急に雇ってください。

第7回UE4ぷちコン応募作品一挙公開!その1はこちら

第7回UE4ぷちコン応募作品一挙公開!その3はこちら

[UE4] 第7回UE4ぷちコン応募作品公開!その3

$
0
0

第7回UE4ぷちコンのエントリー作品一覧ページです。

応募いただいた皆様、ありがとうございます!!

第7回UE4ぷちコン応募作品一挙公開!

※コンテストの告知ページはこちらです。

第7回UE4ぷちコン応募作品一挙公開!その1はこちら

第7回UE4ぷちコン応募作品一挙公開!その2はこちら

[エントリーNo.41] みんなのリバーシ

ガルル研 とみの さま

▼応募者コメント▼

僕のクライアントはいつも本当に難しい。今日の依頼は「対戦できるオセロをつくってくれ」というやつで動物とかもでてくるような非現実的なやつがいいらしい。非現実といえばアンリアル、ここまでは理解できた、動物とか対戦とかどうすればいいのか。わからないなりに一生懸命つくりました、納品しましたのでご確認のほどよろしくお願いいたします。

[エントリーNo.42] Floor Maze

石川 紘一 さま

▼応募者コメント▼

ランダムに生成される迷路でひたすら上の階を目指していくゲームです。一つだけ見た目の違う床があり、その上に乗ることで上の階へ行けます。
床が赤く点滅すると、その床の前後左右いずれかに落下する床の罠(サプライズ要素)があります。また、上の階へ行けば行くほど、迷路は広くなり、罠の数も増えていきます。
プレイヤーは罠の位置を予想し、回避しつつ、より上の階を目指す事が目標のゲームです。

[エントリーNo.43] SupiderSurprise

甘酢 さま

▼応募者コメント▼

 部屋に蔓延る蜘蛛の群れを、光と音で驚かせて撃退せよ!
60秒でどれだけスコアを稼げるか!?Let’s Try!!

[エントリーNo.44] 欲しいものから

睦実 さま

▼応募者コメント▼

サプライズといえばサプライズプレゼント。現代のサプライズプレゼントこと”欲しいものリスト”からの贈り物ダンボールが届くので、クリックして箱を片付けましょう。いっぱいあると部屋が散らかります……危ないです。三角コーンも届くことがありますよ。え?私にほしいものリストで届いたことなんてないです

[エントリーNo.45] Dahlia

ぎんりゅー さま

▼応募者コメント▼

Dahliaというのは花言葉で裏切りという意味です。
主人公の女の子が仲の良い男友達に誘われて精神世界へと入ります。
精神世界へと入った二人は、現れた敵を倒していきます。
倒した先に、書いてあった言葉を読んだとき主人公達にサプライズが待っています。

[エントリーNo.46] Happy Surprise from Gray-Chan.

sandinist さま

▼応募者コメント▼

「幸せな驚き」がテーマの作品です。
ある卒業式っぽい日、グレイちゃんから伝説の樹の下に呼び出しが…?
嬉し恥ずかしな「幸せな驚き」をVRでぜひ!

[エントリーNo.47] 崩壊セシ リニアアーカイヴ

Sig さま

▼応募者コメント▼

早いテンポでサクッと遊べるFPSです。制限時間内にできるだけ奥の部屋まで進むことを目的とし、ランダムでドロップする武器を使い戦います。

ゲームにおける「サプライズ」とはなんだろうかと考え、思いもよらない性能のランダムアイテムを突然手に入れた瞬間こそサプライズかなと思い、トレハン要素を重視しています。
トレジャーハンティングとそれに伴う喜びを、なんとか短いスパンのゲームで味わえないかと思いFPSに挑戦してみました。
武器の性能もランダムですが、厨二っぽい名前の自動生成機能がお気に入りです。

参加を決めたときには締め切り3,4日前だったので苦戦しましたが、「アラームと共に戦闘BGMが鳴り響く!」という演出がなんとしてもやってみたかったので、なんとか入れられて満足です。

[エントリーNo.48] 危険スマホ

パマギー さま

▼応募者コメント▼

 歩きスマホを題材にし、それに伴う危険をサプライズとしました。スマホゲームをしつつ、電車に間に合うように町を歩くゲームです。

町には人や車といった危険が存在します。
死なないようにしつつ、電車に間に合いつつ、スマホゲームの高得点を目指します。

[エントリーNo.49] Save Your Heart

Daisuke Ohnuma さま

▼応募者コメント▼

サプライズ→驚き→ドキドキ→心臓、ということで、心臓に負担をかけないようにゴールまでたどり着くゲームです。地面の端っこに移動するたびに心拍数が上がっていくので、心臓のスタミナがなくならないように気をつけながらゴールへ向かってください。

[エントリーNo.50] 村人とゆかいな魔物たち

けしし さま

▼応募者コメント▼

ゆかいな魔物たちから、村人(グレイマン)を守り、村を大きく
していくゲームです。
ゲームが進むにつれて、モンスターの数が多くなり、気づかない
うちに村人がやられ、その悲鳴にびっくりします。

[エントリーNo.51] 暗闇の館

malony さま

▼応募者コメント▼

VR探索脱出ゲーム
目を覚ましたプレイヤーは、どこにあるかも分からない館で目が覚める。
館の謎を解き、無事脱出出来るのか・・・

[エントリーNo.52] ゴキちゃんサプライズ

ゲームサークルFRISK さま

▼応募者コメント▼

ゴキブリのおぞましさとサプライズを結びつけました。
ゴキブリなんて出てこないと思われるところで優越感に浸る人間に鉄槌を下すゲームです。
普段ビクビクさせられているゴキブリの側に立って人間にサプライズしましょう!

[エントリーNo.53] Knock&Trick

まゆまゆ さま

▼応募者コメント▼

おっさんたちが住んでいるモンスターに理不尽なイタズラをしてビックリさせようとしています。
ドアを開けたら爆弾をぶつけられます。
ビックリする側ではなくビックリさせる側の視点でお楽しみください。

[エントリーNo.54] CrowFlock

ntaro/freeworks さま

▼応募者コメント▼

今回は、9軸センサーを利用した姿勢制御での操作
及び、boidsの群衆シミュをゲームに反映した実験的作品です

[エントリーNo.55] VR Planner(仮)

altalt さま

▼応募者コメント▼

たまにはテーマパークの経営を楽しんでみませんか。
このゲームは、最先端の技術でお客さんに驚きを与えては楽しむ新感覚なシミュレーションゲームです。
仮想空間を演出する疑似体験をするというなんとも不思議な感覚ですが、オーナーの手腕が試される時です。
産声を上げて間もないこの小さな施設を立派に育て、テーマパーク全国人気No.1の座を狙いましょう。
施設を訪れたお客さんの満足度に応じて人気や所持金がレベルアップ。
噂を聞きつけ時にファニーなゲストがやってくるかもしれませんが、おもてなしの心で出迎えて。
どんどん施設を拡張し、豪華なギアやレアなアイテムを手に入れましょう!

[エントリーNo.56] クリビッツ‼

行本 和弘 さま

▼応募者コメント▼

サプライズ→驚き→びっくり→くりびつー→栗 ということで栗収穫ゲームを作りました。このゲームは、フィールド各所に点在する栗の木にアタック(幹ドン)して栗を落とし、それを収穫して制限時間内にゴールに到着することを目指すゲームです。落ちてくる栗はよけるしかありません。また、稀に虫も落ちてきます。Aボタンでダッシュが出来ますが、ダッシュすると拾った栗が落ちてしまいます。フィールドにいるクマとイノシシは主人公を見つけると追いかけてきて襲ってきます。栗は焚火に投げ入れると回復アイテムになります。このゲームでは栗は武器であり、回復アイテムであり、クリア条件です。効率よく集めてゴールへたどり着きましょう!

[エントリーNo.57] 撃ち込み系ブロック崩し

NoSNoO さま

▼応募者コメント▼

ブロック崩しの手持無沙汰な時間を驚きの方法で解決!
というコンセプトで作ってみました。
極本を25日に終えて、そこから突貫で作って、ぶっちゃけ間に合いませんでした。無念。

[エントリーNo.58] エキセントリック肝試し

AKILUX さま

▼応募者コメント▼

 今回はマウス操作で手軽に遊べるゲームを制作しました。
いわゆる「キャラクターを誘導する」タイプのゲームですが、ただ単純に導くのではなく、驚かせて走らせながら誘導します。
キャラクターがオバケの前を通過するのに合わせてオバケをクリックすれば、オバケが騒ぎ出し、キャラクターは驚きのあまり我を忘れて走り出します。
パニックに陥ったキャラクター達をオバケリレーで上手く誘導しながら目的地へ向かわせる、これこそが、まさにエキセントリックな
肝試しと言えるのではないでしょうか?行方不明者を出さないのが優秀なオバケとなる条件です。神隠しをしてしまうオバケは半人前です。

[エントリーNo.59] ぷちコンの神ゲー

るめらやき さま

▼応募者コメント▼

 ゲームとは、サプライズとは何かを問うゲーム

第7回UE4ぷちコン応募作品一挙公開!その1はこちら

第7回UE4ぷちコン応募作品一挙公開!その2はこちら

【UE4】Mayaからボーン以外のアニメーションを渡す

$
0
0

UE4にアニメーションをインポートする際、DCCツール側でボーン以外の要素(マテリアルなど)につけたキーフレームも同時に持っていきたい場合があります。
 
そうした場合には、DCCツール側であらかじめダミーのボーンを仕込んでおき、そのTransform情報にマテリアルなどの別パラメーターを接続しFBXをエクスポート。UE4にインポート後、偽ボーンを介し任意のパラメーターに値に渡す処理を組む、という方法でも実装可能です。パラメーター用に簡易的なリグを使用するようなイメージですね。
ただ、やはり無駄なボーンはインポートしたくないものです。
 
実はUE4ではFBXをスケルタルメッシュで読み込むときに、モーフのようにアニメーションアセットに紐付く形で、MayaのAttributeをカーブとして読み込むことができます。
さらに、そのカーブはマテリアルカーブとして設定することができ、BPなど処理を組まなくとも、カーブと同名のマテリアルパラメーターに値が渡るようになっています。そのため、実行時でなくともプレビューでき便利です。
 


以下、Maya LTを使用し簡単なデータを作ってみます。
 
スキニングしたメッシュを用意して、そのJointにAttributeを追加します。

 
KeyableのAttribute(Float)を命名し追加します。ここではEmissiveとしました。
そのAttributeにキーフレームを設定するか、任意のノード(Maya上でのマテリアルのパラメーターなど)を接続して下さい。


 
FBXに書き出します。出力の際に、Bake Animationを有効にして下さい。


 


UE4FBXを読み込みます。

Import Custom Attributeのオプションを有効にして下さい。


 
読み込んだアニメーションアセットを開いて確認するとカーブが読み込まれています。


 

メニューバーのWindowよりAnim Curveを開いてみると登録されているパラメーターを一覧できます。

 
ここでマテリアルとして使用したいパラメーターは、Type列のMaterialを選択してマークが付くようにしておきます。

すると、Curve Nameがマテリアルのパラメーターに渡ります。


 
Curve Nameと同一のパラメーター名を含むマテリアルを作成します。

ここではEmissiveとして設定しました。


 
それではアニメーションをプレビューしてみましょう。


これでマテリアルのアニメーションも簡単にインポートできますね!
 

[UE4] 関数ライブラリとマクロライブラリの上手な活用

$
0
0

みなさんはブループリントのマクロライブラリや関数ライブラリは活用していますか?

今回は、違いがよく分からないやという人や、一応使ってはいるものの特に意識せずに運用している人に向けて一歩踏み込んだ内容でお届けしたいと思います。

まずは早速それぞれのライブラリに関して簡単にご紹介します。

※ちなみに関数とマクロの違いについては、こちらのスライドの42ページ以降に軽く解説しています

 

関数ライブラリとは

どこからでもアクセスできる色んな関数を一か所にまとめて持つことができるブループリントです。

【詳細】

  • 通常のブループリントと違い、変数を保持することができず、イベントグラフも存在しません。マクロも作れず、関数のみ作成可能です。
  • この中に書いた関数は、どのブループリント、それこそアクターやレベル問わず使えるようになります
  • 親クラスはBlueprintFnctionLibraryで、さらにその親はObject型、つまりアクターではないためにレベルに直接配置したりはできません。
    むしろこの場合は、わざわざレベルに配置する必要がない、といった方がよいでしょう。
  • 中身に書く関数は、通常のブループリントに書く関数と全く同じなので、出来る事、できない事は同じです。
    ローカル変数が使えるのも同じ、内部で使えるノードの性質も同じです。つまりLatentノードが使えないのも同じです。

 

マクロライブラリとは

どこからでもアクセスできる色んなマクロを一か所にまとめて持つことができるブループリントです。関数ライブラリと同じですね。関数ライブラリのマクロ版だと思ってください。

【詳細】

  • こちらも変数の保持ができず、イベントグラフも存在しません。関数が作れず、マクロのみ作成可能です。
  • この中に書いたマクロは、関数ライブラリ同様どのブループリントからでも使えるようになります。
  • 関数ライブラリと違い、親クラスを自由に選択する事ができます。
    親クラスの内容次第で使えるノードの内容が違ってくるので注意が必要です。この辺りは後で詳しく説明します。
  • 中身に書くマクロは、通常のブループリントで書くマクロと全く同じなので、出来る事、できない事は同じです。

 

さて、ここからが本題です。では実際にこれらを活用しようとした場合に、どんなことに気を付けるべきでしょうか。

 

注意すべき点

ブループリントはアセット参照などを含めると依存関係が発生します。これは関数ライブラリ、マクロライブラリも例外ではありません。そしてライブラリは色んなアクターが使う事が想定されるので、そのライブラリに不必要なアセットが依存して含まれてしまうと、ゲーム中にアクターを生成する際、芋ずる式にアセットがロードされてしまい、実際には読み込む必要がないアセットまでもが読み込まれて無駄にメモリを圧迫したり、ロードに無駄な時間がかかってしまいます。なので、極力依存関係が発生しないように作るか、もし依存関係が発生してしまう場合には、ライブラリを分けた方がよいです。

これを踏まえて考えると、ライブラリは1つだけではなく、用途によって複数用意しておくとよいでしょう。

例えばイベント発生時に使うライブラリであったり、キャラクターのアクション時に使うライブラリ、レベル操作を行う時に使うライブラリなど、様々なものが考えられます。

ただ、小規模のプロジェクトであればそこまで分ける必要はないかもしれません。分けたことにより関数やマクロを一つの場所にまとめるという管理、利便性のメリットが薄まるため、メリットデメリットをよく考えて運用方針を決めることをお勧めします。

ちなみにアセットの依存関係はライブラリも他のブループリント同様にサイズマップやリファレンスビューアーを使う事で簡単に確認する事ができます

 

関数ライブラリ内でマクロライブラリを使用する

マクロライブラリ内で関数ライブラリの関数を使用する事は可能です。では逆に関数ライブラリ内でマクロライブラリ内のマクロを使用する事は可能でしょうか?

答えは親クラスにあります。関数ライブラリの親クラスはBlueprintFnctionLibraryで、その親はObject型になります。という事はつまり、Object型が親クラスのマクロライブラリは使用できますが、それ以外が親になっているマクロライブラリは使えないという事になります。

ではマクロライブラリはObject型を親クラスにして作成した方がいいのかというと、そういうわけにもいきません。Object型を親にするという事は、DelayなどのActorで定義されているノードがそのマクロライブラリ内で使えないという事になります。

マクロライブラリを作成するときはこういった点も考慮して親クラスを決めていきましょう

 

マクロの多用は危険?

マクロは複雑になりがちなノードを綺麗にまとめるのに大変便利です。視認性を良くするためにも積極的にガンガン使っていきましょう!…そう思っていた時期が私にもありました。

過ぎたるは猶及ばざるが如しといいますが、大抵の事は良かれと思ってやり過ぎるとよくない事になります。ではマクロに関しては多用し過ぎるとどうなるか。それはやはりパフォーマンスまわりに影響するでしょう。

マクロによってイベントグラフがすっきりして、一見簡単な処理を行っているように見えます。ですが実際にはブループリントコンパイルが走ると、内部的にはマクロの中身が展開されてそのブループリントの中身は実は膨大なノードの量になってしまっていた、なんて事が起きかねません。マクロの中で別のマクロを使っていて、さらにその中でも別のマクロを…となるともはや実際のノード数は誰も把握していないなんて状況になるかもしれません。そんなブループリントが書かれているアクターをレベルに大量に配置してしまったら、やはりパフォーマンスは落ちてしまいます。

ではそうならないようにどうすればいいのでしょうか。それはコンパイル時に展開されるマクロを使うのではく、可能であれば関数にしてしまう事です。分岐などイベントの流れを制御するのはやはりマクロにしてしまうのが見やすいですが、それ以外の、例えば一連の処理をただまとめるだけであれば、それはマクロではなく関数によってまとめた方がよいでしょう。

 

これらの事を頭の隅に置いて、あらかじめマクロライブラリや関数ライブラリを作成、運用していくと、開発後期になってメモリを不要に使っている、ロード時間が長い、パフォーマンスが遅い、などの現象に頭を抱えながら涙目になってブループリントのリファクタリングをする必要が少しは減るかもしれません。

[UE4] 第7回UE4ぷちコン 受賞作品発表!

$
0
0

第7回UE4ぷちコンの結果発表です。

応募総数60作品!今回もたくさんのご応募ありがとうございました!

テーマの解釈が多岐に渡り、様々な”サプライズ”が集まりました!!

びっくり系のみならず、感動、謎解き、お笑い、ダジャレ要素アリなど想像を超えるサプライズが盛りだくさんでした。

その中から最優秀賞を含む8作品を選出いたしました!

最優秀賞作品は4月15日(土)開催の【Unreal Fest West ’17 】会場にて展示いたします。

それでは、受賞作品をご覧ください!

審査員: Epic Games Japan 今井様、金澤様、岡田様

株式会社ヒストリア 佐々木


【最優秀賞】危険スマホ

パマギー さま

 

審査員コメント

  • 一発ネタのように見えて全体のクオリティが高く、一目見たときにこれだ!と感じました!スマホアプリに移植してほしい!(岡田)
  • 審査員全員が見た瞬間に「おっ」となり、ゲームデザインとしての面白さだけでなく発展性や拡張性に優れた作品だと思いました。普通に面白そうです!(今井)
  • VRと3drudderでぜひ体験してみたいです!(金澤)
  • スマホを見ていると危険を察知できないというリスクリターンのバランスが素晴らしいです!(佐々木)

【ユニーク賞】VR Planner(仮)

altalt さま

審査員コメント

  • 高クオリティの自作アセットだけでなく、難解なゲームを支えている技術力の高さが素晴らしかったです!ぜひプレイしてみたい!(岡田)

【引き込まれたで賞】21

イセミト さま

審査員コメント

  • アセットを使用して”ぷち”でありながら、見事コンパクトにまとまっていました。「どういうこと?」と何度も動画を見返してしまいました! まだ謎が解けてません(笑)(佐々木)

【グッドルッキング賞】ネコ歩き

はのば さま

審査員コメント

  • ネコちゃんが動くことで素晴らしい背景を色々な角度から見ることができました。お花をプレゼントし2匹の距離がグッと縮まるシーンに心打たれました。(金澤)

【テーマに沿ってるで賞】Alice in wanar land. (アリス イン ワナー ランド) 罠の国のアリス

strato さま

審査員コメント

  • 他の作品に比べてテーマに沿ったゲームデザインがしっかりされており、ビジュアル的にもとても凝っているいい作品だと思いました。キャラもかわいいです!(今井)

【岡田賞】こんにゃく屋敷

Takao さま

審査員コメント

  • 見た瞬間爆笑しました!これはずるいwww(岡田)

【金澤賞】「グレイちゃんきをつけて!」

Zmix さま

 

審査員コメント

  • 可愛らしいグレイちゃんとキレのあるアクションのギャプに萌えました。たまらんです!(金澤)

【今井賞】SPY vs FIXER Betrayal Chess

unwitherer さま

 

審査員コメント

  • 既存のチェスにスリルのある戦略性が加わっており、全作品中一番やりこみたいと思させる素晴らしい作品だと思いました。全体のルックのコントロールもバランスが絶妙でかっこいいです!(今井)

 

 

受賞、おめでとうございます!

また次回、第8回もよろしくお願いします!!

※コンテストの告知ページはこちらです。

・第7回UE4ぷちコン応募作品一挙公開!その1はこちら

・第7回UE4ぷちコン応募作品一挙公開!その2はこちら

・第7回UE4ぷちコン応募作品一挙公開!その3はこちら


[UE4] UMGで使える新Widget「Background Blur」

$
0
0

UE4には作り方次第で様々なブラー表現があります。

Content Examplesにもブラー表現のサンプルがあります。

Motion Blur

Depth of Field

 


今までUIにブラーをかけるのに手間が掛かりましたが、UE4.15からUMGで使えるBackground BlurというWidgetが新しく追加され、簡単にブラーをかけられるようになりました。

このWidgetはUMG上で短形のブラーをかけることができます。メニュー画面などでUIを強調したい時などに使えそうです。

UMGのPalette内のSpecial Effectsというタブの中にあります。

4.15の時点ではBackground Blurしかないので今後他にも増えるか期待です。

他のPalette同様、Designer上に配置して使います。

DetailsのBlur Strength0~100の値でブラーの強弱を設定できます。

Blur Radiusはブラーを計算する時にどのくらいの半径内のピクセルを計算するかという値です。値が大きいほど処理が重くなり、ブラーが強くなります。デフォルトではチェックがついてなく最大値の255が入っています。

 

UE4.15の時点では、Render TransformのAngleの値を変えすぎるとエディタが落ちてしまいます。

また、AngleやShearの値を変えても、短形からは変えられないようです。

 

様々なところで活用できそうですね。

[UE4] UNREAL FEST WEST ’17 お疲れ様でした

$
0
0

原です。アンリアルフェスに参加された皆様、お疲れ様でした。
聴き応えのある講演ばかりで、とても有意義な一日となりました。

 

当日の様子は Epic Games 様の公式ブログに掲載されているので、そちらをご覧下さい。
https://www.unrealengine.com/ja/blog/unreal-fest-17

 

さて、今回も昨年に引き続き、講演の機会を頂けました。
今回は弊社で開発中の Airtone を実例として、UE4 & 少人数開発におけるノウハウについてお話させて頂いています。

 


※ 当日の内容から撮影禁止スライドを削除し、埋め込み動画をYoutubeリンクに変更しています。

 

お疲れ様でした!

 

[UE4]俯瞰ビューで室内に影を落とす方法

$
0
0

みなさん、こんにちは!

本日は、建築コンテンツ等でUE4を用いた時に、

俯瞰ビュー時で室内に影を落とす方法のお話です。

 

□影の落ち方あれこれ

例えば、こんなお部屋があるとします。

こちらを、設定を変えながら、俯瞰ビューで見てみましょう。

 

①屋根を消した場合

屋根を消してしまうと、当然ながら室内に上部から光が入ってしまいます。

これでは、屋根なし建築の状態になってしまうので、困りますね。

 

②屋根を非表示にした場合

次に、屋根アクターのRendering設定から、「Actor Hidden In Game」にチェックを入れて、

ビルドをしてみます。

すると、無事に屋根の影がしっかりと落ちました!

これでほとんどの場合は、無事に俯瞰ビューに切り替え可能で、

問題解決となります。

 

③ムーバブルなアクターが含まれる場合

ですが、もしコンテンツの機能として、家具の移動などのような機能がある場合、

家具はムーバブルなアクターとなります。

そのような時、②と同じ方法でビルドをしてみます。

するとこのようにムーバブルな家具だけ、影が落ちてくれません。

このような時は、屋根アクターのLighting設定から、「Hidden Shadow」へチェックを入れて

ビルドをしてみます。

 

「Hidden Shadow」にチェックをいれることで、

無事にムーバブルな家具にも、影が落ちてくれました!

 

□Hidden Shadowをまとめて設定する方法

ご紹介した「Hidden Shadow」の設定ですが、対象アクターの数が多い時に、

ブループリントでまとめて管理ができると便利だと思ったのですが、

ノードを見つけることができませんでした。

ですがC++の方で、「bCastHiddenShadow」という変数がありましたので、

CeilingcimponentというActorComponentクラスを作って、

bCastHiddenShadowを切り替える関数作ってみました。

UFUNCTION(BlueprintCallable, Category = "CeilingComponent")
static void ChangeHiddenShadow(UStaticMeshComponent* TargetMesh, bool HiddenshadowState);

void UCeilingComponent::ChangeHiddenShadow(UStaticMeshComponent* TargetMesh, bool HiddenshadowState)
{
	if (HiddenshadowState)
	{
		TargetMesh->bCastHiddenShadow = 1;
	}
	else
	{
		TargetMesh->bCastHiddenShadow = 0;
	}
}

さらに、Ceilingcomponentクラスが操作対象とするメッシュのリストを

獲得するための関数を用意します。

UFUNCTION(BlueprintPure, Category = "CeilingComponent")
TArray<UStaticMeshComponent*> GetTargetMeshes();

TArray<UStaticMeshComponent*> UCeilingComponent::GetTargetMeshes()
{
	TArray<UStaticMeshComponent*> Result;

	TArray<AActor*> OwnerActors;

	OwnerActors.Add(GetOwner());
	OwnerActors.Append(GroupActors);

	for (auto ItActor = OwnerActors.CreateConstIterator(); ItActor; ++ItActor)
	{
		if ((*ItActor) == nullptr)
		{
			continue;
		}
		TArray<UActorComponent*> Meshes = (*ItActor)->GetComponentsByClass(UStaticMeshComponent::StaticClass());
		if (Meshes.Num() > 0)
		{
			Result.Add(Cast<UStaticMeshComponent>(Meshes[0]));
		}
	}
	return Result;
}

用意した関数を、エディタ上で設定できるように、Ceilingcomponentクラスへ

PostEditChangeProperty関数と、変数を追加します。

public:
//エディタ上での編集
#if WITH_EDITOR
   virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override;
#endif

public:
   // 天井グループ 
   UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = "CeilingComponent")
   TArray<AActor*> GroupActors;

#if WITH_EDITORONLY_DATA 
   //HiddenShadowオンオフ
   UPROPERTY(EditAnywhere, Transient, Category = "CeilingComponent")
   bool HiddenShadow;
#endif

#if WITH_EDITOR
// エディタ上での編集
void UCeilingComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
#if WITH_EDITORONLY_DATA
	if (PropertyChangedEvent.Property)
	{
		FString PropertyName = PropertyChangedEvent.Property->GetNameCPP();
		TArray<UStaticMeshComponent*> TargetMeshes = GetTargetMeshes();
		for (auto ItMesh = TargetMeshes.CreateIterator(); ItMesh; ++ItMesh)
		{
			if (HiddenShadow)
			{
				//HiddenShadowをオンに設定
				ChangeHiddenShadow((*ItMesh), HiddenShadow);
			}
			else
			{
				//HiddenShadowをオンに設定
				ChangeHiddenShadow((*ItMesh), HiddenShadow);
			}
		}
	}
#endif

	Super::PostEditChangeProperty(PropertyChangedEvent);
}
#endif

これで、一つの屋根アクターにCeilingcomponentを追加して、

その中でHiddenShadowを設定したいアクターを管理することができるようになりました!

数が増えていった時の、屋根の管理がしやすくなります。
また、今回のようにComponentクラスを利用すると、
建物の、特定の場所に機能を追加できるので、
建築コンテンツではとても使いやすいと思い、
紹介させていただきました。
ぜひ建築コンテンツ作成時に、利用してみてください!

 

※参照

http://www.frames-cg.com/tips/1

 

 

 

 

 

 

 

 

 

 

[UE4]plistファイルをカスタマイズする

$
0
0

以前Android開発において必要となるAndroidManifest.xmlをUE4での編集方法についてご紹介しました。

実はiOSでもAndroidManifest.xmlと似たようなファイルでplist(プロパティリスト)と呼ばれるファイルが存在します。

今日はそのplistファイルをUE4での設定方法についてご紹介いたします。

 

○~~~.plistとは

プロパティリストは MacOSXやiOSで利用することができるファイル形式の1つです。MacOSXでは主にユーザの情報を設定するのに使われる事が多くWindowsのレジストリと似たような使われ方をしています。iOSではInfo.plistという名前で定義されアプリの情報を設定するのに使われることが多くそれこそ、AndroidManifest.xmlのようにアプリ名やバージョン番号などを記載しています。

iOSもAndroid同様にこのplistは自動で生成されるので基本気にすることなく開発を進めることが可能です

 

○パッケージングしたAPKが使用してる.plistの場所

プロジェクト名/Intermediate/iOS以下

プロジェクト名_Info.plistという名前であります。

 

○UE4がInfo.plistを生成してるコード

Engine\Source\Programs\UnrealBuildTool\IOS\UEDeployIOS.cs

にあるUEDeployIOSクラス内のGenerateIOSPListで確認できます。

 

○カスタマイズする:エディタ

plistに関して編集できるものはほぼエディタ上で完結することができます

プロジェクト設定(Project Settings)/ プラットフォーム(Platform)/iOSで確認できます。

 iOS/カテゴリー名 エディタ上の名前

info.plistでの記述

 内容説明
 Orientation  SupportsPortraitOrientation

SupportsUpsideDownOrientation


UIInterfaceOrientationPortrait

UIInterfaceOrientationPortraitUpsideDown

 サポートするデバイスの向きです。

SupportsPortraitOrientationはiPhoneのホームボタンが下にきたとき
SupportsUpsideDownOrientationはホームボタンが上にきたときの
回転をサポートします。

デバイスを縦持ちのアプリを作成する場合は基本この2つにチェックを入れます。

 Orientation  SupportsLandscapeLeftOrientation

SupportsLandscapeRightOrientation


UIInterfaceOrientationLandscapeLeft

UIInterfaceOrientationLandscapeRight

 サポートするデバイスの向きです。

SupportsLandscapeLeftOrientationはiPhoneのホームボタンが左にきたとき

SupportsLandscapeRightOrientation はホームボタンが右にきたとき

の回転をサポートします

 Bundle Information BundleDisplayName

CFBundleDisplayName

 ホーム画面に表示されるタイトルを設定します
 Bundle Information  BundleIdentifier

CFBundleIdentifier

 アプリを識別するためのユニークなバンドルIDを設定します。
 Bundle Information  BundleName

CFBundleName

 アプリのバンドル名を指定します。基本BundleDisplayNameを設定します。
 Bundle Information  VersionInfo

CFBundleShortVersionString

 アプリのバージョン番号を指定します。

基本は3つの数値をピリオドで区切った値を指定します。

例、1.0.0

 Build  Support armv7 in Shipping

Support armv7s in Shipping

Support arm64 in Shipping


armv7

armv7s

arm64

シッピングビルド時に使用するアーキテクチャを指定します。

複数チェックすることは可能ですが2つ以上チェックされてた場合は内部で[armv7]

だけ使用するようになっています。なので変更したい場合はいずれか1つだけチェックを入れるようにしないといけません。

また[Support ~~~ in Development]という項目もありますがこれは開発用で使用するものです。

切り替えはProjectSettings/Packaging/Project/BuildConfigurationをShipping以外にセットすることで使用されます。

 Rendering Supports Open GLES2

opengles-2

Open GLES2 を使用するかのチェックフラグです。使用しない(false)の場合は

MinimumiOSVersionをios8にする必要があります。

 

Rendering Support Forward Rendering with Metal (A7 and up devices)

metal

 Metalを使用するかのチェックフラグです
OS Info MinimumiOSVersion

MinimumOSVersion

 アプリが対応できる一番下位のOSバージョンを指定します
Online Enable Facebook Support

FacebookAppID


fb~~~(~~~がFacebookAppID)

Facebookと連携するかのフラグです。

EnableFacebookSupportにチェックが入っている状態でAppIDをセットすることでplistに書き込まれます。

Online Enable Remote Notifications Support

UIBackgroundModes

remote-notification

 プッシュ通知を設定可能にするかのチェックフラグです。
 Extra PList Data Additional Plist Data  文字列でplistを直接、追加記述することができます。

エディタ上では改行できないので

別のテキストエディタなどで編集後改行部分に\r\nを指定してセットしてください

 

 

○カスタマイズする:プラグイン使用する

プラグイン名 Mobile Location Services – IOS Implementation

IOSで位置情報サービスを使用するためのプラグイン

使用するには以下のメッセージを記述する必要があります。

カテゴリー名 エディタ上の名前

info.plistでの記述

 内容説明
LocationServices  LocationAlwaysUsageDescription

NSLocationAlwaysUsageDescription

常に許可(バックグラウンド実行中でも位置情報を取得する状態)
LocationServices LocationWhenInUseDescription

NSLocationWhenInUseUsageDescription

このApp使用中のみ許可

○カスタマイズする:自作LaunchScreen.xibを使用する

IOS開発をしたことがある方には馴染み深いxib(※1)ですが、UE4では使用しません。

ただスプラッシュ画面(アプリ起動時の画面)用で使用するLaunchScreen.xibは以下のディレクトリに配置することで使用することができます。

 

プロジェクト名/Build/IOS/Resources/Interface/LaunchScreen.xib

 

 

※1xibとは?

【Swift】XIBの使い方。部品のファイルを作って後で再利用できるようにする。(Swift 2.1、XCode 7.2、Android:無、iOS:有、興奮度:C)

http://nobuo-create.net/manifest/

 

[UE4] UMGのRootでOpacityを調整

$
0
0

こんにちは。
今回はUMGでOpacityのアニメーションをするときに、
1つ1つのパーツを登録せずにOpacityを効かせるちょっとした方法のご紹介です!
ひとまず何も考えずに素材を配置します。

この素材の複数/全体に効くOpacityアニメーションつけようとすると
大量のPaletteを登録する必要があります。

 

そこでPaletteのCommonにある【Border】を親にすると解決です!

【Border】は子供を1つしか配置できないので、
CanvasPanelなど子供を複数配置できるPanelを【Border】の子供にしましょう。
そうすればいくつものパーツを配置することができます。

 

【Border】はカラー情報をContentとAppearance(Brush)の2つ持っています。
Appearance(Brush)の方はいらないのでBrush ColorのAを0にします。

 

これで
Animationに【Border】を登録、OpacityもColorも【Border】以下の階層に反映させることができます。
スッキリしました!

これはいくつかのWidgetを配置した親Widgetにも有効で、
UI画面全体のフェードなどに使う事もできます。

便利だニャー

ご活用ください。

[UE4]コンテンツブラウザ便利機能「ViewTypeの変更」と「Compare Tags」のご紹介!

$
0
0

こんにちは!クボッチです。

知っていると便利かもしれない

コンテンツブラウザの機能「ViewTypeの変更」とフィルター機能の「Compare Tags」についてご紹介します。

1.ViewTypeを変更する

ViewTypeは3種類存在します。

Titles

デフォルトのTypeです。アセットごとに画像で判別できる点がとても便利ですね!

List

各アセットのTypeも一覧で確認できます。

Columns

エクスプローラーのように幾つかのプロパティの値まで一覧で確認できます。

表記するプロパティは一部カスタマイズ可能です。

 

2.Filters機能の「Compare Tags」のご紹介

Filtersの「Other Filters」の中に人知れず存在する「Compare Tags」を調べてみました。

機能の詳細をみると「AssetRegistrySearchable値を目標値と比較します」と書いてあります。

 

使い方

ViewTypeをColumnsにした状態で、Compare Tagsを右クリックします。

TagNameと目標値が入力できます。

TagNameには検索したいプロパティ名を入力します。Columnsで表示されるプロパティが対象になりますが、これはColumnsで表示されるプロパティがTagに登録されているためです。

基本的にはColumnsで表示されるプロパティ名を入力するだけで問題はないですが、2つほど落とし穴がありますので注意が必要です。

 名前とタイプは検索対象外!

「Columnsで表示されているじゃん!」と思うかもしれませんが、エンジン内部的にはコンテンツ名とコンテンツの種類を表示している”だけ”であり、Tagとして登録されていない項目なので検索対象外となってしまいます。

おとなしく、既存のフィルタや名前検索を使用しましょう。

 Columnsに表示されているプロパティ名に騙されるな!

ほとんどのコンテンツには「サイズ(Size)」がプロパティとして存在していますが、TagNameにそのまま「サイズ(Size)」と入力してもコンテンツはヒットせず、”ResourceSize”と入力しないとヒットしません。

Tagは”ResourceSize”として登録されていますが、表示される名前には親切に「サイズ(Size)」として表示されるように設定されています。これは「サイズ」に限った話ではないので注意が必要です。

Tagに登録されている名前が必要な場合はソースコードの中を直接見る必要があるのでプログラマさんにお願いしましょう。

 

例えばAudioでモノラルとステレオでフィルターをかけたいという場合は…..

ここで、TagにNumChannels,Target Valueに1を入れてフィルターをONすると!!

モノラルだけが表示されました!

といったように少しだけ細かくフィルターを入れることが可能です。Collections機能と一緒に使用すると更に便利です!

 

ぜひご活用ください~

[UE4] ObjectInitializerでコンポーネント生成を制御する

$
0
0

髭キャラが定着してきました。今回はプログラマ向けの記事です。
C++で UObject 継承のクラスを作る時に、コンストラクタの引数に const FObjectInitializer& ObjectInitializer を与えたり、与えなかったりすることがあるかと思います。
今回はこの謎の ObjectInitializer について調べてみました。

 

ObjectInitializer の有無による挙動の違い

なぜコンストラクタの書き方を変えられるのか、どのような呼び出し方をされるのか、どちらを使えば良いのか、気になっている方はいると思います。
結論から先に言うと、ObjectInitializer をコンストラクタで使いたい場合は定義する。それ以外で挙動の違いはほぼ無し です。(当たり前ですが)

 

UE4はビルドシーケンスの中で XXX.generated.h というヘッダを自動生成します。
ユーザー定義されたコンストラクタの呼び出しコードはこのヘッダ内に書かれます。
例えば AInitializerTest1 という ObjectInitializer をコンストラクタの引数に与えない クラスを定義した場合、InitializerTest1.generated.h には下記コードが生成されます。

 

これに対して AInitializerTest2 という ObjectInitializer をコンストラクタの引数に与える クラスを定義した場合、InitializerTest2.generated.h には下記コードが生成されます。

 

DEFINE_DEFAULT_CONSTRUCTOR_CALL というマクロを使うか、DEFINE_DEFAULT_OBJECT_INITIALIZER_CONSTRUCTOR_CALL というマクロを使うかという部分で違いが出ていますね。
これらのマクロは ObjectMacros.h に定義されており、内容は以下の通りとなっています。

 

つまりはビルドシーケンスの中で静的に分岐するようになっており、ランタイムで分岐するようにはなっていません。
両方のコンストラクタが定義された場合は ObjectInitializer を引数に与えたコンストラクタが呼び出されるようです。
また、ObjectInitializer 自体は引数に与えられようがいまいがインスタンス自体は生成されているので、挙動の違いはほぼ無し と言えます。

 

ObjectInitializer を使う時はどんな時?

ではそもそも ObjectInitializer とは何者で、どんな時に使えるのか。
ObjectInitializer の定義は UObjectGlobals.h にあります。
提供されるAPIはいくつかありますが、その中で最も多く利用されるであろう関数は CreateDefaultSubobject です。
CreateDefaultSubobject はコンストラクタ内でコンポーネントを作成するための関数で、C++で UObject を継承したクラスを定義する時にはよく使います。

 

この関数の存在だけで、ObjectInitializer を引数として受け取ることはほぼ必須だと思われるかもしれません。
しかしエディタ上から新規にC++クラスを作成する場合は ObjectInitializer は引数として与えられていない状態で作られます。
これには理由があり、実は CreateDefaultSubobject をラップした同名の関数が UObject から提供されており、そちらを用いることでより簡潔に記述できます。

 

つまり、内部的には同じものを使っているので、あえて ObjectInitializer を利用する必要はない といったところです。(関数オーバーヘッドは無視できるものとしています)
また、CreateDefaultSubobject の派生として以下の関数がありますが、これらも UObject でラップされています。

 

CreateEditorOnlyDefaultSubobject エディタのみで有効なコンポーネントを作成する
CreateOptionalDefaultSubobject 作られなくても良い(動作には必ずしも必要無い)コンポーネントを作成する
※ これは後述する関数と組み合わせて利用します
CreateAbstractDefaultSubobject Abstract 属性のクラスは CreateDefaultSubobject を使うと作成できないようになっているので、必要な場合は明示的にこの関数を利用する

 

これらのみを利用する場合は ObjectInitializer を利用する必要性はありません。
逆に言えば、これら以外の ObjectInitializer が提供するAPIを利用したい時は引数に与える必要性がある ということです。
UObject でラップされていない、ObjectInitializer が提供する関数は以下のものがあります。

 

SetDefaultSubobjectClass 親クラスがコンポーネントを作成する時、そのコンポーネントのクラスを名前指定で上書きする
※ 親クラスが作成するコンポーネントから派生したコンポーネントのみが指定できます
DoNotCreateDefaultSubobject CreateOptionalDefaultSubobject でコンポーネントを作成する時、名前指定でコンポーネントの作成を無効化できる

 

局所的にしか使わないものばかりですが、特に SetDefaultSubobjectClass はコンポーネント指向の設計においてとても役に立ちます。
例えばエンジンが提供する ACharacter を使いたいが、移動制御には独自の処理を入れたい(素の UCharacterMovementComponent を使いたくない)といった機会は少なからずあります。
もちろんエンジンに手を加えて UCharacterMovementComponent 自体を改造するということもできますが、SetDefaultSubobjectClass を用いることで、このような時も継承先で振る舞いを変更することが可能になります。

 

SetDefaultSubobjectClass を使ってみる

先程の例に挙げた通り、ACharacter 派生クラス(AMyCharacter)から、UCharacterMovementComponent 派生クラス(UMyCharacterMovementComponent)を扱えるようにしてみます。
それぞれの派生クラスを作る部分は省略しますが、AMyCharacter クラスのコンストラクタで以下の記述をします。

 

これにより CharMoveComp という名前で追加されるコンポーネントは、UMyCharacterMovementComponent を使うように設定されます。
ちなみに SetDefaultSubobjectClass 及び DoNotCreateDefaultSubobject の戻り値は FObjectInitializer のコピーなので、メソッドチェーンで記述することが可能です。
そしてお馴染み ThirdPersonCharacter の親クラスを ACharacter ではなく、AMyCharacter に変更することで、UMyCharacterMovementComponent に置き換わることを確認できます。

 

 

ぜひ活用していきたいところです。

 


[UE4] ドラッグドロップで操作できるアイコンの作り方

$
0
0

ドラッグ&ドロップでUIを操作するのは非常にポピュラーでありながらUE4上で実装するのはなかなか面倒なイメージが有りました。
公式の4.15のドキュメントに ドラッグ&ドロップのUIを作成する

というのがありましたのでこれを元に汎用的なドラッグ&ドロップ操作に対応したアイコンを作成してみようと思います。

 

1.Drag Drop Operationの作成

まずはDragDropOperationというブリープリントを作成します。

これはドラッグが発生した時に作成し、必要な情報を渡しておき、ドロップ時に情報を取り出せるというブループリントです。

渡しておく情報のカスタマイズをすることで様々な挙動を実現することができます。

 

新規のブループリント作成し、ParentClassにはDragDropOperationを選択します。

名前は「IconDragDropOperation」としました。

作成した「IconDragDropOperation」をダブルクリックし、ブループリントグラフを開いてVariablesの右の+を押し、新規に「WidgetRef」という変数を作成します。

Variable TypeにはUser Widgetを指定し、Instance EditableとExpose on Spawnにチェックを入れておきます。

Instance EditableとExpose on Spwanにチェックを入れておくと、このブループリントをインスタンス化する時に、パラメータを設定する箇所が追加されます。

これで「IconDragDropOperation」の準備は完了です。

 

2.Icon UIとドラッグ中のゴースト作成

ドラッグ可能なアイコン用のWidget Blueprintを作成します。ここでは名前を「MovableIcon」としました。

さらに、ドラッグ中のマウスについてくるゴースト用にWidget Blueprintを作成します。ここでは名前を「DragIcon」としました。

どちらもヒエラルキーにはSize BoxにImageを入れたものにします。

「Movable Icon」のみデザインを設定していきます。

Imageにはアイコンの素材を、Size BoxにはWidth OverrideとHeight Overrideのチェックを入れアイコンの表示サイズを入力します。
  

ゴーストの方のデザインは、元となる「Movable Icon」から取ってきてα値のみ落として半透明にするため、特に触りません。

 

3.ゴーストの見た目を設定

次に処理を組んでいきます。

まずは「DragIcon」から、グラフは以下のように組みました。

WidgetRefは前項と同様の方法でVariablesにExpose on Spawnで追加しておきます。

SetBrushには元となるアイコンのBrushから値をコピーし、「In Brush Tint Specified Color A」のみ0.5という数字をざっくりと入れました。
「In Brush Tint Specified Color」や「Brush」はパラメータ上を右クリックして現れるSplit Struct Pinで分解しています。

 

4.ドラッグでアイコンを動かす処理

「MovableIcon」のGraphを開き、Functionの右側にあるOverrideをクリックし、「OnMouseButtonDown」と「OnDragDetected」を選択します。

まず「OnMouseButtonDown」をダブルクリックして、処理を記述していきます。

こちらはこのアイコン上で何らかのキーが押された時に発行されるイベントであるため、左クリックが押されていたらDragの開始という処理を組みます。

次に「OnDragDetected」を開きます。

こちらではゴーストの生成と「IconDragDropOperation」の生成を行います。

Create Widgetのノードを出し、Classに「DragWidget」を設定します。
すると、Widget RefのPinが追加されるのでselfなどで検索してget a reference to selfからSelfのGetterを出しWidget Refにつなげておきます。
次に、Create Drag & Drop Operationのノードを出し、Classに「IconDragDropOperation」を設定すると同じくWidgetRefが追加されるのでSelfを差します。
最後に、Create Drag Widget Widgetから出たReturn ValueをDefault Drag Visual に差し込んで処理の完成です。DragDropOperationのDefault Drag Visualにはドラッグ中のゴーストの見た目を設定でき、通常のウィジェット生成と異なりAdd to Viewportでビューポートへ追加しなくても表示されるようになります。

5.IconをDrop出来るUIを作る

アイコンをDropすることでセット出来る受け皿のUI用にWidget Blueprintを作成し、「IconBase」とします。

デザインはSize BoxにこちらはBorderを設定します。

サイズはアイコンを受け取れるようアイコンより少し大きめの144×144に設定しました。ここは素材やデザイン次第で変更ができます。

Borderはセットするアイコンを中央詰め配置なのか、周囲に空白を入れるかなどの設定が行えるようContentというパラメータが用意されています。

Paddingは画像の周りの空白の値で、カンマ区切りで1個か2個か4個のパラメータを設定でき、

1個の場合は上下左右共に共通で設定され、2個のときは上下と左右でそれぞれ設定、4個なら上下左右それぞれ別々の値を設定できるようになります。

BorderにもBrushの設定から画像を設定できるのでアイコンの受け皿用に用意した画像を設定しました。

 

GraphではFunctionの右のOverrideから「OnDrop」をクリックし追加します。

これはこのアイコンの上でアイコンのドロップが行われた時に発行され、DragDropOperationを渡してくれます。

ここで元のアイコンを受けとってChildに加えて完成です。

Operationはそのままでは拡張したWidgetRefを引っ張ってこれないので一度「IconDragDropOperation」へCastする必要があります。

これをBorderにAddChildで設定するとMovableIconがドラッグドロップでこの受け皿に持ってこれるようになります。

6.完成したUIの配置

最後にそれぞれのパーツをUIに配置して完成です。

「HUD」という名前のwidget Blueprintを作成しました。

UserCreatedの項目に作った「MovableIcon」と「IconBase」があるのでこれらをドラッグドロップで配置します。

後はこの「HUD」をLevelBlueprintなどでCreate WidgetしてAdd to Viewportでビューポートに設定すると完成です。

デフォルトではマウスカーソルが非表示になっているため、GetPlayerControllerで取得したPlayerControllerのSetShowMouseCursorにチェックを入れておくと操作がしやすくなります。

 

使いみちが多く、拡張もなかなかし易いと思うので色々試してみてください。
HUDだけでトランプゲームとかジグソーパズルのようなものもすぐ作れそうですね。

ゲームスタジオ合同説明会2017春in東京

$
0
0

こんにちは

広報です

6月3日(土)に株式会社シフォン様主催の企業合同説明会「ゲームスタジオ合同説明会2017春」に参加してきました!

たくさんの学生さん・転職希望者の方にご参加いただきまして誠にありがとうございました!

勢いのあるゲーム開発会社の社長が直々にみなさんに会社の特徴や就活のアドバイスをするこの合説も今回で6回目を迎え、

以前この会で話を聞いていた学生が、今やみなさんに会社を紹介する側に回るようになって、「やってきてよかったなー!」と思いますね!

当日の雰囲気はこんな感じでした。

大ホールでの会社プレゼンの順番を決めるためくじを引く社長たち

弊社は二番目でした

 

大ホールでのプレゼンが終わった後は各企業が教室に分かれて40分間の会社説明です

たくさんの方に来ていただきました!うれしい!

この日は弊社2年目のプランナーも会場にいたので、会社の雰囲気や仕事をするうえで気を付けていることなど

現場のリアルな声もお届けできたかと思います。

 

今回のこの合同説明会がみなさんの就職活動の糧になることを祈っています!

本当にありがとうございました!

 

次回は6月17日(土)に大阪で開催されます。

関西方面にお住まいの方でゲーム業界を目指している方はぜひ参加してくださいね( ◠‿◠ )

参加受付はこちら

公式Twitter 公式FB

 

 

 

 

 

ここから下は小話

 

 

 

 

 

当日の服装の件でTwitterでいろいろ意見がありましたが・・・・・

 

 

私服で!!!私服で来てくださいね!!!!!!

「私服でお越しくださいか・・・」(裏を読んでスーツで行ったろ!)

とか思わなくて大丈夫ですよ!裏も表もない!!

 

東京にご参加の方は私服で来てくれてほっとしました。

信じてくれてありがとうございました。

 

[UE4]マテリアル内で色調整を行ったテクスチャをベイクして処理負荷削減!

$
0
0

アーティストの方は、マテリアルの中でテクスチャの色やコントラストを調整する事がよくあると思います。

“Blend_Overlay”や”Blend_HardLight”などのBlend系のファンクションは調整しやすく便利なのですが、

中身を覗いてみると意外とノード数が多く、使用しないに越したことはありません。(下図は”Blend_Overlay”の中身)

はじめからTextureの色調整はPhotoShopで行っておけば良いのですが、

今回は、「もう色調整しちゃったよ!」という方にオススメの手法をご紹介します。

 

■材料

↓このマテリアルを使って手順を解説します。なかなか無計画な色調整ですね!

■描画ターゲット(RenderTarget)を作成

コンテントブラウザ上で右クリック→マテリアル・テクスチャ→描画ターゲット

■テクスチャベイク用のBlueprintを作成する

コンテントブラウザ上で右クリック→空のブループリントを作成してください。
1.カスタムイベントから”Draw Material to Render Target”を呼びます。

2.コンストラクションスクリプトから1で作成したカスタムイベントを呼びます。

3.”Target Texture”と”Target Material”を変数化し、編集可能にしておきます。

■マテリアルのベイクしたい箇所をEmissiveに繋ぐ

“Draw Material to Render Target”はEmissiveカラーを描画ターゲットに描き込む機能なので、

ベイク元のマテリアルを、Emissiveから出力させるように変更しておきます。(ベイク後は元に戻してください)

■テクスチャベイク用のBlueprintをレベルに配置し、ベイク元のマテリアルと描画ターゲットを設定する

1.先程作成したテクスチャベイク用のBlueprintをレベルに配置

2.ベイク元のマテリアルを”TargetMaterial”にアサイン

3.描画ターゲットを”TargetTexture”にアサイン

これで描画ターゲットにマテリアルの色編集結果をベイクする事が出来ました。

 

■描画ターゲットからスタティックテクスチャ(通常のテクスチャ)を作成する

描画ターゲットのままだと動的に書き変える事ができてしまうので、

コンテントブラウザ上で描画ターゲットを右クリックしてスタティックテクスチャを作成しましょう。

↓ベイク前とベイク後のマテリアルを比較してみました。マテリアルのノード数は削減されましたが、見た目は全く同じです。

↓シェーダー複雑度で比較すると分かりやすいですね。

アーティストの方も、是非チャレンジしてみてください!

[UE4] Compare Tagsをもっと使ってみよう!

$
0
0

コンテンツブラウザのフィルタ機能には”Compare Tags”という、タグと比較演算子による条件から独自のフィルタを作成できる機能があります。デフォルトでエンジンがいくつかタグを用意していますが、今回は独自のタグを追加する方法をご紹介します!

※コンテンツブラウザのView TypeをColumnの状態で進めていきます。また、”Compare Tags”の使い方については説明を行いません。View Typeの変更や、”Compare Tags”については↓の記事をご覧ください。

[UE4]コンテンツブラウザ便利機能「ViewTypeの変更」と「Compare Tags」のご紹介!

 

タグを追加しよう!

では、実際にタグの追加を行いたいと思いますが、とても簡単です。

UPROPERTYで指定できるプロパティ指定子に”AssetRegistrySearchable”を追加するだけでOK。

もしくは、UObjectクラスの”GetAssetRegistryTags”をオーバーライドして、引数のOutTagsに追加してあげます。

FAssetRegistryTagコンストラクタの引数は以下の通りです。

Name 対象となるタグの名前
Value 対象となるタグの値
Type タグのタイプ。文字列や数字など

タグの追加はこれだけでOK。あとは実際に使ってみましょう。変数名もしくはNameをタグ名として使用できます。

 

小ネタ

この”AssetRegistrySearchable”もしくはGetAssetRegistryTagsでのタグ追加ですが、コンテンツブラウザで表示されるアセットクラス(UBlueprintやUStaticMeshなど)で行うとコンテンツブラウザのViewTypeをColumnにしたときに追加したタグが出現します。

↑の画像の赤枠で囲ってあるプロパティはUStaticMeshクラスで追加されているタグです。

しかし、Actorなどアセットクラス以外で追加した場合はフィルタ機能としては通常通り使えますがコンテンツブラウザには表示されないので注意が必要です。

 

今回はマニアックな内容を紹介しました。”Compare Tags”は実際にエディタを使っていて絶対使うというような機能ではないですが、便利な機能ではあると思います。独自のタグを追加することもできるので是非使ってみてください。

 

[UE4]プラグインをパッケージ化しよう!

$
0
0

今回はプラグインのパッケージ化についてです。

使いまわす処理をまとめておくと便利なプラグインですが、
間違ったプラグインのコピーを行うとビルドが必要になったり、エディタが起動しなくなってしまいます。
(プラグインの仕様を知っていれば問題ないのですが…)

なかには不要なファイルも含まれていたりするのでそれらのファイルを手動で削除するも手間です。
プラグインのパッケージ化はそれらをUE4のプラグインの仕様に沿って作成する機能です。

パッケージ化手順

まず、プラグインブラウザを開きます

パッケージ化したいプラグインを選択して「Package」をクリック

パッケージの出力先を指定してパッケージ開始

パッケージの終了後、出力先にプラグインファイル一式が作られます。

注意点
一つのプラットフォームだけを想定した環境で作った場合エラーを起こすことがあります。
理由はデフォルトではすべてのビルドプロセスが実行されるからです。
Android、IOS、Linuxの分も実行されるためソースコードに#include<window.h>と書いてしまったらエラーが起きます。
そのため、必要なプラットフォームのみをビルドする設定にします。
プラットフォームを制限する方法ですが、upluginファイルのModulesの項目に”WhitelistPlatforms” を追加します。

例)upluginファイル

"Modules": [
{
"Name": "USBCamDirectShow",
"Type": "Runtime",
"LoadingPhase": "Default",
"WhitelistPlatforms" : ["Win64", "Win32"] ←これを追加
}
]

“WhitelistPlatforms” はパッケージを行うプラットフォームを指定する項目です。
無いとすべてのプラットフォームのビルドプロセスが実行されます。

配布の仕方

パッケージ終了したフォルダには必要なファイルを残すようになっています。
ですので、配布する際はフォルダをそのままコピーで問題ありません。
C++プロジェクト、コンテンツアセットありでのパッケージを作った場合以下の構成になっています。

しかし、できればソースコードは開示したくないケースもあります。
そういった場合はIntermediateフォルダとSourceフォルダを削除して下さい。
※コンテンツがC++プロジェクトを使用している場合は製品パッケージ時にSourceフォルダが必要になるケースもあります。

 

コンテントブラウザのAssetActionのMigrateやソースコードのコピーでもいいのですが、
プラグイン化をすると配布しやすくなりますので、みんなで開発効率の向上をしましょう!!

Viewing all 984 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>