ソシャゲ サーバ開発時に気をつけること

サーバAPIの開発時に気をつけた方が良いことを、思いついたままにまとめました。

■ ユニットやアイテムの配布

運営に必要がなくとも、基本的にはゲーム内に登場するユニットやアイテム、コインなどの所有物はすべてプレゼントとして配布できるようにしておくと便利です。また、ユーザ作成時に所持しているユニットやアイテムなども、基本的にはすべて配布できるようにしておくべきです。これは開発時や負荷テスト、QA時に特定のユニットやアイテムを持った状態を作りたい時にすごく使えます。

■ユーザ単位でサーバ時刻を調整できるようにする

イベントのスケジュールを確認するときに便利です。ユーザ単位とする理由は、QAでスケジュールをチェックしてもらう際、複数の人で同時にイベントの開始と終了をチェックしてもらえるようになるからです。スケジュールの登録は思ったより大変な作業で、量と間違いも多いことから、効率よくチェックしてもらう仕組みを作っていると喜ばれます。

■負荷試験の事を常に念頭に置いておく

重いクエリを書くな! といった初歩的な事でなく、たとえばバトル時のスタミナ消費など負荷試験を行う上で障害となりそうな処理を書くときは、回避策を検討しておく必要があります。例えば、システムに負荷試験モードフラグを追加しておき、そのフラグがたっている場合は消費スタミナ数を0にするなどです。(処理事態を飛ばしてしまうと負荷試験にならないため、必ず 0 で更新するといったように処理が行われるよう工夫をします。)

MySQLのスレーブを使わない

スレーブサーバは遅延の関係上、ソーシャルゲームでは思ったより使えません。安価なサーバでマスタを多く作る設計をおすすめします。