サガフロンティア2コミュニティ>サガフロンティア2掲示板

[No.2141] サガフロンティア2 - 狩りもの調査の項目  投稿者:OH@かんりにん 投稿日:2012/09/25(Tue) 05:53

今回、データの整理を大量にやったのですが、
サガフロンティア2 - 狩りもの調査 で多くの誤記(写しミス)が見つかり、今回修正できました。
元が掲示板ログなので、検索すれば元データと突き合わせできるので助かりました。

さて、で、これの判定率って要らないかもしれないと思い始めています。
何より計算が面倒くさくて、更新を停止した原因ですし、
アルティマニアにある判定順が本当に正しいのか?若干の疑いがでてきていますし。
過去のシリーズでは、ロマサガ3もサガフロ1も高確率側から判定なので、サガフロ2で変えてるかどうか、という

あとは、ハードロックについて、樹海では落とさず、化石洞窟では落とす、ということで
かねてから、シーントレジャーなのでは?という疑いがありましたが、
wikiさんでもシーントレジャーにしてますし、その方が辻褄が合うようにも思えます。
アルティマニアの誤記ということで。

うーん、生データ(.xls)を見せてもらったときに、ちゃんと聞けば良かったのですが・・・
舞い上がってて、ちゃんと見れてなかったのです。
(時間はたっぷりあったのに、ろくに会話できなかったですし・・・)




ところで、多段判定って他ではあまり見ない気がするけど、効率化を考えるとじつに良くできた作りですね。

普通、アイテムドロップを考える時
アイテムA=1/256、アイテムB=5/256、アイテムC=20/256が欲しいなら

#乱数取得
my $rand = rand(256);
if (1 > $rand ){ アイテムA入手 } #乱数が0~1なら入手
else if (6 > $rand ){ アイテムB入手 } #乱数が2~6なら入手
else if (26 > $rand ){ アイテムC入手 } #乱数が7~26なら入手

とか、書いてしまいそう。
これだと、乱数取得は一回で済むけど、あちこちで乱数取得しまくるとコードに無駄が多いし
6とか、26とか訳分からない数字が出てくると、欲しかった確率が何だったのか、あとで訳が分からなくなる。

で、そうならないために、乱数取得の外側、確率判定ごとまるまるルーチン化しておいて、
回避判定にもドロップ判定にも全部これを使い回す。



sub get_hit(){
#乱数取得
my $rand = rand(256);
my $probability = shift;
return true if ($probability > $rand );
}

これを別で書いておけば、書くのはこれだけ

if (&get_hit(1)){ アイテムA入手 }
if (&get_hit(5)){ アイテムB入手 }
if (&get_hit(20)){ アイテムC入手 }

これなら、あとあと調整もしやすくなります。
ゲーム作りって、ただでさえマジックナンバーが増えてしまいそうですし。

と、関係ない長話・・・

[No.2142] Re: サガフロンティア2 - 狩りもの調査の項目 投稿者:OH@かんりにん 投稿日:2012/10/08(Mon) 14:33

掲示板は新調しました。
今までフリーの拾い物だったので、過去ログdat送りとかしていて、
全体構造や総量が分かりにくかったのですが、シンプルなデータ構造に作り替えました。
ログの型が全く違うので、perlで生成させたりして、ほぼ0から作り直しています。
丸々、1日半かかりました(汗、、、大変でした)

目次と実データを分割していますので、以前よりは負荷は軽くなるはずです。

分かりやすくなった分、スパムも来やすいかもしれませんので、しばらくはこまめに確認したいです。
不具合がありましたらご連絡下さい。

なお、検索はなくなりましたので、後ほどgoogle検索を付けたいと思います。
全体で1MB程度なので、全文検索も出来なくはないのですが
以前のように、小分けdat送りしていないので、サーバ負荷が上がってしまうので、あしからず

▽以下は記事NO. 2141 への返信フォームです。


お名前
タイトル
HP URL
コメント
※ spam避けのためURL欄は入力出来ません
文字色
削除PASS (8字内の英数字)