CoDBの作り方
どこにもちゃんとした文章として書いてなかった気がしてきたから書いた
とにかくバトルの画面で観測できるのは、プレイヤー名(3種類)とパーティ(8種類)で、これらは独立なので合わせて24通り
各seedから実際の操作と同じように生成処理を通して結果を広い、エンコードして詰める
(player * 8) + teamで0 ~ 23の数値にエンコードする(ちょっと粗だけど1回あたり5bit
1~5回目の結果をエンコードした値を1回目 << 20, 2回目 << 15, 3回目 << 10, 4回目 << 5 , 5回目 << 0で詰める
6回目 + (7回目 * 24)をキーとしてファイル名にする
いきなり書き込むのではなく、いったん辞書オブジェクトに詰める
全seed分の結果を持つとメモリから溢れるので、定期的にファイルに書き込み、最後にファイル単位でソートし直す
ファイルにはseed codeのペアで書き込む
検索するときは、キーでファイルを特定し、エンコードした値を二分探索で
上記はFullDBの場合で、LightDBの場合は
…コードどっかいった!!!!
たしか、大枠はFullDBと同じで、1回分生成を捨ててるだけだったと思う
1回捨てた後のseedで重複を排除してから計算しているだけのはず
1回目の生成を捨てた直後のseedの総数は128095165個でした。
これもLambdaに乗せられる?
たぶんいける
LightDBなら合計で1GBいかないくらいだから、月々1~2円程度?
65536個のファイルをPUTするので初回の転送量は190円くらいするかも