アプリゲームでお詫びのアイテムを配った話 〜ゲームイベントのバグとその裏側のエンジニア戦い〜 北山淳也 @j_kitayama_hoge000
突然ですがスマホのゲームなどで「運営からのお詫びのアイテム」を受け取ったことはありますか?私は「運営からのお詫びのアイテム」を配ったことがあります!今回はそんな話
あるアプリゲームのイベントの話
どんなイベントだったか
- 期間内にポイントを集める
- 集めたポイントでランキング
- 期間終了後、ランキング順位に応じてアイテムがもらえる(特別称号/特別激レアアイテム/参加者プレゼント/特別称号/参加者プレゼント/参加者プレゼント3位以下)
イベント終了の監視
AM0:00、ランキング終了。AM1:00~ランキング報酬配布のようなゲーム内スケジュールだった。夜、眠い目を擦りながら報酬配布が正常に行われているか監視してた。
なぜ監視をするのか?
配布開始参加プレイヤーの人数分だけ繰り返し参加プレイヤーからプレイヤーを1人取り出しプレイヤーの順位を確認、報酬を配布僕のアカウントの分まだかな……配布プログラム
- 1人1人アイテムを配る仕組み
- 自分のアカウントに配られるまで待機ランキング報酬
ランキング報酬の配布開始しかし、その時事件がおこる……
【運営が考えていた報酬配布】
・特別称号・特別激レアアイテム・参加者プレゼント・特別称号・参加者プレゼント・参加者プレゼント3位以下1名様そのほかのプレイヤー1名様
【実際に行われた報酬配布】
・特別称号・特別激レアアイテム・参加者プレゼント・特別称号・参加者プレゼント・参加者プレゼント3位以下全ての参加プレイヤーに1位の報酬が配布!!!ぼく
もちろん大炎上1位の激レアアイテム届いてる!メンテナンスくる???運営やっちまったなww詫び石5000000個よろ詫び石はよおいおいなんだこれwキター!1位私なんだけどなにこれ?
運営の戦いが始まる運営バグ
なにはともあれメンテナンスモードON!
- 「現在メンテナンス中です」と表示してゲームをプレイできない状態にすること
- エンジニアが裏側でスイッチONするエンジニア(ぼく)あからじめ準備してあるスイッチをONプレイできなくなる
メンテナンスモードにしてしまったので…
- Twitterなどでメンテナンスのお詫びを告知◦このあたりはプランナーやCSで対応
- メンテナンス時間の試算
- 可能であればゲーム内のメンテナンス画面にメンテナンス終了予定時刻を掲載
- どのような対応をするのかチームで決定
- メンテナンス終了後の告知の準備
やるべきことは大きく7つ
- ランキング報酬配布プログラムの緊急停止
- 配布してしまったアイテムの回収・受け取った後アイテムを売ってたりしたらそれも全て戻す
- プログラムの修正
- プログラムのテスト
- ランキング報酬配布プログラムの再実行
- お詫びのアイテム配布
- メンテナンスモードの解除
メンテナンスモード中の戦い
- ランキング報酬配布プログラムの緊急停止エンジニア(ぼく)あからじめ準備してあるスイッチをONプログラム緊急停止
- 配布してしまったアイテムの回収(これが大変。単純に回収できる状態の人からは回収。受け取り後に売却やアイテムの変換などをやっているプレイヤーはプレイヤーが行ったことのデータを全て巻き戻す。1人ではとてもやりきれないのでプログラムの修正を並行して別のエンジニアが対応)
- 配布してしまったアイテムの回収(プレイヤーが何をしたのかのログから追いかける激レアアイテム受け取り激レアアイテムをアイテムAと合成できたアイテムA’をアイテムBと合成できたアイテムA’’をアイテムCと合成できたアイテムA’’’を売却してゴールドにゴールドを使ってキャラクターAを強化キャラクターAの強化を戻してゴールド返却ゴールドを回収してアイテムA’’’を配布アイテムA’’’を回収してアイテムA’’とCにアイテムA’’を回収してアイテムA’とBにアイテムA’を回収してアイテムAと激レアに激レアアイテムを回収巻き戻し)
- プログラムの修正(原因を突き止めて修正を行うランキング報酬。配布開始参加プレイヤーの人数分だけ繰り返し参加プレイヤーからプレイヤーを1人取り出しプレイヤーの順位≦報酬の順位報酬を配布ランキング報酬。配布開始参加プレイヤーの人数分だけ繰り返し参加プレイヤーからプレイヤーを1人取り出し報酬の順位≧プレイヤーの順位≧報酬の順位報酬を配布
- プログラムのテスト(ダミーのプレイヤーリストに大して配布を実施。本当はイベント終了までに実施しておくべき作業。今回はこの「テスト」をやっていなかったのでバグに)
- ランキング報酬配布プログラムの再実行エンジニア(ぼく)あからじめ準備してあるスイッチをONプログラム再実行
- お詫びのアイテム配布エンジニア(ぼく)あからじめ準備してあるプログラムを起動お詫びのアイテム配布プログラムが実行
メンテナンスモードの解除
エンジニアが裏側でスイッチOFFするエンジニア(ぼく)あからじめ準備してあるスイッチをOFFプレイできるようになる
メンテナンスモードを終えたら
- Twitterなどでメンテナンスのお詫びを告知
- ゲーム内のお知らせなどでもお詫びを告知
- お詫びアイテムのお知らせを掲載
- その後大丈夫そうなことを確認してお布団へ
詫び石きたw詫び石少ないぞ結局すぐには寝れないぼく
全てが終わったら次の日以降に反省会
- なぜ起こってしまったのか?→プログラムのバグが原因
- なぜ発生したのか?→配布プログラムがバラバラ
- なぜ気づけなかったか?→テストしてないプログラムが世の中に出てしまっていた
ゲームはどうやってみんなの手元に届く?
会社で作られたものが世の中に出るまで何をつくるかみんなで相談イラストを描いたりプログラムしたり敵の強さを決めたりバグがないかチェックする(テスト)みんなの手元へ(世の中に出る)
反省会が終わったら対策
- 配布プログラムがバラバラ→「共通化」を行うことで標準化イベントAの報酬配布プログラムイベントBの報酬配布プログラム報酬配布プログラム報酬リスト
- 反省会が終わったら対策
- テストしてないプログラムが世の中に出てしまった→テスト実施票を機能ごとに作成するようにどれをテストした/してないがわからないどれをテストした/してないがわかる
そして次のイベントへ…
まとめ
スマホゲームもプログラムで動いている
ちょっとしたプログラムのミスで大変なことが起きることもある→責任重大だけど、それが楽しい!
「エンジニア」は毎日PCに向かってプログラムを書いてるだけじゃない→プログラムがわかるからできることがある
引用元:https://speakerdeck.com/junki555/zhong-gao-sheng-xiang-ke-apurigemudeocha-bifalseaitemuwopei-tutahua |