How to manage repository over “GIGA”

この記事はUnreal Engine 4 (UE4) Advent Calendar 2017 、7日目の記事です。

At First

ギガが足りない!ではなくギガを超えてしまった人が、Gitを使って、ギガ超えリポジトリをWebサービスで扱う方法について示します。Github / Bitbucket / AWS CodeCommit の制約や実現方法についてのまとめです。

自分はUE4のプロジェクトでこの対応を行う必要に迫られましたが、UE4に限定した話ではありません。ゲーム業界、UE4などのバージョン管理では Perforce や Subversion を扱うことが多いのではないかと思います。公式のドキュメントでも前述の2つを利用する方法について案内がされています。(Perfoceが利用できるWebサービスには基本有償ですが Assembla.com などがあります)

しかし、自分の経験とWebサービスの充実度合いから、Gitを利用することが多く、同じような境遇になった方の参考になればと思い、まとめることにしました。なお、環境はWindows 10、Shell は Github Desktop 付属の Git Shell を使っています。

GitHub

Github では、プライベートなリポジトリは月$7で無制限に作成でき、リポジトリサイズは1GB以下が推奨、1ファイルあたりの最大サイズが100MBまでとなっています。この制約を超える場合 Git Lerge File Storage(以下 Git LFS)を使う方法が用意されています

Git LFS を用いた場合、無料では1GBのストレージと、月当たり1GBの転送量まで使用することが出来ます。

ストレージや転送料を追加する場合には、$5で50GBのストレージと転送量を追加することが出来ます。

Git LFSの導入はWebサイトからインストーラをダウンロードしてインストール。その後下記のコマンドを実行します。

> git lfs install

> git lfs track “*.umap” “*.uasset”

あとは通常通りに git add や commit/push を行うのみです(.gitattributes が自動的に作成されるのでこちらも add しましょう)。ファイルの量にもよりますが、初回のファイル追加時、push時には時間がかかります。その後は、それほど気にならない速度になります。トラッキング対象ファイルの確認や、対象から除くには下記のコマンドを用います。

> git lfs track // トラッキング対象ファイルの確認

> git lfs untrack “*.hoge” // トラッキング対象から除く

Bitbucket

Bitbucket は無料でプライベートなリポジトリが作成し放題ですが、アクセスするユーザー数が5人までに制限されています。制限を超える場合、1ユーザー辺り月2$を支払うことで人数を増やすことができます。リポジトリのサイズは1GBを超えると警告が表示され、2GBを超えるとpushできなくなります。1ファイル辺りの容量制限には言及されていませんでした(この日本語の文書は古いです!!)

2GBを超えたリポジトリを扱うためには、月2$のスタンダードプランでは5GBのLFSストレージが追加されます。注意点としてはチームに割り当てられるため、5人がひとつのチームに所属していた場合でも、10人の場合でも5GBまでという点です。また、スタートが10$からとなっており、2人しか使わないから4$という形には出来ません。

2GBを超えた場合、スタンダードプランに申込んだ上で、Git LFSの対応を行うことになります。基本的な手順はGithubと同様ですが、大容量のファイル転送時に失敗する場合があります。その場合、Bitbucket LFS Media Adapter を導入する必要があります。

ダウンロード後に、git-lfs-bitbucket-media-api を任意の場所に配置して、README.md の手順に従って git config に path の設定をすると正常にファイル転送を行うことが出来ます。

> git config –global lfs.customtransfer.bitbucket-media-api.path /path/to/git-lfs-bitbucket-media-api.exe

AWS CodeCommit

AWSの提供するGitリポジトリサービスで、最近 pullrequest にも対応しました。

無料で最初の 5 人のアクティブユーザーまで、無制限のプライベートリポジトリと、50 GB のストレージ、月10,000 回の Git リクエストに対応しており、ストレージ容量としては余裕のあるサービスになっています。

料金ページにも超過料金の発生なしに一般的な開発者のワークフローを処理できるように設計されていると記載されています。超過料金についても、1GB辺り一月に$0.06、Git requestごとに$0.001 なので、多少超えたとしても大きな負担にはならない金額設定です。

問題としては、AWSに慣れていないユーザーには初期設定のハードルが高いこと、Git LFS に未対応のため、2GBを超えるファイルを扱えないことです。単体のファイルであり、全体のレポジトリ容量ではないため、制限に当たるケースは少ないと思いますが、UE4の.umapが制限を超えたという書き込みがフォーラムにあったりもしました。

導入手順について、Windows環境で自分が行った最低限の手順を残しておきます。

AWSのアカウントでログインして、CodeCommitのサービスのページに移動します。ドキュメントのGit の接続エンドポイント一覧には東京がありませんでしたが、上部ツールバーの右上から東京を選択することが出来ました。リポジトリの作成をクリックして名称を入力、そのままスキップで進むとリポジトリに接続するための手順が表示されます。

CodeCommitInitialSetting

