TIS Advent Calendar 2020 の最終日担当の @xrdnk です.
緒言
軽く自己紹介を.
TISのインキュベーションセンターという部署でXR開発の仕事にしてます.
こんなののとかこんなものを作ってたりしています.
コロナ禍に入り,XR(AR/VR/MR)が以前より身近な技術になってきたと感じており,
XR開発をしてみたいと興味・関心を抱く方々が増えている印象があります.
本稿はそんな方々のためのUnity学習ロードマップを個人的にまとめてみた記事になります.
(※飽くまでも個人的です.これをやれ!という強制的な意味合いを持つものではありません.)
Unity ってなに
ゲームエンジンです.クロスプラットフォームに対応で,モバイル,ブラウザ,PCなどのゲーム製作,XR,アニメや映画製作に用いられたりしています.それほど機能が豊富ということです.
今回はXR開発向けのロードマップなので,主にXRに関わる部分だけ取り上げていきます.(とはいえゲーム開発知識を持っているとアドなのは間違いない.)
プログラミング言語は C#
C#でプログラミングをします.別言語に触れたことがある場合はすぐに取っ掛かりやすいですが,プログラミング初心者の方は1冊C#の本を進めるといいと思います.
幾つか出版されておりますが…,以下の本が初心者におすすめです.
シンプルでわかりやすく説明しています.
C#8まで対応しています.文章が多めで,少し難解な部分はあるかもしれません.
デリゲート,ラムダ式,イベント,非同期処理などの高度なプログラミングについての説明があります.
中級者向け?(こちら飛ばして,下に説明する本にすぐ入ってもいいかも)
Unity 2020.2 からは C# 8 が対応するようになっているので,C# 8 まで履修しているとよいでしょう.
C#のより深い知識が必要になる場面もあり,以下の本を読むといいと思います. [実戦で役立つ C#プログラミングのイディオム/定石&パターン 出井 秀行](https://www.amazon.co.jp/dp/B06WP7HJ27/) 約750ページで分厚いので全部でなくても,以下,やったほうがいいChapterを記します.- ラムダ式とLINQの基礎(後述のUniRx, UniTaskなどに関わる)
- 基本イディオム(null条件演算子,プロパティ,using文,キャスト etc.)
- 文字列の操作(Stringのメソッドたち,StringBuilder etc.)
- 配列とListの操作
- ディクショナリの操作
- ファイルの操作(IO操作)
- シリアル化,逆シリアル化(JSONのシリアライズはよく使います)
- LINQを使いこなす(後述のUniRx, UniTaskに関わる)
- 非同期/並列プログラミング(UniTaskに関わる)
Unity 最初の取っ掛かり
最初にUnity公式が出しているYouTube動画をご覧ください.
あなたもUnity、はじめてみませんか?(字幕版)
Unityの概要を凡そ把握できると思います.
次にまずUnityがどんなものか手を動かして覚えていきます.
初心者向けの本は色々あります.以下紹介しますが,1冊いずれかやればよいかと思います.
いわゆるひよこ本.
個人的にねこ本って呼んでる.
いわゆる和尚本.
上記3冊の本に比べて少しレベルが高い印象なので,いずれか1冊終わったらこちらをやるのもあり.
Unity 実践入門的な
Unityの参考書の問題として,中級者・上級者への道標となる参考書があまりない問題があったりします.
上の本1冊終えたら,スタジオしまづの嶋津恒彦氏のUdemyコースを幾つか行うとよいと思います.
セール時を狙えば1コース,1200円~1500円程度で購入できます.
個人的オススメコースは以下の通り.
2D実践入門向け.
3D実践入門向け.
ここまでの中級者向けの日本語コースはないと感じるレベルです.
ScriptableObjectやDoTween,ModelやViewの概念等を把握できたり,実践的なUnityC#コーディングを追えることができます.
(2021.03.28 更新)
実践的と言える本が最近出版されました.
著者の方々は Cyber Agent グループの方々で,実践的な内容を学ぶことが出来ます.
VR開発 最初の取っ掛かり
ここからVR開発,最初の取っ掛かりです.
正直この記事執筆段階では,UnityのVR開発本はないと思っています.
(あるにはあるけどUnityのバージョンが低かったり…個人的にうーんという感じのものだったり)
そこでですが,以下のUdemyコースをオススメします.
VR開発をやるからには,Oculus Quest / Quest 2 を所持しているとみなします.
VR Development Fundamentals With Oculus Quest / Quest 2 And Unity
全て英語ですが字幕付きです.動画を追って手を動かすだけでも把握できると思います.
ハリーポッターのクィディッチを題材に,Oculus Integration,XR Interaction Toolkitの使い方を説明し,
ジェネリックBeat Saberっぽいのを作りながら,Oculus Quest を用いたVR開発の事始めを身に着けることができます.
Multiplayer Virtual Reality (VR) Development With Unity
上のコースと同じ講師で,VR × マルチプレイ開発を身に着けることができます.
現在Unityでマルチプレイといえば,Photonがよく使われており,使い方も知ることができます.
コースではOculus IntegrationのAPIではなくXR Interaction ToolkitのAPIをメインで実装しています.
キャラクターの頭部や腕の動き,移動の同期,ボイスチャット機能などを学ぶことができます.
ここまでやれば,Quest / Quest 2 での開発は大丈夫だと思います.
AR開発 最初の取っ掛かり
iOSに対してはARKit,Androidに対してはARCore...という時代がありましたが,
現在はAR Foundationをまず触れるのがAR開発の初歩ではないかなと思います.
Mac機がない場合はiOS対応できませんが,Androidには対応できますので,Windows機があれば大丈夫です.
今現在出ているAR参考書なんですが,古いものでは以下の本が出版はされております….
ただ上記の本はAR Foundationが登場する前の情報になっており,今のUnity 2019 LTSでは対応していません.購入をおすすめしません.
以下の技術書がおすすめです.
日本語でAR Foundationを学べる本はこのじゅこやさんが出している本しか私は知らないです.
ARとは何か,開発環境の手順,サンプルアプリの作り方の説明も丁寧なので,まずは手を動かして一通りAR開発を知りたい方に打って付けです.
MR開発 最初の取っ掛かり
MR開発 = HoloLens開発 を前提に説明すると,Microsoftが出しているHoloLens チュートリアルをやるとよいかと思います.
つい最近 Microsoft Learn で Mixed Reality 入門チュートリアルも出てます.
Mixed Reality 関連の Microsoft Learn のまとめ
HoloMagiciansというHoloLensアプリ開発者グループみたいなのがありまして,
ここで登壇しているつよつよな方々の資料がとても詳しいので,そちらを参考にするのを激しくオススメします.
後はMixed Reality Toolkit(MRTK)に沢山触れればいいんじゃないかな….(投げやり)
MRTKのドキュメント,HoloLabの方々が翻訳して下さっております.(大変感謝)
Mixed Reality Toolkit Official Document
XR開発 もっといろいろ勉強したい場合は…
チュートリアル,基礎レベルまで終えたら,自分でオリジナルアプリを作りながら,
詰まったら調べる…を繰り返していくのがスキルアップへの道だと思います.
どうしても不安という方は,Unity Learn Premiumというのオススメです.Unity公式が出している学習コンテンツです.
こちら今まではUnity Personalだと閲覧可能なコースは限定されていたのですが
今年の春くらいからコロナの影響もあるのか,Unity Personalでも全部解放されるようになりました.
欠点といえばだいたい英語というところですが,Unityに触れる以上は英語は必須だと思いますので乗り切りましょう.
日本語で書かれているのもあります.
(追記)
ここ最近,Unity Premium の日本語対応されました.殆ど日本語で読めるようになっています.
初心者向け VR 開発入門:エスケープルーム
内容としては,VR Development Fundamentals With Oculus Quest / Quest 2 And Unity の前半と同じ感じです.
その他インプット
以下からはプラスアルファ要素になります.
ソーシャルゲームのクライアント入門以前
izmさんのこちらの記事がとてもタメになります.
[ソーシャルゲームのクライアント入門以前]
(https://neon-izm.github.io/before_join_socialgame/docs/)
UniRx/UniTask本
UniRx/UniTask完全理解 より高度なUnity C#プログラミング
とりすーぷさんのUniRx/UniTask本です.
UniRx, UniTaskのリファレンス本になります.
UniRxを利用すれば,Unity でリアクティブプログラミングが出来るようになります.
とはいえ,2023年現在は Rx は主流ではなくなりつつあります.
MVRPというデザインパターンを知っていればいい程度でよいかなと思います.
UniTaskを利用すれば,Unityでasync/awaitを使った高パフォーマンスな非同期処理を記述することができます.
(さようならコルーチン)
Extenject(旧 Zenject)本
いもさんのExtenject本です.
Extenject(旧 Zenject)はUnity用のDIフレームワークのライブラリです.
必須までは行かないんですが,DIを使っている現場では参考になる本でしょう.
Extenjectの使い方について日本語で書かれている貴重な本です.
VContainer
UnityでDIライブラリといえばExtenjectがメジャーでしたが,VContainerが最近登場しました.
Unity用 DI ライブラリの VContainerの webサイトができました。https://t.co/CmCzWTJPaS
— ハダシA (@hadashiA) December 11, 2020
README ペラ1だったドキュメントをこっちに移行しつつ、
日本語版も準備中らしい!
その他アウトプット
個人開発なんも思い浮かばないどうしよう…….でも何か作ってみたい…
そう思った場合は以下のゲームジャムに出てみるのはどうでしょうか.
1週間でUnityでゲームを作ります.別に締切過ぎても大丈夫.
Unityの新機能を試したり,アウトプットの機会の場として利用していいんじゃないんでしょうか.
ガチ勢がすごすごゲームを投稿しますが,気にしなくていいです.だいたい本業ゲームプログラマーなので….
基本的に3か月スパンで開催されている認識です.
clusterはマルチデバイス、マルチプレイのゲームを制作できるプラットフォームです.
2日間でclusterのワールド制作を行います.
今年夏と冬に開催されました.来年以降もやりそうな気配….半年スパンという認識.
clusterはCluster Creator Kitを利用して開発します.(C#ランライムスクリプトが使えない)
Cluster Creator Kitにはアイテム、トリガー、ギミック、オペレーションの4つのコンポーネントがあり,
これらを主に組み合わせて制作していきます.
3Dのワールド制作,レベルデザインのアウトプットの場としてうってつけです.
VRのコンテンツ制作にも生かせますし,つよつよワールドを作れたら,賞も貰えるチャンスもありますしね.
結言
以上,XR開発始めたい方への個人的Unity Learning Roadmap 2020でした.
全てこちらに記述されていることを実践しろといえばそうではなく,各個人参考程度になれば幸いです.
他にこんなのがあるよ!!これもおすすめだよ~~!!というのがあればコメント頂けると嬉しいです.