はじめに
*元記事は僕のブログにあります!
こんにちは!
友だちと二人で作ったゲーム「Knowee!」の宣伝も兼ねて、開発の中でやってよかったこと・ダメだったことを書き起こして皆さんに共有できればと思います。
どんなゲーム?
一言でまとめると、みんなで遊べるクイズゲームです。
ゲームの流れをざっくり説明すると、
- 各プレイヤーがあらかじめ用意された質問に回答(質問例:あなたの座右の銘は?)
- 各回答が匿名で表示されるので、誰のものか推測
- 1と2を何回か繰り返す
- 自分に対するみんなの理解度が表示される
といった感じです!
待ち時間や、飲み会などでぜひ友だちとプレイしてみてください!
まだ知らない友だちの一面が見えるかもしれませんよ!
宣伝はここまでにして、開発でやってよかったこと・ダメだったことを
まとめていきます。
やってよかったこと
デザイン先行の開発
今回の開発では、デザインをある程度固めてからコードを書くようにしました。
そうすることで、UI関係のコードの修正が少なく済んだと思います。
ボタン1つの有無でコードが変わってくるケースもあると思うので、
基本的にはデザインが先にしたほうが良いと思います。
Firestoreの採用
質問データはFirestoreに格納するようにしました。
Unity用のFirebase SDKがあり、サンプルコードも充実していたので採用しました。
普通のSQLデータベースに接続することも可能ではあるのですが、
コードが面倒くさそうだったので、やめておきました。
サンプルコードのコピペだけでいい感じに動いてくれるので、Firestoreオススメです。
バックエンドサーバーの構築
課金のレシート検証のためにバックエンドサーバーを構築しました。
これによって、課金処理の安全性が上がり、かつ取引に関するデータをFirestoreに保存できるようになりました。
Unityではクライアント側でレシート検証を完結することもできるのですが、
先述したメリットを考えると、バックエンドサーバーを構築して正解だったと思います。
(だいぶ手間はかかりますが、、)
一応、参考にした記事のURLを載せておきます。
自分のインスタで告知
インスタアカのフォロワーは3桁しか無いのですが、効果はありました。
僕とデザイン担当の友だちがストーリーで告知したところ、
「トリビア」のカテゴリで120位になりました。
プライベートアカであっても、効果はあるようなので告知していきましょう!
ダメだったこと
iOSのみのリリース
特にマルチプレイゲームで言えることですが、
片方のOSのみでリリースすると、グループ内で何人か遊べない人がいる状態になってしまいます。
遊ぼうとしてくれる初期ユーザーがプレイできないのは致命的です。
また、遊べない人に疎外感を与えてしまうので、とても後悔しています、、
次からは、何としてでもiOS・Android同時リリースを目指そうと思います。
開発前のゲーム設計が甘かった
開発に着手する前、Knowee!の質問はユーザーに作ってもらおうと思っていました。
どういうことかというと、
- ユーザーの1人に質問を入力してもらう
- 全員が回答
- 各回答を匿名で表示して、誰のものか推測してもらう
という流れにしようとしていました。
しかし、このシステムには以下の弱点がありました。
- 質問を考える時間のせいで、テンポが悪くなる
- 面白さがユーザーの質問の質に依存する
これに気づいたときには、時すでに遅し。
開発がある程度進んでいたため、大幅に修正する羽目になりました。
ゲーム設計をしっかりやってから開発に着手するべきでした。
反面教師として役立てたらうれしいです笑
初手でオンラインゲーム
初心者がオンラインゲームを開発するのは、なるべく避けたほうが良いかもしれません。
オンラインゲーム開発は、データのやりとりが一段と難しくなり、バグとの長い闘いになります。
(僕がポンコツ過ぎたのかも)
更に、通信用のサーバーのお金もかかります。
Unityでオンラインといえば、Photonというツールなのですが、
最安プランでも年間2万円ほどかかります。
Playfabなど無料のツールもあるにはあるのですが、
情報量は圧倒的にPhotonの方が多いので、泣く泣くPhotonにしました。
とはいえ、Photonを使えばかなり快適にオンラインゲームの開発ができるので
満足しています。
ゲームアプリをリリースしたことが無い場合は、オフラインのカジュアルゲームを開発することをオススメします。コストがかからないので、コスパ良さそう。
コード・フォルダなどが整理されていない
個人開発だとテキトーになりがちなコードやフォルダ。
放っておくと大変な目に遭います。
久々にコードを見ると、「何だこれ。」ってなります。
他人のコードを見ると、「何だこれ。」ってなります。
それぞれのコードやフォルダなどに明確な責務がないと、
どんどん生産性が下がります。
Unityで開発していると、オブジェクトも大量に作成するため、
カオスと化します。
開発と整理整頓は同時にコツコツ行うべきでした、、
タスクの書き起こしをサボった
開発をしていると、開発環境と本番環境で異なるセッティングをする必要が出てきます。
リリース直前のタスクは、気づいたときにすぐToDoリストに書き起こしましょう。
実は、リリース前にApp Store Sever APIのURLの切り替えをやり忘れてしまい、
リリース後に購入エラーを発生させてしまいました、、
切り替えタスクをToDoリストに入れておけば、防げるものでした。
タスク管理はTrelloでやってました。リンク貼っておきます。
まとめ
次の開発からは、タスクの書き起こし、ゲームの設計、整理整頓をもっとしっかりやっていこうと思いました。何か少しでも参考になっていればうれしいです。ここまで読んで頂きありがとうございました!