マンガでわかるUnity

もんりぃ先生と湊川あいによる、マンガ + 実践で楽しくゲーム制作するブログ。

#マンガでわかるUnity 第1話「Unity ってなあに?」

Webデザイナーを目指す普通の大学生、わかばちゃん。今日が提出期限のレポートがあるようですが……!? f:id:llminatoll:20180712173935p:plainf:id:llminatoll:20180712173940p:plainf:id:llminatoll:20180712173945p:plainf:id:llminatoll:20180712173955p:plainf:id:llminatoll:20180712181927p:plainf:id:llminatoll:20180712174145p:plainf:id:llminatoll:20180712181921p:plain

Unityってなあに?

Unity *1 とは、米国カリフォルニア州サンフランシスコに本社を置く Unity Technologies 社が開発しているゲームエンジンです。

2005年に WWDC: Worldwide Developer Conference *2 でバージョン 1.0 が発表されて以来、幾度となくバージョンアップが重ねられ、2018年7月時点で 2018.2 が最新バージョンとしてリリースされています。

▼これがUnityの操作画面だ Unityの操作画面

Unityの活用事例

Unity で作られたゲームにはどのようなものがあるのでしょうか。 一例を挙げてみます。

これらのゲームは iOS / Android 向けにリリースされているものですが、PlayStation 4Wii UXbox OneNintendo Switch といったコンソールゲーム機向けにリリースされているタイトルもいくつか存在しており、さらに Steam などの PC ゲーム配信プラットフォーム向けにリリースされているタイトルも多数存在しています。

f:id:llminatoll:20180712174618j:plain
私が知ってるゲームもいっぱいある!Unityを使いこなすとこんな本格的なゲームが作れるんですね。

f:id:llminatoll:20180712174958p:plain
最近はその有用性から、ゲーム以外にも様々な産業分野で使われはじめているんだよ!

  • 災害シミュレーション
  • 医療分野における手術シミュレーション
  • 車などの工業デザイン

f:id:llminatoll:20180712174618j:plain
へぇー! Unityの活用範囲ってゲームだけじゃないんだ。可能性が広がりますね。

Unityって何がスゴイの?

Unityが登場する以前は、個人が「ゲームを作りたい」と思っても、次のような機能をイチから作るところから始めなければなりませんでした。

  • 画像や文字などを描画
  • 音声を再生
  • 3D モデルの空間上での論理的な配置を管理
  • ゲーム内で用いる物理演算のシミュレーション
  • ゲームコントローラなどからの入力を受け付け
  • 外部のデバイスやサーバとの通信
  • etc...

Unityは、これらの機能をはじめからフルセットで用意してくれているのです。

f:id:llminatoll:20180712174958p:plain
ゲームエンジン』を一言で表すと、これらのコンピュータゲームを作るための前提となる仕組みを提供する統合開発環境と言えるね。

もちろん、Unity が世に出るずっと前からコンピュータゲームは存在しており、これらは各ゲーム会社が自社開発したゲームエンジンを使って開発されていました。

Unityの哲学

さて、各ゲーム会社により自社開発されたゲームエンジンは、基本的にはその会社に属していない限り利用できません。

これは、一般のゲームクリエイターがゲーム開発を行うにあたって、とても高いハードルになっていました。

そんな中登場した Unity は「ゲーム開発の民主化: Democratize Game Development」という哲学を掲げており、Unity Technologies の CEO である David Helgason 氏の講演などでも度々このフレーズを耳にすることができます。 彼らは Unity をゲーム開発を志す誰もが使えるゲームエンジンと位置づけています。

Unity は、この哲学に沿って、ゲームクリエイターが高度な技術を学習せずともゲーム開発を行えるような機能を続々とリリースし続けています。

また、ゲーム開発・運営を行う上で欠かせない周辺環境の整備という面からもゲームクリエイターを支えてくれています。 一例を挙げると次のようなものがあります。

  • ゲームの利用動向を分析するための仕組みの提供
  • ゲームのパブリッシング補助サービスの展開
  • 開発者コミュニティの支援
  • etc...

