ゲームを作りたいけどどうやって作るの!?

ゲームを作りたいけれどプログラミング、3DCG作成等何もやったことがないし、

ゲームを作りたいけれど何をどうすれば作れるようになるのかわからないという方の為にゲームを作る時に何が必要なのかを書いていきたいと思います。

基本的にはUnity(ゲームを作るツール)で3Dゲームを作成するという事で話が進みますが他のツールや2Dゲームを作る時でも参考になると思います。

なぜこのような記事を書こうと思ったかと言いますと、自分自身が3Dゲームを作ろう、Unityを使おうと思った時に何が必要なのか?Unityでは何が出来るのか?がわからなかったからです。

あらかじめ言っておきますがわたくし個人の見解であり、専門家が見るとそれ違うじゃん!という事もあると思います。

スポンサーリンク

ゲーム作りに必要な物

ゲームを開発する上で必要になるものを挙げていきましょう。

ゲーム開発ツール

ゲームを作る時に必要なものはまずゲーム開発を効率良くする為のツールです。

システム開発等で使用する言語、例えばJavaを使用してゲームを作成する事ももちろん出来ますが、1からゲームを開発しようと思うとゲーム開発以外の要素の勉強も多く必要になり挫折する可能性が大です。

ゲーム作りが目的ではなくプログラミングの勉強が目的ならばそちらの方がいいかもしれませんが、ゲーム開発が目的ならばかなりの遠回りです。

ここで2つ有名な無料で使用出来る2D・3D開発ツールを紹介しましょう!

と言ってもわたくしこの2つしか知りませんが・・・・(^_^;)

Unity

まずはわたくしが使っているUnityです。

Unity is the ultimate game development platform. Use Unity to build high-quality 3D and 2D games, deploy them across mobile, desktop, VR/AR, consoles or the Web...

Unityの公式サイトでUnityの使い方(初心者から上級者用まで)が文章や動画で紹介されていたり、書籍も多く販売されている為、初心者が始めるには非常に便利なツールです。

2D・3Dゲームが開発出来ます。

Unreal Engine

次はUnreal Engineです。

Unreal Engine 4 is a suite of integrated tools for game developers to design and build games, simulations, and visualizations.

Unreal Engineも有名なツールですね。

公式サイトで使い方が文章や動画で紹介されていたり、書籍も発売されています。

2D・3Dゲームが開発出来ます。

UnityとEnreal Engineどちらがいいの?

わたくし自身は最初にUnityと出会ってしまった為Enreal Engineは触った事がありません。

日本語の書籍の多さや当ブログをご覧頂く方はUnityがいいかもしれません(完全な自己中おすすめですな・・・)。

Unityの場合は年収入が10万$(アメリカドル)以内の場合は無料で使用出来ます。

Unreal Engineの場合は販売する時に限って5%のロイヤリティを払う必要がありますが、使用は無料みたいですね。

どちらも2017年01月06日の情報なので現時点での情報は公式サイトを見てください。

開発ツールでは何が出来るの?

Unreal Engineは使った事がないのでわかりませんが・・・、Unityではゲームで使う材料(グラフィック、プログラム、音声等)を組み合わせてゲームの舞台を作ります。

それぞれの材料はUnity以外のソフトで作成した物を使い、それをUnityに取り込んで使うという事ですね。

Unity自身でも基本のオブジェクト図形(四角柱や球など)を組み合わせてテクスチャ(模様)を貼り、建物を作成する事は出来ますが、複雑な3Dグラフィック等は専用の3DCG作成ソフトで作成しUnityに取り込んで使用します。

キャラクターを動かす為のプログラム等はUnityに搭載されているMonoDevelopというスクリプトエディター(外部のエディターに切り替える事も可能)を使い作成していきます。

Unity等のゲーム開発ツールを使うと便利なのがキャラクターが床の上を移動する為にはキャラクターが床の上と接触している、等の当たり判定をしないといけませんが、

この当たり判定をプログラミングしようと思ったら複雑な物理計算が必要になります。

これを考えると挫折しますよね?

わたくしは挫折します・・・・(+_+)

そういった当たり判定やキャラクターの移動等の機能は標準でUnityに搭載されているのでゲーム開発で一番ネックになるであろう部分は作る必要がありません。

