トップページgamedev
299コメント89KB

触手の動きのアルゴリズム教えてください

■ このスレッドは過去ログ倉庫に格納されています
0001とっつぁん02/05/15 03:44ID:???
沙羅曼陀の1面やグラディウスIIの2面にでてくるようなスラッとした動きの触手、
グラディウスIIIの植物面にでてくるのや沙羅曼陀の1面ボスのゴーレムの手みたいに
時機を追いかけているうちに自ら絡まってこんがらかるような動きの触手の
アルゴリズムというか計算方法を教えてください。
0042名前は開発中のものです。02/05/19 04:51ID:???
3Dで軟体触手(そんな表現があるのか知らんが)かと。
0043名前は開発中のものです。02/05/19 04:53ID:???
>>32-41
自治厨の煽りに見事に釣られてしまったようだな。
ヤツの思う壺だろ?
このスレを殺したのは、釣られてしまった君達自身で
あることも忘れるな!
0044名前は開発中のものです。 02/05/19 05:09ID:???
>>43
かちゅだとそのリンクの張り方は見づらいのでやめてケロ。
0045名前は開発中のものです。02/05/19 10:49ID:???
>>35
>第一、スレを立てた>>1はどこへ行ったよ?

名無しで参加しておりますが。
0046名前は開発中のものです。02/05/19 10:53ID:???
>>45 ケツ出しな
0047名前は開発中のものです。02/05/19 15:18ID:???
触手の進化系はこのゲームのヘビの動きに集約されています。
http://www.axysoft.com/axysnake/index.htm
0048名前は開発中のものです。02/05/19 17:35ID:???
これってよくあるonekeyゲームを3Dにしたものかな
解説斜め読みしたところ3dとかサウンドにしか触れていない
ただのバッファリング?
0049名前は開発中のものです。02/05/19 18:19ID:???
普通の蛇ゲームだった。正にオプション型じゃん
0050名前は開発中のものです。02/05/19 20:02ID:???
こういうレトロゲームを無駄に3D化系って意外とインパクトあるな。
前にこの板のどっかで見たブロック崩しもだけど。
0051名前は開発中のものです。02/05/19 20:19ID:???
たけしの挑戦状3D よろしく!
0052名前は開発中のものです。02/05/20 01:11ID:???
 とりあえず

 触手系…親から子へ移動値を継承
 蛇系…親から子へ座標値を継承

てok?
00531502/05/20 01:31ID:???
みんなひどいこと言うな…。VB房をいじめないで下さい。

>>17
循環バッファ?わかんない。
ただ自分で考えたときは15に書いたような違いになったの。

>>18
>>>15にはぜひ自分で考えた触手の動きを発表してもらいたいものだ。

作ったこと無い。

>いやオプやレーザーでも可。きっと微笑ましいものに違いない。

レベルの高いあなた達から見たら微笑ましいよ。
レーザーなんかLINE命令だもん。
作った頃はWindowsAPIも知らなかったから、
イメージとタイマー使ってカクカク動かしてた。

>>21
大学で習ったんだよ。なぜVBかっていうと、
多分Cとかは学生には理解できないと思われてたんだろう。
実際、その大学で一番プログラムが出来たのが、
このスレでヘタレ扱いされてる俺だし。
課題でゲーム作っただけで「すげぇ!」とか言われるレベルだった。
00541502/05/20 02:40ID:???
53の訂正
× 学生には理解できない
○ うちの大学の学生には理解できない

情報処理系の大学でない上に、学生のやる気もあまりないんで。
0055名前は開発中のものです。02/05/20 12:20ID:???
>>53
>循環バッファ

バッファに値をぽこぽこ追加していくと、いつかバッファの容量が足りなくなるけど、
そのときに頭に戻って重ね書きしてしまう構造のバッファのことを
循環しているから「循環バッファ」と呼んでるんだと思うよ。
こうすればいくらでもデータが追加できる。
ただし、あんまり古いデータは重ね書きされて消えてしまっている。
0056名前は開発中のものです。02/05/20 16:26ID:???
>>54
大学なんてそんなもん。
情報処理系でもプログラム書ける人間が1割いればいいほうなんじゃん?
00571502/05/20 23:27ID:???
オプションのソースが見つかった。
今見ると自分でも何だかわかんない。