ここからの設定がなかなかステップが多く、ドキュメントも環境別に似たようなものが多く、分かりづらいです。

  1. Pythonをインストール
  2. AWS CLI をインストール
  3. AWS CLIの初期設定実行時に .py ファイルの関連付けでエラーがでるので対応
    1. > assoc .py=Python.File // cmd.exe から実施
    2. > ftype Python.File="Path\to\python.exe"
  4. AWS CLI の設定。手順のページに従って、IAMユーザーの作成とAWSCodeCommitFullAccessの権限付与を行います。
    1. > aws configure
    2. 上記を実行し、IAMユーザーのアクセスキー ID、シークレットアクセスキーを入力します。
    3. リージョンには ap-northeast-1 (東京)、format に json を指定
    4. ここまででスクリーンショットにある、「前提条件」が満たされます。
  5. 「リポジトリのクローンを作成するステップ」のコマンドを実行します。黒い網掛け部分にはリポジトリ名が入ります。
  6. 空のリポジトリが Clone されます。

任意のファイルを追加して、add / commit / push が可能です。もし、大きいレポジトリの push や clone に失敗する場合は以下のようにバッファサイズを大きくすることや、IAMユーザーのSSH設定を行い、SSHでの接続を行うことで回避できる場合があるようです。

> git config –global http.postBuffer 524288000

> git config –global http.postBuffer 1048576000

Summary

UE4等のサイズが大きくなりがちなプロジェクトにおいて、Git管理のリポジトリサイズが大きくなって困った!という場合に、Github / Bitbucket / AWS CodeCommit それぞれのWebサービスでの制約と実現手順についてまとめました。

AWSに慣れていて、1ファイルで2GBを超えないならば、AWS CodeCommit が無料の枠は最も広いです。しかしGit LFS非対応もあり、自分の環境では postBuffer の設定値をかなり大きく変更しなければ clone に失敗するなど、大きなサイズのリポジトリに強いとはあまり言えない印象を受けました。

Githubでは無料では1GBまで、プライベートリポジトリも作成できないので、12$を支払うことで50GB、人数制限なしで使うことが出来ます。懸念点としては転送量が月51GBまでになるので、人数や転送が多い場合には追加が更に必要になるかもしれません。

Bitbucketでは10$で5名、5GBまでのストレージを転送量等の心配なしに使うことが出来るので、この範囲で収まるならば気兼ねなく使うことができそうです。

Unreal Engine 4 (UE4) Advent Calendar 2017 、明日は Hirai Yuuki さんの「UE4でヒット演出解説」です!

Advertisements

UE4 Meetup Sapporo Aug. 2017

UE4 Meetup Sapporo Aug. 2017 を開催しました。

https://www.meetup.com/ja-JP/UnrealSapporo/events/240959386/

今回はセッションタイム、ワールドカフェ、モブノーディングと大きく3部構成で、特にモブノーディングが初の試みです。進行スライドはこちら

 

Session Time

はじめにオープニングトークとして、エピックゲームズジャパン今井さんより『What’s New, Unreal』をお話いただきました。SIGGRAPHでの発表内容や、WWDCのARKit、ノンゲーム分野の発展など。個人的にもDataSmithのこれからに期待大です!

 

『VR エディタで映像を作ってみる』 てんちょーさん(@shop_0761)

UE4に移植したUnityちゃんライブのカメラワークを、VRエディタ内で弄ってみるセッションでした。VR対応バックパックPCを持ち込んでのデモです。VRエディタ内でシーケンサーをいじると軌跡が可視化されて、それを直感的に動かすことが出来るのですが、カメラワークが複雑で、軌跡が大量にでてしまい、視界を逆に侵していたりもしましたが、確認するためのサブスクリーンを配置するTipsや、VR内で作業を行う未来を垣間見ることが出来たと思います。

 

『UE4+Tangoをいじってみた話』maoさん(@TEST_H_)

スライドが公開されています。まだ実験的(Experimental)な機能で、ドキュメントなども整っていないため、かなり試行錯誤で苦労された様子が伝わってきました。今回のセッションは時間が短めだったこともあり、詳細については省略した所もあるとのことでしたが、この情報が欲しい!という人は世界にも多くいそうです。「部屋が汚いと投稿用の動画撮影が辛い」というのは、ARならではを強く感じました。

 

『SubstancePainterを始めてみなイカ?』和牛先生(@3dcganimation)

スプラトゥーンを180時間くらいプレイしたという和牛先生のSubstancePainterについてのセッションです。基礎的なところの説明から、スプラローラーのモデルを元に実践的な表現のテクスチャを作成する例をリアルタイムに見せていただきました。実際に使用するものと近い環境、背景で確認することや、スカルプトでつくるよりも質感と凹凸で表現したほうが簡単な場合もあること、表現の背景にある物語(例えば子供が砂場で遊んで付いた傷がある)を想像することなど個人的にもとても勉強になりました。

 

World Cafe

前回のMeetupでメインに据えていた通称ミートアップタイム、参加者交流です。今回、残念ながら自分は運営作業をしていて参加できなかったのですが、反応やアンケートの結果を見るに好評だったようです。今回は説明を含めて1時間弱くらいだったので、もう少し時間を取れるとよさそうでした。参加したかった!