また、キャラクターを歩きから走りのアニメーションに変える場合はUnityのアニメーターの機能を使い、

歩きから走りのアニメーションへの切り替わりを滑らかにすることも出来ます。

通常であれば歩いている状態から走る状態のアニメーションにパッと切り替えると一気にアニメーションが変わってしまいますが滑らかに遷移するように調整する事が出来ます。

あるタイミングでアニメーションを別のものに遷移させようと思った時もスクリプトから簡単に制御出来たりとUnity側で連携させる事が出来ます。

この後、紹介するグラフィック、アニメーション、音声、スクリプトを作成するにはそれなりに勉強しないと作成する事は難しいですが、

そんなの無理だわぁ!という方の為にUnityではアセットストアという仕組みがあり、

アセットストアで無料、有料でグラフィック、アニメーション、音声、スクリプト等をダウンロードする事が出来ます。

自分にはこの分野は無理だ!と思ったらアセットストアで素材をダウンロードしゲーム開発をする事も出来ます。

このアセットストアは非常に便利ですね!

わたくし自身はスクリプトしか出来ない(アニメーションはほんのちょびっと独学しました)のでこういったサービスがあるのは非常に助かります。

またUnityではスタンドアロン(パソコンにダウンロードして単体で動作するアプリケーション)だったりブラウザゲーム、スマートフォン向けゲーム等、様々なプラットフォームにファイルを出力出来ます。

プラットフォームに合わせたプログラミングをほとんどする必要がなくファイル出力で出力形式を選択出来ちゃいます。

これってかなりすごいですね!

最後完全にUnityの話になったな・・・・(ーー;)

グラフィック、アニメーション

次にゲームを開発する上で重要になるのがグラフィックですね。

2Dグラフィック・アニメーション

2Dの場合は平面な絵を使います。

Windowsパソコンならペイントのソフトで描けるあれですね。

2Dのアニメーションを作成する場合はパラパラ漫画やアニメのように一枚一枚の絵を描きそれを一コマ一コマ表示して動いているように見せて実現します。

その為、簡易キャラクターならばいいですがリアルで複雑なキャラクターを描いた時にアニメーションをさせようと思ったら膨大な数の静止画を描く必要があります。

Unityでは2Dゲームも作成する事が出来ますが、アニメーションの一コマ一コマをUnityに取り込みそれを順番に再生させアニメーションを作ることが出来ます。

(コマを一つの画像に集めて取り込みUnity側で分割して使用する事も出来るみたいです)。

つまり、元の静止画は別のお絵かきソフトで作成しておき、それをUnityに取り込んでアニメーションを作成するという事になります。

3Dグラフィック・アニメーション

3Dグラフィックは専用のソフトを使用して作成します。

3Dグラフィックを作成するにはかなり勉強する必要がありますね・・・・。

無料で使える3DCG作成ソフトを紹介しましょう。

blender

わたくしも使っているblenderです。

Home of the Blender project - Free and Open 3D Creation Software

3Dモデルの作成やアニメーションの作成をする事が出来ます。

この後に紹介するMakeHumanで作成した3Dモデルをblenderに取り込み、blenderでアニメーションを作成する事も出来ます。

MakeHuman

次は簡単な設定だけで3D人間キャラクターモデルを作成する事が出来るMakeHumanです。

1から3Dの人間キャラクターを作成するのはかなり大変です。

ですが、このMakeHumanを使用すると体型等の設定をするだけで3Dの人間キャラクターモデルを作成出来てしまいます!

自分では3Dキャラクターを作れない人がキャラクターを作成するのに非常に便利ですね。

紹介したのはblenderとMakeHumanだけですが他の3DCG作成ソフトもあるので使いやすいものを探すといいと思います。

ですが無料となると結構制限はされてしまうかも?

アニメーションはどうやって作るの?

3Dキャラクターモデルを作成したらそのキャラクターにアニメーションを付けたい事があります。

3Dモデルはキャラクターのモデルの見た目を作っていますがそれだけではアニメーションを作成出来ません。

アニメーションをさせるにはキャラクターにボーン(骨)を作成します。

リアルな世界の人間と同じですね、3Dモデルにも骨を付けてあげてその骨を動かしてアニメーションを作成します。