>>55
循環バッファってこういうやつかな?

If u = 0 Then
e(3) = d(2)
d(2) = c(1)
c(1) = b(0)
b(0) = a(5)
u = u + 1

適当な変数名…。
00585502/05/21 00:09ID:???
>>57 == 15
機能としてはそれで良いはず。

ただ >>18 が循環バッファといったのはこれとは違う実装のことだと思います。
あなたがやったのは、バッファにデータを追加したときに、全バッファないのデータを
1つスライドさせていると思うのですが、
>>18 が言ったのは、多分、データを1つ追加するときに、記録する位置が1つずつ移動していく
タイプのもののことだと思います。こうして移動していくと、記録位置が
いつかバッファを飛び出してしまいますが、そうしたら、記録位置を先頭に戻してやります。
こうして永遠にぐるぐる周る(循環する)構造を指して循環バッファと呼んだのだと思います。
バッファこの構造にしておけば、バッファサイズを大きくしても重くならないので
長く記憶することができます。ただし、古いデータを参照するときにも
書きこみ位置(最新のデータの位置)が変化していることと、バッファの末端と先頭が
論理的に連続していることに注意しなければなりません。

ちなみに >>18 も「?」を付けていたように、この「循環バッファ」という呼び名が
正しいかどうかは分かりません。

申し訳ないですが、VBは解からないので、ソースは提示できません。
ですから、あなたの提示したソースも誤解している恐れがあります。
Cで良ければ、こちらとしては助かるのですが。

まぁ、組んでる人が使いやすい言語が一番なので
がんばってみてください。
0059名前は開発中のものです。02/05/21 00:38ID:???
ふつーはリングバッファって呼ぶな
0060名前は開発中のものです。02/05/21 00:40ID:???
おれはリングバッファって呼んでるけど?
00611502/05/21 01:01ID:???
>>58
詳しい解説ありがとうございます。
どこかで聞いたような話だと思って、最近買った
『プログラムはなぜ動くのか』矢沢久雄著
を読んでみたら…

>>59
>>60
リングバッファのことでした。
0062名前は開発中のものです。02/05/21 03:37ID:XHSDIsJI

int xytbl[100][2];

毎ループ、データをずらすかポインタをインクリメントするかして
新しい座標をセットして、個々のパーツが参照するのは
4個か5個おきのデータ、、、ていうような処理でいいんでしょか。
無駄な領域を多く取りすぎるので、もっといい方法知ってる人
教えてくれ。
0063名前は開発中のものです。02/05/21 04:24ID:???
日本語をしゃべれ
0064名前は開発中のものです。02/05/21 08:50ID:???
まずそれで上手くいくかどうかやってみれ!
0065名前は開発中のものです。02/05/21 12:10ID:nBRpKvSA
触手の話から「オプションから勉強し直そう」スレになっとるがな。
0066名前は開発中のものです。02/05/21 13:17ID:???
オプションがバッファにして持ってる座標値を、
それぞれ角度に変えたら、触手になるかな?
0067名前は開発中のものです。02/05/21 15:44ID:???
>>62
俺もそんなようなのしか思いつかないけど
グラディウスの場合、自機がスピードアップ(ダウン)すると
オプションの間隔が広がる(狭まる)でしょ?
その時にスピードアップ前に5個おきに参照していたのがスピードアップ後は
6個おきに参照とかなるじゃないですか。すると自機から遠いオプションは
スピードチェンジ時よりも古い座標を参照する事になってしまうんですな。
ここでそうならないような補正をかけてるんだと思うけどその処理の違いが
グラ1、2とかサラマンダのオプションの動きの違いになってるんでしょうね。
0068名前は開発中のものです。02/05/21 16:11ID:???
初代グラは単純なリングバッファとはかなり違う処理じゃないかな?
スピードは一定で上下スクロールの無い場所でも
オプションが自機の軌跡をきっちりたどっているわけではないみたいだから。
0069名前は開発中のものです。02/05/21 16:51ID:???
>>67
自機がスピードアップしたら
単位時間あたりの移動値もふえるわけだから
参照間隔そのままでも
移動値が増えればオプションの間隔は広がるよ。
0070名前は開発中のものです。02/05/21 17:33ID:???
そーいや,オプション4個目ってスピードによって反対方向へ行ったりするね…
0071 02/05/21 23:32ID:???
>>67
スピードアップした時に間隔が広がるのは、69が言うような理由のせいであって、
意図的にそうしたわけじゃないって開発者が言っていた。

