アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
計算機科学者とは、壊れていないものを修理する人々のことである
作り手から見た今回の問題 (スコア:5, 興味深い)
# 後に聞いたところでは、これを作ったのは、X68000にキャメルトライを移植した職人肌のプログラマ。
Youtube動画などを見ていただければ、同じものを作るのがどれだけ難しいか判るでしょう。腕に覚えのある人は、どうやって作るのか考えてみても面白いかと思います。
(ちなみに、原作のプラットフォームはスーパーファミコンですが、このハードにはいわゆるグラ
Re: (スコア:2, すばらしい洞察)
別にやってることは単なる衝突判定と、頂点/線の交差判定と、
あとは単なるフックの法則(単なるかけ算)を考慮した加減乗除ですし、
しかも二次元に演算が限定されており三角関数すら登場しないので、
SFCの演算能力で難しいというほどのものではないと思いますが…。
(しかも今回たんなる移植だし)
逆に、今時、普通に3Dポリゴンキャラクター扱えるくせにこの程度の物理演算が
正しく動作しないなんて、そっちの方が「何者?」という感じです。
それとも「驚愕」なのは何かほかのファクター?
今時学生でもこの程度 [itmedia.co.jp]の物理演算ソフトがありますな。
Re: (スコア:3, すばらしい洞察)
- 頂点/線の交差判定
- あとは単なるフックの法則(単なるかけ算)を考慮した加減乗除
はい、おっしゃる通り「単なる」演算です。この内容で似た感じの動きのゲームは作れるかもしれません。PCでなら。
ただ、この通りで認識されているなら、おそらくスーパーファミコンでは60fpsで動かないと思います。
(このあたりはもはや想像でしかないですが)
イマドキのPCであれば、おっしゃるところの「物理演算」もきれいな実装にできるのかもしれませんが、当時の限られたリソースでは「いかに軽い処理でそれっぽく見せるか」が勝負でしょう。ソースを見せられたところで、その背景にあるモデルをすぐに理解できるかどうかは別問題だと思います。
# まあ、今回の移植のベースはスーパーファミコン版ではなく(PSPに近い)PS版でしょうから、
# ここまでの騒ぎになるというのは理解に苦しむところではあります。
Re: (スコア:2, すばらしい洞察)
当たり判定に関しては、他のゲームでもやっている作業ですから
資料を漁ればいくらでもいい例は出てきます
ましてや、2Dは最悪ピクセル判定出来ますのでたかが知れてます
肝心のロープに関しても、外積を10個も取れば処理が終わってしまいます
実際、高校程度の知識があれば綺麗に求まるので、まずは手を動かしてみましょう
方針としてはこんな感じ
・三角形の内部にある点に引っかかる
複数ある場合は交差しないように引っ掛けて逆引っ掛かりを取り除く
・引っかかりと外積が逆になった時、ロープは外れる
#ちゃんと考えない人は、今のPCがあっても挙動は再現できない気がするなぁ~
Re: (スコア:0)
Re: (スコア:0)
v1 × v2 = x1 * y2 - x2 * y1 = |v1| |v2| sin(θ)
ですよ? 外積10個とは、かけ算20個と足し算10個のことです。幾らSFCでもこれが無理なわけないでしょう。
Re: (スコア:0)
Re:作り手から見た今回の問題 (スコア:1)
とはいっても、乗除算は重い処理なのは確かだしSFCのスペックでは「外積10回ぐらい楽勝」なんて主張はできないでしょうけど…
当時はパソコンのCPU(x86系なんかは当然乗除算命令はあります)でさえ、乗除算は重い処理の代表であり、
「DDA」だの「Bresenham」だのと、できるだけ乗除算を使わずに加減算だけで処理を済ませるようなアルゴリズムがいろいろ追求されてたものです。
最近のCPUはパイプラインを乱すことのペナルティが大きいので、
そのうち「加減算+条件分岐」よりも「条件分岐の無い乗除算」が速くなって、Bresenhamなんかは過去の遺物になるんじゃないかと思ってるんですが、
数年前にPentium4で試したときは、まだ浮動小数点より整数Bresenhamの方が速かったです…
#そもそも、Bresenhamにこだわらなきゃいけないほど線形補間処理の計算量がクリティカルな場面って少なくなってますけどね…
Re: (スコア:0)
スターフォックスとかファイティングポリゴンのイメージが先行してるので「あの程度がいける」と思ってたけど、
あれは別チップをカードリッジに載せてたのかー。
素のSFCは厳しいのね。
平方根はどうですか?