ボーンをキャラクターに取り付けただけではキャラクターとの関連付けがされていないのでどこのボーンを動かしたらどこのメッシュ(頂点、線、面で構成される部分、人間の場合は皮膚や服の部分)部分が動くのかがわかりません。

その為、ボーンにはどこのメッシュ部分が一緒に動くのか?というウエイトを設定していく必要があります。

この設定が終わったらタイムライン(時間経過)でボーンを動かしアニメーションを作成していきます。

2Dのアニメーションはコマを作成していきその違いでアニメーションになりますが、

3Dの場合コマ間のアニメーションを自動で作成してくれるので非常に楽です。

例えば人が直立状態から目の前に右手を出すアニメーションを作成する場合、右手を下に下げた状態と右手を前に出した状態の2コマを作成します。

2Dの場合はこの2コマの間は右手が下から目の前へと段々と上がっていく状態を作らなくてはいけませんが、3Dの場合は勝手にその間を補間して作成してくれるところです。

なので、3Dモデルにボーンの設定がしてあれば比較的容易にアニメーションの作成が出来ます(あくまで比較的容易)。

アニメーションの作成方法については

blender2.76を使ってUnityで使うアニメーションを作成する
Unityで使用するキャラクター用のアニメーションをBlenderを使って作成していきます。作成方法を学べば自分のゲームに自前のアニメーションを使うことが出来ます。

で記事を書いているので参考にしてください。

またUnityではアニメーションを制御するAnimatorControllerと似たAnimationという機能がありアニメーションを作成出来そうですが、

このUnityのAnimation機能は2DのアニメーションやUI(ボタン等)のアニメーションを作成する時に使います。

キャラクターの歩きや走り等のアニメーションはblender等のソフトを使って作成します。

音声

ゲームではグラフィックと共に重要なのが音声です。

これを作成するとなるとやはり勉強が必要です。

音声自体は相当こだわりがなければ他の人が作ったものをお借りした方が早いでしょう・・・・。

Unityでは音声ファイルを取り込み、音声の設定を施したりスクリプトから音声の再生を開始、停止等をする事が出来ます。

元の音声は別に用意しておきそれをUnityに取り込んで使用するという事ですね。

わたくし自身は音声を作りたいという願望がない為にこの項目は簡素です・・・(^_^;)

スクリプト

UnityではUnityに搭載されているスクリプトエディターを使ってゲームで使用するスクリプトを作成していきます。

Unityで使用出来るスクリプトはC#とJava風のJavaScriptです。

JavaとJavaScriptは名前が似てますが別物です。

当ブログではJavaScriptを使用してスクリプトを作っています。

C#やJavaの勉強をした事がある方はUnityのスクリプトリファレンスを見ながらスクリプトを作成する事が出来ると思います。

プログラミングをした事がない方

プログラミングはやりたくないという人はプログラミングが出来る人を仲間に入れて自分は3DCGを担当したりシナリオを担当したりして担当を作り複数人でゲーム制作をするというのもいいかもしれません。

まったくプログラミングをした事がないけどこれから学習したい!という方はC#やJava、Unityの書籍で勉強していくのがいいと思います。

書籍をおすすめする理由は広い範囲を学習する事が出来るからです。

ネットでわからない部分を調べるのは便利ですがその部分だけを見ても解らない事もあります。

また全体を学習するうちになんとなく前にわからなかった部分が理解出来る事もあります。

Unityの書籍ではプログラミングの仕方の解説は少ないので深く理解したい方はC#やJavaの書籍を買う事をお勧めします。

Javaの本を買うなら個人的に

がわかりやすかったです。

最初に買う本は簡単過ぎても難しすぎても挫折する可能性があるのでわかりやすく丁度良い書籍を紹介しました。

UnityではJavaではなくJavaScriptですが、Unityで使うJavaScriptはJava風のJavaScriptなのでJavaScriptの本を買って勉強するよりも

Javaの本を買って勉強した方がいいです。

Unityで作成するスクリプトで情報処理技術者試験等で出てくるアルゴリズム問題のような難しい処理は必要なく(処理速度等を考慮すると必要だとは思いますが)、

基本的なプログラミングの知識と組み方を知っておくと良いと思います。

もちろん本格的なゲームを作成しようと思うと難しい処理も必要になってきますが・・・・。

数学・物理が苦手!プログラミングという言葉だけで敬遠してしまう!アルファベットばかりで嫌になる!ぼくちゃん文系だから!

