読者です 読者をやめる 読者になる 読者になる

テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Unity「ゲーム 作り方」

「ゲームを作れるようになりたいのですが、どうすれば良いですか?」と以前聞かれたので、「ゲームを作った事の無い人」が「ゲームを作れるようになるにはどうすれば良いのか」に思ってることをまとめてみようと思う。


また、下の記事が非常に良い内容だと思う。まだ読んだことのない人は是非に。
俺式4.0 :: 25 歳くらいのゲームプログラマの人がやるAdobe AIR を使った比較的真っ当なゲーム開発
特に「1. 覚悟を決める」と「2. 知ることは簡単ではないことを知る」と「10. 人に見せる」の項目は是非読んで欲しい

もう一つのお勧めはコレ。
uinyan.com

なお、今回はUnityを使用する前提で話を進める。
Unity以外を使用する場合はHSP3enchant.jsUE4をお勧め。とにかくセットアップが簡単で成果物が即見れるもので、自分の行った変更が簡単に確認出来る物が良い。あと出来るだけググって情報が得られるもの。もしくは友人がやっているものだ。

逆に導入手順が複雑なものやウィンドウを出すのに色々と手間が必要な物は最初は止めておいた方が良いと思う。また一人で詰まった時に作業が反映されず誰にも聞けないのは本当にきついので、そういった開発環境は最初にやる物としては避けた方が良い

目次:

1. チュートリアルをやる

スクリーンショット 2014-02-16 13.42.42
何よりも先に、チュートリアル適当な物を作るべきだ。確かにツールの使い方を知らなければ話にならないが、マニュアルを読んでたら絶対飽きる。これは難しい英単語や一生使わない数学の公式を覚えるようなものだ。何故その機能が必要になるかは、実際やってみないと分からないし、実際多くの機能は使わない。
機能を眺めたり最適化といった事は全部後回しにして、指標とする「動くゲーム」を用意すべきだ。近くでワークショップやってたらそっちに行って作り方を聞くのも良いし、勉強会等で1日でガっと終わらせても良い。

チュートリアルとしては、以下のサイトがお勧めできる。

Unity入門 (全26回) - プログラミングならドットインストール

ドットインストールは、1回約3分のチュートリアル動画だ。
Unityの簡単な操作を説明してくれる。

Unity - Learn - Modules
Unity公式のチュートリアル動画。
内容は英語だが、Youtube翻訳で日本語字幕が付けられる。

iPhoneゲームを20分間で作る【メダルプッシャー編】 ‐ ニコニコ動画:GINZA
メダルプッシャーを作る動画だ。
多くの人がコレを手本としてゲームを作ったと思う。ググれば文字おこし版とかも見つかるかもしれない。

Home · unity3d-jp/FirstTutorial Wiki · GitHub
所謂「玉転がし」のチュートリアルだ。見た目はショボいが、Unity的に作られている。

Home · unity3d-jp-tutorials/2d-shooting-game Wiki · GitHub
シューティングゲームチュートリアルだ。

unityを始めてみよう: おじさんのプログラミング
Unityのサンプルプロジェクトや独自プロジェクトの作成手順を絵付きで説明してくれるサイト。

他にも「Tutorial Unity」等で検索すれば、結構色々なチュートリアルが見つかる。
なお、チュートリアル一つを最後までやれば他をキッチリやる必要は無い
とにかく手元でゲームの形を動くものをまず用意するべきだ。

2. 検索の方法を知る

Unityは広く使われているエンジンだが、どんな情報でも検索すれば一発で見つかるわけではない
例えば「Unity STG 作り方」みたいな検索をしても、自分のほしい情報は見つからないかもしれない。ましてや「Unity グレイズ」とか打っても実装方法なんて出てこない。
ではどうすれば良いか

スクリーンショット 2014-02-17 23.20.42

何のことは無い、ゲームとは複数の機能の塊だ。ありとあらゆるゲーム(やシステム)は、単純な機能の塊で成り立っている。分解していけば、必ずシンプルな機能にたどり着く

つまり作りたいゲームがあった場合、作りたい機能は何かをまずは定義し、理解、分解し、分からないことは検索する事だ。そうすれば何を探せば良いか判る。そして、ピンポイントで探せば意外と日本語でも情報が見つかるし、英語で検索すればほぼ見つかる。

スクリーンショット 2014-02-17 23.06.13
例えばSTGの最小構成で言えば「画像の表示」「移動」「弾生成」「当たり判定」の4つの機能で出来る。後はこの機能に何を追加していくかだ。ホーミングレーザーなら「Unity 向きを変更」と「Unity 弾 移動」みたいなキーワードで検索したり等々。

作り方が分からない機能は、機能を分解して検索だ。
それでも分からない場合はUnityユーザー助け合い所UnityCommunityに聞いてみる。

最初は膨大な覚えなくても良い技術を羅列して覚えるより、検索の仕方を覚えたほうが楽だ。
それとGoogle翻訳、特に「このページを訳す」は友達だ。少し不思議な解釈してくれる事があるが、検索かけるレベルでは非常に有用だ。

f:id:tsubaki_t1:20160303101637j:plain

3. 作ったものを改造する

