[DQ10]青山さんのプレゼン資料が公開されてましたね

社会人の方ならその業界で行われている技術講演やセミナーに行く事もあるでしょうし、
プレイヤーの中にも講師として仕事での実例や知見、取り組みなんかを話した事あるよー
なんて人もいるかもしれません。

青山さんも先日講演をしたようで、そのプレゼン資料がSlideShareにて公開されてました。

業界こそ違えど私も技術者の端くれとして興味があったので拝見しましたー。

先日買った青山本(↑これね)より量こそ少ないですが、
なかなか赤裸々な失敗事例が3つ解説されていて面白い。

失敗事例は以下3つ

・「キラージャグリング」「ゴッドジャグリング」の効果音が
 鳴り続いたり、ノイズが発生することがある

・邪神の宮殿でパーティーが成立しないことがある

・「オウムガイ」を釣り老師や魚交換に納品する時に
 一つ下のサイズで扱われる事がある

バリバリのプログラマーじゃなくてもちょっとしたスクリプトなんかを書いて
業務効率化する事もある人であれば、どれも分かりみの深い話なんじゃないでしょうか。

1つ目は、共通化された「音を止める処理」を別件の不具合対応のために無効化したら、
キラジャグなんかの方に影響がでちゃったって話。
確かに処理を共通化する事によるメリットはあるけど、
それをどこまで使ってるか影響範囲がわからないまま使い回し続けると、
いざ何かあってその処理に手を加える時に困るってのはあるあるネタだね。

みんな「音を止める処理は無効化すべきじゃね」と判断しちゃった経緯が
プレゼン資料だけではちょっと理解できなかったけど、
対策として「影響範囲がわかんないなら、その共通処理をそいつだけ外して
個別に修正した処理を代わりに入れる」ってのは正解でしょう。

まあ、どれもこれも個別化していっちゃうと、本当に全部に対して無効化しなきゃらならない
問題が発生したら、個別化したコード全部いちいち修正しなきゃならなくなるので
そのあたりトレードオフにはなるんだけども。

2つ目は、ある「6月10日更新」の邪神の宮殿でマッチングしない問題。
これもなあ、暫定的に入れた処理をすっかり消し忘れて、
後になってそいつが悪さするという・・・ありそうな話だよほんとw
暫定的にプログラムに直接書いたマッチング条件が一年後に有効となって、
プレイヤー画面に見えてるマッチング条件と異なる条件なものだから
全部不成立になるという・・・待ちぼうけーw

3つ目はプログラムとか情報処理に全然詳しくない人だと、
なんで値がいきなりずれてんの?って意味不明かもですね。
実はコンピュータって小数点以下の計算がめっちゃ苦手なんですよね。
なぜかっていうと0・1の2進数で動いているから。

例えば10進数の0.1なんかを2進数で表現しようと思っても絶対に無理なんです。
0.000110011…みたいに延々0と1が続いちゃう。
だから0.1+0.1=0.2なのに、コンピュータがまともに計算しようとすると
0.2にほんの僅か足りなかったりするんです。
もちろんそんな事にならないよう、世の中の計算アプリなんかはうまく対応してるわけですが、
今回それに失敗したって話ですね。

1023mm(ミリメートル)をm(メートル)に直す(1000で割る)と1.023mになる。
こんな簡単な計算結果も、コンピュータにとっての生のデータは2進数であるがゆえに
ちょっとずれて、1.02299999…だったりする。
それをまたmmに直して小数点以下を切り捨てると1022mmと、1mm減ってしまう!

内部的なデータの受け渡し(C++からLuaへ)がmm(ミリメートル)だったりm(メートル)だったりしたので、
その過程でのこういった誤差を補正してるつもりだったんでしょうけど、
実はうまくいってなかった。
最初の1023mmでビッグ判定したのに、
最終的に保存された数値データは1022mmになったものだから、
後でその数値から大きさ判定し直した時に1022mmのノーマル判定されてしまったという話です。

まあEXCELや普通の計算機とかはそのへん
「うまくやる」ようにプログラムされてるので僕ら使う側は気にしなくていいんだけど
(それでも稀に、この誤差問題が出る事もあるらしいが)
直接プログラムしてる人達は「うまくやる」仕組みで書かなきゃならない人たちなので
大変ですね。

はあ、今日は文字ばっかりになってしまいましたw

不具合がある度に掲示板なんかで文句言ったりする人がいますが、
いやそれは確かに文句も言いたくなる気持ちもわかりますけど、
SEの端くれとしてはあんまりヤイヤイ言う気になれないですね。
ほんと身につまされるからね。


ドラゴンクエストXランキング

Pocket

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)