>>70
開発者の話では、OPが自機を最短距離で追うようなプログラムになっているのが原因だそうだ。
つまり、自機が下のほうにあって、OPの4つ目が上のほうにあるような状況のとき、
画面の上と下は繋がっているから、OPの4つ目にとっては上に動いたほうが、最短距離で移動できる。
0072 02/05/22 02:02ID:???
FC版ファンタジーゾーンのグラブンガーの腕
AC版サラマンダのゴーレムの触手
ACグラ2の2面の触手
SFC版グラ3植物面のボスの茎(って言うのか?あの部分は)

これらはプログラムに共通している部分があるような気がする。
どれも動きがカクカクしているから。
何かパーツ毎に計算しているというより、
触手が通る曲線を計算しておいて、その上にパーツをのっけている感じ。

↓仮にこれが曲線だとして
――――――――――――――

↓その上にパーツを配置している。
∋―○―○―○―○―○―○―

違います?
0073名前は開発中のものです。02/05/22 02:50ID:???
dakara sono kyokusen no keisanhouhou wo oshietekure to iu sureddo da
0074名前は開発中のものです。02/05/22 03:32ID:???
>>72
FANTASY ZONE 4面
ttp://isweb16.infoseek.co.jp/play/lur/fantasyzone/fantasy4.htm

新声社「GAMEST」 1990年分のグラIII 関連記事
ttp://www.geocities.jp/targest1989/gamest1990.htm

レビュー第2回(グラディウスII)
ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/gura2.html

レビュー第6回(グラディウス3)
ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/gura3.html

レビュー第4回(フェリオス)
ttp://www.ne.jp/asahi/cc-sakura/akkun/bekkan/ferios.html


 水晶玉っぽいアイテム(ポム)を取得すると自機の後ろに連なっていく縦スクロールシューティングは何て言う名前だったか…。
0075名前は開発中のものです。02/05/22 03:40ID:???
>>74
ジェミニウィング?
0076名前は開発中のものです。02/05/22 03:44ID:???
>>72
 上のは画面写真があるWebね。

|これらはプログラムに共通している部分があるような気がする。
|どれも動きがカクカクしているから。
|何かパーツ毎に計算しているというより、
|触手が通る曲線を計算しておいて、その上にパーツをのっけている感じ。

 いや、当時のハード(FC版)から考えて、そんな計算コストが掛かる方法はとっていないはず。当時はシューティングで小数点を扱ったリアルタイム演算は鬼門だったから、三角関数のテーブル作って256方向(64かも)の座標計算だと思われ。

>>73
 触手をより触手らしく動かすアルゴリズムじゃなかったのか…。
 曲線からの位置取得ならベジェ(スプラインでもよく)曲線描ければ簡単に取得できるけど…画面を2〜3往復とかする豪快な触手ならともかく、数個の関節でベジェ使うのは大げさでしょ。
0077名前は開発中のものです。02/05/22 03:54ID:???
>>75
 (・∀・)ビンゴ!!
 即答できるキミは絶対若くないハァハァ。