という方も問題ないと思います。

それなりの論理的な思考は必要ですが中学校を普通に卒業してきた方なら大丈夫かと思います(学校の勉強の方がいろいろ大変な気がする・・・)。

もちろん得手不得手というのがありますので全員が出来ます!とは断定出来ませんが、パズルだと思ってやるのもいいかもしれません。

自分でエラーを解消しうまく動作した時の出来たぁ!という喜びを味わってみてください。

偉そうに言ってますがわたくしも(唯一出来るであろう)プログラミングは得意ではありません・・・・(^_^;)

まったく初めてのプログラミングの場合はなかなか覚えられず進まない事もありますが、本に書いてあるプログラムを実際に打ち込んで動作させていけば

だんだんと覚えていくと思います。

本を一回通して読みプログラムを実行した後にまた2回目以降読んでいくと最初にわからなかったところがわかってきたりします。

プログラミングをした事がある方

プログラミングをした事がある方はUnityの書籍がお勧めです。

Unityを学習していく事で自分でゲームで使う機能を作成していくことが出来ると思います。

わたくしがおすすめするUnityの本は

わたくしの買ったUnityのおすすめ本
Unityのゲームを作成する上で管理人である、かめくめちゃんが非常に参考になったおすすめの本を紹介します

の記事で紹介しているので参考にしてください。

本は書店で必ず中身を見て、自分に合うかどうかを確認してから購入した方がいいです。

Unityで3Dキャラクターを扱う

Unityで3Dキャラクターやスクリプトの使い方について勉強しましょう。

Unityの3Dキャラクター

Unityで使用する3Dキャラクターはあくまでモデルであり見た目を表現しているにすぎません。

つまり3Dキャラクター自体で地面との辺り判定をしません。

キャラクターが他の3Dオブジェクトと当たったかどうか判定する為に使用するのがコライダ(衝突装置)です。

コライダはUnityの機能でキャラクターに応じて形状を選択し当たり判定の範囲(大きさ)を指定する事が出来ます。

このコライダは物理的に当たるようにするだけでなくただの範囲(他のキャラクターが侵入したか判定する)としても使用します。