DHkxY3dVYAACQoR

DHls3zdV0AABSv5

 

Mob Nording

モブプログラミングをUE4、ノードでやろうという初の試みです。モブプログラミングについてはこちらの説明で雰囲気がよく伝わるのではないかと思います。本来のモブプログラミングは開発手法や進め方というよりは「働き方」に近いものなのですが、そのやり方を参考に、学習を目的にアレンジをした形です。

参加者全員が手を動かせること。UE4に触るハードルを下げること、互いに学びが有ることを目標に開催しました。お題は第8回UE4ぷちコンの「60秒」をネタに付箋に書いたアイデア(思いつき)を元に作るものをアドホックに決めていくという難易度の高い形で進めました。

てんちょーさんがナビゲータの中心となって、5分で交代しながら実装を進めていく形になりました。試行錯誤しながらも、ブループリント、アニメーション、マテリアル、簡易モデリングと色々な要素が散りばめられた形になりました。

詳しい方が多くいると、互いの効率的な操作方法や、考え方が学べ、よりよい形になったと思うので、今後更に良い形で出来たらいいなぁと思います。てんちょーさんには地力を遺憾なく発揮していただきました。ありがとうございます!

Party

同会場で体験会なども含めた懇親会を行いました。料理の準備やゴミの処理などの問題がありますが、機器を展開できるのはよかったです。

 

Summary

かっちりとプログラムを決めて行う形ではないので、不安な所もあったのですが、結果なんとかなり、個人的な学びも多くあったので、やってよかったなぁと思います。忙しい中、セッションの準備を整えていただいたてんちょーさん、maoさん、和牛先生に感謝です。毎回多くの点で助けていただいている今井さんには頭が上がりません。

今回の参加者はゲーム開発を行っている以外の方も多く、新鮮でした。こうして裾野が広がるとともに、バリバリやる人にも興味をもって参加していただけると更に交流が図れていいなぁと思います。ミートアップタイムは普段関わりのない業種の方との交流や、違う視点を得る機会になっているので、今後も継続していきたいと思います。参加した方の「問を得る機会になる」という言葉が印象に残っています。

モブノーディングはいろいろな使い方が出来るように感じました。全員がひとつのことに向かうというメリットは大きく、分散しないので一体感があります。現実的な所では、機材の準備が最低限で済むという点もあります。反面、前に出るのに抵抗がある人にはハードルになったり、興味が薄い人には手持ち無沙汰になるという側面もあります。初級者向けの題材にしたり、上級者が刺激を受け合う場にするなど、うまく開催できれば効果は高そうです。

またそのうち開催したいと思います。参加いただいたみなさま、ありがとうございました!

 

Links

Update on VR at UE4.17

Unreal Engine 4.17 が現地時間8/7にリリースされました。

今回も大量のアップデートがあり、嬉しい悲鳴がでてしまいますが、VR関連で気になったもの、試したものについてまとめていきます。記載している内容はUE4.17.0、2017年8月10日時点のものです。

 

VR Spectator Screen 

今回のアップデートの目玉機能のひとつです。Spectator Screen(観客用スクリーン)がサポートされ、VR体験者の視点ではなく、観客用に写す画面を設定することが可能になりました。任意のテクスチャを表示したり、Picture in Pictureのように画面を組み合わせることも可能です。

これまでマルチプレイヤーのような形で、別のプロセスを実行しなければいけなかったのが簡単に実現することが出来ます。(2016年1月の Global Game Jam で自分も参加していたチームが作成した2P視点は複数プロセスでの実現でした 成果発表時のスライド )

これまで HTC Vive でのPC画面は左右に黒帯が入っていて、解消するためにはエンジンビルドが必要だったのですが、それも不要になりました。公式のドキュメントに Spectator Screen に設定可能なモードや、テクスチャの指定方法がまとまっています。

Supported Modes

プラットフォームによって対応可能なModeが異なります。Modeの設定はコンソールコマンドから vr.SpectatorScreenMode X または Set Spectator Screen Texture ノード から行います。

デフォルトでは 「Mode 5 SingleEyeCroppedToFit」 になっているようです。任意の視点、テクスチャを表示するのは 「Mode 6 Texture」を指定します。HMDを被っている1人称視点と組み合わせるには 「Mode 7 TexturePlusMirror」を指定します。

各モードについての表を引用します。

SupporteModes

Mode 1-5 でも、Oculus Rift と SteamVR で結構違いがあったので、まとめた画像を作りました。

Mode 6 Texture

Mode 6 および 7 を指定した場合に、表示するテクスチャの設定は Set Spectator Screen Texture ノードから行います。

任意のテクスチャを指定できるので、固定の画像を表示することもできます。第3者の視点を表示するには公式ドキュメントにもあるように SceneCaptureComponent2D を用いるのが良いでしょう。Level上に直接配置して固定視点で写すもよし、Componentを動かせば任意の位置から動的に撮影できるでしょう。Render Target のサイズによって解像度が変わります。以下の別視点から撮影した画像例では1024×768を指定していました。