ttp://www1.kcn.ne.jp/~gx770/arcade/geminiinst.jpg
ttp://www2s.biglobe.ne.jp/~pera/gamerv/review67.html
画面写真はミツカラズ。
0078サインとかコサインとか02/05/22 04:13ID:???
だめだこりゃ
三角関数って何だろうと思って調べてみたけど、ワケワカラン。
俺は触手を語れるレベルじゃなかった。
0079名前は開発中のものです。02/05/22 11:16ID:???
>>78それ、やばすぎ。(´・ω・`)ショボー
最初はゲームで波とか円運動させる為のものぐらいに覚えとけば良いんじゃない?
使い方を理解してからサイン・コサインとはなんぞや?を学んでも遅くないぞ。
#あくまでもゲーム製作においては、だが。
0080名前は開発中のものです。02/05/22 11:41ID:???
線形代数をやっておくとゲームに役立つ
0081FFマニア02/05/22 12:16ID:???
http://teens2.wao.ne.jp/~j0006296/
0082名前は開発中のものです。02/05/22 16:50ID:???
漏れも学生時代学校の勉強は全くしてなかったクチなので三角関数とかチンプンカンプン。
他人に理屈抜きの式だけ教えて貰ってやってるけど、勉強しなくちゃなぁ・・・・
シューティングの敵が自分を狙って弾を打つとか基本的な部分から三角関数からんでくるからねー。
所詮ホビープログラマーなんで別にいいっちゃあいいんだけどやるからにはそこそこ自力でやりたいもんね。
0083名前は開発中のものです。02/05/22 18:06ID:???
昔三角関数を使わずにシューティング作っていたが
三角関数を使った途端いろんな動き作るのメチャクチャ簡単になって
えらいうれしかったと同時に使わずに色々苦労してたのが泣けてきた…
sin、cos、arctanぐらいは使えるようにしといたほうがいいぞ。
0084名前は開発中のものです。02/05/22 21:26ID:???
三角関数は高校の数学で習うので、中学生には難しいかもね。
0085名前は開発中のものです。02/05/22 21:49ID:???
あー、俺もリアル厨房の頃はぐちゃぐちゃのコード書いてたよ。
敵AIひとつ組むにしても、例えば
ロックした目標の未来位置を予測 → 偏差撃ち
をさせたくてもなかなか出来ない。で結局、人力で
(距離→偏差角)の参照テーブルを作って誤魔化したり。

筋金入りのDQNだった。
0086名前は開発中のものです。02/05/22 22:50ID:???
俺はリア房の頃は、円周上を移動させるのにグラフに円を書いて
座標をマニュアル入力してたぞ。
sin関数を知った時の衝撃と言ったらもう… 
キタ━━━━━━(゚∀゚)━━━━━━ !!!!!って感じだった。
0087名前は開発中のものです。02/05/22 23:16ID:???
つーか、確認したいんだが、このスレいまだに上がり続けてるのは、
三角関数が解らないくらいのマジ厨だからだよな?
(まぁ、それならマジでしょうがないが)
たまにいる、いい年コイたクソ学生とか、足し算引き算以外はいつまで
経っても逃げつづけてるクソ専門校生とかじゃねぇよな?
0088名前は開発中のものです。02/05/23 00:26ID:???
根本的な話、三角関数知らないと、学生になれないはずですが。
学生のつもりだったのでしょうか。
妄想学生?仮面学生?ちんかすクセー?
0089(´・ω・`)ショボーン02/05/23 00:27ID:???
>>84
高校の数学で習うんだっけ?文系のクラスでも?
三角関数は知らないけど、
サインとかコサインって言葉は物理の授業で聞いたような気がする。

触手→オプション→触手→三角関数
0090名前は開発中のものです。02/05/23 01:01ID:???
>>87-88
http://game.2ch.net/test/read.cgi/gamedev/1021476153/357n

ニヤニヤ
0091名前は開発中のものです。02/05/23 01:04ID:???
>>88
三角関数を知らずに学生になり、
そして卒業しましたが何か?

三角関数って普通はどこの高校でも習うんですか?
0092名前は開発中のものです。02/05/23 01:17ID:???
まぁぶっちゃけて言えば三角関数をちゃんとお勉強して知っている学生もいれば
三角関数は興味なく知らないがあんなことやこんなこともよく知ってる学生もいるってこった。
学生ん時遊んでた奴は今頃必要に応じて学ぼうとするし
学生ん時はお勉強くんだった奴は日夜半角板でネタ収集しダメ板で童貞を告白して傷を舐め合っている。
両者共今をエンジョイしていていいじゃないか。
0093名前は開発中のものです。02/05/23 01:28ID:???
ん?高校でも文系とかならやんないんじゃないか?
っていうか、中学以上の数学の知識って結局実生活には必要無いからさ、
別に開き直って生活してても構わんとは思うけどモナー。
でもこれからゲームのプログラムやろうってのが、たかがサインくらいで
怖気づいてんのもどうよ。好きでやるんじゃないか?

