妹でもわかるUnrealEngine4

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

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

ボクセル練習・キャラクター剣振り #magicavoxel

f:id:una_unagi:20180129233134p:plain

f:id:una_unagi:20180129231547g:plain

「剣を作ってみるところを作っていたんだけど、この方法でつくるとボクセルが傾けられないから、斜めに剣を振るというのが大変なんだなあと」

妹「これは斜めに振ってるんじゃないの?」

「斜めなんだけど、振り上げた時と下ろした時の角度違うから、「\」じゃなく「L」みたいに振ってるイメージ。Rotっていうメニューで回転できるけど、斜めにはならない」

妹「ボクセルで斜めにすればいいのでは?」

f:id:una_unagi:20180129233658p:plain

妹「ああ、そうか。そうなるのか……」

「ドット絵の場合だとこのギザギザを消す方法はいくらでもあるんだけど、ボクセルの場合ちょっと難しい。陰影をつけずにUnlit的なライティングにすればもうちょっとマシにはなる」

f:id:una_unagi:20180129233922p:plain
MagicaVoxelのレンダリング機能で、剣の色をエミッシブに設定したもの

「シルエットと陰影と、どっちを優先するかで変わってきそうな感じ」

クリアするまでにかかった時間を調べる

「今日も質問がきていた。通算4通目。厳密にいうと5通……」

「で、クリアタイムをランキング形式で表示したいということで、必要な物がいくつかある」

・クリアタイムの測定
・ランキングっぽい物の表示
・名前の入力
・ランキングのセーブ
・オンライン対応

「こんな感じかな。セーブなし名前なしオンラインなしで、上の2つだけやるというのが一番シンプルで簡単だと思う」

妹「ハイスコアの表示とセーブはやったことあるけど、ランキングはないなあ」

「1人プレイの場合だとハイスコアだけわかればいいからね。アーケードゲームだとランキングが多かったし、その移植版でもそのままランキングがついてること多かった。セーブはできたりできなかったり」

妹「どうやって作ればいいものか」

「ランキングの表示に関しては、UMGでつくるのがいいと思うけど、ちょっと説明するのがむずかしい。ただ、おそらくハイスコアランキングの作り方みたいな情報はどこかにあると思う。スコアの部分をクリアタイムに置き換えて、少ない方が上位になるようにすれば問題はない」

妹「制限時間のは作ったことあるけど、クリアタイムは作ったことないかも」

pafuhana1213.hatenablog.com

「クリアタイムの調べ方も制限時間を作る場合に似てるので、この記事が参考になる。この中のDelta Sceondsを使う方法TimespanとDatetimeを使う方法が使える。ただ制限時間基準に減らしていくんじゃなく、0から足していく感じでやる必要があるけど」

妹「どっちの方法がいいの?」

「どちらでもいいけど、TimespanとDatetimeを使う方法が簡単な気がする。Tickで毎回計算しなくていいし。まずゲーム開始時に調べて、クリアするか死ぬかした時にも調べて、その差を表示する」

クリアした時のNow - ゲーム開始時のNow

「というような式を作って、その結果から秒とか分とかの部分を取り出して表示する。ただ難しいのが途中でポーズ(一時停止)がある場合

妹「普通にやるとポーズ中の時間も計算しちゃう?」

「そうなる。まあタイムアタック形式のゲームだとポーズはなしでいいかもしれないけど。もしポーズ有りだったら、ポーズの時にそこで止めて経過時間を別変数に記録して、ポーズ解除からまた計り直して、最後にポーズ前のと合算するとか。ポーズを複数回した場合の対処も必要」

妹「めんどくさそう」

「その場合はDelta Sceondsを使う方が楽かもしれない。ポーズ中にTickが動かないなら時間の加算も止まるし。ポーズ中もTickを動かす場合も、ポーズ中かどうかで分岐するだけでいいから簡単。ただゲームのフレームレートを固定にした場合はDelta Sceondsを足していった結果が実時間とズレてたような気がする」

※1/31追記 関連記事を書きました
imoue.hatenablog.com

すぐゲーム制作に取り掛かるためのアセット集『UE4 Game Jam Toolkit』が公開

f:id:una_unagi:20180126222552p:plain

www.unrealengine.com

https://forums.unrealengine.com/unreal-engine/announcements-and-releases/asset-sharing/1417286-game-jam-toolkit
配布先のフォーラム(※要ログイン)

「Global Game Jam 2018というイベントが、もう始まってるのかな、とにかくそういうのがあって、それ用のアセットというのがEpicから出てた」

妹「これも新しいアセットなの?」

「新しいアセットというよりは、今までの色んなサンプルに含まれたデータの中で、要りそうなやつを整理したものみたい。マーケットプレイスとかからダウンロードは出来ないので、フォーラムからダウンロードが必要。ログインしてないと見れないページだった」

妹「同じアセットだったら、今までのやつでいいのでは?」

「色んなプロジェクトから探したりコピーしてくるのめんどくさい。ゲームジャムというイベントには時間制限があるから、あまりアセット集めに時間をかけなくないわけで、そこの時間短縮を目的にしてる」

f:id:una_unagi:20180126223028p:plain

f:id:una_unagi:20180126223036p:plain

「ダウンロードした300MBほどのデータを、自分のプロジェクトのcontentフォルダにコピーして使う。アセットと、それを使ったUFOのゲームがサンプルとして入ってる」

f:id:una_unagi:20180126223856p:plain

「どういうゲームかよくわかってないんだけど、弾をさくさん撃ってたら、なんか、勝った。とにかく何らかのルールがあって、一人用ゲームとして成り立っている物らしい。このへんはテンプレートとは違う」

妹「ウィジェットも入ってるの?」

「入ってる。ボタンを並べただけのものだけど、だからこそ追加とかはしやすい」

f:id:una_unagi:20180126224041p:plain

「目的としてはゲームジャムにUE4を使って参加するチームを支援しようということみたいだけど、イベント専用ということではないんで、ゲームジェムの参加者以外でも使っていいらしい。UE4ぷちコンで、あと3日しかない! でも参加賞欲しい! みたいな事態に陥った場合にもいいかも」