ゲーム開発の道標(企画から完成まで)その5・プログラムを打ちまくれ!
前回までの作業内容としては以下のような感じ…
企画構想、資金調達からスタート!
カードゲームのルールを作る。
必要なデータを準備し資料を確認する。
データや資料をグラフィック担当者やBGM担当者に渡す。
さて今回は、ここまで準備したモノを活用しプログラムコードを打ちまくります。とは言うものの、実は「その4」で他の担当者にお願いしたグラフィックやBGM作成と同時進行で進めていますので、そこはご了承ください。
前提条件
この記事の前提条件として「津軽為信統一記」ではUnityで作られています。
また、作る人によって「作り方」は違います。この記事ではあくまでわたしの作り方です。
もちろん真似しても参考にしても構いませんが自分なりのやり方が見つかったら(恐らく)そっちの方がやりやすいですよー。
内部DBを構築する
まずはデータをプログラムで使えるようにExcelなどで編集したcsvファイルを読み込む仕組みを作ります。csvファイルを読み込むだけですので他のゲームからコピペして必要な部分だけ修正します。
仕組みだけ説明しますと…
csvファイルなのでカンマ[,]でデータ項目が切り替わりますし、改行でレコードが切り替わります。1文字毎にチェックして[,]や[改行コード]が来たら次のデータ項目に転記します。
「津軽為信統一記」のゲーム中に使用するデータ量はテキストファイルで言うと1~22KBが10個、プレイヤーのセーブデータも10KB程度なので、使用する分を全部メモリ上に展開しても大きな問題にはなりません。
その規模のデータであれば「内部DB」とは言ってますが配列変数で十分対応できる規模だと思います。
もっと効率よくできますが、とりあえずこんな感じで進めていったみたいです。配列内部のソートやサーチも既に作っていたモノを、ちょっとだけ修正して流用してました。
ユーザによって異なるデータ
ユーザデータ(セーブデータ)はバイナリファイルでRead/Writeしています。申し訳程度にですが、チェック桁を設けてデータ改竄やファイル破損など確認を行える仕組みを搭載しています。
各画面での処理を作る
津軽為信統一記は合戦部分がカードゲームになっているストラテジーっぽいゲームです。基本的に画面上にある「ボタン」「アイコン」類をタップすると物事が進みます。
そもそもゲーム中に必要な画面はどれくらいあるでしょうか?
ゲームで頻繁に使う主な画面をまとめてみると以下の通り…
政略画面(内政処理もココで行う)
軍備画面(カードの購入と売却)
編成画面(デッキの構築)
合戦画面(出陣先を選択して画面遷移)
記録画面(セーブとロードを行う、記録ボタンから遷移する)
設定画面(いわゆるコンフィグ画面、設定ボタンから遷移する)
ゲーム中は最低でもこれらの画面を行き来できる必要がありますよね。そこで政略画面をご覧ください。画面左側の縦に並んでいるボタン類。これをタップすることで画面遷移するわけです。
大枠の処理の流れ
「ボタン類をタップしたら何らかのリアクションがある」というのが基本です。この流れを作っていきます。
(あくまで、わたしの場合…)1フレーム中に必ず1度は通るメインのスクリプトに「ControlSwitch」と「EnterSwitch」という変数を作っておきます。
ControlSwitchは「何の処理中か?」を、EnterSwitchは「押されたボタンは何か?」を数字で保持している変数です。
ここでは「出陣」を例としましょう。出陣ボタンを押したらどんなリアクションが必要なのか考えてみると以下のようになります。
出陣先を決めて…
合戦に使うデッキを選択する
上図のように政略画面のトップメニューではControlSwitchは「0」です。
その状態でボタンをタップするとEnterSwitchが発行されます。出陣ボタンだったら「11」が、内政ボタンだったら「21」が発行されるわけです。
ここでは出陣ボタンを押します。EnterSwitch「11」が発行されました。
EnterSwitchが「11」だった場合の処理を行います。出陣先選択をするのでControlSwitchを「1」に変更し、各種ボタンを画面から消して出陣先の相手・情報、そして出陣先選択に必要なボタンを表示します。
これらの処理が終わったらEnterSwitchを「0」に戻しておきます。
ControlSwitchが「1」の状態で「決」ボタンを押すとEnterSwitch「121」が発行されます。
EnterSwitch「121」の処理を行います。各種ボタンやグラフィックを消してデッキ情報を表示します。同時にControlSwitch「2」とし、EnterSwitchを「0」に戻しておきます。
ControlSwitchが「2」の状態で「編成1」を選ぶとEnterSwitch「151」が発行されます。EnterSwitch「151」の処理で合戦シーンに画面遷移します。
こういった作業は地道で時間を要します。1日でやってしまおうと思わないでくださいね。無理です。
デバッグにも
(あくまでわたしのやり方です)このようにControlSwitchやEnterSwitchで管理すると便利なのがデバッグ時です。どんなに丁寧にしっかり作っても何らかの原因で不具合って発生するもんです。
そんな時、必ず1フレームに1度通るんだからControlSwitchやEnterSwitchをデバッグプリントすればいいんです。
例えばフリーズした場合、ControlSwitchを見れば何の処理中なのか判断できますし、EnterSwitchを見れば何をさせようとしたタイミングなのか判断できます。
プレイヤーの操作待ち状態ならEnterSwitchは「0」です。何らかの数値が入っている状態で止まったなら、その処理で変なことが起こっているんです。その処理中じゃないとしても数字を追っていけば見つかるのです。
プログラム以外でやってたこと
「ゲーム開発の道標(企画から完成まで)その1」で触れた地域振興助成金のお話を覚えていますでしょうか?
こちらの助成金、地域の為に無かったモノを作ったり研究したり、そういった活動に使う資金です。「頑張ったけど失敗しちゃった!」でも罰則はありませんが、もちろん有意義な使い方をしていた方が良いですよね…
というわけで助成金を頂いてから数回ですが報告書を提出することになっております。既に決まっている文書のフォーマットに合わせて書い…超絶個人情報が記載されているので実物の写真はご勘弁ください。内容は以下のような感じです。
地域振興助成事業実績報告書
書類の1枚目はフォーマット通りです。所定の場所に以下の項目を書いていきます。一般的な通信文なので普通に会社勤めしている方は見たことあるような書式です。
●申請者の住所、事業所名、わたしの名前
●事業の名称、いただいた助成金額
●添付資料があったらその旨を記載
(添付資料は収支決算書、事業の様子がわかる写真など…)
●実施内容:津軽為信を主役とした国盗り物語をカードゲームで表現する。
津軽為信統一記(仮)をスマートフォンアプリとして制作する。
●成果/効果
(1)戦闘システムのカードゲーム部分の仕様設計
(2)グラフィックの方向性の決定/ラフの制作
(3)津軽側、南部側の主要武将の選定
●地域振興への貢献状況
ここには市役所の方にアプリ完成後のポスターの協力願いをしに行ったり、グラフィック担当者も青森の人なんですよーって話を書いてます。
●課題および今後の方針
いま頑張ってプログラム作ってますとか、ポスターどうしよう、歴史考証どうするか、みたいなことを書いています。
収支決算書
ゲームアプリ作成の予算は、ほとんど人件費(外注費)に消えていきます。
「地域振興のために地場産品で身体に良いお弁当を作りたい、そんなお弁当屋さんのアピールしたい」だったら原材料仕入とか店舗改装費とか、わかりやすい費用が発生するんですけどね。
ゲームに使うグラフィックを発注した!
ゲームに使うBGMを外注した!
といった外注費でいただいた助成金は無くなりました。次期繰越額は0円!
こういった書類でお馴染みの収入と支出があるグリッド状のアレですね。
添付資料
複数回提出した報告書の時期によって異なりますが武将イラストのラフ、合戦システムの仕様書などを添付していました。完成が近づくにつれスマホの写真が添えられるようになっていきます。開発が進んでいる感が出ますね。
次回に続く
ようやく完成が見えてきた「津軽為信統一記」ですが長くなったので今回はここまで、次回へと続きます。ゲーム開発を10段階で表現すると「7」とか「8」までは結構順調に進むことがあるんですよ。「9」が一番厳しかったりもします。
次回はこのゲームでの「8」「9」あたりに入っていきます。
まだ手を付けていない作業って何があるでしょう?
合戦時の対戦相手の思考ルーチン作成
合戦チュートリアル作成
地域の歴史文化教育コンテンツの追加
Googleやappleのストア管理
うわー、これはまだ「6」くらいかもしれない!!
そんな「津軽為信統一記」が気になった方はコチラからどうぞ!
iPhone・iPadの方はコチラ(↓)
Androidの方はコチラ(↓)