2016年6月12日日曜日

Unreal Engine 4とUnityの比較 2016/06/12版


「Unreal Engine 4とUnityの比較」ページのアクセス数がすごい多いです。

どっちでやるべきなのか多くの人が興味がありそう、ということで
今の時点でのUE4とUnityの、個人的な感想を書いてみます。

あくまでも個人的な感想です。

どっちも触ったことない人が趣味でやる場合どっち?

仕事で使う場合、仕事で使うエンジンを触るでしょうが
個人で触る場合、どっちがいいのか悩む人も多いでしょう。

企画職やアーティスト職など、非プログラマの場合

UE4の方がいいのではないかと感じてます。
理由としては、UE4はブループリントやマテリアルエディタなどで
ビジュアルスクリプティングが可能ですが、
これは初期学習難度がテキストスクリプティングに比べるとかなり低いためです。

Unityでも、PlayMakerやShaderForgeなどのアセットを購入することで
ビジュアルスクリプティングは可能になりますが、
エディタの出来、組み込みであることの利便性、情報の多さなどから
UE4が有利だと感じています。

プログラマの場合

Unityの方がいいのではないかと感じています。

ブループリントも、C++で組むより楽だと感じる部分もあるのですが、
C#はもっと楽にプログラミングできると、個人的には思います。

C++が大好きで、C++プログラミングがしたくてしょうがないなら、UE4の方が楽かもしれません。


また、もしUE4でやることに決めたのなら
C++部分も覚えることをお勧めします。

がっつりブループリントで組むのは、やめておいた方がいいと思ってます。

ブループリントで組んだ部分は、
単体テストの記述が困難で、リファクタリングは至難の業になります。
ステップ実行によるデバッグも思うようにいきません。

また、ノードにつないでいた線が消えたり、
パラメータがリセットされたりといった
エディタのバグなどに悩まされることも多いです。

色々な比較

モバイルゲームを作る場合どっち?

2Dゲームならばほぼ確実にUnityでしょう。
3DゲームもUI画面が多いならば、Unityが優位です。
UE4のUI作成まわりはとても貧弱なためです。

コンシューマ系のゲームを作る場合どっち?

自分がいたところでは、コンシューマ系では
Unityの選択肢はあがることすらありませんでした。
これが何故なのかはよくわかりません。

Unityのコンシューマ機の実績が少ないせいとか
昔のUnityで痛い目にあった人が多いとか、でしょうか。

個人的にはUnityでも
コンシューマゲーム開発は大丈夫だと思うのですが
確信はないです。

「UnityよりUE4の方がかっちりして作成できるので、
 大規模開発ではUE4の方が良いと思う」
という意見も聞いたことがあります。

エディタの安定性

以前、UE4はすごい落ちる、と書いたのですが
あの頃に比べると、今は落ちづらくなりました。

だいたい落ちる頻度は、Unityと同じくらいだと感じてます。
どちらも多くて一日に数回といった感じです。

アセットストア

以前、UE4のマーケットはすごく少ないと書いたのですが
UE4にもかなり増えてきました。品質も高いものが多く、
まだまだUnityより数は少ないですが、これからに期待できそうです。

エンジンの使用価格

UE4は、1 暦四半期ごとにゲーム 1 個につき
売り上げが$3000を超える額の5%のロイヤリティ方式です。
また、映像作品やアーケードゲームなどはロイヤリティがかかりません。


Unityは最近サブスクリプション契約オンリーになることが発表されました。

売り上げが年に$100000を超えなければ、無料でPersonal版が使えます。
それを超える場合、月額$125を払ってプロ版を契約する必要があります。

無料版ではUnityのスプラッシュスクリーンが出るので
それが嫌な場合もProを契約する必要があります。


趣味として使うならどちらでもお金がかかりませんが
ある程度儲かる場合は、どちらを使うかで、そこそこ金額が変わってきそうです。


2016年4月29日金曜日

第五回UE4ぷちコン 「アイドルマネー 愛の錬金術師」で工夫したこと


カメラ制御

アイドル候補との戦いのとき
カメラは「正対したとき」「叩いた瞬間」「倒れたとき」と
三つの状態があります。

アイドルごとに大きさが違ったり倒れるモーションを変えたりしてるので
カメラはそれぞれ調整できるようにする必要があります。