スクリーンショット 2017-08-08 18.08.40.png

モーションコントーラにアタッチして、現実世界で好きな角度からカメラを持つように動かしながら映すことも出来ます。同じ場所にwebカメラなどを取り付けて、現実の映像と合成することもできそうです。

Mode 7 TexturePlusMirror

Mode 7 を指定した場合の、1人称視点と指定テクスチャの表示方法については Set Spectator Screen Mode Texture Plus Eye Layout ノードから行います。

SetSpectatorScreenModeTexturePlusEyeLayoutNode

0から1の範囲でスクリーン内の開始位置、終了位置、どちらを先に描画するか、黒をクリアするかの設定が可能です。例えば次のように設定した場合、以下の画像のように表示されます。

スクリーンショット 2017-08-11 19.02.37

スクリーンショット 2017-08-11 18.21.45.png

標準的な最適化設定は、まだないとのことですが、30fpsでのSceneCaptureが推奨されていました。また、既知の問題として、Render Target は1フレーム経過後にキャプチャされるため開始と同時のキャプチャは失敗すること。Spectator Textureとして設定中のRender Targetを破棄するとクラッシュする場合があるとのことです。

 

Experimental support for Apple’s ARKit

Apple WWDC 2017での Wingnut AR Demo を覚えている方もいるかもしれません。Githubの別ブランチで公開されていたAR Kit対応ですが、Beta Version として ARKit Plugin が標準で追加されました。まだBetaだからか公式ドキュメントは無いようです。UE4.17の公式ドキュメントにそのうち追加されるかもしれません。

スクリーンショット 2017-08-11 20.32.03

まだエンジンビルドが必要だった頃に試して動かした動画を貼っておきます。

 

VR Stereo Layers

主に各VRプラットフォーム間での差異を吸収、同じように扱えるように調整が入ったようです。詳細は公式ドキュメントにて確認ください。また、Stereo Layerコンポーネントについてはおかずさんがブログに書いてました!

 

Support for the Vive Tracker

Vive Tracker が公式にサポートされました。 Motion Controller の Hand プロパティにて Special 1~9 を指定するだけでトラッキングされるようになります。

スクリーンショット 2017-08-11 21.16.09

個別のBPとしてマップに配置する場合、注意点としては PlayerPawn と同じ Location に配置しておく必要があります。

スクリーンショット 2017-08-10 16.36.39

例えば上記の状態ですと、Special 1、Special 2、Special 3を指定することで3つの Vive Tracker に対応します。

参考までに3つめのコントローラを有線で繋いでいたのですが、これは自前で Get Tracked Device Position and Orientation ノードを使って取得、位置指定を行う必要がありました。指定するデバイスIDは8になったので、SteamVRに表示されているインデックスと対応しているようです(0から始まる)。詳細については おかずさんのVIveTracker解説と同じ方法でいけました。

 

Play-in-Editor settings to not minimize

個人的には Must 設定機能です。

VRでデバッグしているとき、実行するたびにWinキーやShift+1キーを押してエディタを最小化から戻す必要がなくなりました。

Editor Preferences > Level Editor > Play > Play in Editor > Should Minimize Editor on VRPIE のチェックを外しましょう!

 

Other Updates on VR

  • OculusHMD plugin ひとつで Rift と GearVR 両方に対応したようです
  • Blueprint に SetTouchDPadMapping が追加され、SteamのPad入力を再割当てできるようです
    • スクリーンショット 2017-08-11 21.54.05
  •  Valve’s Knuckle’s controllers がサポートされたようですが試せませんよ!!
  • GetHMDWornState ノードを使ってBPから、HMDを着けているか状態を取得できるように。SteamVRは振動で判定しているので反応が遅いそうです
    • スクリーンショット 2017-08-11 21.49.07
  • HMDが未接続の時は Skipping recording of analytics するようになったそうです
  • その他、多くのバグ修正

 

告知

Unreal Engine 4 札幌ミートアップを 8/19(土) に開催します。

https://www.meetup.com/ja-JP/UnrealSapporo/events/240959386/?eventId=240959386

交流をメインに据えつつも、手を動かし始めやすいように。参加者に学びがあるように。と実験的にモブノーディングなどの試みを行う予定です。経験を問わず、UE4に興味がある方歓迎ですので、是非お越しください。ハッシュタグは #UnrealSapporo です!

Unreal Fest West 17

IMG_5092

Unreal Fest West 17 に参加してきました。Unreal Fest West 17 はEpic Games Japan が主催する、オフィシャルの Unreal Engine の大型勉強会です。順次、資料や動画が公開されていくと思うので、詳細に記すのではなく、どんなことを話したか概要を記すことに主目的をおいて、講演内容をまとめます。

Unreal Engine最新機能 アニメーション+物理ショーケース!

