OpenXOPSの当たり判定を仕上げる | 2014.12.13 02:47 |
ブログの更新をさぼってしまい、すいませんでした。
そして、前々回『関東はそんなに寒くないぜ★』と言ったら、急に寒くなりやがって。
10月15日の時点で『当たり判定は やる気がない』と言ってしまいましたが、
色々考えた結果、当たり判定にも手を付けることにしました。
むしろ、当たり判定以外は概ね良い感じに仕上がっている中で、当たり判定
だけ雑な作りと言うのもどうなのかと思ったからです。
ただ、このブログでも自作偽XOPS(fxops)時代から散々書いていた通り、当たり
判定は非常に難しく悩ましい問題です。
自作偽XOPS時代は、基礎的な知識が全くなく何も分かっていない状況で、参考
文献のソースコードに頼っていたりと、かなり滅茶苦茶なことをしていました。
何年も経った今では当たり判定の実装も慣れてきており、OpenXOPSでは無事に
一発でそれなりのプログラムを書き上げることができました。
ただ、本家XOPSと比べると分かる通り、やはり不満が残る計算です。
これ以上自力で考えるのは現実的ではないと考え、素直に諦めて最終手段です。
・・・本家XOPSのプログラム担当 nine-two氏に直接聞く・・・
そりゃ当たり判定に関わらず、nine-two氏に最初から全て聞くのが一番手っ取り
早くて私は楽ですが、ご本人に多大なるご迷惑をお掛けするので、直接質問する
というのは、最後の切札に留めると決めていました。
最終作戦の実行です。 本物を作られたnine-two氏に直接連絡を取って、当たり
判定について聞いてみました。
nine-two氏もお忙しい中、本家XOPSで使用しているアルゴリズムについて、非常
に詳しく教えて頂きました。本当に助かりました。(ありがとうございます。)
ブロックの外側・内側の判定を駆使するのが最大の胆で、移動先がブロックの内側
である場合、移動元から見て面している面に接触したと判定する手法です。
(詳細な計算方法は、近日中にOpenXOPS公式サイトの「OpenXOPS技術解説
書」に載せます。)
『うわー その手があったか!』 言われてみれば、確かにそれで判定可能です。
そのアルゴリズムを教えて頂いた時、思わず言葉を失ってしまいました。感動した
のと、その計算方法を思い付かなかった自分の未熟さという二重の意味で。
ちなみに、この手法はnine-two氏が独自に考案されたようです。
何て言うか「流石」の一言に尽きます。 やはり足を向けて寝れません。
OpenXOPSとは関係ない別件ですが、久しぶりにXopsAddonCreatorを弄りま
した。 XopsAddonCreatorを利用して頂いている方から、コピーandペースト時
のバグを指摘して頂いたからです。
バグ自体はあっさり直ったのですが、そのバグを1個直すだけでバージョンアップ
するのも もったいない(?)ので、他にも小さな新規機能を付けられないか模索
中です。
そして、前々回『関東はそんなに寒くないぜ★』と言ったら、急に寒くなりやがって。
10月15日の時点で『当たり判定は やる気がない』と言ってしまいましたが、
色々考えた結果、当たり判定にも手を付けることにしました。
むしろ、当たり判定以外は概ね良い感じに仕上がっている中で、当たり判定
だけ雑な作りと言うのもどうなのかと思ったからです。
ただ、このブログでも自作偽XOPS(fxops)時代から散々書いていた通り、当たり
判定は非常に難しく悩ましい問題です。
自作偽XOPS時代は、基礎的な知識が全くなく何も分かっていない状況で、参考
文献のソースコードに頼っていたりと、かなり滅茶苦茶なことをしていました。
何年も経った今では当たり判定の実装も慣れてきており、OpenXOPSでは無事に
一発でそれなりのプログラムを書き上げることができました。
ただ、本家XOPSと比べると分かる通り、やはり不満が残る計算です。
これ以上自力で考えるのは現実的ではないと考え、素直に諦めて最終手段です。
・・・本家XOPSのプログラム担当 nine-two氏に直接聞く・・・
そりゃ当たり判定に関わらず、nine-two氏に最初から全て聞くのが一番手っ取り
早くて私は楽ですが、ご本人に多大なるご迷惑をお掛けするので、直接質問する
というのは、最後の切札に留めると決めていました。
最終作戦の実行です。 本物を作られたnine-two氏に直接連絡を取って、当たり
判定について聞いてみました。
nine-two氏もお忙しい中、本家XOPSで使用しているアルゴリズムについて、非常
に詳しく教えて頂きました。本当に助かりました。(ありがとうございます。)
ブロックの外側・内側の判定を駆使するのが最大の胆で、移動先がブロックの内側
である場合、移動元から見て面している面に接触したと判定する手法です。
(詳細な計算方法は、近日中にOpenXOPS公式サイトの「OpenXOPS技術解説
書」に載せます。)
『うわー その手があったか!』 言われてみれば、確かにそれで判定可能です。
そのアルゴリズムを教えて頂いた時、思わず言葉を失ってしまいました。感動した
のと、その計算方法を思い付かなかった自分の未熟さという二重の意味で。
ちなみに、この手法はnine-two氏が独自に考案されたようです。
何て言うか「流石」の一言に尽きます。 やはり足を向けて寝れません。
OpenXOPSとは関係ない別件ですが、久しぶりにXopsAddonCreatorを弄りま
した。 XopsAddonCreatorを利用して頂いている方から、コピーandペースト時
のバグを指摘して頂いたからです。
バグ自体はあっさり直ったのですが、そのバグを1個直すだけでバージョンアップ
するのも もったいない(?)ので、他にも小さな新規機能を付けられないか模索
中です。
category : ソフト・ツール開発 | comment [2] |