青山Pの講演資料をわかりやすく説明したよ

「さっちゃんねる」さんで知りました。青山Pの講演の資料を、わかりやすく紹介するよ(できるだろうか……)。読本としての資料https://www.devfesta.jp/program/のTrack A 13:30からの、青山Pの項目にあるPDFファイルを読みながら、ここも読んでください。

直リンクしていいのかどうかわかりませんが、PDFはこちらです。

事例その1 知の祝祭で、終わってから元の場所に戻れませんでした

  • この前のテンの日にあった「知の祝祭」では、イベントを終了して元の場所に戻る時に不具合が多発したよ。
  • 「知の祝祭」の舞台は専用サーバーで、冒険者はサーバー01~サーバー40から専用サーバーに移動するよ。
  • 「知の祝祭」が終わって、沢山の冒険者を一度に元のサーバーに戻ろうとして不具合が出たよ。
  • 問題が易しめだったから、これまでの「知の祝祭」と違って、最後まで沢山の冒険者が残ったよ。だから、多数の冒険者を処理しきれなかったよ。

昔の「知の祝祭」の問題は難しく、一度に終わる冒険者が少なかったから安心してました。担当者がゾーンサーバーを増やしたのが、逆にワールドサーバーに負荷をかけてしまいました。


事例その2 第2回ドルボードレースで、順位が正常に表示されない

  • そのサーバーでの、どのレースかを判断するために、それぞれのレースに付与される番号であるRaceNo関数があって、総レース数のRaceKeepTop関数もあるよ。
  • RaceKeepTop関数に格納されている数字より少ないレースは、順位の処理をしないよ。その場合はNullを返すよ。そうじゃないなら、順位を返すよ。
  • 順位がNullだったら、処置として1人中1位と表示されるようになっているよ。
  • つまり、レース回数RaceNoか、総レース回数RaceKeepTopの、どちらかがおかしくなっているよ。
  • 旅の覇者モンジから、オーガGPプリズムをもらえるよ。でも、もらえないことがあったよ。
  • 修正対応のため、スタート地点(モガリムあたり)の地域のサーバーを再起動したよ。
  • RaceNoや、RaceKeepTop関数は、データーベースサーバーじゃなくて、モガリムあたりの地域サーバーで管理されているよ。
  • だから、再起動でRaceNoがゼロになっちゃってよ。
  • でも、ゴールあたりのサーバーにあるRaceKeepTop関数はそのままだったよ。RaceNo関数がそれより少なかったから、Nullを返しちゃったよ。
  • だから、ゴールではレース情報がなくなっちゃったよ。だから順位がおかしくなっちゃったよ。

対応 関連した全サーバーを再起動すればいいが、原因の究明ができた時は後少しでRaceKeepがRaceKeepTopに追いつきそうだったから(普通の状態になってくれそうだったから)冒険者の邪魔をしないよう、待つことにした。

レースを識別する情報を、相対的な番号から開始日時への絶対的な番号にしようとしている。意味のある識別子を採用しよう! サーバーの起動のタイミングは、使っている人もいるから制御できない!


事例その3 マイタウンの時間を止めると、メリーゴーランドやコーヒーカップなどの庭具も止まってしまう

  • クライアント側(ゲーム機とか、ユーザーのパソコン側)の話。サーバーの話ではない。
  • アストルティアの時刻は止まっても、動きつづけてくれる庭具は沢山あったため、全部の検証はしていなかった。
  • 不具合が置きた庭具は、昼と夜とで光ったり光らなかったりする。その上で、動きもあったりする。
  • 光は時刻で処理し、動きのほうは常時処理にすべきだった。昼夜で光の処理が変わると、連動している動きも止まってしまった。
  • キャラクターと3DBG。バックグラウンド。庭具は3DBG。
  • キャラクターは、たとえば呪文詠唱の動きや、風による服の動きなどが同時に処理できるが、3DBGにはそれはなかった。家庭用ゲーム機に組み込むための仕様だった。
  • 設計上は複数の動きを同時にはできない。設計当時はマイタウンもなかった。だから不具合が置きた。
  • 対応。まだ修正中。同時に3DBGのモーションができるようにすべきだが、基本設計から直さなければならない。今回は特殊な処理をしている。

考察(意訳)確かに、庭具の光や動きの処理は別々にすべきだったが、当初はマイタウンなどもなく、予測も難しい状況だった。それぞれに別の処理が必要になるかどうか、判断は難しいが、必要になる。経験がいる。


まとめ

知の祝祭:昔は大丈夫だったが、全てのケースを考えよう。

ドルボレース:意味として通じる値を使おう。サーバーの起動タイミングは、使っている人もいるのでコントロールはできない。

マイタウン:庭具を光らせるのと、動かす効果とか(ああこ註:これだけに限った話じゃないけど)は別々にしておくべきで、混同すると後になってまずい。

以上。ということなんだと思う……たぶん。信用しないでね。間違うもんなんだから。一発でコンパイルが通るなんてほうがおかしいんだから。

ぐらいです。



ゲームランキング

コメント