Unityでキャラクターを動かすには

  • CharacterControllerを使った移動
  • Rigidbodyとコライダを使った移動
  • があります。

    CharacterControllerを使った移動

    CharacterControllerはキャラクターを移動させる時に便利なUnityの移動機能を搭載したコンポーネント(構成要素)でコライダを含みます。

    コンポーネントはひとつの機能という感じで、作成したスクリプトもコンポーネントになります。

    地面に設置しているかどうか?のプロパティ(属性)を持っていたりキャラクターを移動させる為の関数も持っているので便利です。

    CharacterControllerを使った移動は

    Unityでキャラクターの移動をプログラミングしてみる
    キャラクターを移動させる為のスクリプトを作成し、CharacterControllerを使ってキャラクターを動かす為のスクリプトを作成します

    で解説しているので参照してください。

    Rigidbodyとコライダを使った移動

    Rigidbodyとコライダを使った移動ではコライダで当たり判定、Rigidbodyでキャラクターを動かします。

    Rigidbodyは物理的な特性を持ったコンポーネントでCharacterControllerとは少し違ったスクリプトを組んでキャラクターを動かす必要があります。

    Rigidbody自体には地面と設置しているかどうかのプロパティ(属性)を持っていないのでスクリプトで地面と設置しているかどうかを判断する必要があります。

    キャラクターと他の物体との衝突を厳密にしたい場合はこちらの方がいいかもしれません。

    RigidBodyとコライダを使った移動は

    キャラ操作をCharacterControllerからRigidbody+コライダに変更する
    Unityでキャラクターを操作する時CharacterControllerを使ってきましたが、物理的な影響を得る為にRigidbody+CapsuleColliderでキャラクターの移動、ジャンプ、坂や段差を登れるようにしてみます。

    で解説しているので参照してください。

    3Dキャラクターのアニメーション制御

    3DキャラクターのアニメーションはUnityのAnimatorController(アニメーターコントローラー)を使って制御します。

    AnimatorControllerではアニメーションの遷移と条件を記述しておき、スクリプトからAnimatorControllerのパラメータを操作しアニメーションの遷移をさせます。

    AnimatorControllerでは細かい条件でアニメーションの遷移を指定する事が出来ます。

    前を向いて歩いている状態から右斜め前を向く時は体を少しだけ傾けて方向を変え、前から右を向く時は大きく傾けさせたいといった時も設定を細かく指定して遷移させる事が出来ます。

    AnimatorControllerについては

    Unityのアニメーションの切り替えシステムとスクリプト
    Unityのアニメーションを切り替える為のアニメーターの設定とアニメーションの遷移をさせるスクリプトの作成を行います

    で解説しています。

    Unityでここを押さえれば応用が利くようになる

    Unityでゲームを作成する時にいくつかの機能を押さえればゲームで作りたい機能が出てきた時に自分で応用して作成する事が出来るようになると思います。

    もちろん他の要素も出来ないとゲームは出来ませんのであしからず・・・・。

    コライダ

    キャラクターの辺り判定部分や他のゲームオブジェクトを検知する時に使用するのがコライダです。

    主人公キャラクターに取り付けて他の敵との衝突が起きるようにしたり、敵に取り付け主人公が近くにいる事を調べる範囲としてコライダを使用します。

    CharacterControllerコンポーネント

    主人公キャラクターを作ったらCharacterControllerコンポーネントを取りつけ、主人公を動かすスクリプトを取りつければすぐに主人公が動きます(アニメーションは別)。

    後述するアニメーション制御のAnimatorControllerの設定をしてキャラクターを動かすと感動します(こんな簡単に3Dキャラ動かせるんだ!という感じで)。

    AnimatorController

    すでにさきほど紹介しましたが、AnimatorControllerを使ってキャラクターのアニメーションの遷移を作成するとスクリプトから遷移させる事が出来ます。

    歩きから走りに遷移させたり、攻撃やダメージのアニメーションに遷移させたりとアニメーションを管理する機能ですね。

    キャラクターの体の一部のアニメーションだけ変えたいという場合もAnimatorControllerとレイヤー機能を組み合わせて実現する事が出来ます。

    例えば上半身は銃を撃つアニメーションを使い、下半身は歩いているアニメーションを使うという事が出来るので銃を撃つのと歩いているアニメーションを一緒に作成する必要がありません。

    レイ

    Unityでは見えない線(レイ)を飛ばしてその先にゲームオブジェクト(キャラクターや建物等)があったかどうかを調べたりすることが出来ます。

    このレイを使ったスクリプトが出来るようになると

  • 銃を撃った時に敵に当たったかどうか
  • キャラクターが地面と設置しているかどうか
  • 主人公と敵との間に障害物があるかどうか
  • などの色々な事を調べる事が出来るようになります。

    レイを使いこなせるようになると作れる機能の幅が広がる事は間違いありません。

    ナビゲーション

    ナビゲーション機能を使うと敵の移動する場所を指定し自動で最適なルートで移動させる事が出来ます。

    敵のAIを作ろうと思うと難しい処理が必要ですが、このナビゲーション機能を使うと敵のAIを簡単に実装する事が出来るようになります。

    IK

    IKを使うと本来のアニメーションを無視して両手・両足の位置を特定の場所の位置や角度に置く事が出来るようになります。

    例えばキャラクターが物を持って歩いている状態を作りたい時にどうしても物と手の位置がうまく合わないことがあります。

    そんな時にIKを使うと手の位置と角度を物にうまく合わせる事が出来ます。

    今回の記事を書いた理由

    すでにゲームを作り始めてる人は知っている事ばかりだとは思いますが、まったくゲームを作成する知識がない時はUnityがゲームを作成するツールである事はわかっても

    Unityで何が出来るのか?というのがわからないと思ったのでUnityと使う素材の繋がりみたいなものを書いてみようと思いました。

    わたくし自身がゲームを作りたい!と思った時に知りたかった事でその時の自分に見せてあげたい記事です(^-^)

    しかし、今回の記事は

    『ゲームを作った事がない人がゲームを作り始める為の記事』ではなく『ゲームを作った事がない人がUnityで3Dゲームを作り始める為の記事』

    ですね・・・。

    まぁ・・・そこは大目に見てください(._.)

    スポンサーリンク

    記事をシェアして頂ける方はこちら

    フォローして頂くとやる気が出ます