アカウント名:
パスワード:
30年の時を経て当事者が直接語るというのは感慨深いが、話の中身自体は特に何か当事者にしか知り得ない興味深い事情とか裏話があるわけではなく、現象(8回なにかすると別のフラグが立つ)から容易に想像がつく、フットプリントできるだけ小さくするための実装上の制約以上のものではなかったですね。
しかし逃げるコマンドの回数をカウントしなきゃいけない理由がわからない。雑魚敵に対して>>ドラクエIVでは4回目の「にげる」で必ず逃げられるという仕様は限られたメモリ空間を3bitも消費する価値があるほど重要だったのだろうか。一回あたりの逃げ成功確立を適当に設定しておけば十分な気が。あと「4回試行でかならず成功」を実装するだけならカウンタは2bitで十分な気が。
0回、1回、2回、3回目のインクリメントで4以下の数字をランダムで求める。4の場合は逃げられる。それ以外は2以下の数を書き込む。必ず成功しなくなる。
ビット制約があり正しい作りなならこういう作りかな?
ファミコンではその「ランダム」も曲者っていう印象だけど一つの乱数を共用している場合「4」までしか発生しない(乱数に制限を設ける)ということができないように思う「逃げている」とかをフラグ管理しようと思ったら、メモリ等の制約上それはそれで難しそうだし
何かの時間(フレーム)とかをキーに乱数テーブルから拾ってくればいい。だから真面目に乱数を拾ってこなくてもいいんだよ。10ステップくらいで求められるレベルで作るのがコツでしょ。これが工夫。
ランダムを音にすると値がホワイトノイズになります。アナログ値読み取る場合は半導体から出るノイズをランダム値として使えます。
サンプリングしたホワイトノイズをループさせても配列から読み取っているのと同じになります。
>乱数テーブルから拾ってくればいい
乱数ルーチンを置くなら常駐の16Kbyteの中に書かなきゃならんので、そんなテーブルを置く余裕はないです。
タイミング次第で最悪ループしますよね。計算で求めた(擬似)乱数にソルトとして加えるならば分かりますが、時間だけで結果が決まるのは危険だと思いますね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲは一日にしてならず -- アレゲ研究家
まあそうだろうなと (スコア:0)
30年の時を経て当事者が直接語るというのは感慨深いが、
話の中身自体は特に何か当事者にしか知り得ない興味深い事情とか裏話があるわけではなく、
現象(8回なにかすると別のフラグが立つ)から容易に想像がつく、フットプリントできるだけ小さくするための
実装上の制約以上のものではなかったですね。
しかし逃げるコマンドの回数をカウントしなきゃいけない理由がわからない。
雑魚敵に対して
>>ドラクエIVでは4回目の「にげる」で必ず逃げられる
という仕様は限られたメモリ空間を3bitも消費する価値があるほど重要だったのだろうか。
一回あたりの逃げ成功確立を適当に設定しておけば十分な気が。
あと「4回試行でかならず成功」を実装するだけならカウンタは2bitで十分な気が。
Re: (スコア:0)
0回、1回、2回、
3回目のインクリメントで4以下の数字をランダムで求める。
4の場合は逃げられる。それ以外は2以下の数を書き込む。
必ず成功しなくなる。
ビット制約があり正しい作りなならこういう作りかな?
Re: (スコア:0)
ファミコンではその「ランダム」も曲者っていう印象だけど
一つの乱数を共用している場合「4」までしか発生しない(乱数に制限を設ける)ということができないように思う
「逃げている」とかをフラグ管理しようと思ったら、メモリ等の制約上それはそれで難しそうだし
Re:まあそうだろうなと (スコア:0)
何かの時間(フレーム)とかをキーに乱数テーブルから拾ってくればいい。
だから真面目に乱数を拾ってこなくてもいいんだよ。
10ステップくらいで求められるレベルで作るのがコツでしょ。
これが工夫。
ランダムを音にすると値がホワイトノイズになります。
アナログ値読み取る場合は半導体から出るノイズを
ランダム値として使えます。
サンプリングしたホワイトノイズをループさせても
配列から読み取っているのと同じになります。
Re: (スコア:0)
>乱数テーブルから拾ってくればいい
乱数ルーチンを置くなら常駐の16Kbyteの中に書かなきゃならんので、そんなテーブルを置く余裕はないです。
Re: (スコア:0)
タイミング次第で最悪ループしますよね。計算で求めた(擬似)乱数にソルトとして加えるならば分かりますが、時間だけで結果が決まるのは危険だと思いますね。