さらに、Unity には AssetStore(アセットストア) という仕組みがあり、この仕組みがゲーム開発の大きな助けとなっています。 AssetStore とは、一般の Unity ユーザが作成した 3D モデル・2D 画像・BGM・効果音・ビジュアルエフェクト・スクリプトライブラリ・開発ツール といった様々な Asset が入手可能なコンテンツマーケットです。 Asset の作成者のことを Asset パブリッシャーと呼び、各 Asset は無償のものもあれば、高いものでは $750- もするものまで、様々な価格が Asset パブリッシャーによって設定されています。 ゲームクリエイターは、AssetStore を使って Asset を入手することで、自身が得意としていない領域の補完をしながらゲーム開発に集中することができるのです。

Unity AssetStore(アセットストア) f:id:llminatoll:20180712184804p:plain

Unity公式による3Dモデル・ゲーム素材の提供

Unity公式キャラクター「Unityちゃん」
Unity公式キャラクター「Unityちゃん」
Unityちゃんライセンスの元、3Dモデル、ちびキャラ、2Dイラスト、ライブステージ、ボイスなどのゲーム制作に使えるデータが配布されています。
Image from Gyazo

Unityでできること

では実際に Unity を使うとどのようなことができるようになるのでしょうか。

Unity には数多くのゲーム開発・運営のための機能が備わっていますが、重要な機能は次の2点に集約されます。

  1. 画像・音声・動画・3D モデル *3スクリプト・シェーダ *4 といった、あらゆるゲーム用の素材を組み合わせてゲームの世界を構築するための Editor
  2. 組み合わせられたゲームの世界をプレイするためのパッケージを様々なゲームプラットフォーム向けに出力するビルドプログラム

それぞれについて深掘りしていきましょう。

まず、1. の Editor についてですが、これはインストール後に起動するアプリケーション *5 そのもののことを指します。

その名の通り、ゲームを Edit するためのアプリケーションで、Editor が提供する様々な機能を駆使してゲームの世界を作り上げるために存在しています。

Editor によって内部的に Unity が扱いやすいデータ形式に変換された素材を、後述の Scene View などでグラフィカルに配置・編集していきます。 なお、この素材のことを Unity の世界では Asset (アセット)と呼びます。

次に 2. のビルドプログラムについてです。

Unity では Unity 2018.1 の時点で以下のゲームプラットフォームへの出力をサポートしています。

非常に多くのプラットフォームをサポートしています。 スクリーンが付いているデバイスすべてをサポートしているのではないかと思えるほどです。

Editor で組み合わせられた Asset 群によって構成されたゲームを、これらプラットフォームが指定するフォーマットに変換してプレイできるようにすることをビルドするといいます。

このビルド先のプラットフォームが非常に多いことや、新しいゲームプラットフォームが発売された際のサポートの早さなどが、Unity の人気が高い理由の一つに挙げられます。

Unity でできないこと

Unity はゲーム開発・運営のための統合開発環境ですが、できないことが幾つかあります。

  • 画像を作る
  • 音声を作る
  • 3Dモデルを作る
  • スクリプトを書く
  • シェーダを書く
  • ビルドされたパッケージを各プラットフォームのマーケットにパブリッシュする

Unity にはベクターグラフィックやピクセルグラフィックを描くための機能は備わっていないため、Adobe IllustratorAdobe PhotoshopGIMP などに代表されるグラフィック作成用アプリケーションを用いて作成された画像ファイルを Texture Asset として取り込む必要があります。

同様に音声ファイルをオーサリングする機能も備わっていないため、Steinberg CubaseAudacity などに代表される DAW: Digital Audio Workstation アプリケーションを用いて作成された音声ファイルを AudioClip Asset として取り込む必要があります。

3D モデルは Autodesk MAYA や Autodesk 3ds Max、Blender などに代表される DCC *6 アプリケーションを用いて作成された FBX *7 などを Model Asset として取り込む必要があります。

そして、意外に思うかもしれませんが、Unity 自身にはスクリプトやシェーダを書く機能も備わっていません。 Unity 2018.2 時点では C# でコードを記述可能 *8 になっており、Visual Studio や JetBrains Rider などの IDE *9Visual Studio CodeAtom秀丸エディタやメモ帳など、テキストを記述可能なあらゆるアプリケーションで書かれたコードがコンパイルされ Script Asset として取り込まれます。 なお、Unity 2018.1 において Windows 版は Visual Studio 2017 Community が、macOS 版は Visual Studio for Mac が、それぞれ無償で追加インストール可能になっています。*10

