妹でもわかるUnrealEngine4

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

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

サンプルプロジェクト紹介 ラジアルインパクト(RadialImpact)

「タッピーチキンさん達がラーニングから居なくなったけど、代わりになんか見たことのないのがあったから紹介」

f:id:una_unagi:20160220204430j:plain

「ゲーム内容としては単純、画面上のランダムな位置に二重丸が出てきて、片方の丸が拡大縮小するから、2つの丸が重なったタイミングでクリックする。タイミング合わせゲーム。時間制限、ミスの回数制限、丸が出る回数制限と、最初のモード選択ではゲームオーバーの条件を選べる。丁度ピッタリ重なったタイミングでクリックできると、光のエフェクトが出て、残り時間が伸びたりする」

f:id:una_unagi:20160220205136p:plain

「ちなみにこのゲーム、裏技的な操作方法があって、マウスクリックじゃなくスペースキーを押してもいい。レベルブループリントで入力処理を受け付けて、そこからイベントでマウスクリックのところに合流する。マウスだと位置合わせとタイミング合わせと両方必要なのに、タイミングだけで押せる」

妹「なんて卑怯なんだ……」

「レベルブループリントには他にCキーでハイスコアリセットの仕組みも入っている。Cキーはゲームプレイ中にも押せて、ハイスコア表示が0になるから作動したのが確認出来る。レベルブループリントにはそれぐらいしかなくて、GameModeやPlayerControllerにはブループリントが含まれてない。初期ポーンもダミーで、DefaultSceneしかないやつ。中身は画面上にあるブループリントに全部書いてあるみたい」

f:id:una_unagi:20160220205600p:plain

「画面構造としてはこんな感じで、エディタ上で最初から全部しておいて、BeginPlayの段階でいらない部分を隠して、その後は必要に応じて表示を切り替える感じ。Paper2Dやウィジェットは使わずに、ポリゴンにテクスチャを貼り付けてボタンを作ってある。点数部分はTerxtRendererを使ってる」

f:id:una_unagi:20160220210129p:plain

「TextRendererComponentのところで、SetText非推奨だから使うなという警告が出てる。じゃあなにが推奨されてるかというのはわからなかった」

妹「最近出たサンプルなのになぜ推奨されてない方法を……」

「推奨されてる頃から作ってたのかも。内容としてはそんな感じ。パッケージ化は一応どのプラットフォームにも対応のチェックが入ってるけど、Androidのパッケージ化は上手くいかなかった。他の設定の問題かも。HTML5化は出来るけど、起動に時間がかなりかかる」

妹「そんなもんなんだ。見た目はシンプルそうなゲームなのに」

「時間がかかるといえば……これはHTML5以前に、開くだけでめちゃくちゃ時間がかかる。たまに初回だけそうなるプロジェクトはあるけど、これは毎回そうなる。94%ぐらいで止まって、その後もウィンドウをクリックしても何にも反応しない時間が数分ある」

妹「そのプロジェクトあんまり開きたくないんだけど……原因は何なの?」

「複雑な3Dモデルがあるわけではないから、マテリアルの設定か、文字表示の関係とか。あとブループリントにかなり無駄があるというか、同じような処理がコピーで作ってある部分が多いから、ノードが多すぎて遅いというのも考えられる。HTML5で遅かった事も考えると、ブループリントが一番あやしいかな」