この板、自分より低レベルなヤシ目ざとく見つけては攻撃するヒッキーが
やたら多いから、そういうのは無視してりゃいいが、プログラマでいちばん
ウザいのは90みたいな嘲笑+自己完結+狭い視野の決定論だけみたいなヤシ
な。ヒッキーやダメ学生が30代になってレベルアップするとこうなる。
オレとかナー。
0094名前は開発中のものです。02/05/23 01:51ID:2MFy4BDw
>>91
俺は普通科だったけど、普通に習ったよ。数IIだったっけ?

ゲームプログラムやるなら、必須だしね。
キャラの移動で既に必要だし。

3Dの回転行列の計算でも必要。
そこまで書くのはPS2ぐらいだと思うが。
テーブル参照による高速化は、メモリ食う割に、メインメモリに
アクセスするから、実はあまりよくない。
で、PS2で式を変形させて高速化を図るってのをやってたのを
見せてもらったけど、良く解らんかった。UVコードだったし。
今月(先月)のCマガに載ってたような。
0095名前は開発中のものです。02/05/23 01:53ID:???
>そこまで書くのはPS2ぐらいだと思うが。

???
0096名前は開発中のものです。02/05/23 02:01ID:???
>>92
>学生ん時はお勉強くんだった奴は日夜半角板でネタ収集しダメ板で童貞を告白して傷を舐め合っている。

