パックマンもどき

学生の頃にやってたネタではありますが、パックマンの3次元表示です。

当時はSONYのMSXパソコン「HitBit」でNTSC出力をビデオ録画して頑張ってました。

パックマンもどき2017秋 のデータを使って、まずはコースの部分だけ表示できるか試してみます。

v53.patch

$ mv rt_v52 rt_v53
$ cat v53.patch | ( cd rt_v53 ; patch -p1 )
$ cd rt_v53
$ make clean
$ make

pac_dat.py を実行して、パックマンもどきのYAMLファイルのデータを生成します。

pac_dat.py を実行すると、まず内部で pac.sh が実行されます。

pac.sh を実行すると パックマンもどき2017秋 のソースとデータファイル、パッチを取得して pac/ 以下に最新版が用意されます。

pac_dat.py の以降の部分では、blk_balls.yaml blk_vars.yaml dots.yaml の3つのYAMLファイルを生成します。

YAMLファイルのロードでちょっと細工をして、インクルードを可能にしてみました。 ut.py に file_read_inc()なる関数を追加してます。 ut.py の yaml_load()関数から、file_read_inc()関数を使うようにして、 インクルードを実現しています。

pac.yaml が最上位のファイルになっています。

$ cat pac.yaml
@include defs.yaml
@include big_ball.yaml
@include blk.yaml
@include dot.yaml

pac:
- kind: exports
  exports: [ blk, dot ]
  m2g:
  - 'ax.slide([-21.0/2,-23.0/2,0])'
  - ax.zoom_y(-1)

all:
- kind: exports
  exports: [ big_ball, pac ]

# EOF

てな具合にインクルード行が並びます。

例えば blk.yamlの 中身は

$ cat blk.yaml
@include defs.yaml

blk_ball:
- kind: ball
  rtd: '*rtd_a'
  m2g:
  - ax.zoom_all(0.25)

@include blk_balls.yaml

blk_h:
- kind: pipe
  rtd: '*rtd_a'
  m2g:
  - ax.slide_z(1)
  - 'ax.zoom([0.25,0.25,0.5])'
  - ax.rot_y(90)

blk_v:
- kind: pipe
  rtd: '*rtd_a'
  m2g:
  - ax.slide_z(1)
  - 'ax.zoom([0.25,0.25,0.5])'
  - ax.rot_x(-90)

@include blk_bars.yaml

blk:
- kind: or
  args:
  - kind: exports
    exports:
    - blk_balls
    - blk_hs
    - blk_vs
  def_col: '*blue'

# EOF

で、ここから pac_dat.py の実行で生成されたYAMLファイルをいくつかインクルードして、上位のpac.yaml に届かせてます。

また、file_read_inc()では超簡単な対処ですが、一応多重インクルードを抑制してます。 なので、そのファイルで直接使うものは、重複を気にせずどんどんインクルードしてもOKです。

$ chmod +x pac_dat.py
$ ./pac_dat.py

$ ./cg.py eyep=[0,0,0],[60,60,40],10 sec=20 yaml=pac.yaml data_name=all name=out_v53/pac_tst div=2 fps=4
  :
wh : 19200/19200(100.0%) : fin 2.85s
frm : 80/80(100.0%) : fin 8m 3.21s
estimated 16.11 hour at 640*480 30fps

$ ./cg.py eyep=[0,0,0],[60,60,40],10 sec=20 yaml=pac.yaml data_name=all name=out_v53/pac
  :
wh : 307200/307200(100.0%) : fin 40.47s
frm : 600/600(100.0%) : fin 12h 55m 20.99s

$ ls -lt out_v53/ | head
-rw-r--r--  1 kondoh  staff   3094628  6 22 11:48 pac_4.mp4
-rw-r--r--  1 kondoh  staff   3140605  6 22 11:48 pac_3.mp4
-rw-r--r--  1 kondoh  staff   3145227  6 22 11:46 pac_2.mp4
-rw-r--r--  1 kondoh  staff   3137667  6 22 11:45 pac_1.mp4
-rw-r--r--  1 kondoh  staff  13737785  6 22 11:44 pac.mp4
  :

ちょっとコースを仕切る円柱が太すぎたかな。

パワーアップえさの球は点滅させる代わりに、 色を赤から黄色に2秒周期で変化させてみました。