Epic Games Japan 星野 瑠美子 氏の講演です(スライドリンク)。もうすぐプレビュー版が公開予定の4.16や、その先のバージョンで追加予定の新機能についての紹介です。下記の機能について紹介されました。

  • リグを使ったアニメーション(4.16 実験段階)
  • 新クロスツール(4.16実験段階)
  • イミディエイトモード物理(4.16)
  • Robo Recallの物理 4.15/16
  • ライブリンク(4.17)

リグを使ったアニメーションではこれまで外部のDCCツールがなければ、作成できなかったアニメーションを、エディタ内で作成・修正出来る機能です。DCCツールを置き換えるのではなく、ゲームジャム等で簡単なものを作成したり、アニメーションを調整しながら開発を進めるワークフローを支援するものとのことです。PlugInの形式で提供予定で、デモではシーケンサーのキーを打つ形でアニメーションを作成することが出来ていました。

新クロスツールでも同様にこれまで外部ツールで設定が必要だった、布のシュミレーションがエディタ内で作成・調整が可能になるとのことです。布の揺れやすさをグラデーションで塗るように指定するなど、こちらも素早く調整をしながら開発を行うのに向いていそうな機能です。

イミディエイトモード物理は揺れ物やラグドールに適した機能で、これまで同様の目的で使用していた、AnimDynamicsに比べて2倍ほどの性能改善になるようです。指定方法も簡単で、RigitBodyノードに繋ぐだけでよく、アニメーションBPのノードをシンプルに出来そうです。

Robo Recall の物理ではインタラクションの多いコンテンツである Robo Recall において、自然な挙動を実現するために用いられた技術や、調整の方法が解説されました。敵ロボットがアニメーション途中に、ユーザーが攻撃を加えても自然に反応を返したり、素早く動かしてもすり抜けることがない、倒れた状態から自然に起き上がる、衝突判定を状況に応じて切り替えて自然な動きを実現するなど、多くの調整が行われていました。4.15にも一部入っているとのことですが、4.16で使えるようになるのが楽しみです。

ライブリンクはモーションキャプチャデータや、DCCツールの動きをリアルタイムにエディタに流し込むことが出来るもので、アニメーションの調整やリアルタイムに動きを反映する際に活用できそうでした。

4.16のプレビューはもうすぐ公開予定なので、上記の機能を是非試して欲しいとのことでした。最後に新しいパーティクルFXシステムのエディタである、ナイアガラを紹介して講演を締めくくりました。途中映像の乱れがあり、中断を挟むなどトラブルも有りましたがとても便利に使えそうな機能が多く、早く試してみたい気持ちになりました。

モバイルゲームにもっとクオリティを!UE4を使ったハイクオリティなモバイルゲーム制作について

Indie-us Games 中村 匡彦 氏 の講演です。(スライドリンク)はじめにUE4のモバイルタイトルについて、そのクオリティと市場の評価が高いことについて紹介されました。特にリネージュ2レボリューションは、まだ韓国のみでのリリースにも関わらず、スマホゲームの売上世界一になったとのことでUE4製のモバイルタイトルが成功を収めていることが示されました。

モバイルゲームでは端末の多様性が問題になることが多く、特にOpenGL ES 3.1が使えるかどうかによって制約が大きく変わるとのことです。1年後には対応の端末は8割を超える見込みのため、今から作成して、1年後にリリースするとちょうど良いと話されました。

次に Galaxy S6 Edge(2015年4月発売)を用いてたUE4のデモ動作検証、パフォーマンスチューニングの具体例について示されました。モバイルの場合は強制的にForward Renderer になること、その場合はMSAAがオススメであること。モバイルプラットフォーム向けのポストエフェクトを使用すること。モバイル用のプレビューにてシェーダの複雑度を確認すること。Cull Distance Volumeによって遠くのオブジェクトを描画しない。自動LOD生成によるポリゴン数削減。デバイスごとの解像度指定、シェーダ、マテリアルサイズの削減など多くの最適化手法が示されました。

氏の端末での検証から、快適にモバイルでアクションゲームを遊ぶなら、描画ポリゴン10-20万くらいが理想であるとのことでした。その他にもデバッガの利用方法やDLCパッチ、GPSロケーションサービスの利用も可能であること、UE4で制作したモバイルゲームのバッテリー消費も極端なものではないことが示されました。

最後に、最新のUE4を使えばハイエンドモバイルゲームも比較的ラクに作れるので「作るならイマ!」という熱いメッセージが発信されました。UE4での高品質なモバイルタイトルが、日本でも数多く生まれていくのが楽しみですね。

リアルタイム3DCGを医療の世界へ!

株式会社サイアメント 代表取締役 瀬尾 拡史 氏の講演です。(本人によるTogetterまとめ)講演は、氏の自己紹介からはじまったのですが、中学生の時に同級生が3DCG制作に必要な知識を得るために、数学の教科書をLaTEXで書いてくれたという物凄いエピソードから紹介が始まり、東京大学医学部医学科卒業の医師であること、ノーベル賞受賞時の映像を制作したことや、木村カエラのCTスキャンを行ったことなど、非常に濃い紹介が行われました。

