ソーシャルゲーム開発・7つの落とし穴

この記事では、昔ソーシャルゲーム開発をして見事にハマった落とし穴について紹介する記事となります。

すでに開発に関わっている方にとっては常識的なことかもしれませんが、今後ソーシャルゲーム開発に関わる人の役に立てば……と思い紹介をさせていだきます。

落とし穴①:「運営」を意識した作りになっていない

「運営」のことを意識した作りにしていない

当たり前ですが、ソーシャルゲームは開発が完了したら終わりではありません。コンシューマゲーム開発のときは「運営」という概念がほぼなかったので、見事にこの落とし穴にハマりました。

運営のことを考えずに開発をするとどうなるかというと以下の問題が発生します。

  • イベント開催時のリリース前後に、全員待機しなければならない
  • イベント開催前にメンテナンスが必要となってしまう

具体的には「イベントがすべて手動で開始する」という作りになっていました。

イベントが時限式で発動する作りになっていない

ソーシャルゲーム開発では、イベントの自動化が重要となります。例えば以下のような作りにすればイベントの自動化ができます。

自動イベントの仕組み

あとイベント処理を行うためにデータベースを書き換えるのではなく、ユーザーが何らかのアクションを起こしたタイミングでデータベースに「イベントを開始した」という書き込みを行うようにしたほうが良さそうです。

自動化ができてないと起きる酷いこと

自動化ができていないと何が起こるのかというと、「イベントを開始しようとすると『メンテ』が必要になってしまいます。その理由は以下のとおりです。

  1. パフォーマンスの問題
  2. データの整合性の問題

更に酷いときは、メンテ後にイベントを開始したらそこで不具合が起きて、さらにメンテに入る……などということもありました。

落とし穴②:「お詫び配布ツール」が使いづらくDBへの負荷が大きい

「お詫び配布ツール」を愚直に実装すると、お詫びアイテムを全ユーザーのデータベースに挿入する……という作りになることがあります。これの何がダメなのかというと、例えば20万人のアクティブユーザーがいたら、アイテム数x20万レコードの INSERT文を発行することになり、データベースに負荷がかかりすぎてしまうことです。

そのためお詫び配布のクエリ発行に失敗してしまうと、目も当てられないことになります。

落とし穴③:セキュリティ対策が不十分

セキュリティの穴として狙われやすいのは以下の3つです。

  • 認証処理
  • DoS攻撃(送信データ改ざん)
  • SQLインジェクション

これらは専門の知識を持った人にちゃんと相談して、正しく実装する必要があります。

落とし穴④:運営スケジュールの組み方がわからない

初めてのソーシャルゲーム開発ということで、「運営スケジュール」とは何か……? というところから始まったため、お作法も知らずに作ってしまい、ちゃんとシステムが構築できませんでした。

ソーシャルゲームのイベントは、基本は以下の3つのフェーズで行われることを知っておいた方が良いと思います。

  1. 予告(イベントがあることを通知する)
  2. 告知/実施(イベントを開催する)
  3. 終了(イベントが終了)

落とし穴⑤:アップロード作業の自動化・効率化ができていない

クライアント側のアプリのアップデート、サーバー側のデータのアップデートなど自動化ができていないと、大変なことになります。

特にリリース時間ギリギリに手作業で更新作業を行うと、事故の元ですね……。

なので、最低限以下のことはしておいたほうが良さそうです。

  • ツールを作って自動化する
  • Redmineなどで差分を管理する

落とし穴⑥:「開発」と「運営」が分離していない

開発チームと、イベント運営チームは別々にしておいた方が良いです。これが一緒になってしまうと、例えば、開発中のコードが次のイベントに含まれるとか、大変なことになります。(経験談)

物理的に分けておけば、そういう間違いも減る……ということです。

また作業が分離できていないと、「開発」と「運営」のコアな部分を知っている人が限定的になって、万が一その人が倒れた場合にフォローができなくなりプロジェクトが詰む可能性もあります。

これを回避するには、仕様・設計のドキュメント化などで、作業分担できるような仕組みを作っておくことかな……と思います。

落とし穴⑦:ソースコード、データのマージ漏れが発生する

他の落とし穴とかぶるのですが、管理が雑になっていると凡ミスで間違ったコードやデータをアップロードして、サーバーが停止してメンテナンス……なんてこともありえます。

そのため、場当たり的に対応せず、ルールを作ってマージを行うのが良いかなと思います。

ソースコード管理の流れ

最後に

ソーシャルゲーム開発は、やはり「運営」のことまで考えてしっかり作る……という当たり前のことが大切となります。ですが、それができずに計画が杜撰だと、たいてい事故が起きます。

ということでソーシャルゲーム開発はすごく大変でした。

ただ、良いイベントが開催・運営できると、ユーザーからリアルタイムに良い反応がもらえるのが楽しかった気がします。コンシューマゲーム開発だと完成から発売までラグがあるので、このあたりうまくいくと面白いですね。

以上、この記事がソーシャルゲーム開発に関わる人の役に立てれば嬉しいです。

勉強になった本

ソーシャルゲーム開発をするにあたって、未経験だったのでいくつか本を買って勉強していたのですが、そのなかでおすすめの本を紹介します。

「プロになるためのWeb技術入門」 ――なぜ、あなたはWebシステムを開発できないのか

とてもわかりやすい入門書です。

オンラインゲームを作るのであれば一度は読んでおいたよい本となります。基本的すぎるとのレビューもありますが、右も左も分からない状態でソーシャルゲーム開発を始めたこともあり、とても勉強になった記憶があります。

Web開発の基本的な知識が体系的にまとまっており、個人的にはHTTP通信がよくわかっていなかったのがこれで理解できたのが大きかったです。

体系的に学ぶ 安全なWebアプリケーションの作り方 第2版 脆弱性が生まれる原理と対策の実践

攻撃されやすい脆弱性のポイントとその仕組みが紹介されていて、とても勉強になります。ただ「内容が古い」というレビューもあるので、今であればもっと良い本があるのかもしれませんね。