この記事では呪術迷宮の開発を行った時に考えた事や注意した点などについて書いていきます。
講座の方ではゲーム完成に必要な操作やスクリプト等の解説がメインでしたが、ここではゲームを開発する上での考え方という所に焦点を当てて説明ができればと思っています。
そして個人や少人数グループでゲームを作る時に必要なことなどについても取り扱います。
あくまで一人、少人数チームのクリエイターの考え方に過ぎずこれが正解!などというものはありませんが、今後ゲーム開発者を志す方の参考になれば幸いです。
- インディーゲーム 呪術迷宮の開発はどんな風に進んだの? 面白いゲームを企画しよう!
- 個人ゲーム開発の流れ ゲームを完成させるためのアドバイス
- おわりに
- 追加でいただいた質問回答コーナー
- 呪術迷宮が今の形になるまでに没にした方針・システム案などがあれば理由と共に教えてください。面白い・面白くないの判断に至る思考プロセスやプロトタイプができあがるまでにどれくらいビルド&クラッシュしたのか気になりました。
- Unityを用いた開発にも活かせる設計に関するおすすめの書籍やwebでの情報等あったりしますか?(特に利用した経験がなければなしでOKです)
- ゲーム開発ではゲームが完成せずに挫折する(えたーなる)ことが個人開発者によく見られますが、スケジューリングなどはどのように行っていますか? また、管理に使ってるツール等あれば教えてください。
- その他、Unity以外で開発に便利なツールやサービスなどで利用してるものがあれば用途と共に教えてもらえると嬉しいです。よく使う素材サイトやアセットなども書いてもらえるとうれしいです。
- これまで何本くらいゲームを制作してきましたか?(また、作成した際に感じた難易度や製作時間など可能な範囲で教えていただければ幸いです)
- もし目の前にUnityを始めたての初心者さんがいたとして、一日3時間の自由時間を毎日取れるとした場合、どんなスケジュールと内容でゲーム開発の指導を行いますか?指導期間は1年間とします。C#の基本(if,for,while,列挙体,クラスの初歩など)、Unity操作の基本はわかる前提とする。Unity入門の森のビリヤードゲーム、そしてSRPG講座を見ながらなんとか作り終わった程度の知識とします。
- ゲームプログラミングを始めた頃の過去の自分にアドバイス・助言するとしたら何と声をかけますか?(失敗を防ぐ方法だったり、このルートをこうしていくといいよーだったり)
- インディーゲームクリエイターの1日のスケジュール、ゲーム開発にかける時間はどのぐらい?
- インディーゲームクリエイターがモチベーションを維持する方法
- インディーゲーム開発に役立つゲーム実況者やゲーム開発情報メディアはなんですか?
- 会社ではなく個人開発を選択するメリットとは
- ゲーム開発チュートリアルの内容を資料なしで再現できるようにする訓練についてどう思いますか?
インディーゲーム 呪術迷宮の開発はどんな風に進んだの? 面白いゲームを企画しよう!
呪術迷宮の最初のバージョンを公開するまでにかかった開発期間は約3か月でした。
このうちアイデアを固めつつプロトタイプを制作するのに1か月程度を要しています。もう少し早く本開発に移行する事も出来ましたが、最初の動き出しという部分がゲーム開発において最も重要だと思っているので入念に進めていきました。
まずはこのゲーム開発のアイデア出しについてお話します。
ゲームアイデアを考えた時の流れ
初期から決まっていたゲームのテーマとして「ローグライク要素」と「デッキビルディング要素」がありました。Slay the Spireのようなシステムと言えば伝わる方もいそうですね。
いくつか前例のあるジャンルですが、同じものを作っても仕方がないのでまずは差別化から考えます。
参考元となる既存のゲームに対して個性を付け加えるという事を繰り返し、「これなら新しいゲームである」と言えるレベルにまで独自性を高めていきます。
個性を加える方法の1つが要素の足し引きです。例えば元のゲームに制限時間があるならそれを取ってみよう、ステージをクリアすると最初からやり直しになるなら戦利品を引継げるようにしようという事を考えてみます。
無関係な別のゲームの要素を混ぜてみるのも有効な手です。例えば○○というRPGにある武器同士を合成できるシステムをここでもやってみるというアプローチです。
この段階ではとにかく沢山のアイデアを出して取捨選択する必要があります。また全てのアイデアを作りながら試していると時間が足りないので、基本的には頭の中でイメージして面白そうかどうか・実現可能かを判断します。
それの助けになるのがゲームを遊んできた経験や知識です。沢山のゲームを知っていれば知っている程アイデア出しにも活かしやすくなります。
様々なゲームを自分で体験できればベストですが、他人がプレイするゲームを動画や配信で見るのも知識の蓄えになります。特に実況プレイなら自分にはない物の見方を教えてくれるのでこれも貴重な情報源です。
ある程度アイデアが洗練されてきたら実際にそれを大まかに作って試してみます。いわゆるプロトタイプ制作の段階です。
本当にそのアイデアが面白いかの確認、更に足したり引いたりするべき要素が無いかの検討、そして本格的に作るとなった場合の開発期間などを色々見ていきます。
この段階では基本的に絵や音は最小限しか実装されませんが、本開発GOとなれば次は素材の確保などに移っていく事になります。
呪術迷宮の独自性について
呪術迷宮の開発ではアイデア出しの結果、メインに据えたのが「カードの合成を自由にできる」という要素です。
2つのカードの効果を1枚に合体させるというシステムは他に無いわけではありませんが、大抵ルール上の制限があったり使えるタイミングが縛られがち。なので、このゲームでは自分のターン中ならいつでも、そして敵のカードにも合成できるようにしようと考えました。
このアイデアから発展して考え、「敵のカードに合成できるなら敵の全ての行動をカードで表現しよう」→「どの順番でどの行動をしてくるか分かるように5つのカード設置場所を用意しよう」という順番で要素を増やしました。
カードの設置場所をプレイヤーと敵で共通のものを使わせる事で、プレイヤーは全力コンボの攻撃を行ったり、敵のカードに弱体化するようなカードを合成させて耐えしのいだりという戦略が選べるようになりました。
意味のある選択を迫る状況を作ることで、プレイヤーが能動的にゲームをプレイする自由度を高めます。
さらに5つの場所のどれかを特殊な場として扱い、ここに設置されたカードは効果が倍になる…といった追加要素(ゲームでは職業効果)の実装もできるような設計の幅広さも確保しています。
このジャンルのゲームのメインは戦闘なので、戦闘システムをここまで煮詰められればひとまず独自性も面白さも合格ラインだろうと考えて本実装に移りました。
開発時や講座執筆時に意識したこと コーディング設計や実装のこころ
本実装では、その実装の過程を講座にて解説するというプロセスが待っているため、なるべくシンプルで理解しやすい設計にすることを心がけました。
スクリプトについては後で少し触れますが、ある程度のコーディング規則には則りつつ意図的に規則に反したり、重要でない処理部分は短縮して書くようにしました。
例えば講座内ではpublic変数(フィールド/メンバ変数)を多用していますがこれは他クラスからの変数の参照や変更という所でスクリプトの文字数を増やしたくなかったためです。
本来フィールドはprivateで宣言するのが原則であり、その値を参照・変更する時は別途専用のメソッド(プロパティ)を定義して使います。
なぜこのようにするかというと、例えば複数人のプログラマーで開発を行った時に、自分が作ったクラスを他の人が利用する時に間違った使われ方をするのを防ぐ意味があります。詳しくは「C# カプセル化」等で検索すると理解しやすいと思います。
今回の呪術迷宮の作り方講座ではこの辺りの文法解説は本筋にせず、あくまで呪術迷宮のようなゲームを完成させることを主題目としたのでスクリプトはこうした設計になっています。
エディター上でのシーン内のオブジェクト設計は普段プライベートでゲームを作る時とあまり変わっていません。
特にDataManagerオブジェクトを作ってそれをシングルトンにしてセーブデータを管理するやり方は普段と全く同じです。
強いて言えば似た役割になりやすいオブジェクト、例えばボタン類などはもっと積極的にプレハブ化していっても良いと思います。
アセットに関しては講座ではDOTween以外を使用しないことに決めていたのでアプリ版開発でもそうしています。(アプリ版ではこれにプラスして広告関連のプラグイン等を入れています。)
特にデータのセーブ&ロードについてはアセットを使用される方が多いですが、Unity標準のPlayerPrefsでもここまで対応できるという所はうまく説明できたかなと思います。
アプリ版の開発では更にユーザビリティ(操作性)や拡張性を意識しました。特にこのゲームはカードのコンボを重要としたゲームなのでカードの種類は沢山必要になると考え、ScriptableObjectを積極的に使用して後からでも要素を増やしやすい形にしています。
個人ゲーム開発の流れ ゲームを完成させるためのアドバイス
ここからは『呪術迷宮』の開発に限らず、個人的に考える少人数でのゲーム開発についての流れやゲーム開発を成功させるためにUnity入門の森が意識していることなどの概説を書いていきます。
ゲーム開発全体の流れについて
先ほどまでの項目と内容がやや被りますが、1本のゲームを個人または少人数のグループで作り上げるまでの大まかな流れを説明します。
人によってやり方は千差万別なのであくまで1つの参考程度に読んでもらえればと思います。
その他の細かいゲーム開発アドバイス
- グラフィックやサウンド等による演出面はゲームの面白さに直結するので軽視しないようにすべきでしょう。
- 何度も実機でプレイして、ゲームの手触り感やUIの位置による利便性の向上を考えるようにしましょう。
- ゲームを作る過程で動作の軽量化は忘れないでください。(スマートフォンゲームの場合は特に重要)重い時は音源などのインポート設定から見直しましょう。
- 特別な意図が無い限り、ゲームは低めの難易度になるよう意識すべきです。
- バックアップは頻繁にとっておきましょう。エディター上で何かを操作したらCtrl+Sを押す癖がついていると良いです。
- ゲームをより多くの人に遊んで欲しい場合は翻訳機能を実装しましょう。英語や中国語あたりは需要が高めです。
おわりに
以上、Unity入門の森なりのゲーム開発の流れや思考プロセスについて紹介させていただきました。
ある程度ゲーム開発を続けていればその人なりのスタイルが必ず生まれてくるので、まずは自力でゲームを2~3本程度完成させることができれば悩みも少なくなってくるのではと思います。
ゲーム開発に挑戦する人は皆同志なので、無理をしない程度に頑張り、そして支え合っていきましょう。
あなたの作るゲームを楽しみにしています。
追加でいただいた質問回答コーナー
呪術迷宮が今の形になるまでに没にした方針・システム案などがあれば理由と共に教えてください。面白い・面白くないの判断に至る思考プロセスやプロトタイプができあがるまでにどれくらいビルド&クラッシュしたのか気になりました。
呪術迷宮のアイデアを固めたにあたってはあまり大きな方針転換などは無く、初回のプロトタイプからそのまま本実装に移行する形にはなりました。
ただし、じっくり固めていった過程として細かい取捨選択は数多くありました。
例えばカードの合成について、当初は本当に無制限に合成し続けられる予定でしたが「手札のカードを全部1枚に合成するのが最強になってしまう」という問題が浮上しました。
そこで制限を設ける事になるわけですが、案として「同じ効果種を持つカードは合成できない」や「効果が5種類を超えると合成できない」というものでは制限として不十分だと判断しました。
「同じカードは1~2度しか合成できない」という案は有効でしたが少し味気なくもあるかなという所で悩みました。
そしてカードごとにコスト(ゲームでは強度)を設定する案を思いつき、合成ごとに足し算されて特定の数値以上になると合成不可になるという方向で考える事にしました。
するとその案から発展して「コストが一定以上になったカードは効果が無効化」されるというルールを思いつき、ゲームにて強度10以上のカードが破壊されるというアイデアに繋がりました。
これは敵のカードにも合成が行えるルールとも相性が良く、制限はありつつも戦略性を増やせるという意味で都合が良いものでした。
このように一度思いついたアイデアの問題点は別のアイデアで上書きするという考え方ができると取捨選択の効率も上げられると思います。
Unityを用いた開発にも活かせる設計に関するおすすめの書籍やwebでの情報等あったりしますか?(特に利用した経験がなければなしでOKです)
自分がUnityを触りたての頃は、「Unity入門の森」のように1本のゲームをプロジェクト作成から完成まで一通り学べる書籍をいくつか読んでいました。
余談ですが、筆者は入門書だけでは足りない部分が多く、実践的なゲーム開発とのギャップを埋めたいと感じていたことがあります。その経験を活かしてゲーム制作チュートリアルの充実・中級・上級者を目指すためのゲーム開発スキルが独学で身に付くサイトを目指してUnity入門の森を立ち上げています。
当時読んでた書籍で今も最新のバージョンに対応されている書籍で言うと以下からスタートするのがおすすめです。
ゲーム開発ではゲームが完成せずに挫折する(えたーなる)ことが個人開発者によく見られますが、スケジューリングなどはどのように行っていますか? また、管理に使ってるツール等あれば教えてください。
回答にならないかもしれませんが、個人開発初心者の方はそもそもスケジュール管理が必要にならないくらいに小規模なゲームを作る事から始めるのが一番良いと思います。
ただ小規模であっても実装予定の要素や後で見直すべき項目については都度メモ帳等にリストアップする癖を付けると良いと思います。
スプレッドシートやTrello、BackLogをタスク管理に使用していくのもよさそうですね。
その他、Unity以外で開発に便利なツールやサービスなどで利用してるものがあれば用途と共に教えてもらえると嬉しいです。よく使う素材サイトやアセットなども書いてもらえるとうれしいです。
ツールで言えば何かしらの画像編集ソフトは1つ使い慣れておくと便利です。
理想はAdobe Photoshopですが継続で値段がかかるので、適当な無料または買い切り型のソフトで十分だと思います。
ちなみに相当古いのでオススメはしませんが、自分はAzPainter2というソフトをよく使っています。
最近だとCanvaなんかもできることが増えておススメです。Unity入門の森のゲーム告知画像等は全てCanva製です。
素材サイトは画像であれば呪術迷宮でもお世話になった化け猫缶様、BGMではPeriTune様、SEでは効果音ラボ様がおすすめです。
これまで何本くらいゲームを制作してきましたか?(また、作成した際に感じた難易度や製作時間など可能な範囲で教えていただければ幸いです)
Unityを本格的に使うようになってからだと仕事とプライベート合わせて30本弱といった具合です。
基本的に製作時間が長くならない事を重視していたのでカジュアルな作品が多めですが、呪術迷宮のようにストア出品を前提とした本格的な作品もいくつか開発しました。
2Dでも3Dでもあまり制作難易度は変わらないのですが、特定分野への専門知識が求められるジャンルであったり、画像等の素材が確保しにくい題材の時はかなり苦戦しました。
もし目の前にUnityを始めたての初心者さんがいたとして、一日3時間の自由時間を毎日取れるとした場合、どんなスケジュールと内容でゲーム開発の指導を行いますか?指導期間は1年間とします。C#の基本(if,for,while,列挙体,クラスの初歩など)、Unity操作の基本はわかる前提とする。Unity入門の森のビリヤードゲーム、そしてSRPG講座を見ながらなんとか作り終わった程度の知識とします。
一例として以下のような内容を考えてみました。番号が若いものほど優先度が高いイメージです。
- ゲームジャムに参加する
初心者こそゲームジャム(共通のテーマを元にそれぞれがゲームを制作して公開するイベント)への参加の意義は高いと思っています。
ごく小規模のミニゲームで構いませんので自力で何かを作って公開できると大きな経験になります。
その作品を他人に遊んでもらえたり、感想をいただいたりという事もセットで出来、開発者同士のつながりも生まれるので、積極的に参加するべきだと思います。
ゲームジャムには有名どころだけでも複数あり、それぞれの開催時期を把握しておく事がおすすめです。 - 講座や書籍などをもとにゲーム開発の実習を進める
Unity入門の森の講座をまずは1~2本完了させましょう。自力での開発が出来るようになった後でも引き続き講座に沿った勉強をする事はおすすめです。新しい開発スキルを定期的に吸収していきましょう。ですが、こうした勉強ばかりに時間を使っていてはいつまでも自分の作品が完成しないのも事実。最初の1~2か月程度で集中的に講座を通した開発を行ってみましょう。 - 中規模のオリジナルゲーム開発をする
講座による学習に区切りが付いたら実践に入りましょう。
小規模な開発はゲームジャムで経験を積めば良いので、ここでは1作品2~3か月単位での比較的規模の大きいゲーム開発にチャレンジします。
モチベ維持のためにも自分が好きなジャンルを選ぶと良いでしょう。
外部に公開しない場合は市販ゲームの完全なパクリでも大丈夫です。とにかく1つの作品を継続的に作ってみましょう。今回の呪術迷宮の作り方講座で中規模クラスのゲーム開発が体験できているかと思います。 - 座学(プログラミング・Unity知識・ゲーム知識)
ある程度ゲーム開発に慣れたら一旦実習から離れ、プログラミングの基礎知識の復習やUnity・ゲーム全般の勉強をすると良いと思います。
プログラミングについては既に経験が出来ているので飲み込みは早いかと思います。今まで使ってこなかったC#の機能(例えばクラスの継承など)をこの段階で習得しておくと便利です。
Unityまわりにおいては例えばアセットの使い方を調べておくことがとても有効です。DoTweenなどの汎用性と利便性の高いアセットから活用法を探っていくと良いでしょう。ゲーム全般の知識としては、例えば市販ゲームのUIの構造を調べておくと自分の作品にも応用できるようになります。 - 共同開発に挑戦
ここまで一通りできたら他人とのグループ開発にチャレンジしてみましょう。そこで初めて得られる経験がとても多いので、今後個人開発を続けるとしてもやっておいた方が良いです。
特にプログラマーが2人以上居ると役割分担を意識する必要が出てくるのでより実践的です。ゲームジャム等の機会を活かして人を集めてみましょう。
ゲームプログラミングを始めた頃の過去の自分にアドバイス・助言するとしたら何と声をかけますか?(失敗を防ぐ方法だったり、このルートをこうしていくといいよーだったり)
プログラミング初心者の頃はAtCoderのような競技プログラミングにも挑戦してみるべきだったと思っています。学習の意欲も上がっていたのではないでしょうか。
Unityにおいてはもう少し広くアセットを使っていれば良かったと思います。当時はDOTweenすら使っていませんでした…。
インディーゲームクリエイターの1日のスケジュール、ゲーム開発にかける時間はどのぐらい?
完全に集中できる日は14時間以上とったりもしますが、普段は10時間以下です。
フリーランスだと明確な休日が存在しないので毎日頑張りすぎると続かないと思います。
インディーゲームクリエイターがモチベーションを維持する方法
手の届く範囲での目標を常に持っておく事が重要だと思っているのでそれを意識しています。
将来的に作りたいと思っているゲームのイメージを頭の中で考え、その実現を目標とすることがおススメです。
インディーゲーム開発に役立つゲーム実況者やゲーム開発情報メディアはなんですか?
ゲーム配信で言えば毎年2回開催されているRTAinJapanを見るのがおすすめです。
単純にエンターテインメントとして面白いのですが、RTAなので多くのゲームを短時間で見続けることが出来るのでゲーム知識がたくさん身に付くメリットもあります。
ネットメディアはあまり詳しくないのですが、お世話になることもある4Gamerさんや予約トップ10さん辺りは意識して見ています。
会社ではなく個人開発を選択するメリットとは
個人開発最大のメリットに「自分の作りたいゲームを作れる」というのがやはり理由の1つでしょうか。
企業にプログラマーとして属すると、キッチリ仕様通りに製品を作る事が最も求められ、程度の差はあれど自由が少なくなってしまうのでやりがいも減るのかなと思っています。
個人開発であれば誰からの許可を得る必要もなく好きなものが作れるので、ある意味一番「ゲームを作っている」感を味わうことができます。
今は仕事で個人開発を行っているのでクライアントの要望通りにゲームやゲーム以外のアプリケーションも作っていますが、それでも実装の大部分は自分の発想のもとに行えるのでそこそこ自由を感じています。
ゲーム開発チュートリアルの内容を資料なしで再現できるようにする訓練についてどう思いますか?
意義のある良い練習になると思います。やはりコピペするだけでは習得できない技術もあるので、理解を深めるためにも1回自分で考えるプロセスを増やすことで応用力も身に付くようになるはずです。
いざ自分のゲームを作るという段階ではある程度自力に頼る事になるのでそういった経験はとても大きい価値になると思います。
ただし全く同じゲームを何度も作るというのはモチベーションの維持が厳しい人も多いと思うので、指導として行う場合は毎回違う素材を用意してあげると良いでしょう。
Unity入門の森のチュートリアル講座を活用してさらにいろんなゲーム開発経験を積んでもらえたらうれしいです。
コメント