氏が行った、リアルタイム3DCGを医療の世界で活用した事例として、ひとつ目に心臓シュミレータ UT-Heartが紹介されました。はじめはプリレンダのフルCG映像を作り、専門家向けの数値データ可視化ソフトウェアで使用したとのことですが、心臓に特化した可視化は難しく、また特殊なUIでもあるため現場で使うのも難しかったとのことです。

また、2014年に作成した心臓シミュレータUT-Heartの可視化映像は、CGの採点を行う国際学会SIGGRAPHにてBEST VISUALIZATION OR SIMULATIONを獲得しました(講演でも再生された動画はこちら)が、映像は作り手の主観であり、ユーザーは再生、一時停止しか出来ません。ざっくりとした教育には良いが、現場でガッツリ使うには不足であると氏は言います。

実際に活用するには、医師が本当にみたい角度や断面をリアルタイムに、インタラクティブな操作で見えることが必要であり、その実現のためにUE4を用いて、iPad 上で動く心臓シュミレータを制作したとのことです。実現するために用いたテクニックを解説しながら、スマートフォンOS上で動作させる場合に、ジェスチャの取得や、カメラ、コンパス、スタイラスなどの情報取得ができることなど、開発補助環境の充実があれば、より開発を行いやすくなるため、UE4に是非対応してほしいとのことでした。

次に、気管支鏡シュミレータの紹介が行われました。異能Vationという国が認定する「変な人」にも採択され、その予算も活用して開発を行ったのが気管支鏡シュミレータとのことです。患者にとっては辛い検査である気管支鏡ですが、ベテランの医師でも時間の掛かる難しい検査であり、3DCGモデルを適切なUIを介して活用することで時間短縮が見込め、患者の負担を減らすことができるとのことです。

UE4は高画質3DCGリアルタイム描画エンジンと捉えることで視野が大きく広がる。医療の知識を知っている氏が本当に必要なものを開発することで「3DCG✕医療で大真面目に世界を変えようとしています」という力強い言葉で講演は締めくくられました。

少人数開発でもクオリティを諦めない – エンジニア視点から見る少人数開発の極意

historia Inc 原 龍 氏の講演です。(スライドリンク)講演ではAirtoneVRの開発を通して得た知見を元に、少人数開発の流れと、効率化のために実装した機能やツールについて、意識すべきポイントと共に語られました。

Airtoneの紹介から講演は始まりました。VRエアーリズムアクションゲームであり、10時間以上遊べるボリュームがあるとのことです。今回の Unreal Fest West 17でも出展を行っていました(プレイ動画はこちらです)  。開発期間は10ヶ月で4名からスタートし、最大で14名での開発を行ったとのことです。

重要なポイントとして「常に”最適な完成度”を目指すこと」が繰り返し上げられました。クオリティは出来る限りあげたいが、工数は無限ではないため、何が必要とされているかを明確にする要件定義が大切であると氏は述べます。

完成形のイメージが出来ない場合には、とりあえず「雑に作ってみる」ことが有効だが、その場合には「雑に作ってみる」ということを全員が理解する必要があるということが強調されました。雑でもいいから見せることの重要性を理解すること、また、後からしっかりと作る時間を取ること、確認したらGoの判断をだすことなどが理解の内容として示されます。

また、カスタムエンジンを用いる場合にはメリットとデメリットを理解して判断することが必要だと氏は言います。今回のケースでは、マージやメンテナンスのコストを下げるためにカスタムエンジンの対応を遅らせる決断を行ったとのことです。そのために画作りの抜本的な改修など、諦める部分についても明確にして判断を下したとのことです。

ツールとしてはチャートエディタやリップシンク用のものを作成し、それぞれにおいて必要なもの、諦めるものを切り分けて”最適な完成度”を目指したことが語られます。効率化のために活用したものとしては、プロシージャルメッシュを用いて頂点アニメーションすることで柔軟に形状を変化させることが出来るようになった例や、リズムゲームの醍醐味である音と演出の同期をWwiseの活用やマテリアルパラメタコレクションの活用があげられました。

Airtoneの開発における事例を元に、決断や活用技術が生々しく語られ、そこで得た知見が共有される貴重な場になったのではないかと思います。

 SWITCH & UNREAL ゲーム開発をもっとアンリアルに

Epic Games Japan 代表 河﨑 高之 氏、Epic Games Japan Senior Support Engineer 篠山 範明 氏、任天堂 業務部 技術渉外グループ 光吉 勝 氏、副島 佑介 氏によるセッションです。(automatonさん記事)このセッションではUE4がNintendo Switch のサポートが実現された経緯や、UE4での対応方法について語られました。

B2Bのカスタムライセンシー向けは既に昨年暮れから提供されており、スネークパスというタイトルでは7日間でPCからSwitchへの移行が出来たとのことです。EULA版のユーザー、インディーズ開発者向けは現在準備中であり、配布の方法を詰めている所とのことでした。

