妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

TEXT型のCONSTAINSの不思議な仕様

配列作成時の無限ループについて - UE4 AnswerHub

「昨日ちょっと体調が悪かったからAnswerHub見てたら、Text型の配列のCONTAINSが上手く動かないという話を見かけて、実際試したら動かなかったのでText型だとまずいってのはわかったんだけど、何か気になるので更に追加で調べてみた」

f:id:una_unagi:20180522225753p:plain
どちらもIntegerからのToText

「これが問題を再現するためのコードなんだけど、明らかに違うTextが生成されてるし、==で比較すればfalseなのに、なぜかCONSTAINSで調べるとtrueになる」

妹「CONSTAINSってなんだっけ?」

「配列の中にそれがあるかどうか、あればtrueを返すノードなんだけど、無いのにtrueを返してしまう。そして実験するとさらなる問題がわかってきた」

f:id:una_unagi:20180522230211p:plain
どちらもStringからのToText

「StringからToTextしても同じ結果になる。ただし、StringからのToTextと、IntegerからのToTextだったら別と判定するらしく」

f:id:una_unagi:20180522230647p:plain
StringからのToTextと、IntegerからのToTextで比較

「こうすると、同じ文字列なのにCONSTAINSの結果はfalseになる。この実験の結果わかることはText型を生成するノードが同じならCONSTAINS的に同じと判断されるらしい」

f:id:una_unagi:20180522230929p:plain
MakeLiteralTextで作ったテキストは正常に判断される

api.unrealengine.com

Unreal Engine | FText

「どうしてこういうややこしいことになってるかというのは、たぶんText型の性質の問題なんだろうけど、具体的なところはよくわからない。CONSTAINS以外にもそういう変な挙動をする部分があるかも」

妹「バグってことはないの?」

「たぶん違うと思う」

妹「でもそうすると、どう気をつけたらいいのか。ウィジェットとかTextじゃないと駄目なやつ結構あるでしょ?」

文字が同じかどうかということについてText型をあてにしないということかなあ。そういう場合はStringでやる。実際問題としてText型を使うのって翻訳する時に便利だからで、でも翻訳することで違う文字になったり、同じ文字になったりする可能性もある。表示しない部分には翻訳が必要ないからStringでいい」

Paragonキャラのポリゴン数

「一昨日やってたUnreal Japan Streamの録画がもう見れるようになってた」

www.youtube.com

「前半部分とか見逃したから確認をしてたんだけど、そこでポリゴン数の話があった。ポリゴン数をどれぐらいにすればいいかっていう」

妹「あー、それ知りたい」

「……どれぐらいにすればいいかっていうのは難しいんだけど、PS4で動くParagonのキャラはこれぐらいですよ、という目安にはなると」

妹「PS4がどれぐらいかわからん……わたしのパソコンはいったい……」

「たしか妹が使ってるやつはGTX750で、PS4のはRadeonHD 7870じゃないかと言われてるから、ポリゴン性能はほぼ同じかなあ」

妹「意外と高性能だった!」

「ただPS4専用にカスタマイズしてあるらしいし、CPUとか色々前提が違うから、もうちょっと下になるとは思うけど」

妹「負けてた……」

f:id:una_unagi:20180519231917p:plain

「で、実際に見てみると、Shinbiというキャラは6万ポリゴンほどだった。Triangleって書いてるから三角ポリゴン換算だと思うけど」

妹「6万ポリゴン……は多いの?」

「同時に出るキャラ数とかでも違うだろうし……だからこれぐらいでというのがむずかしいんだろうけど」

f:id:una_unagi:20180519235006p:plain

「ちなみに前に妹が作ったとんびは、最終的に1万ポリゴンの状態になってた。見た目が維持出来る範囲でギリギリまで下げた感じだけど、あのゲームの場合とんび以外にキャラがいるわけでもないし、もっと多くてもよかったのかも」

f:id:una_unagi:20180519235226p:plain

「ちなみにShinbiにはいくつかメッシュが設定されてて、カメラからずっと遠くにいくと5000ポリゴンのモデルが表示される設定」

妹「ああ……減らすとこうなっちゃうよね……」

f:id:una_unagi:20180519235240p:plain

「遠くで見ればわからない。いくら遠くでちっちゃく映ってるだけでも、最低5000ポリゴン分の処理が必要だということでもあるけど」

妹「人間だとやっぱりいっぱいあった方がいいのかな」

「他の例でいうと、最近流行ってるVRChatというアプリがあって、これはアバターを自作できるんだけど、2万ポリゴン以内という制限があるらしい。同時に表示されrう人数が多かったり、VRで表示する時の負荷の問題かなと思うけど」

ディスプレイが複数あると動画チュートリアルが見やすい

「今日UE4の放送をYoutubeでやってて、Paragonのアセットの使い方とか、アニメーションの合成のやり方とかやってた」

www.youtube.com
たぶんアーカイブがここで配信されるはず

「それはそれとして、やっぱり画面が2つあると便利だね。片方でこういう動画を見ながら、もう片方で試したり検索したりできるし」

妹「それなに?」

「液タブを買った」

妹「もってなかったっけ?」

「妹に貸したら戻ってこなかったから」

妹「そうなんだ。お気の毒に……」

「液タブはペンの筆圧とかを感知出来るけど、液晶画面でもあるので、絵を描かない時には追加のディスプレイとして使える。なので2画面あるのと同じ状態になる」

f:id:una_unagi:20180517222221p:plain

「最近動画チュートリアルが増えてきたけど、切り替えながらやるとどうしても効率悪い。スマホでもやってみたけど、どうしても文字ちっちゃくて細かいとこ読めないから。画面の隅っこで再生するのとあまり変わらない感じ」

妹「わたしが使ってるスマホみたいなタブレットは?」

スマホよりはずっと大きいけど、それでも10インチぐらいだからちょっと厳しいかも。というか妹は今液タブをもってるはずでは? あれは13.3インチだったはず」

妹「ずっと出してるとキーボード置くとこなくて邪魔になるから、絵を描かない時は外して横に置いてるんだよ」

「そのデスクは20年ぐらい前の型だから、ディスプレイの大きさも17インチぐらいが限界で、それを複数置くとかもまったく想定してないからね……」

妹「今はそんな想定してるの!?」

「してるのもある。もちろん省スペース型だとそんな余裕はないんだけど。少なくともパソコンが横置きで、ディスプレイがブラウン管という想定のはもう売ってないね……」