そこで今回は、ChildActorコンポーネントとしてカメラアクターを三つ持たせることにしました。



それぞれのChildActorコンポーネントに識別タグをつけて
Set View Target with Blendでカメラを切り替えてます。
カメラコンポーネントを使ってないのは、Set View Target with Blendのためです。




サイリュームの動き

サイリュームはインスタンシングメッシュを使い
マテリアルのWorldOffsetで左右に振ってます。
モデルは適当に作った三角柱メッシュです。



マテリアルはこんな感じなのですが
今回あまり考えず、結構テキトーに作ったので、あんまり参考にならないかもしれないです。


PerInstanceRandomノードを使えば、インスタンスごとにランダムな値が取得できるので
ライトの色をひとつづつ変えたり、動きの周期に個体差をつけたりできます。
https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/ExpressionReference/Constant/


モデルの首ふり

お札で顔を叩いたら顔が左右に揺れるようになってるのですが
これはモーションファイルは使わずに
アニメーションBPでTransfrom (Modify) Boneノードの
ローテーションに値を入れることで実現してます。



アイドルのマウスによる選択

マウスカーソルで選択したアイドル候補はリムライト的なものが付与されます。


これはPlayerController取得して、ConvertMouseLocationToWorldSpaceで
マウスの指している位置や方向を取得し、LineTraceForObjectノードで
当たっているアイドル候補モデルを取得します。

当たってるモデルが存在したら
SkeltalMeshのSetRenderCustomDepthでカスタムデプスを有効化します。




そして、ポストプロセスでカスタムデプスが有効になってる部分に対し
カメラベクトルと法線の内積をとって、それが90度になるほど色がつくようにしてます。

下のマテリアルがそれです。
上半分ぐらいがカスタムデプスに対する処理で、下半分はカーソルの表示処理を同時に行ってます。




高速移動の表現

操作キャラは瞬時に移動するのですが
高速移動している感を出すためにモデルを伸ばす処理と、集中線の表示をしてます。



モデルを伸ばす表現は、移動している方向ベクトルをマテリアルにパラメータとして渡し
それと法線の内積をとり、進行方向と逆になるほどWorld Offset Positionに
後ろ方向ベクトルを入れてます。


集中線はポストプロセスです。
だいたいこんな感じになってますが、ポストプロセスでやる意味は
正直あんまりないので詳しい説明は省きます。

自分は素材を作るのはめんどくさいと感じるのですが
シェーダーやマテリアルいじるのは大丈夫なので、無理やりこういうので実現しがちです。




お金

ビンタするごとにお金が空中に舞いちるのですが
これもマテリアルのWorld Position Offsetに値を入れて
ヒラヒラと見えるようにしています。

UI

UE4のUMGっぽくない感じになるように3Dっぽく傾けたり
マテリアルを工夫してアニメーションさせたりしていますが
ちょっと自分のセンスの無さが出ててつらい部分ですね。

4.11から、UserInterfaceのマテリアルにScreen Positionが追加されてるので
3Dぽくすること以外にも何か面白いUIの表示ができるかもしれません。






第五回UE4ぷちコン 「アイドルマネー 愛の錬金術師」応募


UE4のぷちコンというコンテストに応募して、最優秀賞をいただきました。

「街の人たちを金の力で愛に目覚めさせた後
アイドルグループを結成し、即日ライブを開催。

観に来てくれたファンからお金を荒稼ぎし
その荒稼ぎしたお金をつぎ込んで
本命のグレイちゃんを、特大の愛で目覚めさせよう」

という、インパクト重視のちょっとぶっ飛んだゲームにしました。




最初は街の人を札束で叩いていくアクションゲームの予定でしたが
作ってるうちに色々思いついて仕様が増えていき、今の形になりました。



今回使用したアセットを紹介します。

舞台となる街は、UE4ランチャーのラーニングタブにある
プラットフォーマーゲームのものを使いました。無料です。
そこそこ品質が良く、動作も軽いです。




ただし、地面や木などは、アップで見ると厳しかったため、マテリアルを変更してます。
これも自作ではなく、ShowDownサンプルや、Blueprintサンプルから移植してきました。




お金のテクスチャはLoot Packという有料アセットを使ってます。
このアセットは今回のゲームにピッタリだと思って買ったのですが、
結局お金のテクスチャしか使わず。




