モンスターの次はパックマン。
$ mv rt_v54 rt_v55 $ cat v55.patch | ( cd rt_v55 ; patch -p1 ) $ cd rt_v55 $ make clean $ make
例によって pac/ ディレクトリは一旦消去して作り直します。
$ rm -rf pac/ $ ./pac_dat.py
パックマンの位置の他に、エサの食べられた情報、モンスターのモードの変化も、加えてログ出力するようにしてみました。 以下、v54のときと同じ手順ですが、ログファイル名を pac.log に変更してます。
別の端末から netcat をポート番号55765で起動しておいて
$ nc -l 55765
元の端末に戻って、 pac.pyを実行してログを記録しつつ
$ cd pac/ $ chmod +x pac.py $ ./pac.py -o | tee pac.log
別の端末の表示を見ながら、 pac.py を起動してる端末でキー操作して、 パックマンが捕まらないようにしばらく頑張ります。
適当なところで ^C で停止。
$ head pac/pac.log mode R run 1529896226.54 mode C cage 1529896226.55 mode M cage 1529896226.55 mode Y cage 1529896226.56 . 9 17 1529896227.6 R 10 9 1529896227.78 Y 11 11 1529896227.78 C 9 11 1529896227.78 M 10 11 1529896227.78 . 8 17 1529896227.93 $ tail pac.log P 11 1 1529896298.4 . 12 1 1529896298.41 . 13 1 1529896298.64 Y 3 17 1529896298.85 . 14 1 1529896298.98 mode C blink 1529896299.13 mode M blink 1529896299.13 . 15 1 1529896299.32 M 5 19 1529896299.45 Y 1 17 1529896299.46
などと記録されてます。
基本的に4つのカラム。 最後のカラムは時刻(秒)です。
先頭が'C,M,Y,R'はモンスターの位置情報。
先頭が'P'はパックマンの位置情報。
先頭が '.' はエサ、'O'はパワーアップエサで、 パックマンに食べられたときの位置と時刻の情報。
上記の行はv54のモンスターの場合と同様に、次の形式です。
先頭のカラムが 'mode' のときは、モンスターのモード変化の情報で、 次の形式です。
例によってlogファイルもあげておきます。 pac/ ディレクトリにコピーして使います。 pac.log
pac/pac.log が存在する状態で、もう一度 pac_dat.py を実行します。
$ cd .. $ ./pac_dat.py $ ls -t *.yaml | head -12 dots.yaml pm.yaml blk_bars.yaml blk_balls.yaml mons.yaml mon.yaml pman.yaml pac.yaml dot.yaml defs.yaml blk.yaml big_ball.yaml
生成されたものを含めて、これらのYAMLファイルが揃っていればOK。
$ ./cg.py eyep=[0,0,0],[60,60,40],10 sec=20 yaml=pac.yaml data_name=all name=out_v55/pac_tst div=8 fps=4 : wh : 4800/4800(100.0%) : fin 0.49s frm : 80/80(100.0%) : fin 3m 7.86s estimated 25.05 hour at 640*480 30fps
なんだか肝心のところが、見えてない感じではがゆいです。 視点の動きを変えてみます。
$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v55/pac_tst2_ div=8 fps=4 : wh : 4800/4800(100.0%) : fin 0.68s frm : 120/120(100.0%) : fin 5m 14.42s estimated 41.92 hour at 640*480 30fps
さっきのよりは、いい感じだと思います。 30秒で、いつもより長めにまわしてますが、が、、、予想時間42時間。 ほぼ2日って...
と、その前に、適当に5秒間隔で6コマほど仕上がりを確認しておきます。
$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v55/pac_tst3_ fps=0.2 : wh : 307200/307200(100.0%) : fin 51.75s frm : 6/6(100.0%) : fin 5m 19.28s estimated 13.30 hour at 640*480 30fps
解像度は原寸で、フレームレートをおとすだけからの計算なら、予想時間13.3時間。
ちょっと角度が「ちょうど」な感じばかりなので、もうちょっと変えてみます。
$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v55/pac_tst4_ fps=0.3 : wh : 307200/307200(100.0%) : fin 48.78s frm : 9/9(100.0%) : fin 8m 9.25s estimated 13.59 hour at 640*480 30fps
予想時間13.59時間。
$ ./cg.py eyep=[0,0,20],[50,50,10],20 sec=30 yaml=pac.yaml data_name=all name=out_v55/pac : wh : 307200/307200(100.0%) : fin 38.11s frm : 900/900(100.0%) : fin 13h 4m 18.95s $ ls -lt out_v55/ | head -rw-r--r-- 1 kondoh staff 1250825 6 27 13:23 pac_6.mp4 -rw-r--r-- 1 kondoh staff 3145465 6 27 13:23 pac_5.mp4 -rw-r--r-- 1 kondoh staff 3140473 6 27 13:22 pac_4.mp4 -rw-r--r-- 1 kondoh staff 3143159 6 27 13:21 pac_3.mp4 -rw-r--r-- 1 kondoh staff 3136201 6 27 13:19 pac_2.mp4 -rw-r--r-- 1 kondoh staff 3134764 6 27 13:17 pac_1.mp4 -rw-r--r-- 1 kondoh staff 18565027 6 27 13:16 pac.mp4 :
13時間ちょいでした。
パックマンとエサはXORをとって表示してるのですが、 開始してからパックマンが最初に方向を変えるまでの一瞬がいい感じで、 XORっぽく見えます。
パックマンが向きを変えて以降は、エサが消えるタイミングがちょっと早くなってて、 食べる前に消えてる感じです。残念ながらXORの意味がありませんね。
食べられたモンスターの帰還(ret)モードの表示は、 意図してた回転動作とちょっと違ってました。 粗削り設定では、そこまで確かめれてなかったです。
mon.yamlの
eye: - kind: ball rtd: '*rtd_a' def_col: '*dark' m2g: - ax.zoom_all(0.2) - ax.slide_x(-0.2) rxs: - [ m2g, append, 2, [ ax.slide_x(0.4) ] ] mon_ret: - kind: export export: eye m2g: - 'ax.rot_z( way.get( [(0,0.5),(360,None)], sec ) )'
ここですね。 なんでそうなるんだろうか? あとでよく考えてみます。
あと、視線と円柱の物体とかが並行になって交点が無いときに、 どうも画面にヘアラインが一瞬現れるようです。
円柱の底面とかに、気泡的なつぶつぶが多く見られるのも気になりますね。