ぐはっ(吐血
0097名前は開発中のものです。02/05/23 10:42ID:???
関係ないけど、sin^2Θ+cos^2Θ=1の公式って
よく考えたら当たり前のことを書いてるにすぎないんだよなあ。
0098名前は開発中のものです。02/05/23 12:41ID:???
小中学生が多いのかな?
0099名前は開発中のものです。02/05/23 23:56ID:???
三角関数なんか普通に生活してて縁ないんだからしょーがないじゃん。許してよ。
0100名前は開発中のものです。02/05/24 00:40ID:???
高校生以下は"学生"ではありません。"生徒"です。
18歳以上で、まだ勉強してる連中を"学生"と呼ぶものです。
ちなみに小学生は"児童"だからね。間違えないでね、ボク。
"俺が学生のころは…"と高校時代を語るやつはサムイです。
0101 02/05/24 01:26ID:???
>>100
その通り!
でもどうでもいいって。触手!触手!
0102通りがかりだけど02/05/24 01:31ID:???
どうでもいいじゃん。あほらし。
君、あれでしょ?そういう些末な事突っ込んで場の空気乱す人でしょ?
たまにいるよねーウザイウザイ。
0103名前は開発中のものです。02/05/24 02:29ID:???
空気嫁
0104名前は開発中のものです。02/05/24 03:45ID:???
>>100
ところであんたこのスレに何の用があって見たり書き込んだりしてんのよ?
0105名前は開発中のものです。02/05/24 04:26ID:???
昔のプログラムは凄かったという結論でOK?
0106名前は開発中のものです。02/05/24 07:53ID:???
PEACE CODEに話題有り
0107名前は開発中のものです。02/05/24 23:54ID:???
>97
底辺の二乗+高さの二乗=斜辺の二乗だっけ?
0108名前は開発中のものです。02/05/25 00:16ID:???
それって3平方の定理で、しかも間違ってるじゃん
0109名前は開発中のものです。02/05/25 00:36ID:???
>>108
合ってるよ。三平方の定理も。
0110名前は開発中のものです。02/06/01 00:29ID:a2n/qG4U
まずは、服を破り、乳首にからまりパンツを・・・
0111名前は開発中のものです。02/06/04 00:52ID:???
過疎
0112名前は開発中のものです。02/06/04 01:03ID:???
すさまじくレベルの低いスレだなぁ
0113実は02/06/04 01:08ID:???
111=112?
触手のアルゴリズムを本当に知りたくて書き込んでます?
0114名前は開発中のものです。02/06/04 07:35ID:???
>>111でageが入ったのでスレが浮上
→常駐している暇人の目にとまる。
→板相応スレ相応の駄レスが即行でつく。
 
程度の在り来たりの想像力ぐらい働かせたらどうかねsage
0115名前は開発中のものです。02/06/04 14:31ID:???
過疎ですまん。
0116名前は開発中のものです。02/06/04 16:28ID:???
>>115
なんでキミがあやまるんだ
お前はこの板の神ですか
0117名前は開発中のものです。02/06/04 18:01ID:???
>>116
メンタルストレスを溜めるのは良くないぞ。
0118名前は開発中のものです。02/06/04 23:59ID:???
>>117
なんか開発状況報告スレのせいで変なレスになった。スマン。
0119名前は開発中のものです。02/06/05 07:30ID:O7LU16hk
>>112
レベルの低い人がたててレベル低い人が多く書き込んだスレだからしょーがないね。
と、レベルの低い僕は思いました。
ぼちぼちレベルの高い人の低レベルな人にもわかるレベルの高いレスきぼん
0120名前は開発中のものです。02/06/05 10:58ID:???
類は友を呼ぶので
0121名前は開発中のものです。02/06/06 05:14ID:???
何を教えて欲しいのかわからなきゃレス付けようがないよ
0122名前は開発中のものです。02/06/06 22:41ID:???
最近の3Dゲームではグラ系の触手って見なくなったね。
アニメーションで処理できちゃうからだろうけど。
無くなりつつある技術なのか?
0123名前は開発中のものです。02/06/06 23:01ID:???
3Dの多関節 >>>>>>> 2Dの多関節
0124名前は開発中のものです。02/06/07 02:35ID:???
同じだ。
0125名前は開発中のものです。02/06/07 03:00ID:???
俺もそう思う。
計算する座標が一つ増えるだけじゃないの?
0126名前は開発中のものです。02/06/07 04:47ID:???
>123の不等式はよくわからんが
座標が一つ増えるだけで自由度が三つも増えるぞ

だからなんだといわれてもぉ〜♪
0127名前は開発中のものです。02/06/07 20:16ID:???
106のリンク先見て書いてみたよヽ(´ー`)ノ
http://mrpackman.hoops.ne.jp/joint.zip
0128名前は開発中のものです。02/06/08 01:06ID:???
自由度は間接のほとんどを単なるちょうつがいのように2Dに限定すれば
問題ないと思うけど。回転が入ったり肩みたいな奴があるとかなりやっかい。
0129名前は開発中のものです。02/06/10 16:34ID:1dQb7mzQ
>>128
2Dの触手は細胞同士が重なってもアリとされてるけど、
3Dだと不自然に見える。その辺も難しいかな。
0130名前は開発中のものです。02/06/10 21:03ID:???
確かに。
ぶん回すと簡単に絡まりそうだよな。
ある程度はすり抜けを許容しないとダメかも。
0131名前は開発中のものです。02/06/10 22:54ID:OLYHhar2
話がそれるが、3D特有のスリ抜け問題は他にもいろいろ出てくるよね。
例えば、敵の撃った弾が他の敵をスリ抜けるのはアリなのかな?
0132名前は開発中のものです。02/06/10 23:20ID:???
そういえばそうだな。
2Dだと気にならなかったが、3Dだとその辺のすり抜けに違和感を感じるわ。
0133名前は開発中のものです。02/06/10 23:25ID:???
すり抜けられないと、同士討ちを回避するAIを組む手間が増える
0134名前は開発中のものです02/06/11 13:53ID:???
小さいキャラならすり抜けても目立たないのでは?
弾は表示の優先順位で常にプレーヤーからみて手前に描くとか。
0135名前は開発中のものです。02/06/11 15:44ID:???
>>134
3Dでそれをやると発射台・障害物・弾が一直線に並んだ時正面から見るとおかしくなる。
0136名前は開発中のものです。02/06/11 23:49ID:EyY2HPDw
市販のゲームではどうしてるんだろう?
0137名前は開発中のものです。02/06/12 00:01ID:???
ぼくらは放置されていた
0138名前は開発中のものです。02/06/12 02:06ID:kFk0QMAg
ttp://www.sodaplay.com
0139  02/06/12 06:23ID:rKP63Pp2
http://chuu.dip.jp/cgibin/up/img/700.exe
触手ってこんな感じ?
0140名前は開発中のものです。02/06/12 09:50ID:???
↑通報しますた
014113902/06/12 09:53ID:???
>>140
なんで?
014213902/06/12 09:58ID:???
http://chuu.dip.jp/cgibin/up/img/701.exe
もう一つ作ってみた。
■ このスレッドは過去ログ倉庫に格納されています