アイドル候補たちのモデルとモーションの多くはmixamoのものを使用しました。
mixamoのモデルは、UE4にインポートするとき
モデルが壊れるものがあって使用を断念したものもいくつかありました。





最後のラストアイドルには、UE4界のアイドル、Grayちゃんを使わせていただきました。
http://rarihoma.xvs.jp/products/graychan/




Grayちゃんに持たせてる拳銃はこちらの有料アセットを使用してます。
なんで拳銃を持たせたかというと、グレイマン用の無料で手に入るモーションが
銃を持ってるものばかりだったので仕方なく持たせました。


エフェクトはInfinityBladeEffectsのを何個か使用しました。
ハートのエフェクトは他の応募作品でもたくさん使われていましたね。


曲はフリー音楽素材/魔王魂さんの曲を使わせていただきました。
歌つきの曲もあって助かりました。
http://maoudamashii.jokersounds.com/


効果音は効果音ラボさんのを使わせていただきました。
http://soundeffect-lab.info/



たくさんのアセットのおかげで今回のゲームは完成しました。
アセット作者の皆様に圧倒的感謝です!

+.

2015年11月30日月曜日

Unityで動的なアニメパース効果をつける



前回の記事でUE4のアニメパースマテリアルを作りましたが、
Unityでも、あれと同じような頂点シェーダを書けば実現できます。
こんな感じに。



これを、Unityちゃんステージのシェーダーに埋め込んだのがこちら

UE4で動的なアニメパース効果をつける


@MuRo_CGさんのこのツイートを見て
UE4でもボーンの変形が可能なので、同じことができそうだなぁ。
と思い、自分でも試してみることに。

----

静的なシーンなら簡単にできそうでしたが
完全に同じだとチャレンジ性が薄いので、動的に実現することを目標にしました。

AnimBPの各ボーンにカメラが近づいたら大きくする仕組みを入れていきました…
が、指とかボーンがありすぎて面倒すぎて途中で挫折!

そもそも、剣とかボーンが無いものはどうするの?問題も発生。

発送を変えて、別の方法を考えてみることに。

-----

で、思いついたのがこちら。





マテリアルはこんな感じです。
http://blueprintue.com/blueprint/ime36fb8/
   

これをマテリアル関数として保存して、アニメパースかけたいモデルのマテリアルすべてに追加して、出力をワールドポジションオフセットにつなげます。

たくさんあるマテリアルに仕込んでいかないといけないので、
これはこれで面倒なんですよね。

ポストエフェクトなどでできないかも考えてます。

Unity版はこちら。Unity版のシェーダーサンプルコードにはコメントつけてます。
http://dofilabs.blogspot.jp/2015/11/unity.html

2015年11月8日日曜日

UE4でFur表現を試してみました


これは「シェル法」、つまりはポリゴンを層のように重ねて、毛を表現しています。
SimpleGrassWindで毛先を揺らしてます。

UnityだとPassがあるので、シェーダー一個書いて
それを割り当てるだけで、簡単に全身毛だらけにできるのですが
UE4のマテリアルだとPassが無いので、メッシュコーポネントをBPで複製しまくって
ダイナミックパラメータで層の位置を指定して描画してます。

今回のは力技実装なので、結構重いです。

あと、毛を長くしたり、
キャラの動き、平行移動や回転に合わせて毛先を揺らすのが
できなくはないですが難しいです。


THETA Sで東京 秋葉原を撮影

THETA Sで、東京秋葉原を撮影しました。
Feiyu Tech の Feiyu FY-G3 Ultra 3軸 手持ち撮影用ジンバル + 延長棒を使用してます。


スタビライザーと延長棒を使用しているおかげで
かなり揺れが低減されています。

電動スタビライザーは、一年ぐらい前だと
日本のAmazonでは5万円ぐらいと、かなり上乗せされていたんで
Surehobbyで三万ぐらいで購入したんですが、
今探してみると、値段が結構適正な感じになってるみたいです。



ただ、THETAは360度撮っているので
動画撮ってる時のTHETAの姿勢が取得できれば
スタビライザーに頼らずとも補正できるはずなので
標準でそのうちブレ補正機能が搭載れてもおかしくないかも。