>100 Views
July 15, 17
スライド概要
2016/6/25に開催された関西ゲーム勉強会のスライドです。
講師:池和田 有輔(ユニティ・テクノロジーズ・ジャパン合同会社)
リアルタイム3Dコンテンツを制作・運用するための世界的にリードするプラットフォームである「Unity」の日本国内における販売、サポート、コミュニティ活動、研究開発、教育支援を行っています。ゲーム開発者からアーティスト、建築家、自動車デザイナー、映画製作者など、さまざまなクリエイターがUnityを使い想像力を発揮しています。
Unityの特性を生かしたチーム編成とサービスの導入 ハッシュタグ : #kgstudy ユニティ・テクノジーズ・ジャパン 池和田 有輔
池和田 有輔 ユニティ・テクノジーズ・ジャパン エバンジェリスト Unityに参加したのは年明けから それまでは広告制作やWEB制作を中心としたデザイナーでした フリーランス歴15年で、会社勤めの経験はあまりありません
ダンシトイレ: カンシ2
RÉPUBLIQUE 米シアトルのCamouflaj社が制作したステルス・アクションゲーム。 iOS、Android、PC/Mac (Steam)、PS4で展開 ようやく日本語でも遊べるように! UIのデザイン・実装全般を担当。 大部分がNGUI、一部uGUIで実装。 プロジェクト後半は、プラットフォームごとの差をどういった形で埋めるかが最大の課題だった。
UIデザイナーとディベロッパーのやりとりでよくあること
プランナー ディレクター UIデザイナー Unityエンジニア サーバエンジニア 3Dアーティスト レベルデザイナー
デザイナーがUIを上げてくれました
INDIANA JEREMY
実装よろしく! まかしとき! UIデザイナーくん エンジニアくん
JEREMY INDIANA
UI、パースの影響受けるようにして欲しかったんだけど… え、そうなの? UIデザイナーくん エンジニアくん
一定距離以上カメラから離れたらUI消さなあかんで! おっけ。文字とかつぶれちゃうもんね UIデザイナーくん エンジニアくん
この時点で作るべきもの JEREMY INDIANA
これWorld Spaceにすべきか? でも距離近い時拡大しすぎても変だしCanvas増やしたくないし UIレイヤに置いときたいし… 正解はこれだよな… カメラ距離によってスケール変えて対応すべきか… 悩めるエンジニアくん
スケールを変えて対応しました しかし別の問題が
なんでキャラが遮蔽物の向こうにいるのにUI残ってんの… え、ダメだった…? うん。キャラ見えなくなったらUIは消しとこうぜ! UIデザイナーくん エンジニアくん
やっぱWorld Spaceにすべきなのか? でもUIレイヤに置いておきたいよな… 悩めるエンジニアくん
↑こうするんじゃなくて、全体がフェイドする感じでOK? 全然おっけー!てか、むしろそうすべき UIデザイナーくん エンジニアくん
これならUIレイヤのままいけるぞ ホッとするエンジニアくん
フェイドさせて対応しました しかしまた別の問題が
INDIANA JEREMY
なんで爆風エフェクトの手前にUIだけ残ってんの… え、ダメだった…? うん。キャラ見えなくなったらUIは消しとこうよって確か前にも言ったよね?? UIデザイナーくん エンジニアくん
エフェクト表示中は一時的にUI消そう UIデザイナーさん正直ちょっとやりにくいなあ… ていうか俺、なんか責められてる? ちょっぴり悲しいエンジニアくん
一時的にUIを消して対応しました しかしまた別の問題が
INDIANA JEREMY
あのさあ、今度はfogの向こうにUIだけ残ってんだけどなんなの? あ、そうだね…ごめんね UIデザイナーくん エンジニアくん
World Spaceも検討した方がいいかな… 実装見直したいから少し時間かかってもいい? しょうがねえな… UIデザイナーくん エンジニアくん
うーんどうしよう うーんどうしよう 追い詰められたエンジニアくん
問題、その解決
不毛なやりとりはなぜ起きるのか UIデザイナー側の問題 • 様々なケースが考慮されていない • 仕様書がなく、言葉で伝えきれていない。確認されるべきことが確認されていない • 「絵からわかるでしょ」という思い込みがある • Unityでどう実装するかを理解していない • 工数が想像できず「簡単な修正」「時間を要する修正」の判断ができない。 エンジニア側の問題 • 仕様を確認していない。 • Unityでどう作るかを説明していない。
問題の整理 UIデザイナー側の問題 • 様々なケースが考慮されていない • 仕様書がなく、言葉で伝えきれていない。確認されるべきことが確認されていない • 「絵からわかるでしょ」という思い込みがある • Unityでどう実装するかを理解していない • 工数が想像できず「簡単な修正」「時間を要する修正」の判断ができない。 エンジニア側の問題 • 仕様を確認していない。 • Unityでどう作るかを説明していない。 コミュニケーションで解決可能
解決するためには、考えの差を埋めよう 半透明大好き! 半透明滅びよ! それぞれの言い分は至極もっともです しかしお互いの事情がわからないと不信感が生まれやすい
アーティストもUnityを使おう Unityを使わないと分からないことはとても多い • UIのデザインに必要なUnityの知識例 • 基本コンポーネントだけで組めるUIの把握 • どんなUIが作りやすく、また作りにくいのか • 圧縮アリゴリズムによる画質劣化の傾向 • 例えばどういう絵だとブロックノイズの乗りやすいかなど • モディファイアでできること、シェーダでできることの把握 わからないこと、説明されてないことは不信感にもつながる
アーティストもUnityを使おう アートワーク制作をDCCツールに留めておくことはできない • パーティクルを使った演出 • ポストエフェクト (Image Effect) の設定 • その他エフェクト全般 • リアルタイムライティング • オーディオミキシング これらがエンジニアの役割になってしまうと、完成度を上げるのは難しい
ソースコントロールを選ぶにあたり それぞれ一長一短ではあります • Unityで一般的に使われるのはGit、SVN、Mercurial、Perforceの4種類 • 個人的に、現状一番アーティストと協業しやすいのはPerforceだと思う • 何かと衝突しやすいシーンファイルなどは、ロック (Check In) してしまえば他のメンバーはローカルでの変更さえ出来なくなり、未然に事故が防げる。 • 問題点:ライセンス料、用語が独特、Unityエディタのツールがイマイチなど メンタルな理由で二の足を踏むのは勿体無い • 「なんか変なことやって迷惑かけたくないなあ」という気持ちは捨てよう。
Unity Collaborateでできること • Unity5.4から搭載されるUnity Collaborateは、ソースコントロールの概念をつかむためにはとても有用なサービスです。 • 開始方法はエディタ上でStart Nowを選択するだけ。 • サーバ常にプロジェクトが展開され、チーム内に共有できます。 • できること • 追加したものと変更されたものをまとめてパブリッシュ(コミット)する。 • サーバ上のものをまとめてワークスペースに反映させる。 • マージは実質できません。この世界には白か黒しかありません
アーティスト向けツールを充実させよう • エディタなど拡張により、開発者もアーティストをサポートしよう。 • MaterialEditorでシェーダのインスペクタカスタマイズもできる。 • ツールの制作が得意なエンジニアさんがいると協業はとてもはかどります
個人的に、Unityを使う人が多ければ多いほどプロジェクトはうまく行くと思います
ディレクターあるいはプランナーさんのためのUnity
ゲーム・プランニングについて思うこと 作らずには始まらない • 根源的な話ではありますが、インタラクティブコンテンツの良し悪しを、実際に作らずして判定するのは無理があります。 • 実際に試してみるまでわからないことが多く、トライアンドエラーやプレイテストが必要になります。 「面白いのか?」「使いやすいか?」「受け入れてもらえるのか?」 • 判断するには、企画書ではなくモックアップを作るのが合理的といえるでしょう • この場合のモックアップは「動く企画書」とも言えます
ことタッチデバイスではモックアップが重要だ データ・資料がない • 例えば、正確なタップが要求されるゲームをPC版に移植した場合、クリック操作で難易度がどこまで変わるのかなどはテストしないと判定しにくいと思います。 • 度重なるプレイテストによって一定の解を得るしかないと思います トレンドが移りゆく • 昨今、リストビューでは「引っ張ってリロード」などが一般的ですが、このような操作の一般化はうつろいゆくものだと考えられます。
例えばこんなUIを作りました 特徴的なことが幾つかあります • 下に引っ張って戻る • メンバー選択画面では、右フリックでアクティベート • その状態で左右フリックで解除 そもそもの目的は「これは使いやすいか?」「受け入れてもらえるのか?」を測りたかった • まさしくモックアップです。 https://github.com/unity3d-jp/DojoUI1
モックアップはどのように作られるべきか その1:ラピッドプロタイピングツールを使う • 特にUIプロタイピングツールは今、花盛り • 先行しているInVision, Marvel, POPにも強力すぎるライバルたちが… • Google: Pixate • Adobe: Experience Design • Facebook: Origami • ざっくり言うと、パワポとかKeynoteに機能追加したような感じ • 基本的なUIのシミュレートやページ遷移が可能なので、さながらの感じできる • 前述したUIくらいなものは、演出面を除けばサクッと作れるはず
モックアップはどのように作られるべきか その2. Unityを使う • Unityは強力なラピッドプロタイピングツールでもあります。 • イテレーション、あるいはインクリメンタルな開発スタイルに最適化され、そのフローに沿うことが最適な使い方だと考えられます。 • こう言っちゃなんですが、とりあえずプロトタイプ制作にUnityを使い、プリプロダクション以降は他のエンジンを検討しても良いのではと思っています。
イテレーション プレイアブルなモックアップ作成 完成度を上げる 完成度を上げる 完成
イテレーション
インクリメンタル 重要なシーンやステージの作成 やや重要なシーン/ステージ それほど重要でない部分 完成
インクリメンタル
旧来の作り方 ゲームシステムを作る 組み込み 完成 マスターデータを作る ※ Unityを用いた開発現場では絶対にやるべきではありません
旧来の作り方
イテレーション開発に特に適したゲーム 作るものを決めるにあたり、ソフトウェアの思想ではなく「機能」にフォーカスしてしまいがちだが、本来のあり様を考えるとこうなるのでは ○ 試行錯誤すべきゲームシステム・メカニクス ○ 斬新なアートワーク ○ 凝った演出、エフェクト ○ ボトムアップ型の開発スタイル
ただし例外もある • 日本的なアドベンチャーゲームはストーリードリブンかつ類型的 • しかし専用のアセットがあり、開発は比較的容易といえるでしょう
モックアップはどのように作られるべきか Unity Analyticsの活用 • プレイテストは重要です。 • 先のUIでは選択キャラの解除を左右フリックで行えますが、これはテストで必要性に気がつきました • 逆に、テストにより不要であることに気がつくことも多々あるはずです。 • Analyticsはテストの充実化を図るツールとしても利用可能です。
Unity Analyticsでできること
• 動向の分析サービスで、ブラウザ上に結果が表示される
• ユーザーの端末情報や地域のほか、任意のタイミングでカスタムイベントを仕込める
• Dictionary型でイベントデータを作成。Keyの型はBoolean、文字列、数値。
• 数値は平均や合計を自動的に割り出してくれる
Analytics.CustomEvent("gameOver", new Dictionary<string, object> {
{ "alive", isAlive },
{ "coins", totalCoins },
{ "activeWeapon", weaponID }
});
Unity Analyticsでできること • カスタムイベントでわかるものの一例 • アプリが遊ばれる時間帯集計 • 一回あたりの平均プレイ時間集計 • 総プレイ時間集計 • プレイヤーの離脱率、離脱しやすいポイントの調査 • 好まれるキャラクター、人気のないキャラクター集計 • チュートリアルを完了するまでの所用時間調査 • アプリ内課金の組み込み (Unity In-App Purchase) • ヒートマップ (ベータ版)
Asset Storeも活用しよう • ユーザー間でゲームに使用可能なあらゆるアセットデータの売り買いができる • 個人開発のちょっとしたプラグインから大規模なゲームから切り出されたステージに至るまで、様々なものが売買されている • リソース系:モデルデータ、アニメーション、テクスチャ、サウンドなど • プラグイン系:各種ライブラリ、エディタ機能拡張、ネイティブプラグインなど • その他:チュートリアルプロジェクトなど • 日本のUnityも無料配布してます(自分も個人的に売ってたりします)。 • 特定カテゴリ以外のものはプロジェクト内でシェア可能です。 • まだまだ進化します!乞ご期待!
ターゲットデバイスで必ず確認しよう
確認を怠ると面倒なことになりがち • Unityエディタでは動作する/表示するのに、実機ではうまくいかないケースは多々あります。 • しかしビルトには一定の時間がかかり、その間作業を止めてしまうのは効率的とは言えません。 • 多くの開発会社ではビルトマシンを用意し、自動化を行っているとは思いますが、Unity Cloud Buildを使えば低コストで継続的なビルドが可能です。 • いわばクラウドに投げることで解決しようと言う話ですね。
Cloud Buildでできること • クラウド上で自動ビルドするシステム • 対応プラットフォームはiOS / Android / WebPlayer / WebGL / Mac / Windows / Linux • WindowsのみでもiOSアプリが開発可能(ただしiOS Dev Programアカウントを持っていれば) • Git、SVN、Mercurial、Perforceなどと併用して使うことが前提。 • Unity Collaborateを使うのがお手軽 • リポジトリの更新を行うと勝手にビルドが始まる。 • Personal、Plus、Proで制限がリポジトリの容量制限が緩和される
Unityサービスを使い、より良い開発体験を! 今後のサービスの拡充にもご期待ください
Thank you!