スレッドリストに戻る 全部見る 最新20 1-100

ゲームプログラミング談話室

1 : 管理者 2003年 5月 23日 13:26

ゲームプログラミングについてあれこれ語るスレです。
まあ、主に私の独り言がメインですが・・・。

46 : あう社長 2004年 4月 27日 10:04

ふぅー。やっと数値の上ではレバーを入れた方向に動くことが確認できたよ。
最近、電車の中でしかプログラム書いてないから進みが遅いの何のって。

47 : あう社長 2004年 11月 9日 19:00

DirectSoundで、イントロ部分とループ部分の二つのWAVデータを
つなげて再生する方法を模索中。

調べてみた感じでは IDirectSoundNotify を使って
再生終了イベントを起こしてもらうことになりそう。

今回使っているライブラリでは、サウンド処理用スレッドを立てて
そこでイベント待ちをしているので基本部分はあまりいじらなくてもいいかも。

しかし、Notifyの起こすイベントと他のイベントのハンドラを1つの配列に
押し込まなきゃいけないのがまずいかな。

Notifyのイベント発生が遅れる可能性もあるようだし。


それにしても、イントロ+ループという構成のBGMはいくらでもあるのに、
これに関する具体的な解説というか資料が見つからないのは何故だろ?

データを分割しないで最後まで再生したら、
また頭から再生で対処してるゲームも多いし。

48 : あう社長 2004年 11月 9日 20:51

BGMとSEの再生を同列に扱うクラスを考えていたのだけど
ひとつのDirectSoundオブジェクトで多重再生が出来ないことに気づいて
ご破算に。

多重再生のありえないBGM用WAVデータを多重再生用に複数持つなんて
愚の骨頂ですよ!


別々のクラスにしなきゃダメだ。

49 : TERU 2004年 11月 10日 14:04

DirectX9を始めて間もない者なのですが、
二次元配列を使用して円弧を作成しろという課題が出てしまったのですが、
いかんせん初心者な者でどう手をつけてよいのかわかりません。
どなたかご教授宜しくお願いします。
ちなみに、始点と終点と中心(半径r)を決めて始点と終点を結んだ扇形を作りたいです。
このとき中心から始点、中心から終点の線は表示しないで始点と終点のみを結びます。
あと、今DirectX グラフィックのチュ−トリアル4を参考に勉強させていただいてます。
宜しくお願いします。

50 : あう社長 2004年 11月 10日 14:39

なぜここで質問するのかよくわかりませんが・・・。
円周上の点を(x,y) = (r*cosθ, r*sinθ)で表せることはわかりますか?

これを使って半径rを固定してθを少しずつ大きくしていけば
等間隔で円周上の点を求めることが出来ます。
そしたら、あとはこれを結ぶだけ。


DirectXの使い方は教えられるほど詳しくないんで
勘弁してください。

51 : あう社長 2004年 11月 12日 22:48

イントロ有りの無限ループ再生はとりあえず実験に成功。
あとは、ループ位置をどこに持たせるかとか、
Notifyの遅れ補正が必要なのかとか、細かい部分を調整すればOKかな。

52 : 悪魔 2004年 12月 1日 23:41

コンピューターの画像上で円を描くのに三角関数を使うのはどうかと思います。
プロットされるのが格子点上の点に限定されるのですから、加減算数、ビットシフト
(/2,*2)だけの計算で高速に計算できます。

53 : あう社長 2004年 12月 2日 00:56

いや、それはもう昔の話です。

DirectXでは座標の指定にfloatを使います。
下手に全部整数でやろうとすると、整数からfloatにキャストする分、余計な手間がかかります。

ついでに、実数計算でかかる時間と画面描画にかかる時間を比較したら
実数計算にかかる時間なんて、無いも同然なんですよ。

1クロックでベクトルの内積や外積を得られるご時世に
整数化&ビットシフトでの高速化は焼け石に水です。

さらに高速化の常套手段であったループ展開やテーブル化も、
今ではキャッシュを食いつぶすので逆効果。


もう、そんな時代なんですよ・・・。

54 : 悪魔 2004年 12月 2日 07:58

嫌な時代だ。
そうやってどんどんちゃんとしたプログラムを書けない
だめだめプログラマーが増えて行くんだ。

55 : あう社長 2004年 12月 2日 11:32

DirectX8 から、描画は全て3次元空間に対して行うようになったので
実数空間の座標を指定する必要があります。これがfloatを使う理由です。

