🐱

FileMakerで「飛んでいる矢は止まっている」

2022/12/25に公開約2,300字

はじめに

いきなり何言ってんだこいつ??
って言われそうな哲学的表題ですが、今回のネタは例のアレですアレ。

Webviewerを使わず、ネイティブの機能(ポータル)だけで作った高速落下テトリスです。

その概要のネタバラしなわけですが、
毎度毎度のことながら、改めて言わせて貰うと私の記事は9割がた、

実務に一切役に立たない

という点をお忘れなきよう...期待しないでネ。
頭のおかしいヤツがバカなことしてるなぁ、ってな軽い気持ちでドーゾ。

ちなみに、
飛んでいる矢は止まっている とは、ゼノンのパラドクスと言われるものです。
https://ja.wikipedia.org/wiki/ゼノンのパラドックス
飛んでいる矢も、その瞬間その瞬間を区切れば空間に止まってうんたらかんたら...

この高速落下テトリスも、一見落下しているように見えて実は落下していない。
いゃ...実際は落下しているんですが...実は止まっているんです。

は?w

っていうところで、
飛んでいる矢は止まっていると表題にしたんですが、まぁ...何のことか分かりませんよね?
大丈夫です、安心して下さい。私も良く分からず表題を付けてます。


本題

テーブルやフィールドが簡素な分、スクリプトでガリガリやっているんですが、そこを細かく紹介していくと㌧でもない量の記事になってしまいますので、今回はあくまでも「落下」という部分の仕組みに焦点を絞ってみます。

取り合えずですね、

上下左右の移動 = 位置座標(xとyの値)の変化

と普通考えると思います。そりゃそうですよねぇ。
小学校で折れ線グラフ習った時からそんな事は知っとるわボケェ!ってなもんで。

実際にそのような座標変化で、このスネークゲームは作られているわけですが、
https://zenn.dev/ontherocks_plz/articles/c4e1fbd70e263c

ところが!

こういった手法をポータルで利用する場合は大きな弱点がありまして、刻々と変化する座標変化をポータルに反映させていく関係で、どうしても高速化が望めないんです。その都度ポータルを全面的に評価していく必要がありますから、重くなりがちなんですねぇ...この辺がFileMaker的な限界 クソッ

だからポータルは遅いって言われる(チガウ

実際は「ポーテルが」と言うよりも、「評価すべきオブジェクトが」レイアウト上に多いとFileMakerは 「やってらんねぇわ...」 って労働意欲が低下し始めますので、何か重いなぁと言う場合は、条件付き書式をあちこち設定し過ぎてないかな?とか、計算フィールドをあちこち置いてないかな?とか、見直してみると良いと思います。

と、たまにちゃんとした事も書いておく

取り合えず、
テトリミノを高速落下させる為にどうするか


落下させるけど落下させない

きた、禅問答

テトリミノの左右移動(x軸移動)、これは仕方ないです。ポータルは昔ながらの左右スクロールができないポンコツ仕様ですので、x軸の座標値を増減させるしかありません。

でも、y軸移動は...そう!
ポータルの行移動で解決できるんですよ奥さん!

つまり、こういうことです。

ネタバレ

えええぇぇ...

っていうね。
そうなんです、y軸の座標値は加算していないんです。
落ちてるようで落ちてない、ただのスクロール(ポータル行移動)。

つまり、

飛んでいる矢は止まっている キリっ

ポータルの行移動は無駄に速いですし、またキー入力を拾いながらのx軸座標値を変化させながらの回転処理をしながらのy軸座標値を加算し続ける、という複合計算処理も軽くできますから高速化を望めます。

このことを利用すれば、
シューティングゲーム的なものも鬼頑張れば作れます(試した)。
もっと高速な落下にする場合はフォーム形式でのポータルではなく、リスト形式を利用したりすると良いかもしれませんね。

でもまぁ...
あんまりFileMakerに無茶させると駄々こねてハングアップしたりしますので、
その辺はほどほどに...


おわりに

いかがだったでしょうか。
やってることは至極単純なんです、えぇ。いわゆるコロンブスの卵的な?
とは言え、
テトリスが夢に出てくるくらいうなされて、試行錯誤の上に辿り着いた結果なのは内緒です。

ちなみに、今はもうテトリスにポータルは使ってません。
今はコレです。
https://zenn.dev/ontherocks_plz/articles/c10828730be715

それでは
Let's enjoy FileMaker!

Discussion

ログインするとコメントできます