更に、ビルドにより生成された成果物を AppStore や Google Play などに直接アップロードすることもできません。 また、プラットフォームによっては別のアプリケーションを用いてビルド成果物を再変換 *11 する必要がある場合もあります。

まとめ

Unity がゲーム作りのための基本機能を提供してくれるおかげで、ゲームクリエイターは以下のようなゲーム作りの本質に集中できるようになるのです!

  • ユーザを引きつけるような絵・3D モデル・エフェクトなどの制作
  • ユーザの心を揺さぶるような音楽の制作
  • ユーザを夢中にするゲームロジックのプログラミング

次回予告「第2話:ゲームを作ってみよう!」

f:id:llminatoll:20180712180004j:plain
あの〜、Unityが何かはもうわかったので、早くゲームを作ってみたいんですけどぉ……
f:id:llminatoll:20180712174958p:plain
おおっ、いいねぇ! 僕もそう思っていたところだよ。じゃあ次から早速ゲームを作ってみよう!

f:id:llminatoll:20180712180004j:plain
ええっ!? いきなりですね!?

f:id:llminatoll:20180712174958p:plain
じゃあ、まずはここからUnityをインストールしておいてくれるかな。

Unity ダウンロードページ(公式) Unityダウンロードページ

f:id:llminatoll:20180712174618j:plain
更新を受け取るには読者登録しておくと便利だよ!

f:id:llminatoll:20180712181334p:plain


わかばちゃんのマンガでわかるシリーズいろいろ

マンガでわかるDocker

ご要望の多かった「マンガでわかるDocker」描きました! ダウンロード販売中です。 note.mu 技術書典5に当選しましたら続編の「マンガでわかるDocker②」の制作も予定しています。

マンガでわかるGit

個人ブログから始めたシリーズが、リクナビNEXTジャーナルさんでWeb連載。
こちらからお読みいただけます:マンガでわかるGitの記事一覧 | リクナビNEXTジャーナル
2017年4月にわかばちゃんと学ぶGit使い方入門として書籍化されました。 webdesign-manga.com togetter.com

マンガでわかるScrapbox

Scrapboxにて、Scrapboxの便利な使い方がわかるマンガをWeb連載中です。現在1〜6話まで無料公開されています。(2018/7/13時点)

goo.gl goo.gl goo.gl

マンガでわかるGoogleアナリティクス

KOBITブログにて、アクセス解析ツール「Googleアナリティクス」「Googleタグマネージャ」のマンガをWeb連載中です。現在1〜5話まで無料公開されています。(2018/7/13時点)

kobit.in kobit.in

他にもある!「わかばちゃんと学ぶ」シリーズ

マンガでわかるWebデザイン・マンガでわかるGit・マンガでわかるGoogleアナリティクスは書籍化しました。全国の書店・Amazonで発売中です。

*1:かつては Unity3D と呼ばれていたこともありましたが、現在は Unity が正式名称となります。

*2:Apple, Inc. が毎年開催している開発者向けのカンファレンスイベント

*3:人物や物体の立体構造を表現するためのデータ構造のこと。

*4:描画を司る GPU: Graphic Processing Unit に対して「どのように描画をするのか?」を指示するためのプログラムのこと。

*5:Windows であれば Unity.exe / macOS であれば Unity.app

*6:Digital Content Creation: 3D モデル制御やアニメーション作成を行うためのアプリケーションのこと。

*7:3D モデルを取り扱う DCC アプリケーション間でデータをやり取りする際に用いられる汎用フォーマットのこと。Filmbox の略。

*8:Unity 2018.1 までは UnityScript という JavaScript に似た言語が利用可能でした。また、Unity 5.0 より前は Boo という Python ライクな言語も利用可能でしたがいずれもサポートが打ち切られています。

*9:Integrated Development Environment: プログラムの記述やデバッグなどを行うための統合開発環境のこと。

*10:Unity 2017.1 までは MonoDevelop-Unity という IDE が同梱されていましたが、最新の言語仕様への追従が難しくなったなどの理由により Unity 2018.1 より同梱されなくなり、macOS 版では後継 IDE である Visual Studio for Mac が選択可能になりました。

*11:例えば iOSXcode を用いてビルド・アーカイブをしないと AppStore に公開するためのパッケージが作成できません。