チュートリアルが終わったら、自分なりにチュートリアルをカスタマイズするべきだ。
例えばキャラクターを自分の好きなキャラに差し替えても良いし、Oculus RiftをはじめとしたVRに対応しても良い。音を追加または変更するのも良いし、タイトルとゲームオーバーを追加しても良い。テクスチャを変更したり、ゲームバランス・ステージの雰囲気といったレベルデザインを調整するのも良さそうだ。
思っている以上にサンプルは触れる箇所が多く、しかも少し触ればゲームを自分色に染める事が出来る。最初から全部自分でつくろうとするのは難しいので、出来る所から触っていくと良い。分からないことは検索だ。

かのコロプラのUnity系ゲームも、最初はメダルプッシャーの改造から始まったと聞く。
[Unity][Unity3d]「第一回 渋谷Unity勉強会xコロプラUnity事例発表」に参加してきました

スクリーンショット 2014-02-16 14.16.28

また微妙なゲームであっても、少し手を加えるだけでぐっと良くなる。
tsubakit1.hateblo.jp

またカスタマイズして色々と遊ぶプロジェクトでは、[Unity3D]初めてのUnityゲームを作るサンプルに! C# Game Examplesが簡単でお勧めだ。
各々のゲームがシンプルで分かりやすい。ただ古いバージョンで作られたのでScriptUpdateが走る。大した問題ではないが、まぁ。

tsubakit1.hateblo.jp

この際に [Unity]完成プロジェクトをどうやって紐解くか? 読んでおくと良いかもしれない。
初心者や「Unityプロジェクトに新しく組み込まれた人」等は必見だ。

解析が出来るようになると、AssetStoreのComplete Packageにある膨大なサンプルが使えるようになるので、情報収集の幅が一気に広がる。

f:id:tsubaki_t1:20160303104804j:plain

4. 自分のゲームを作ってみる

ここまでで何となくゲームの作り方を理解できたようになったと思ったら、今までの知識を合わせて簡単な単一機能のクソゲーを作ってみると良い
ここでは必ず「自分の足跡を残す(オリジナルな部分を残す)」事「違うゲームを複数回作る」事、これが重要だ。

ゲームは2~3つの文で説明出来る物がお勧めだ。「平行移動と射撃で敵を倒す、敵を倒してスコアを稼ぐ、相手が自分の居るラインに到達したらゲームオーバー」とか。要素が多ければ多いほど複雑に、また調整の難易度が上がる。レトロなゲームはハードの制約上、結構シンプルなものが多いので、それを模倣するのもアリだ。

スペースインベーダー

また、同じゲームを何度も作ると該当のゲームの作り方しか把握出来ないので、違うタイプのゲームを作っていくのがお勧めだ。
ちなみに、最初に作るゲームは横スクロールアクション系やSTGをお勧め。何故かと言えば「横スクロールといったらコレ」という物があるので、ゴールにたどり着きやすいし、質問した時に回答が得やすいから。


モチベーションを維持する為に、何らかのルールを設けたほうが良い
例えば「公開する」や「n時間以内に作る」といった物だ。特に期限の設定とゲームの公開はお勧めで、モチベーションを維持しやすく、公開すると何らかのフィードバックが極稀に得られるかもしれない。

つまりゲームジャム来いよベネット、
体力なんて捨ててかかってこい

5. 資料を漁る

作る上で、「プログラミング言語」や「モデリング」「演出」「CGの作り方」が障害になるかもしれないので、参考資料を紹介しておきたいのだが、モデリングやCGに関しては専門外なので、プログラミングのお勧め資料。

モデリングや演出、オーディオ、CGの作り方等で良い資料があれば
教えてくれると嬉しいです m(_ _)m

qiita.com
UnityでC#を覚えるのに分かりやすい資料。
このフェーズを数こなすと、かなり色々と作れるようになる。
またこのレベルでUnity学習を止め、モデルやCGに注力しても良い。プログラムの中が余りにもアレでも、プレイヤーは分からないしゲームは動く。目的がゲームを作る事なら、妥協も必要だ。

tsubakit1.hateblo.jp
手前味噌だが、デバッグの手法について。プログラムを作るならば、デバッグ方法を知らないと色々と出来ない。

Unityで覚えるC#
Unity マニュアル
リファレンスマニュアル

簡単なゲームを作っていると最適化したくなる。また、必要な演出を追加したり、色々と機能を追加したくなるった末に、ダイエットが必要になったりする。とりあえず何作か作ったらマニュアルや資料をひと通り読むと良い。UnityであればC#やUnity 日本語リファレンスだ。
個人的には「Unityの中級者向け資料」はリファレンスだと思ってる。例えばリファレンスで「Advance」を見るといい。かなり深い所まで書いてある。

ひと通り読んだら、今までコピペや何となく使用した機能をもう一度確認してみよう。実際何故それをそうしたのかを考えると、ほんとうに必要な部分やより良い方法が見えてくる。そこからが本当の戦いの始まりだ。

ちなみにUnityは実はかなり深い所まで調べられる。 例えばUnityの挙動はInstrumentsを使えばかなり内部まで見ることが出来るし、Referenceを見れば内部のAPIもある程度把握することが出来る。Unity内部のメモリの挙動についてはUniteで公演してるし、Unityの使用しているmonoはオープンソースで公開してる。

終わりに

最後に言いいたい事は、ゲーム作りは面白いという事だ。
ハッキリ言って作ってる時は辛いし、覚えることがいっぱいある為一朝一夕に面白いゲーム何て作れない。(プログラムが書ける程度では本当に面白いゲームを作る事は難しい)
それでも、自分が作ってる物が動く感動は、面白いと言ってもらえる感動は忘れがたい物がある

色々と大変なケースもあるかもしれないが、是非頑張ってほしい。