> プロットされるのが格子点上の点に限定されるのですから、

そして、もう、この前提からして違うのです。
「画面上に1ドットの点を打つ」というのは
DirectXでは「画面上で1ドットの大きさに見えるポリゴンを3次元空間内に描く」ことです。

円を描きたいならドットを打つのではなく、
円周上の点を求めて、それを繋げる線分を描く必要があるのです。


私もしばらくはカルチャーショックを受けて馴染めずにいましたが
本来は考える必要のない部分(高速化のためのテクニックなど)に時間をかけず
実現したいことのみを考えればいいわけで、こういう時代も悪くはないと思います。


それでも、コンピュータの仕組みを知っているかどうかで
コードの質に影響が出ると思いますけどね。

56 : 悪魔 2004年 12月 3日 23:17

描くのはOS(?)の仕事でも、その座標を指定するのはプログラマの仕事ですよね。
それを実質的に整数で指定するか実数で指定するかは別にしても、
計算を高速にする、メモリを食わないなどは常に考えないといけないんじゃ
ないかなぁ(考え方が古い?)

57 : あう社長 2004年 12月 4日 17:13

Windowsでプログラムを書くことを前提にするなら
整数だろうと実数だろうとスピードは変わりません。
メモリはうなるほどあります。

よほどタコなプログラムを書かない限り
見易さ優先で書くほうがいいと思います。

58 : あう社長 2004年 12月 13日 14:14

IDirect3DDevice::Present() の引数で指定するコピー元、コピー先矩形を
異なる値に設定すると何故かバイリニアフィルタが適用されてしまいます。


src=(0, 0, 320, 240)
dst=(0, 0, 640, 480)

整数倍になるよう指定してもダメ。
当然テクスチャステージステートはTEXF_POINTを指定しています。
バックバッファからのコピーだから適用されないんでしょうけど。

ここでバイリニアフィルタを無効化するには・・・どうすればいいんだろう。


59 : あう社長 2004年 12月 14日 22:35

この局面でフィルタを無効化する方法がないようなので別の方法で回避しました。
処理速度に激しく違いが出ますけどね。

といっても、これが必要になるのは一部の液晶ディスプレイだけなので
コンフィグで選べるようにして、通常は高速に動作するモードを使ってもらうということで。

60 : あさみ 2004年 12月 24日 01:24

おじゃましますm(._.*)mペコッ
なんか分からないけど、あたしのHPで、日記書くときのパス間違えると、必ずここが出てきますw
なんでだろ?w
なので、覗いて見ました| 冫、)ジー     |)彡サッ
http://www.geocities.jp/ox_asami_xo/

61 : あう社長 2004年 12月 28日 00:26

うちの日記CGIを利用されているんですね。ありがとうございます。

で・・・パスを間違えると、勝手にここに飛ぶわけじゃないですよね?
それなら表示されたリンクをクリックしないで戻るようにしてください。

どうしてもリンクをクリックしたいというのなら止めませんけど。

62 : ガラくた屋 2007年 10月 23日 09:04

始めまして
格闘ゲームの項目を見てHPを知りました。
質問なのですが、やられアニメパターンの種類
とその移動距離をどれぐらい必要なんでしょうか?
よろしくお願いします。

63 : あう社長 2007年 10月 23日 21:43

どうもこんにちは。
アニメパターンの種類というのが何を指しているのかちょっとわからないのですが
私のゲームの場合、立ちのけぞり(3枚)、しゃがみのけぞり(3枚)、吹き飛びダウン(12枚)の
絵を用意してあります。

吹き飛びダウンのパターンは、叩きつけや足払いダウン、投げられにも流用します。

移動距離はゲームによって様々だと思うので、
ご自分で気に入った値を選ぶのが一番良いのではないでしょうか。

64 : ガラくた屋 2007年 10月 23日 23:22

返答ありがとうございます。
  言われる通りわかりにくくてすみません。
  何が必要か1つ1つ調べなおしてみます。
  言おうとしたのは立ちくらいやふきとばしのことを言おうとし、
  今の現状が立ちくらいしかないので、攻撃ボタンのみでもくらうとはまりやすくなってます。
  どれぐらい入れればはまりにくくなるかと思い質問しました。

名前: メール: 削除キー:
レス番号: 削除キー:
スレッドリストに戻る 全部見る 最新20 1-100
threadbbs.cgi ver 0.90(20030714) 2002 AuSYSTEM