teriyaki note

好きなものはラーメンと将棋

【なるべく楽して】ゲームを製作・公開するまでの知見【Unity】

2018の大晦日unityroom にて3D脱出ゲーム「Pictures」を公開しました。

3D脱出ゲーム「Pictures」/ unityroom

簡単なプログラムなら組めるけど、グラフィック関係の知識は皆無。

そんな私が3Dの脱出ゲームをなるべく苦労せずに公開するまでの知見をまとめました。

  • ゲーム製作に興味がある。
  • プログラミングに興味がある。
  • Unityに興味がある。
  • でも苦労はしたくない。

そんな人が読んでみれば良いと思います。

1から100まで全部解説はできないので、足りない部分は調べながら補ってください。

制作に思い至るまで

私のプログラミングスキルは謙遜なしに普通です。

基礎的なところは分かるけど、複雑なアルゴリズムなどは扱えない。 AtCoder で言うと、C問題がちょうどいい難易度といった感じです。

この程度でも、ゲーム製作中にプログラミングで困ることはそれほど無いです。問題はグラフィックです。

過去数十年に渡るゲームの歴史で最も進化した部分はどこでしょうか?

おそらく答えはグラフィックです。

今やリリースされるゲームのほとんどが美麗なグラフィックでぬるぬる動作します。

ゲーム製作をしたい人にとってここが難関では無いでしょうか?

少なくとも私一人では、世の中で遊ばれているゲームほど綺麗なグラのゲームは作れません。 そもそも何がどうなってあんなにリアルになっているのか理解すらしていません。

それでも良いのです。今回はUnityというゲームエンジンを採用しましたが、 Unity は個人製作に非常に易しく、誰でも綺麗なグラのゲームが作れます。

Unity ってなに?

Unity とは無料で使えるゲームエンジンです。 そして、ゲームエンジンとはゲームを作るためのソフトです。そんな理解で良いと思います。

下の動画を見ると雰囲気が掴めるでしょう。

www.youtube.com

サンプルで動いているゲームはとても綺麗ですね。

すみません。さっきは綺麗なグラのゲームが簡単に作れるみたいに言いましたが、 上の動画ほど綺麗なグラフィックのゲームを作るのは簡単ではありません。

公式が公開しているようなゲームはプロがそれなりの人手と金と時間をかけて作っているので、クオリティが高いのは当然なのです。

大変なのは今回の主義に反します。我々はそこそこを目指しましょう。そこそこなら大丈夫です。

Unity でプログラミング

Unity でゲームを作るにはプログラミングが必要です。

ただ、よほどプログラミングに苦手意識がある人以外は大丈夫です。

普通のゲームならそこまで複雑なプログラムは必要ないからです。 実際、今回私が製作したゲームでも基礎的なところしか使いませんでした。

変数リストを理解していれば問題ないですし、構文もif文for文switch文 程度しか使ってないです。

クラス継承やコンストラクタなども使いましたが、調べれば山のように使い方が出てきます。

ここが大事な部分です。あなたが実装したい機能は既に誰かが作っています。 そして、そのやり方は解説されていると思って間違い無いでしょう。

それをパクれば良いのです。パクってるうちに自分でも書けるようになるのです。

最初からスマートにコーディングする必要は無いです。

冗長でも場当たり的でも動けば良い!動くのが大切です。 動かないのはゴミです。 スキルは長い時間をかけて、徐々に洗練していけば良いでしょう。

参考にするほどクオリティは高く無いですが、今回のゲームで作った機能などは当ブログの記事として残してあるので覗いてみてください。

teriyaki398.hatenablog.com

Unity でグラフィック

Unityアセットストアを活用する

Unity に触れたことがある人は知っていると思いますが、Unity にはアセットストアと呼ばれる素材の販売サイトがあります。

サイトに行けば分かりますが、ゲームに有用な素材などが大量に販売されています。
無料で使える素材も多いです。

ここから良い3Dモデルを探しましょう。これが一番早くて楽でクオリティも高いです。

例えばこれを見てください。

www.youtube.com

これは ArchVizPRO Interior Vol.6 という部屋と家具が内包された3Dモデルですが、今回のゲームではこれを使いました。

(通常価格50ドルとありますが、セールで半額になっていました。それでもまあまあ高いですが、 確実にそれ以上の価値があります。アフィリエイトでは無いのでリンクは貼りません。)

サイトで購入するとあなたのUnity で使えるようになります。

f:id:teriyaki398:20190101122025p:plain:w450

さらに、これらの3Dモデルは自由に使うことができます。 これらを好きに配置することで、自分なりの家が作れそうですね。

f:id:teriyaki398:20190101122631p:plain:w450

また、モデル以外にもマテリアル(テクスチャみたいな感じ)も自由に活用できます。

例えばUnity で下のような地面を作ったとします。無機質で真っ白な地面です。 (ゲームの種類によってはこれで良いかもしれませんが)

f:id:teriyaki398:20190101123220p:plain:w450

これに木目のマテリアルをつけると...

f:id:teriyaki398:20190101123349p:plain:w450

簡単にフローリングみたいな地面が作れます。また、石畳のマテリアルをつけると...

f:id:teriyaki398:20190101123500p:plain:w450

それっぽい地面ができました。

このようにUnity アセットストアで買ったものを活用することで、何一つ努力することなく、自分好みのゲームが製作できそうです。

巨人の肩に立つとはこのことです。

家具以外にも様々な種類のアセットがあるので、ぜひ一度アセットストアを見てみましょう。

全てを自分で1から作るのは大変です。カレーをスパイスの調合から作るようなものです。 市販のカレールーを買った方が簡単ですし、大抵の場合はそちらの方が美味しくできます。

Post Processing Stack を使う

Post Processing Stack とはその名前の通りポストプロセッシングを行うためのアセットです。 そしてポストプロセッシングとは、画面の見栄えを後から変える処理のことです。

Twitter やLINE で写真を送るときに後からエフェクトをかけて盛ったりしますよね? あれと全く同じことです。

現状Unity でポストプロセッシングを行うには、Post Processing Stack と呼ばれるアセットを用いるのが定番です。

assetstore.unity.com

これを活用することでグッと見栄えを良くすることができます。

Post Processing Stack には V1 とV2 がありますが、好きな方を使えば良いと思います。 良い感じにエフェクトをかけて見栄えを良くしましょう。

f:id:teriyaki398:20190102165357p:plain:w450
Post Processing Stack なし

f:id:teriyaki398:20190102165413p:plain:w450
Post Processing Stack あり

Post Processing Stack v1 を使おうとすると、MinAttributeがどうとかいうエラーが出ます(ver. 2018.3.0f2)

PostProcessing/Editor/PropertyDrawers/MinDrawer.cs 内のMinAttribute と書いてある箇所を全て UnityEngine.PostProcessing.MinAttribute に変更すると動作するようになります

これだけで、自分で全て製作するよりはずっと見栄えの良いゲームができると思います。

Unity で作ったゲームを公開する

作ったゲームを誰かに遊んでいただけるというのはとても嬉しいことです。

コミュニティの活性化にも繋がるので、クオリティの高い低いに関わらずぜひ公開しましょう

その公開の場としてunityroomがあります。 非常に簡単に投稿できる上に、安定してユーザーが集まっています。

無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう

ただし、私が今回投稿したゲームはあまりにも美麗なモデルを使いすぎてめちゃめちゃロードが長くなってしましました。 反省点ですね。

他にはAndroidiOS アプリとして、Playストアなどに公開することもできます。

unityroom よりは若干敷居が高いので、初めての人はunityroom が良いと思います。

(随時更新予定)