デモでは単純な実行であれば、プレイボタン(スイッチ)を押すだけで、実機で動作できること、おすそ分けプレイや複数のコントロール形式にも対応できること、レンダリングのデモが示されました。インディーズ・個人開発者向けにも環境が提供されるのが楽しみですね!

 RoboRecallで使われている最新のVR開発テクニックをご紹介!

Epic Games Japan 岡田 和也 氏の講演です。(PANORAさん記事)Robo Recall は Epic Gamesの最新VRゲームタイトルであり、3月1日にリリースされました。Touch購入者は無料でプレイすることが出来ます。また、Modkitもリリースされており、全アセット・コード・Mod配布ツールが無料で提供されており、日本語ドキュメントも公開されています。

これまでEpic Gamesが開発してきたVRタイトルでのノウハウが順番に紹介されていきます。Showdown、Bullet Trainでの工夫を踏まえて、Robo Recallで実現されたノウハウとして、テレポート時の移動方法や、インタラクションでの工夫、VRならではの上下も意識したゲームデザインや、スケール感を一致させるために行った工夫がイメージしやすい動画とともに説明されていきます。カプセルシャドウや視差マッピングを活用した疑似表現による負荷低減についても解説されました。

前半のまとめとして語られた「ユーザーの期待に答えつつ、その期待を超える」ことという言葉が印象深く残っています。後半では開発を行う指針としてのレギュレーションの大切さと、その基準を守るためのノウハウが詳しく語られました。

Robo Recall は標準のVR Ready PCよりも低い基準で、90FPSでの動作を目指す、かなり高い目標がありました。その目標を達成するためにレギュレーションが定められます。レギュレーションはアセット仕様の策定・最適化作業の指針になるため、開発の初期〜中期の段階で作成する必要があるとのことです。同じ段階でアートの方向性やクオリティも確立させる必要があるとのことでした。今回のイベントでも何度か名前の上がった「極め本」にもある通り、ワークフローを必ず2周回す大切さが語られます。

最適化処理としてはレンダリング方式の変更、Instanced Stereoscopic Renderingによるドローコールの削減、メッシュ結合とカリング効率の調整、Precomputed Visibility Volumesの設定、BPからC++ネイティブ化、Tickイベントの不活性化、オブジェクトのプール、Spawn タイミングのフレーム分散、Interaction ComponentのON/OFFなど非常に具体的な例が数多く示されました。本講演で公開されたノウハウが、多くの現場に役にたつと感じられる講演でした。

UE4 Petit Con 07

第7回 UE4 ぷちコン

http://historia.co.jp/ue4petitcon07 に応募しました。

今回のテーマは「サプライズ」ということで、「幸せな驚き」をキーワードにしつつ、これまであまり弄ったことのない、キャラクタのアニメーション制御の挑戦を目標に含めて制作を行いました。

前回のぷちコンに続きVR作品です。今回はゲーム要素は全く無い体験モノになりました。ハッピーサプライズなら、驚愕なまでに嬉しいプレゼントだろう!というところから発想を広げた結果、応募時の作品説明は以下のように書いてました。

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

正直、見返すとかなりむず痒い、恥ずかしい感じが多分にしますが、寝不足の勢いで実装してました。作品の動画はこちらです https://www.youtube.com/watch?v=vpCo1Gt0Q7Y

やったこと

目標においていた、アニメーション制御を中心にそれ以外にも個人的なトライが有りました。主なものを簡単に解説します。

アニメーション制御

Epic シモダさんの Qiita記事 を参考に、キャラクタの視線や姿勢の制御を行いました(ありがとうございます!)。主な制御は AnimBlueprint の Look At ノードで行っています。それぞれのボーンの設定値はQiita記事とほぼ同じですが、目の Skeletal Control は Look at Axis: Z で行いました。ちなみに、既存のAnimation Sequenceは良くも悪くも一切使っていません。

また、寄り目になってしまう問題があったのですが、てんちょーさんのお陰で解消(緩和)できました。感謝!

Unreal Ring 作成

UnrealRing

Oculus Medium で指輪の形を作って、BPのViewport上でロゴと組み合わせました。色は単色なので、Medium上では付けずに、StarterContentsのMaterialを使っています。MediumからUE4に持ってくる手順はこちらを参考にしました。

ステージ作成

DefaultMaterialの板なFloorで進めていたのですが、最後に、少し寂しいのと伝説の樹っぽいものを入れたくなったので草原にしました。Landscapeの作成は、ほぼ公式の解説通りの手順です。草を生やしすぎるとFPSが落ちたので、樹の側にだけ生やしました。

Asset活用

今回はMarket Placeの有料、無料のAssetを色々と使いました。有料の物は次のとおりです。

Nice to Have

もう少し調整したかったところや、反省点などをあげるとキリがないのですが

  • アニメーションを滑らかに
  • ステージは視界の端まで
  • 手のメッシュを ProteusTemplate の物にする
  • ライティングの調整

あたりは入れたかったところです。

おわりに

UE4ぷちコンを開催し、モチベーションを上げる機会を設けていただいたヒストリアさんに感謝です。今回の作品は[エントリーNo.46]としてこちらのページに掲載されています。

Grayちゃんモデル を使わせていただきました。らりほまさんに多謝!

UE4 Sapporo Meetup 25 Feb. 2017

logo_waifu2x_art_noise1_scale_tta_1_original

Unreal Engine 4 Sapporo Meetup! (2/25) を 2017/02/25 に開催しました。講演の内容や全体の雰囲気については、イベントページの各資料と Togetter を参照ください。

ここでは今回のMeetupで主題においた、交流中心の設計とその結果についてまとめたいと思います。

Meetupの動機

今回のMeetup開催の直接的なきっかけは、てんちょーさんが来月から東京へ就職するということで、札幌を離れる前にイベントをやりたいというものでした。もうひとつ、今回の設計について影響を受けたのはEpic Game Japanのコミュニティマネージャである今井さんがシェアした、「自称・ミートアップはもうやめよう!」というエントリからです。

札幌ではこれまで3回のUE4 Meetupが開催されています。講演が中心の開催が多く、第3回目では参加者との交流も図りたいと思い、パネルディスカッションの司会を行っていた自分が参加者へ話題を振るなどしてみたのですが、交流と呼ぶにはやりとりが少ないものでした(パネリストの方のお話は素晴らしかったので企画自体は成功したと思っています!)

地元でのUE4ユーザーがあまり増えていない実感も有り(GGJ札幌ではUnityのチームが多数)、参加型、交流型のイベントを行いたいと考えていたところに上記のエントリを見て、今度は”Meetup”をやりたい、と強く考えていました。

Meetupの設計

当日Meetupタイムのスライドはこちらです。おおまかな流れとしては4-5人のグループに分かれて、各人がテーマを出し合い、メンバーが話したいことを話す。20分でグループ変更、という流れです。ワールドカフェの進め方を参考にしていますが、参加者の動機や立場に多様性があると想定していたため、テーマを固定にはしませんでした。

大きな模造紙に書いていくのではなく、付箋に話した話題と、感じたことを書いていてもらったのも複数のテーマを話しやすくすること、準備の負荷を下げること。そして付箋で完結することによって、他のグループで話したこともみんなに壁に貼ってもらうことで共有できる形を狙いました。

他に考慮した点としては、始めに全員に簡単な自己紹介をしてもらうことで全員の顔と名前、参加の動機など簡単ではありますが全員のことを知った上でスタート出来るようにしたこと。話すのが得意ではない人が黙ったままにならないように話す人トークンを用意したこと(使用は強制しませんでした)。話すテーマが出しづらい人にサンプルを提示したことです。自分が参加したグループでは各人が上げたテーマを選ぶときに、自分以外が書いたテーマのひとつにマークを書く方式で決めましたが、それぞれのグループで詰まることなく進められていた様子でした。

Meetupの結果

参加していただいた方からは、かなり良い反応をいただけました。UE4をこれから触ってみよう!という方や、飲み会じゃないと話せないと思っていたけどイベントの中でも話せた!という方。何より自分も含めて楽しかったという声が多かったのではないかと思います。

話題に上がったことの分類や、視点、構造の分析などをしてみようかと思ったのですが、付箋とメモが並んだ画像を見ると、多くの話題がそれぞれに活き活きと話された様が浮かんで、これはこのままで良いのではないかと感じました。

今回は参加者の経歴やUE4の経験も非常に多彩でしたが、一定人数の経験のある、詳しい人がいて、直接質問をしたり、生々しい話を聞ける場にもなっていてよかったなぁと思います。

%e5%86%99%e7%9c%9f-2017-02-25-17-28-50

%e5%86%99%e7%9c%9f-2017-02-25-17-28-43

反省点としては、みんなから上がった話を全員で振り返ったり、共有する場があると、より良かったのではないかと感じています。次回の開催は未定ですが、また話したい、集まりたいという気持ちや声が高まったら、是非やりたいと思います。

最後に

これまで自分が体験してきたイベントやワークショップを参考に、なるべく参加者同士が交流できることを目的にMeetupを開催しました。言葉の定義上では「○○のやり方としては正しくない」というところもあると思います。改善点や、より楽しんだり、深く意見を交わせるような良いやり方があれば是非ツッコミいただければと思います。

また、このエントリではあまり触れませんでしたが、登壇いただいた3名、彼にしか出来ないセッションを繰り広げてくれたてんちょーさん。UE4Editorの拡張という初心者が挑むにはハードルがあるテーマに取り組んで発表まで仕上げてくれたmaoさん。道内とは言え遠路はるばる来ていただき、とても美しい Japanese Garden の制作についてお話いただいた、はのばさん。また、予定を調整して駆けつけていただいた今井さんに大感謝です。

最後に和牛先生に著書であるBlender本にいただいたスペシャルサインがとても素敵だったので、この画像で締めたいと思います。ありがとうございました!

Sign of @3dcganimation

Posted in UE4