2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

ゲームプログラミング相談室【Part6】

1 :名前は開発中のものです。:04/03/06 01:25 ID:d2e/eEyg
ゲームプログラミング全般の質問スレッド。
扱う話題のダイナミックレンジはやや広め。包容力高め。
他の初心者質問スレとの棲み分けを探りつつ
これからもマターリと活用しておくれ。
 
■過去スレ
【Part2】http://pc.2ch.net/tech/kako/985/985540361.html
【Part3】http://pc.2ch.net/tech/kako/1002/10028/1002894129.html
【Part4】http://game.2ch.net/gamedev/kako/1005/10050/1005040025.html
【Part5】http://pc2.2ch.net/test/read.cgi/gamedev/1036410116/
■関連スレなど
>>2-5

2 :名前は開発中のものです。:04/03/06 01:26 ID:d2e/eEyg
■関連スレ
【初心者歓迎】スレを立てる前にココで質問を【Part5】
http://pc2.2ch.net/test/read.cgi/gamedev/1078502309/
鬱だ氏のう DirectX (Part 12)
http://pc2.2ch.net/test/read.cgi/tech/1076651336/
初心者のためのゲームプログラミング
http://pc2.2ch.net/test/read.cgi/gamedev/1023119134/
ズブの初心者がゲーム作れるまで勉強するスレ
http://pc2.2ch.net/test/read.cgi/gamedev/1005132370/

3 :名前は開発中のものです。:04/03/06 14:28 ID:dSl4ykZE
       。 ◇◎。o.:O☆οo.
       。:゜ ◎::O☆∧_∧☆。∂:o゜
       /。○。 ∂(*゚ー゚ )O◇。☆
     /  ◎| ̄ ̄∪ ̄∪ ̄ ̄ ̄|:◎:
    /    ☆。|..  新スレおめ  .|☆
  ▼       。○..io.。◇.☆____| 。.:
∠▲―――――☆ :∂io☆ ゜◎∂:.


4 :名前は開発中のものです。:04/03/06 16:00 ID:IZnhr4O3
windowsでアクションRPGを作ろうとしています。
2Dで作りたいのですが、その場合の最適な方法を教えて
下さい。
DirectXのスプライトやテクスチャを使うよりひょっとして
GDIを使った方が早いとか・・その辺どうなのでしょうか?
プログラミングに関してわりと初心者なので、ご助言よろしく
お願します。


5 :名前は開発中のものです。:04/03/06 16:08 ID:XiMT98gx
>>4
DirectXとC/C++で作る。
描画まわりを自分で組むのは面倒だし、
よくわからないので誰かのライブラリを使わせてもらう。
誰のライブラリを使うかは自分で探す。

これでとりあえずゲームを作れる環境は整う。

6 :名前は開発中のものです。:04/03/06 16:32 ID:qxY/Wlgs
GDI使え

7 :名前は開発中のものです。:04/03/06 17:05 ID:KI9N5j4B
>>4
2Dなら、GDI(DIBSection)の方が開発はやりやすい。
描画性能に関しては、少なくとも「画面への描画速度」は問題ない
場合が多い(内部への描画処理については、単純にメモリを読み書き
るDIBectionの方が有利な可能性もある)。また、スプライトは32
ビットフルカラーなどピクセル単位の処理を容易にできるシステム
でやる分には、ピクセルをすべて自力で処理しても大丈夫だろうね。

ただし「滑らかな画面更新」を重視するのなら、DirectXで全画面
占有タイプにした方が有利なことは有利かもしれない(開発の労力
は一気に増すがw)。


8 :名前は開発中のものです。:04/03/06 17:36 ID:hsXyG1/u
web上でゲームを公開しようと思っているのですが、
javaかflashだと重さを考えたらflashのほうがいいですか?

9 :名前は開発中のものです。:04/03/06 20:59 ID:IZnhr4O3
>>5-7
ご助言ありがとうございます。
とりあえずDirectGraphicsのテクスチャと
ヤネ氏のライブラリで速度を比べてみようかと
思います。(DirectX9.0には大分慣れたのですが、
Win32は、不慣れなので・・。)

10 :名前は開発中のものです。:04/03/10 19:48 ID:jIa556UV
DirectXのスプライトとテクスチャってどう違うの?
描画速度に違いはあるのかしら?


11 :名前は開発中のものです。:04/03/10 23:17 ID:7vMs+89m
スプライトは概念、テクスチャは実装。

12 :名前は開発中のものです。:04/03/10 23:32 ID:V51Y5dwK
スプライトってのがD3DXSpriteのことを指してるなら、
それはテクスチャを含むDirect3Dのラッパーだよ。
で、ラッパーは常に元より遅い。
実際にどれくらい遅いかは知らん。

機能の違いは、2Dと3Dの違いだ。3Dは2Dを包含する。

13 :名前は開発中のものです。:04/03/11 12:01 ID:jsiJP8hl
ただまぁ、Summer 2003でスプライトの速度は改善されたそうです。
↓にもちょっとした話が。
http://www.plustarnet.com/aspil/Programming/2d06.htm

14 :名前は開発中のものです。:04/03/13 03:10 ID:hBBXuD4r
みなさん、浮動小数点数の型はどうやって決めていますか?
とりあえずは、思いつくのを列挙してみます。
ついでに、それぞれに個人的な意見を添えてみました。

1) 全部 double
+ルールとして単純。
+ゲームプログラム以外では、ほぼ常識?
-メモリ使用量が倍
-「浮動少数点」という言葉と直接繋がらないのが嫌。

2) 全部 float
+ルールとして単純。
+見た目が美しい。
+メモリにやさしい。
+ゲームプログラムではほぼ常識?
-精度が少なめ。
-環境によっては速度も double を下回る?

3) 目的別に typedef (float32,float64,fast_float,precise_float,...)
+移植性が高い。
+目的がコードに直接現れる。
+後で変更できる。
-どれだけ、どんな名前で定義したらいいのか?
-既存のインターフェースとやりとりするときに問題が?

とりあえず、3が正解っぽいなぁ、と思っています。
これら以外の選択肢があれば教えてほしいです。
また、意見のところの、「?」が付いてるもの(特に3のもの)について、
より確かな情報をいただけるとありがたいです。

15 :名前は開発中のものです。:04/03/13 03:16 ID:5BV6NOnP
>>14
DirectXだからfloat

16 :名前は開発中のものです。:04/03/13 03:29 ID:8/IMYlHX
DirectX9はfloat中心の方が速度的にイイ?

17 :名前は開発中のものです。:04/03/13 04:48 ID:uJUWjvsQ
>>14
Cだけど整数型でやっている。3を3000としたりして。

18 :名前は開発中のものです。:04/03/13 05:30 ID:gHL8rm2k
>>17
割り算よりシフトの方がいいらしよ

19 :名前は開発中のものです。:04/03/13 11:35 ID:rbv/waoI
PS2なんかは単精度しかないんだっけか。

そのうちdoubleが標準になるんかねえ。
floatだと広大なフィールドをリニアに扱えんし。

20 :名前は開発中のものです。:04/03/13 18:14 ID:PUoUaF4y
ファイヤーエムブレムとかタクティクスオウガみたいなシミュレーションRPGを作ってるんだけど
敵の思考を考えるのが難しい

プレイヤー側ユニットとの距離を調べる

一番近いユニットに近づく

攻撃できる距離だったら攻撃する

みたいな感じで組んでるんだけど

・障害物
・攻撃スキルの特性(2マス離れてても攻撃可、とか回復スキルとか)
・移動した後攻撃するか、攻撃したあと移動するか  etc...
そういう色々な要素が入ってくるとわけわからなくなる
素人は手を出さないほうがいいジャンルなんだろうか…

なにかコツとかあったら教えて下さい

21 :名前は開発中のものです。:04/03/13 18:26 ID:2y9JGEPF
障害物とか地形の異動量とかがある場合の最短距離の求め方は、
A*サーチアルゴリズムとかを参考にすべし。
たとえば↓。探せばいっぱいあるはず。
http://gamdev.org/w/?%5B%5BAStarAlgorithmTutorial%5D%5D

どの行動を取れば一番いいかについては、可能な行動を全て列挙し、
それぞれに点数をつけ、一番点数の高かった行動を取らせるという方法が一般的。
この点数をつける評価関数を返ることによって、敵の強弱、特徴を出すことが出来る。

どうやって評価関数を作るかは、ゲーム内容による。一般的にこうすればよいとかいった
マニュアルは無い。行動の選択肢が非常に多くある場合、どう刈り取るかも問題となる。

というか、AIの日本語で書かれた入門資料ってあるのかな?

参考リンク:
http://ai-depot.com/
http://www.gameai.com/
http://www.aiwisdom.com/index.html
http://www.ai-junkie.com/ai-junkie.html
http://www-cs-students.stanford.edu/~amitp/gameprog.html#ai

22 :名前は開発中のものです。:04/03/13 18:35 ID:PUoUaF4y
>>21
サンクスです

やはり難しそう・・・
やれるだけやってみます
いざとなったら要素削ってシンプルにするかな・・・

23 :名前は開発中のものです。:04/03/14 00:40 ID:tW50q/qz
>>20
自分はFE風のを作った事があったが、その場合。

1:すべての移動できる位置、使用できるアイテムから、使用対象がいるか調べる。
 攻撃系なら敵、回復系なら味方。複数あるなら効果が一番高いものを選ぶ。
 攻撃系なら相手のHPを大きく減らせて(量ではなく%)、命中率がよく、
 逆に相手からはそれが低くなるもの、回復系の場合は回復%、命中が高いもの。
 同じアイテム、同じ対象に対して使用できる位置が複数あるなら、
 地形効果が高い場所から行動する。地形効果が同じなら歩数が一番少ない所から。
2:1の対象がいない、または攻撃すると逆に自分に及ぶ被害のほうが大きそうな時、
 移動のみを行い、強い味方によっていく、又は弱い敵によって行く。
 地形効果はもちろん高い所へ。

1はカウンタで全部調べればよいので簡単だったけど、
2は抽象的なので思うように動いてくれなくて難しかった。

作る順序としてはまずは1を作ってみるといいと思う。
全部調べるから速度的に大丈夫かと思うかもしれないけど
使用可能アイテム4つ、移動力10以上でも、遅くても2、3秒以内だったと思う。

24 :名無しさん、君に決めた!:04/03/14 03:50 ID:izwc8dBb
>>17
それは浮動少数でなく固定少数ですな

普通は1024(=2^10)とか4096(=2^12)を1とするのが速度的にいいよ。


25 :名前は開発中のものです。:04/03/14 14:32 ID:qzv+RJRF
2D時代は、2^8でずっとやってきたな。
ハードの制約だけど、その頃はこれが一番。

26 :名前は開発中のものです。:04/03/14 15:14 ID:lOSTaqTt
今もスケーリングを普通にやってるなー
↓みたいな感じで

dest[0] = dest[0] + ((dest[0] - src[0]) * alpha / 256);
...

27 :名前は開発中のものです。:04/03/14 15:18 ID:lOSTaqTt
src[0] - dest[0]の間違いか・・・

MMX命令よりもSSE命令で今は行うのが一般的なのかな?


28 :名前は開発中のものです。:04/03/15 10:22 ID:xvHM+bhp
固定小数点をマクロにしとくと(・∀・)イイ

/* 固定小数点型 */
typedef signed long fix;


/* 整数⇔固定小数点 */
#define FIX_TO_INT( a ) (( a ) >> 16)
#define INT_TO_FIX( a ) (( a ) << 16)

/* 浮動小数点⇔固定小数点 */
#define FLOAT_TO_FIX( a ) (fix)(( a ) * 0xffff)
#define FIX_TO_FLOAT( a ) ((float)( a ) / (float)(0xffff))

29 :名前は開発中のものです。:04/03/15 12:11 ID:TcRXwi1n
いっそクラスにする手もあり。
コンパイラを信じられる漢におすすめ。

30 :名前は開発中のものです。:04/03/15 13:23 ID:p3AFlJa9
Windowsのメッセージループで質問なのだけど、GetMessage()を使うのと、
PeekMessage()を使うのはどちらが主流なのかな?
GetMessage()+SetTimer()はFPSが微妙に安定しないし、PeekMessage()だと
CPUを100%使いかねない。
個人的にはCPUを100%使ってしかもムダ使いというのはマルチタスクOSでの
プログラミングとしては礼儀違反と思うし、例えば落ちゲーとかブロック崩し
なんかでCPU100%てのは納得もいかない。
SetTimer()での安定の悪さを考えて、1msecでWM_TIMERを発生させたあとに
timeGetTime()で実際の時間を取得、ずれを調整するようにしてみた。
WM_TIMER自体が1〜20msecで発生しているようで、とても60fpsなゲームなんて
作れないなあと思った。
常識的な方法があるなら知りたい。

31 :名前は開発中のものです。:04/03/15 13:26 ID:p3AFlJa9
あともう一つ。
よくベンチマークで、400fpsとかいう数値があったりするけれど、
あれって何? 画面自体はせいぜい120fpsでるかどうかでしょ。
オレのモニタは液晶だから60だけど、CRTでも80とかじゃない?
400って表示しているFPSじゃなくて、演算可能な理論値ってことなのかな?


32 :名前は開発中のものです。:04/03/15 13:33 ID:BH49Bw7k
>CPUを100%使いかねない。
Sleep入れればいいじゃん。

>よくベンチマークで、400fpsとかいう数値があったりするけれど、
>あれって何? 画面自体はせいぜい120fpsでるかどうかでしょ。
blitやポリゴン描画なんかの処理とモニタに出力する処理はほぼ平行に行われるから
そういう「描画処理」自体はモニタの同期信号の周波数とは関係ない。
普通HBLANKを待つから最大fps=リフレッシュレートなことが多い、というだけ。

33 :名前は開発中のものです。:04/03/15 14:54 ID:nFKOW0T2
>>30
GetMessageで。WindowsなどVブランクをシステムが管理している場合は
ゲームスピードをFPS基準にすべきではない。75Hzの人もいれば60Hzの
人もいるのでVブランクではなく時間を基準にすべし。WM_TIMERは200ms
程度の精度(実際は変動あり)しかないのでMultiMediaTimerを使うしかない
と思われる。

Vブランクに関係なく処理が終わったら画面更新という設計にしておいて、
アニメーションは時間単位で制御する方針で。

>>31
Vブランクを待たずに画面更新をした場合の1秒間のフレーム更新回数。
コンシューマゲームと違ってVSyncはシステムが管理しているので、描画
ラスターがどこにいるかは意識する必要がない。


34 :名前は開発中のものです。:04/03/15 15:05 ID:BH49Bw7k
あと、タイマーの精度については↓こんな文書があるので参考にしましょう!

GetTickCount, timeGetTime等の精度について
http://www.emit.jp/prog/prog_t1.html

35 :名前は開発中のものです。:04/03/15 16:34 ID:4yykzdEK
FF風のRPGのゲームを作るプログラムは何が最適かな?
2Dで作りたいんですが。

36 :名前は開発中のものです。:04/03/15 16:58 ID:7lXda+Uw
FFのどれだよ

37 :名前は開発中のものです。:04/03/15 17:43 ID:p3AFlJa9
>>32>>33
おー。レスありがと。30&31です。
そか、fps表示は理論値ってことだね。納得。

IDirectDraw7::WaitForVerticalBlankでVSYNC待ちをするよう
作っていた。そのあとでバックサーフェースからフロントサーフェースに
IDirectDrawSurface7::Bltで画面転送していたけれど、試しにVSYNC待ちを
削ってみても問題なく動作した。そういうものだったのか。
Blt後にGetScanLineでVライン位置を取ってみると1027〜1031くらいの
数値が出る(縦1024のモニタ)から、自動的にVSYNC待ちをしてたんだね。
無駄なことをしてたワ。

なるほど、Sleep()はtimeBeginPeriod()と使うと誤差が減るのか。
PeekMessage()+Sleep()を試してみるよ。サンクス!


38 :名前は開発中のものです。:04/03/15 18:25 ID:L+ne9Ht6
VC.NET2003にて
デバッグモードだと普通に動いてるのに
リリースモードにするとエラります(;´д⊂)
このような状況に陥る可能性にはどんな物があるでしょうか


39 :名前は開発中のものです。:04/03/15 18:33 ID:p3AFlJa9
>>38
メモリリーク。
あるいはライブラリとのデバッグ/リリースモードの不整合。

40 :名前は開発中のものです。:04/03/15 18:50 ID:BH49Bw7k
加えて
・変数、配列の初期化ミス
・配列や確保したメモリの境界を越えたアクセスにより他の変数が壊れた
とかも。
いずれもデバッガじゃ追いにくいやつやね。
がんがれ。

41 :名前は開発中のものです。:04/03/15 19:08 ID:JehxVOt7
半透明ポリゴンのZソートを高速に行う方法を教えてください。
検索をかけたのですが、アルゴリズムを見つけられませんでした。

今やってるやり方は、
3角形の重心を透視変換して計算したZ値 0.0〜1.0を
もとにクイックソートをつかって並び替えています。

この方法が一般的でしょうか?


42 :名前は開発中のものです。:04/03/15 19:49 ID:cPa+rKUo
いいんじゃない

43 :名前は開発中のものです。:04/03/15 23:18 ID:TVsWtjPx
俺がこの前作ったゲームは、面倒だったのでstable_sort一発にしてしまった。
仮のつもりだったのに何の問題もないから不思議だ。富豪的プログラミングマンセー

44 :名前は開発中のものです。:04/03/16 16:37 ID:/Nn0fi6h
>>41
0.0〜1.0の値を、たとえば0-255とか0-1023の値にマッピングする。
あとは256個なり1024個なりのインデックステーブルを用意して、
マップした値のテーブルにポリゴンを登録する。

全部の登録が終わったら、テーブル順に描画すればいい。


45 :名前は開発中のものです。:04/03/16 20:05 ID:JP2lEbCQ
バケツソートですな。

46 :名前は開発中のものです。:04/03/16 23:07 ID:wJFvxNHa
>>41
「Bitonic sort」これって関係あり?
当方、画像プログラムをやった事の無いヘタレなんで、
もし勘違いだったらスマソ。
t-potさんところが詳しいです。

47 :名前は開発中のものです。:04/03/16 23:40 ID:ktbTl6+f
これは一種の未来技術かと。

48 :41:04/03/17 01:12 ID:Bz6qtYMx
>>44
ありがとうございます。

Z値をある程度の配列に割り振って、
精度的に問題があれば配列の数を増やしていくということですね。

ただちょっと疑問があるのですが、
インデックステーブルが 100 などの値でなく
256、1024 のように2の乗数なのはなにか理由があるのでしょうか?

Z値1.0から1024個のインデックスを求めるときには
int index = (int)(z * 1024.0f);
といった具合に計算するのでしょうか?


49 :名前は開発中のものです。:04/03/17 15:40 ID:7fGZz4Ir
>>48
単純にシフトで計算しやすい値というだけの話。別に10個でも100個でも1000個でも
好きな数を割り当てればいい。
それから、ある1つのテーブル要素に対して複数のポリゴンが割り当てられる可能性を
考慮して組むこと。具体的にはインデックステーブルをポインタテーブルにして、リンク
各要素からリンクリストがぶらさがるようなイメージかな。


50 :名前は開発中のものです。:04/03/18 09:07 ID:8j8lQKul
OTってやつ?

51 :名前は開発中のものです。:04/03/18 09:47 ID:B+MnpSym
OTZではない。

52 :名前は開発中のものです。:04/03/19 23:21 ID:xSnIz48S
on

53 :名前は開発中のものです。:04/03/24 09:40 ID:HbaECddB
QVGA(320×240) の解像度ってどんなグラフィックカードでもサポートしてる?

54 :名前は開発中のものです。:04/03/24 10:02 ID:6y/xMBfw
してないと思った方がいい
320*240で処理して640*480へ拡大bltがいいだろう

55 :名前は開発中のものです。:04/03/29 09:22 ID:htU9rKwG
>>41
ちょっと複雑になるけど、BSP(2分空間分割)木を使ってもできると思う。
それぞれの半透明ポリゴンを一つのノードとして半透明ポリゴンモデルの
BSPデータベースを作っておいて、
ランタイムで、
・BSP空間へ視点を変換。
・視点の裏面になるノードを選び続けて、葉(末節)に達したらそのノードの
半透明ポリゴンをバーテックスバッファにコピー。
・以降、木を表面に遡っていけば、結果バーテックスバッファにポリゴンが
ソートされている。
ノード毎に視線ベクトルと面の内積を計算しなきゃいけないのが難か?
素直にソートした方が早そうだ。


56 :名前は開発中のものです。:04/03/29 09:26 ID:htU9rKwG
>>48
>int index = (int)(z * 1024.0f);

z=0.0のとき index=0,
z=1.0のとき index=1023
にしたいんだから、
int index = (int)(z * 1023.0f);


57 :名前は開発中のものです。:04/03/29 12:02 ID:iNk+Kk8E
いつでも60fpsを目指した結果以下のようなコードになったのですが
なんかもう頭が混乱して自分でやってることが良くわからなくなってしまいました。
一応思ったとおりに動作するのですが、どうも不安です。
改善点などのアドバイスをお願いします。

DWORD fps60wait[] = {17,17,17,16};

ima_time = timeGetTime();
dtime = ima_time - sakki_time;
if ( dtime < 11 )
{
 lpDD->WaitForVerticalBlank(DDWAITVB_BLOCKBEGIN, 0);
}
counter = (counter % 4) + 1;
wait = fps60wait[counter - 1];

do {
 ima_time = timeGetTime();
 dtime = ima_time - sakki_time;
 Sleep(0);
} while(dtime < wait);

sakki_time = ima_time;

<描画>
<処理>

58 :名前は開発中のものです。:04/03/29 13:33 ID:1rpdsxXj
>>57
Windows環境のプログラムでしょ。なぜ60FPSにこだわる必要があるんだろう。
>>33参照。


59 :57:04/03/29 23:22 ID:iNk+Kk8E
>>58
60FPSは実はどーでもいいんですが
既に60固定で作っちゃったんで>>57に問題がないか知りたいんです。
>>33はとにかくVSYNCは無視しろってことですよね。

60 :名前は開発中のものです。:04/04/03 11:39 ID:RYYtnws6
ゲームを作るうえでいきなりシュミレーションゲームを作る
のはやはり無謀でしょうか?
もっと簡単なのから作るのが普通でしょうか?

61 :名前は開発中のものです。:04/04/03 12:04 ID:4VZfUvkc
>>60
シミュレーションってウォーシミュレーション?
ならここ↓の問題設定で手も足も出ないと感じたら
http://pc5.2ch.net/test/read.cgi/gamedev/1079745509/
ブロック崩しとかから五目並べみたいなのからやってみた方がいいと思う。
サンプルも探しやすいしね。

62 :62:04/04/03 14:32 ID:c0YQngLd
動く絵を表示させるプログラムで、綺麗にプログラムを書きたいと思っているのですが自分ではどうにも・・・。
とりあえず自分がいま使ってるやり方を書きます。

if(a>1&&a<10){
a++;
1枚目の絵を表示させる}
if(a>11&&a<20){
a++;
2枚目の絵を表示させる}
if(a>21&&a<30){
a++;
3枚目の絵を表示させる}
if(a==30)
a==1;

こんな感じで動く絵を表示させているのですが、どうも見た目が汚いと思います。
うまい方々はこうゆうプログラムをどう書くのでしょうか?

63 :名前は開発中のものです。:04/04/03 14:40 ID:J+xYk8BN
aってナニ
絵ってナニ
いつ実行してるの

64 :62:04/04/03 15:06 ID:c0YQngLd
aは整数の変数を表しています。
絵というのは絵1・絵2・絵3でパラパラ漫画の用になっています。

つまり、これは段々と絵が1・2・3へと変わっていくプログラムです。
自分がしたい事はメインのループを10回ループすると絵が1枚づつ変わっていくようなものです。

わかりましたでしょうか?

65 :名前は開発中のものです。:04/04/03 15:39 ID:EgtzjyXv
Picture *lPicture[3];
int indexPic = 0;

lPicture[0] = &picture1;
lPicture[1] = &picture2;
lPicture[2] = &picture3;

for(int i=0; ; i++)
{
  if (i%10 == 0)
  {
    indexPic ++;
    if (indexPic > 3)
    {
      indexPic = 0;
      i = 0;
    }
  }
  DrawPicture(lPicture[indexPic]);
}


66 :名前は開発中のものです。:04/04/03 15:52 ID:sI/6/JHP
>>62

こんな感じで、タイマー使ってやんないと、まともにタイミング取れないと思う。
タイマーは独立したスレッドで、タイマー満了コールバックとかでやる方法もある。

const int numPictures = 20; //フレーム数20枚
const float secPerFrame = 0.1f; // 1フレーム0.1秒=毎秒10枚
int idx = 0;
float sumDt = 0;
long prevTime = timeGetTime();
while( true )//永久に
{
 float dt;
 long currentTime = timeGetTime();
 dt = float(currentTime - prevTime)/1000.0f;
 prevTime = currentTime;
 sumDt += dt;
 if( sumDt >= secPerFrame )
 {
  //idx番目の絵を表示
  idx++;
  if( idx == numPictures )
   idx = 0;
  sumDt = 0;
 }
}


67 :名前は開発中のものです。:04/04/03 21:02 ID:3azEgRom
>>62 正直やりすぎた
template<unsigned int Max, typename Son = EmptyCounter>
class LoopCounter
{
protected:
  Son       m_Son;
  unsigned int  m_Count;
public:
  LoopCounter() : m_Count(0) {}
  bool Inc()
  {
    if (m_Son.Inc())
    {
      if (++m_Count == Max)
      {
        m_Count = 0;
        return true;
      }
    }
    return false;
  }
  unsigned int Get() const { return m_Count; }
};
struct EmptyCounter
{ bool Inc() { return true; } };
//作成
  LoopCounter<3, LoopCounter<10> > AnmCounter;
//ループ
  Draw(AnmCounter.Get());
  AnmCounter.Inc();

68 :62:04/04/03 22:16 ID:c0YQngLd
返答ありがとうございます。
とりあえず、すべて試してみようと思います。

69 :名前は開発中のものです。:04/04/03 23:32 ID:UsdbLZaC
そもそも、アニメを制御するのに切り替えをプログラムで直接書こうという
考えから改めるべきだな。
データを読み取って、指定された時間に指定された絵を書くプログラムを書け。

70 :名前は開発中のものです。:04/04/05 09:52 ID:VdLSCHpK
教えて君で申し訳ないけど、
ネットリソースではなかなか見つからなかったので質問させてください。

2Dアクションゲームでモーション中に別モーションを呼ぶ場合、
(例:ダッシュ中にパンチ、パンチキャンセルでキック等など)
モーション要求はスタックに積むのが常道でしょうか?

ダッシュとジャンプはそれぞれ加速度と重力変数で判別できるのですが、
キャンセル系について、たとえばガードキャンセル+パンチキャンセル+キックといった
コマンド技に似たもので、自分がどんなことをしてきたかの遷移がわからないのです。

一応コーディングしてみると、直前モーションを保存するとif文の数が40個ぐらいになってしまいました。
STLって何?っていう厨房なので、スタック以外にも方法があればご教授おねがいします m(--)m




71 :名前は開発中のものです。:04/04/05 17:41 ID:Wxg2TEwm
>>70
スタックに積む=1モーション完了して次モーション
だと、いわゆるスト2の「キャンセル」っぽい動きにはならない。
ちなみにスト2のキャンセルは行きと戻りのモーションがあって、
行きモーション中にコマンドが成功したら戻りを「キャンセル」して
次モーションにつながることから。おそらく行きモーションと戻り
モーションが別コントロールになってるんだろうね。
どういう動きをさせたいのか頭の中を整理してみるほうがいい。


72 :名前は開発中のものです。:04/04/05 17:44 ID:rH0o4MFm
3Dゲーつくってます。
主人公キャラの位置をRAYにして、地形と障害物とのあたり判定をしようと思っています。
とりあえず、移動方向に1フレームの移動分だけレイを飛ばして速度ベクトルをその真下にしました。
地形に沿って移動はできるのですが、この方法では主人公とおなじ高さで垂直に立ってる壁とか、こっちに向かって傾斜しているポリゴンがあると困ります。
はじめにレイを進行方向に飛ばすときもあたり判定を計算すると2倍の計算量になってしまいますが、仕方ないのでしょうか。


73 :名前は開発中のものです。:04/04/05 20:32 ID:WG5Tm/kb
>>72
何を言いたいのかさっぱりわかりません。

もっとわかりやすく書いて、
改行も入れてください。

74 :名前は開発中のものです。:04/04/08 01:27 ID:VoayxJMR
計算量を減らすようにすればいいんじゃねぇか?
どんなやり方してるかしらないけど。
アタリを分割すれば計算量は抑えられる。
AABBツリーを調べてみて。



75 :名前は開発中のものです。:04/04/13 02:27 ID:00yuZNJk
スーパーマリオブラザーズみたいなのを作ろうと思ってます。
今のところスクロールまで作ったのですが、画面のちらつきが気になってしかたありません。
一応バックバッファに描いてから転送するようにしています。
http://gamdev.org/up/img/475.zip

よければ解決策を教えてください。

76 :名前は開発中のものです。:04/04/13 11:44 ID:tK3wV3VD
特にちらついてないように見える
もしかしてティアリングのこといってるの?


77 :名前は開発中のものです。:04/04/13 12:33 ID:xi3HdIxL
>>75
「リフレッシュレートに関する論争」スレでも検索してみるといいことがあるかも。
解決しようとするとちょっとした闇に踏み込むことになるので、覚悟するように。

78 :75:04/04/14 00:41 ID:s1vwKqYY
まさにそのティアリングってやつですね、たぶん。
スレを読んだりして見ましたけど、なんかめんどいんでこのまま進めることにします。
余力があったら考えてみたいと思います。
ありがとうございました。

79 :名前は開発中のものです。:04/04/14 01:24 ID:fCb1f0Lh
フルスクリーンモードにしてフリップ使えば大概ティアリングは解消できる

が、垂直同期周波数が環境によって違うことも多いために
垂直同期とってもゲーム内の描画とのずれでカクカクしてくることもある

その辺がばっちり解決してもWinがリアルタイムOSでない時点で完璧には無理

どの辺で妥協するかが重要と思われ
タイマとフリップ併用が一番いいと思うけどね


80 :名前は開発中のものです。:04/04/14 02:16 ID:bV4eSf3V
リフレッシュのタイミングとゲームのタイミングが完全にシンクロしない限り
RTOSでも無理だから。


81 :名前は開発中のものです。:04/04/16 17:56 ID:6nIx9Yzb
はじめまして
とあるPDAで擬似的な3DのGAMEを作りたいと思っています。
2Dではいくつか作って公開していますが、PDAの3Dの場合
自力で書くしかないでしょう。
今、市販されている3DプログラミングものはDirextXを利用した3Dエンジンを使用したものが
多いですね
そうではなく自力で(ある程度はしょったモノになると思います。PDAだから)3Dを書きたい人におすすめな
書籍(もちろんWindows95前後の頃のものだと思うのですが)のタイトルと簡単などういう感じか
教えてもらえないでしょうか?

※こういった質問はここでよろしかったでしょうか? よろしくお願いします。
言語はCもしくはC++です。
上げさせていただいてもいいでしょうか?

82 :名前は開発中のものです。:04/04/16 18:03 ID:ApfI3JPr
>>81
D3Dのマニュアル

83 :81:04/04/16 18:15 ID:6nIx9Yzb
>>82
申し訳ありません D3Dとは何かの略でしょうか?
検索してみたのですが 海外の会社ばかり引っかかるようです
フルネームを教えてくださいませんでしょうか?
お手数をおかけしますがよろしくお願いします


84 :名前は開発中のものです。:04/04/16 18:23 ID:ApfI3JPr
>>83
Direct3Dだよ。

基礎知識のページに
ジオメトリやトランスフォーム、ラスタ化ルールとか
入門に必要な情報はみんな書いてある。

85 :81:04/04/16 18:43 ID:6nIx9Yzb
ありがとうございます!! Direct3Dですね
MSのサイトが引っかかりました。
ttp://www.microsoft.com/japan/msdn/academic/Articles/DirectX/01/

基礎知識のページとはここでいいでしょうか?
あとDirect3Dのヘルプにも詳しいそうですね。


86 :名前は開発中のものです。:04/04/16 19:29 ID:ApfI3JPr
>>85
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/DirectX9_c/directx/graphics/programmingguide/gettingstarted/gettingstarted.asp

ここだけど、3Dトランスフォームとかの文章がなくなっちゃってるね。
DirectX7.0迄のマニュアルを落としてきて参照するのがいいかと。

87 :81:04/04/16 20:07 ID:6nIx9Yzb
>>86

ありがとうございます。
ttp://www.microsoft.com/downloads/details.aspx?FamilyID=3a9531f6-577c-4748-b59c-2197014f544e&displaylang=ja
より DirectX7.0ドキュメントを落としております。
感謝しています。

あのう…… 非常に図々しいのですがDOSの時代ってDirectXとか無かったわけですよね
DOOMとか…… あのころの技術とこのDirectX7.0に載っている技術とは基本は変わらないと思っていて
いいでしょうか?
DOOMでは、見えないモノは書かない、省略、上下の省略などで稼いでいたようですがこれってこれから
生まれた技術でしょうか? ちょっとWindows以外なのでDOOMが参考になるかと検索しているんです。
きっちりとした3Dを必要としてないものですから 

それと同時に3Dの基本の情報を知りたかったのでこちらは本当に助かりました。
本当にありがとうございます。


88 :81:04/04/16 20:15 ID:6nIx9Yzb
CMAGAZINEの 2000年 1月号にDOOMの仕組みと
2002年 6月号に3Dダンジョンの作成と表示の基本アルゴリズム(DOOMも絡む)
がありますね

これを求めたいと思います
他の人の参考になれば。

89 :名前は開発中のものです。:04/04/16 21:26 ID:1fUHdakN
>>81
似非3DならダンジョンマスターとかWizardryとかそっち系のほうがいい気がしないでもない

90 :名前は開発中のものです。:04/04/16 22:18 ID:CYG69g6n
>>89
その手のも作っては見ますが、升目式ダンジョンではなく同じような感じの道が
ないようにしたいわけです。
なんとなくそらで道を覚えられるみたいな感じに出来たらと考えていますので。


91 :名前は開発中のものです。:04/04/16 23:40 ID:bAbJcDxy
>81
キャノンからでたRenderWareの分厚い本。
3Dエンジンを作るにあたって生じた技術資料を適当にまとめて
「プロご用達!」などとうたって1万前後で販売!
CDにはRenderWareが入ってるが、これを使ったソフトを配布してはならないという罠。
クラリオンに聞くと「学習用ですので」。氏ね。

92 :81:04/04/17 00:32 ID:KupmHoyY
>>91
それってプロ御用達と学習用と矛盾してますな。誰が見てもわかるところに
これを使ったソフトの配布禁止と書かれていて、学習用と書かれているのでしょうか?
(だったらこんなに怒るわけないよな……)
とあるソフトのマニュアル的なものなんでしょうねえ

そういう3Dプログラミング物多いですよね 以外と。

93 :名前は開発中のものです。:04/04/17 01:28 ID:a3IXbRjM
>>81
3Dプログラミングってどう言ったレベルを想定してるか分らないが
自前実装って言うならラスタライズやら必要だよね?

"コンピュータグラフィックス 理論と実践"

辺りで良いんでないの?12000円と手頃だし。
特定ハードに依存(API等)しない
3Dの数学的理論、3Dの工業的理論(汎用的なコンピューター理論)
を身に付ければ、自前実装はスグできるようになる。

その前に、実装実機の理解は必須だと思うけど。

94 :名前は開発中のものです。:04/04/17 03:02 ID:mkUkAsvi
>>93
この本ってさ、1つの話題に対しての密度薄すぎねぇ?
技術の名前だけのってて「はぁ?こりゃなんも説明できてねぇよ」
ってのが多々あるぞ。
式出したらせめて各変数の意味ぐらい書いとけってのが多々あってムカツク。

95 :名前は開発中のものです。:04/04/17 05:17 ID:a3IXbRjM
>>94
自分のレベルに合わない本は、皆そう感じる物じゃない?
それに、自分の望むチャプターのみで、更にそれが根ほり葉ほり事細かな内容ってありえないでしょ。

DirectXのhelp読んで、
>1つの話題に対しての密度薄すぎねぇ?
>技術の名前だけのってて「はぁ?こりゃなんも説明できてねぇよ」
>式出したらせめて各変数の意味ぐらい書いとけ
何て言い出す人間の大半は
プログラムとC++と3Dプログラミングの基礎を持ってから読もうねって、感じの人間が多いと思う。
それと同じかな…?って思うけど…

違うなら、不満や不足に感じる部分は、他の本や他の情報源、
そして自分の頭で解決ってなる物でしょ?
幾ら何でも、答え頂戴、全部教えて、クレクレって方針はありえないでしょ。

普通に数学の基礎とハードの基礎とプログラムの基礎を持って読めば
十分な内容でしょ、12000円程度の価格なんだし。



96 :名前は開発中のものです。:04/04/17 07:53 ID:Le5gnz+v
>>94
あんた序文や前書きちゃんと読んでるか?
俺はこの本は持ってないが、
同系統の「Real-Time Rendering」だと
「各トピックについて深く知りたい場合は、
参考文献を充実させたのでそちらを参照してくれ」
ってちゃんと書いてあるんだが。

97 :名前は開発中のものです。:04/04/17 09:41 ID:VEtZ9nxQ
>>95 >>96
はてさて、どちらが正しいのやら。
>>95の方が読んだ事無いように見えるけど

98 :名前は開発中のものです。:04/04/17 16:07 ID:a3IXbRjM
>>96
>同系統の「Real-Time Rendering」
両方もってるが、全然同系統じゃないぞ。
Real-Time Renderingの方は原本の奴で英語だけど。

コンピュータグラフィックス 理論と実践は
主にはCGをコンピューターで扱う原理を解説してる。
点を定義してそれらを結んでピクセルを塗る原理(ライスライズ)とか
つまり、普段はハードやらAPIが処理してる低レベル部分の理論的説明が主。
つまり、3Dソフト自体を開発したり、
DirectX使わないでWindowsでポリゴン自力描画(WinAPIは使うけど)実装したり
(勉強で昔やった)って勉強が出来る。

Real-Time Renderingはその名の通り、もうダブルバッファ前提で
いかにリアルタイムで処理時間を稼ぐとかの技術が主にある。
しかも、参考文献ってさ、文献として上がってる
本の著者と名前が載ってるだけだと思うが?

コンピューターCGの本と3Dプログラムの本、同系統では無いと思うけど?

99 :名前は開発中のものです。:04/04/25 12:00 ID:dZ+uD0u1
戦闘シュミレーションゲームつくるのに
Cは向いていますか?
またいいツールとかありませんか?

100 :名前は開発中のものです。:04/04/25 12:06 ID:JYGTOjaq
どういう物かはわからんが言語はまず関係ないと思った方がいいぞ

101 :名前は開発中のものです。:04/04/25 12:14 ID:dZ+uD0u1
ということはCをちゃんと使えるようにさえなれば
作れると言うことですか?
今勉強中ですが、Cってゲーム作れるのか?
と不安になってきました。
絵の表示の仕方がいまだにわかんないし・・・

102 :名前は開発中のものです。:04/04/25 12:17 ID:JYGTOjaq
逆にいえばその程度でつまずくなら(失礼)Cにこだわる必要ないんじゃないの?
絵を表示するコードが1行の命令で、画面の初期化もらくちんって環境は
世の中にたくさんあるよ。

Cの利点は何でもやろうと思えば細かいことは出来るというだけで
その利点もハードガリガリアクセスする環境ならともかく
Winとかだとほとんどメリットないね


103 :名前は開発中のものです。:04/04/25 12:29 ID:dZ+uD0u1
そうですか・・・
ちなにみ皆さんはこういうゲームを作るときは
どの言語を使ってるんですか?

104 :名前は開発中のものです。:04/04/25 13:14 ID:JYGTOjaq
確かに言語によってと喰い不得意はあるものの
結局使い慣れた物が一番だと思う

最近はスクリプト系も結構あるから言語になれて内人はそっちがいいかな
俺はやはりC/C++を長くやっていたから言語体系が近いjavaとCだな
C++で中途半端なオブジェクト指向やるくらいならjavaいったほうがいいし、
シンプルにガリガリ叩くときにはCって感じ
javaだと画像表示やらシステム部分に時間をかけないでゲームの処理のみに
専念できてる感じがいい
Cとかはもちろん必要コード量が多くなるのでライブラリ整備が必須になって
変にシステムをいじってばかりでゲームに専念できないことも多い^^;

>>103がさわれそうな環境はC以外になにかあるの?
画像表示からうまくできてないということはDIBやらDirectXから出来るようになるには
かなり時間かかると思うから他を勧めたい

105 :名前は開発中のものです。:04/04/25 13:34 ID:dZ+uD0u1
親が自営でC++のプログラマやっているので
もっとも勉強しやすい環境にあるのはCだと想います。

こだわりと言うわけではありませんが、
できればCで作りたいと思っています。

>画像表示からうまくできてない
まだ勉強中なのでそこまで達していなのかもしれません
一応C入門の本は1冊読んだのですが・・・


106 :名前は開発中のものです。:04/04/25 14:07 ID:vDhsPj0U
「高校受験したいんです。小学校の課程は修了しました」
みたいなもんだな。

CでやるとしてもまずはコンソールじゃなくWindowsプログラミングやらんといかんし。
まーいっそコンソール&glutって手もあるが。


107 :名前は開発中のものです。:04/04/25 14:22 ID:JYGTOjaq
そもそも言語が分かってさらにGUIまわりも分かっていても
ゲームプログラムが全く出来ない人もたくさんいる

ゲームに必要な知識と、そのプラットフォームで絵を出すとか
システムに必要な知識は全く別物なわけで

逆にスタンドアロンのゲームは作れるけどウインドウシステム上での
ゲームは作れないという人もいる

今のちみの状態は分からないことが多すぎかと
言語自体も本読んだというレベルなら表面上のものだけだと思うので
ポインタガンガン使えるというレベルまで言ってないと思われ

一番重要なのは目的がゲームを作ることなのか、それともC言語を
勉強したいのかってところだよ

昔はC言語&ゲーム作りたいってことが多かったと思うけどこれは
生産性を上げつつマシンスペックが低かった時代これしか選択肢がなかっただけ
8bit時代BASICでゲーム作って遅かったのでしかたなくハンドアセンブルへ
そして16bitになりメモリが多少裕福になってC言語へって人は多いはず

言語が目的ではないんだよ
それにプログラマは複数の言語が使えるのが普通
1つの言語で今後もいくとは思えない

108 :名前は開発中のものです。:04/04/25 14:52 ID:dZ+uD0u1
とりあえず今ある知識でゲーム作ろうというのが、
かなり無謀だったみたいですね。
もちろんゲーム作成が目的ですが、
今は置いておいて、Cをがんがん使えるようになろうと思います

109 :名前は開発中のものです。:04/04/25 15:36 ID:RwxVe3k8
まずCをしっかりできるようにして、
次にC++をいくらかかじって、
あとはDirectXに進めばOK。

このQ&Aってもう何度もされてるよね。
ゲームプログラミングのまともな入門サイトor本がないということだろう。
どうにかならないもんかね?

110 :名前は開発中のものです。:04/04/25 15:47 ID:JYGTOjaq
昔はパソコンでのプログラム=ゲーム作るだったからな
それほど山のように雑誌はあった

ベーマガ、MSXFANなど読みやすくて分かりやすいシンプルな物がないからね
あとは個人レベルで作る物と商業レベルとでできあがる物が違いすぎるというか

でも昔から初心者向けと上級者向けはあってもその間の中レベル向けが
ほとんど存在しないと言う問題もあったよ

たとえばC言語は分かって絵も描画できる、でも具体的にゲームで必須な
垂直同期がなんなのかとかラスター割り込みがどうとかそういった物は
なかなかいいものはなかった

DirectXやるときC++よりCでやったほうが楽な気がする

111 :名前は開発中のものです。:04/04/25 15:58 ID:+MyYZ79o
楽というか
綺麗な使い方が出来ないと思うC++

112 :名前は開発中のものです。:04/04/25 16:18 ID:itt2Cin5
綺麗な使い方ってどんなの?
DirectXやったことないけど、呼び出すだけだからどっちでも一緒じゃ?

113 :名前は開発中のものです。:04/04/26 09:29 ID:YvjKmIIw
CだとCOMを間接的に呼ばなければならないので、
綺麗な使い方には絶対にならない。

114 :名前は開発中のものです。:04/04/26 15:22 ID:AM2u3eHS
>>113
いや、そういうことじゃなくて、アレだろ?
C++なんだけどC風に組むとかそんなんだろ。多分。

でも、C++風に組んだ方が楽だと思うけどね。俺は。

115 :名前は開発中のものです。:04/04/28 01:45 ID:LxpA+NNA
>>111
潔癖主義かつ無能なら何を使っても汚く感じるだろう。

116 :名前は開発中のものです。:04/04/28 15:15 ID:ELYXrsLP
いや、C++は特別だろ。

117 :名前は開発中のものです。:04/04/28 20:35 ID:brIWsk8J
俺はC++でDirectX使ってるが、デザインはうっとりしてしまうほど綺麗にできてるよ。
なにが汚くなる可能性があるのか具体的に言ってみろばかー

118 :名前は開発中のものです。:04/04/28 20:38 ID:YnOaqFHo
一人よがり

119 :名前は開発中のものです。:04/04/28 20:52 ID:brIWsk8J
思わずモニタにティンコこすりつけたくなっちゃうくらい
清純可憐で微妙なエロスの漂う穢れのないコードかけてるっつーの

120 :名前は開発中のものです。:04/04/28 23:03 ID:qRKYM2ci
じゃぁ見せろ

121 :名前は開発中のものです。:04/04/29 00:07 ID:klVfh8nk
>>116
特別ですね。
言語レベルで厳格な貞操帯を装着しないと、猿のようにオナーニを
いえ独り善がりな汚いコードを書いてしまう無能には「C++は特別」です。
特別汚いコードを書ける言語です。彼等にとっては大きな問題です。
貞操帯を装着しなくても問題の無い一般人にとっては瑣末な問題です。

122 :名前は開発中のものです。:04/04/29 01:29 ID:ZbXlsRAe
平和なやつらだ。C#とかDとか試してみたことないんだろうな。


123 :名前は開発中のものです。:04/04/29 03:54 ID:w6BRdvWr
Dは処理系がひとつしかないし、バグバグだからなぁ

124 :名前は開発中のものです。:04/04/29 04:02 ID:tELycjco
class CCharacter : public CEntity, public CRenderNode, public CCollisionNode {};

CEntityは自律行動を行うクラスで主にAIの更新を行う仮想関数Update()を持つ。
CRenderNodeはレンダラに登録され描画を行う仮想関数Render()を持つ。
CCollisionNodeはデフォルトの当たり判定を実装してあって衝突を検出したら仮想関数Collide()を呼び出す。

関連性のない3つのクラスからの多重派生ですがこれは邪道でしょうか?
また、みなさんはこの3つの要素をどの様にクラス化してますか?
ご意見お聞かせくださいませ。

125 :名前は開発中のものです。:04/04/29 04:54 ID:ffNyJU4j
>>122
平和な奴だ。糞汚いコードを書いてばかりの低脳に
Java、C#、Dを試させてみたことがないんだろうな。

言語仕様上の規定(貞操)が厳格であるために
クルクルパーな悪性のハックは多少は減るが
やっぱりおかしなコードを書くんだよ。

馬鹿に付ける薬は無い。言語変えても駄目な奴は駄目。

126 :名前は開発中のものです。:04/04/29 05:01 ID:dU1CdeTe
>>124
俺の場合、

class CCharacter : public CEntity

CRenderNode,CCollisionNodeはCCharacterのメンバ

理由は、描画リソース、コリジョンはいらないキャラのいるから。
例えば、ジェネレータとか。

とある理由で、CEntityをメンバにした事もある。

127 :名前は開発中のものです。:04/04/29 05:08 ID:klVfh8nk
>>124
邪道・正道にはとやかく言及しないが
「〜Node」な2つの基底クラスの間で名前衝突が起きないってのが
ぶっちゃけあり得ない。背後にぐちゃぐちゃなメソッドの群れの気配がする。

128 :名前は開発中のものです。:04/04/29 08:15 ID:0gA9laqu
>>124
肝心なのはその上位で、CCharacterのインスタンスの集合を管理しているクラスが
こいつをどういう風に扱うかにあると思う。
誰がどうやって生成して、どういうリストに組み込まれて、誰がメソッドを呼び出して、
誰がどうやって破棄している?

129 :名前は開発中のものです。:04/04/29 09:54 ID:r5N/wC7K
>>124
俺はちょっと違うなCharacter以外はCharacterのメンバにする。
ちょっと>>124は機能とオブジェクトをいっしょにしてるのがよくなさげ。
継承で考慮するのはオブジェクト指向の説明でよく出てくる
犬と猫は哺乳類で・・・云々の話だけでいい。
もしEnemyなんてのが出てきたら、Characterから継承するって感じの使い方かな。

EntityやRender、Collisionなんてのは明らかに
Characterが所有しちょるものなのでメンバでいいと思う。
Characterより上の方のクラスに入れるかもしれないものもあるね。描画とか。

まあ、クラスのまとめ方が、複数のクラスの処理を一括してやろうと頑張りすぎてて、
かつ、これから継承するものの違いまでカバーしようとしている感じがする。正直うまくない。
まあ、処理で考えるなら、
衝突の検出なんてのは関わるもの同士によって必要な情報が全然違うから
一括処理なんて必要ないならしないほうがいいと思うよ。(仕様変更あると思うしw)
逆に描画なんてのはどれも同じ処理になるはずじゃね?
Characterもしくはその基底クラスがRenderなんて関数をもってればそれでいいような気がする。

AIクラスなんていったら、結構隔離できるクラスのような気がするが
実は他のクラスとの関連が一番多くなるクラス、また、他のクラスとの関連も一番特殊になるクラスだと思う。
何せAIの判断材料に他のクラスの情報が確実に必要になるからね。
AIってのはCharacterそのものになると思うんだけどどうだろうか?
例えばCharacterから範囲10以上に近づいたら、なんてやったらAIにCollisionのデータを使った衝突の検出が必要になるよね?
こういう処理自体をライブラリにするのはいいと思うけど、それに必要になる材料はもろにクラス同士の設計の関連になるわけで略w

130 :124:04/04/29 13:08 ID:tELycjco
>>126
CCollisionNodeをメンバにするのは考えましたが、
CRenderNodeをメンバにしてしまうと自身で描画コードを持てないので
描画情報を登録して後で一括描画してもらうって形ですよね。
この場合ちょっと複雑な事をやりたい場合にCRenderNodeに手を加えるハメになりそうですがどうでしょうか?
2Dなら描画形態は限られてくるのでメンバに持ってしまうかもしれませんが。


131 :124:04/04/29 13:09 ID:tELycjco
>>127
〜Node系は特定の機能を保有する事を保証するインターフェイスのような物なので今のところ名前の衝突はないですが、
拡張した場合に仰るとおりのぐちゃぐちゃなメソッドの群れになる可能性は大いにありますね。


132 :124:04/04/29 13:09 ID:tELycjco
>>128
生成は各entityが任意にnewしてEntity管理クラスに突っ込み、
entityMgr.Add(new CEnemy); // class CEnemy : public CCharacter

各entityが初期化時に必要に応じて描画管理クラスやコリジョン管理クラスに自身を登録してます。
renderer.Add(this);
collisionMgr.Add(this);

各管理クラスが全登録インスタンスの仮想関数 Update(), Render(), Collide() を呼び出しており、
entity間のやりとりはentityMgr経由でメッセージを送受信して行ってます。

破棄は自分自身でentity管理クラスに破棄要求を出してentity管理クラスがインスタンスをdeleteします。
entityMgr.Remove(this);

なんだか鬱設計ですね。

133 :124:04/04/29 13:09 ID:tELycjco
>>129
>>ちょっと>>124は機能とオブジェクトをいっしょにしてるのがよくなさげ。
>>EntityやRender、Collisionなんてのは明らかに
>>Characterが所有しちょるものなのでメンバでいいと思う
コリジョンや描画をメンバにするのはある程度納得出来るのですが、
自身の行動をメンバに委譲するってのはちょっとイメージが沸きません。
状態のみを委譲してそれを受けて自身の行動に変化をつけるのでしょうか?
たぶん違うぽ(つд`)

ゲーム内に登場するオブジェクトの殆どはCCharacter派生クラスだと思うんです。
確かに画面には表示されないステージ管理クラスや当たり判定を行わないスコア表示部分などはありますが、
それらは本当に限られてくるんじゃないでしょうか。
共通のインターフェイスやリソースを含んだCCharacterを定義して全てのキャラクタをそこから派生させた方が、
より汎用性があるかなーと思った訳です。

134 :名前は開発中のものです。:04/04/29 15:51 ID:r5N/wC7K
>>132
管理クラスって作った奴が思うほど役に立たないことが多いから
もうちょっと設計考えて見た方がよくね?

>>133
>自身の行動をメンバに委譲するってのはちょっとイメージが沸きません。
どう組んでるのか詳細までは知らないけど、
結局、プロペラ付けたら空を飛んで欲しくて、車輪付けたら道を走ってほしいんでしょ?
ならそういう使い方でいいじゃない?

>共通のインターフェイスやリソースを含んだCCharacterを定義して全てのキャラクタをそこから派生させた方が、
>より汎用性があるかなーと思った訳です。
それはいいんだけど、継承を継承らしく使おうよって話なんだけど。
別にこう↓組んでも組めるっちゃあ組めると思うよ。
class CCharacter : public CEntity, public CRenderNode, public CCollisionNode {};
ただわかりづれぇって一点を除けばw

135 :名前は開発中のものです。:04/04/29 18:18 ID:0gA9laqu
>>132
とりあえずそのノリなら漏れはついていけるから安心していいよ
邪道かどうかは別として、管理される側が自分を管理する側を知っているっていう
状態は改良できるとこだと思う

136 :名前は開発中のものです。:04/04/29 18:20 ID:K2EIDtC0
おまえらそんな議論は学校いってるうちにすませとけや

137 :名前は開発中のものです。:04/04/29 20:30 ID:klVfh8nk
>ゲームプログラミング相談室【Part6】
              ~~~~~~~~
問題は何もない。続けて良い。

138 :名前は開発中のものです。:04/04/29 21:45 ID:0gA9laqu
邪道かどうかは別として、衝突判定が特別扱いされているのが気になる
なんでentity間のやりとりの一種として扱わないの?

139 :名前は開発中のものです。:04/04/30 02:06 ID:zWQ1T1uk
>>130
スマン。やはり、CRenderNodeがどういったものか、理解せずに
答えたので、見当違いだったかも。

CRenderNodeは描画機能?をもっていて、描画する対象のインスタンスではない。
て事かな?
因みに俺はインスタンスを含むと思っていたので、あくまでも、メンバ(参照用のポインタ)という扱い。
(キャラと描画物が1対1ではないという事)

とあるミドルウェアでは、大概のクラスが、シーングラフノードの派生。という構造もあったし、
そういうのも面白いとは思うよ。


140 :名前は開発中のものです。:04/04/30 02:41 ID:TdoOcGaP
これっ

141 :124:04/04/30 04:19 ID:r3mzBY0g
>>134
>>管理クラスって作った奴が思うほど役に立たないことが多いから
全AI更新→全衝突判定→全描画
こんな感じにUpdate()やRender()ってのは一括して呼ばれるのが普通だと私は思ってます。
誰かが管理して順番に呼び出した方がスッキリしているような気がしますがどうでしょうか?

管理クラスがない場合って生成されたEntityのUpdate()はどうやって呼ばれるのだろう。
各Entityを木構造のノードにして子or兄弟のUpdate()を連鎖的に呼び出すのか、
それともリストをグローバルで持ってメインループか何処かで呼び出す?
誰かに管理させた方が不用意にノードにアクセスされないだろうしこれが普通かなーと
思ってたんですが一般的ではないんですかね。

>>結局、プロペラ付けたら空を飛んで欲しくて、車輪付けたら道を走ってほしいんでしょ?
この部分の話の流れとしてはCEntityから派生せずに
メンバとしてCEntityを持ったほうがいいよって解釈でよろしいでしょうか?
実際に移動を行う処理やアニメーションを行う処理なんかはAIと分離すべきだと思うのですが、
AIの部分をメンバに委譲して且つ自分ではUpdate()を持たないとなると
自分自身は何も行動を起こせないただの入れ物になりますよね?
うーん。

>>それはいいんだけど、継承を継承らしく使おうよって話なんだけど。
それが引っかかってたので質問した訳です。そしたらその他の部分でボロが出まくる出まくる(;´Д`)
CRenderNodeやCCollisionNodeをメンバに持つってのはいいんですが
CEntityをメンバに持つメリットというか意味が理解できないのです。

142 :124:04/04/30 04:33 ID:r3mzBY0g
>>135
>>邪道かどうかは別として、管理される側が自分を管理する側を知っているっていう
>>状態は改良できるとこだと思う
でもリスト構造とかってそういう物ではないんですか?
ああ、ノード自身が管理クラスに登録するってのがマズイ訳ですね。
その点CEntity以外をメンバとして持った場合は
renderer.Add(this);
はアリですよね。

143 :124:04/04/30 04:35 ID:r3mzBY0g
>>135
>>邪道かどうかは別として、衝突判定が特別扱いされているのが気になる
自分の中では一括処理ってのが根底にあったので特別扱いになってます。
全ゲームオブジェクトの行動が終わってから衝突判定を一括で行うのでどうしても
管理クラスに自分を登録して後で判定を実行する必要があったんです。
Update()の中で衝突処理も行うとすればAI処理の一部として実装できますし、
自由度は増すと思いますがこれはゲームの規模や構造にもよりますよね。

144 :124:04/04/30 04:38 ID:r3mzBY0g
>>139
すみません、説明不足だったようですね。描画対象ではないです。
CRenderNodeはインターフェイスです。基本的にvirtual void Render() = 0;が定義してあるだけで、
レンダラがこれを任意のタイミングで呼び出します。
派生クラスはRender()を実装して1つもしくは複数のモデルをデバイスに対して描画してます。

145 :名前は開発中のものです。:04/04/30 05:47 ID:iUVDJkHq
>>141
>管理クラスがない場合って生成されたEntityのUpdate()はどうやって呼ばれるのだろう。
>各Entityを木構造のノードにして子or兄弟のUpdate()を連鎖的に呼び出すのか、
ん?処理の順番って基本的にこうやらないとまずくないか?
だって、親子関係では親から処理を実行していくようにしないと矛盾がおきないか?
子がワールド座標を欲しがるとき、親がすでに正しい位置に動いてくれていないと
子のワールド座標はバグるはずだけどどうよ?

>CEntityをメンバに持つメリットというか意味が理解できないのです。
俺はEntityクラスはキャラクタの行動を制御するものだと思ってたんだけど
実はただのAIクラスなの?

146 :135:04/04/30 12:37 ID:LSXN/0+O
>>142
管理される側が管理者のインスタンスを握っていて、
自分の登録と削除だけしかさせてもらえないならいいけど、
そうなってはいないでしょう?管理者を管理するクラスのために用意してある
メソッドにも自由にアクセスできるようになってしまっているはず。
インスタンスが無駄にグローバルになってるとか、
privateになっているべきメンバがpublicだったりするような程度でマズイです。
ヘッダのインクルードもクロスしてるでしょう。
そういうのはできるだけなくしていったほうがいいと思うよ。

>>143
シューティングゲームをつくってるのかな?
この衝突判定は「何に」当ったたのかみたいなことは分からなくてもいいの?
引数で衝突相手をもらうとしても、 Collide(const CollisionNode&) にならざるをえないし
これでは大抵は困ると思うけども

147 :124:04/04/30 19:52 ID:r3mzBY0g
>>145
管理クラス内にリストを持って実行順位毎に実行させるのと(現状はこれ)、
木構造にしてルートのUpdate()を呼んでやるのってのは実質的に同じだけど
木構造の方が何かと便利だよって事でしょうか。
何にせよルートノードは全ての子から見えるわけですよね?
インスタンスを晒さずに特別なアクセス関数を作るにしても
結局管理クラスと同じような存在になっていまうと思うんですがどうでしょうか?

>>実はただのAIクラスなの?
Entityは毎フレームUpdate()が呼ばれ続けるただのAIクラスって認識なので
EnemyはCEntityから派生させている訳です。
状態遷移や座標の更新、子entityの生成などをUpdate()内で行ってます。

148 :124:04/04/30 19:59 ID:r3mzBY0g
>>146
管理される側がインスタンスを握っているってイメージでは無いんですが、
管理クラスはシングルトンになっててほぼ全てのゲームクラスから見えてます。
単にリストのノードってのであればノードがリストのインスタンスを
知っている必要はまったく無いですが、
個が主体となるEntityでは知らないと何も出来ないですよね?
隠蔽さえ出来ればいいのであれば管理者のインスタンスを隠蔽して登録、削除は専用の
グローバルな関数経由で行うってのでも現状よりはマシなのでしょうか。

はい、シューティングです。
現状ではまさに Collide(const CollisionNode&) これですね。
CollisionNodeに相手のポインタを仕込ませているので
そのポインタ経由で相手の情報を得てますがやっぱりマズイでしょうか?

149 :名前は開発中のものです。:04/04/30 22:20 ID:iUVDJkHq
>>147
>管理クラス内にリストを持って実行順位毎に実行させるのと
この管理クラスって結局Updateを毎回読んでやるただそれだけのクラスなんだよね。
はっきりいっていらないんじゃないかなぁ。ってこと。
正直、完全自己完結処理な物体ぐらいしか恩恵が全くといっていいほどないじゃん。
一度管理クラスを捨てて1から考え直してみたらどうかな?

>Entityは毎フレームUpdate()が呼ばれ続けるただのAIクラスって認識なので
Entityクラスを継承してCharacterクラスができてるのはなんか
オブジェクト指向的にわかりにくくないか?(C++の機能としてできるって意味とは別にして)
基本に戻って犬と猫は哺乳類でってところから考えると、
キャラクタはAI(脳みそ)でってなってちょっと変だ。
キャラクタは脳みそをもっていてって考えた方が綺麗に組めるんじゃないかな?

>>148
>管理クラスはシングルトンになっててほぼ全てのゲームクラスから見えてます。
こりゃグローバル変数と何も変わらないよ。
これが駄目だとわからないとなると、ちょっと修行が必要。
ちょっと面倒だけど、引数から渡すように改善できないかな?

150 :名前は開発中のものです。:04/04/30 23:35 ID:h3JIWfFc
前にも引数わたしの話がでてたけど、実際やってみるとかなりしんどかったぞ

例えば、引数を渡した関数から、他の関数を呼ぶときは同様に引数を渡さねばならない。
その関数から他の関数を呼ぶときも(以下略)
リファクタリングする度に、引数付き関数が増えていく。

さらに、引数がいらない関数から、引数がいる関数を呼ぶ必要がある時は、
呼び出し元を辿って全てを引数付き関数に変更せねばならない羽目に。
結局気づいてみると、ほとんどの関数が引数つきに。

一本の大きな関数で書ききるなら行けるが、
そうでない場合は、地獄を見ることに……


実際、引数わたしで上手く行っている人の話が聞きたい。

151 :名前は開発中のものです。:04/04/30 23:46 ID:FlQn5mKE
>>150
>例えば、引数を渡した関数から、他の関数を呼ぶときは同様に引数を渡さねばならない。
>その関数から他の関数を呼ぶときも(以下略)
>リファクタリングする度に、引数付き関数が増えていく。

漏れもハマったことあるな(w


152 :名前は開発中のものです。:04/05/01 00:08 ID:AwZfI0KO
まぁ、この辺はバランス感覚というか取捨選択になるでしょ。
何でもかんでもメッセージパッシングでやればパフォーマンス落ちるのと同じで。
 
膨大な数のインスタンスを高速処理せねばならないエンジン部に近いなら
美しさに伴う冗長性を嫌って汚いハックに走らざるを得ないし。

153 :名前は開発中のものです。:04/05/01 00:11 ID:AwZfI0KO
s/美しさ/OO的美しさ/

154 :名前は開発中のものです。:04/05/01 00:20 ID:Jz0Md+j7
>>150
構造体で渡していくらか防げるかも。
でも、俺は引数増えても気にしないほうだなぁ。
DirectXがああだからしょうがないって言えばそうなんじゃない?

155 :名前は開発中のものです。:04/05/01 04:02 ID:HtCFg7B3
>>150
綺麗か汚いかじゃなくて、何を言いたいのかを考えてインターフェイスの仕様は決めるべき。
まして2chの名無しがうるさく言っていたからなんて理由では(ry

その参照の元が、そのインスタンスの一生のうちに変わる可能性があるということを示唆
するために、毎回参照を渡すようにしなさい。

その参照の元が、そのインスタンスの一生のうちに変わる可能性がないということを示唆
するために、コンストラクタで受け取り自分のメンバに格納しておくようにしなさい。

どちらが美しいとかどちらが汚いとかではない。

156 :名前は開発中のものです。:04/05/01 04:56 ID:HtCFg7B3
>>148
>個が主体となるEntityでは知らないと何も出来ないですよね?
管理者のインスタンスで何をしたい?他entityの検索とかかな。

>現状よりはマシなのでしょうか
インスタンスを生成した人がその人の好きな場所に登録できるのがいちばんよいよ。本当はね。

>CollisionNodeに相手のポインタ
どういうクラスへのポインタ?

157 :124:04/05/01 06:39 ID:bkNOTeqK
>>149
そうですね。実際にコード化してみて比較しながら考えてみます。

>>キャラクタは脳みそをもっていてって考えた方が綺麗に組めるんじゃないかな?
理想はそうかもしれませんが実際キャラクタが自分の手足に命令を出したほうが
コード的に自然な作りになりませんか?
頭脳をメンバとして持った場合、親(キャラクタクラス)経由で手足クラスに命令を出す
となると複雑になりませんかね。

>こりゃグローバル変数と何も変わらないよ。
変わらないですね。
生成&破棄が頻繁に行われるオブジェクトや状態が変化するものに関しては隠蔽すべき
だと思うんですがシステムで唯一無二の存在であろう管理クラスくらいはグローバルでも
いいと思うんですがどうでしょうか?
管理クラス的なものはそんなにポコポコ作らないでしょうし。

158 :124:04/05/01 06:42 ID:bkNOTeqK
>>150
実際それをやって幸せになりました?

159 :139:04/05/01 06:50 ID:9Tu48i71
>>144
ああ、そんな気はしてたが、
virtual void Render() = 0;が定義してあるだけ。か。
俺ならCGameObjectてなクラス作って、メゾットにしちゃうか。
Update()も同様に。

CRenderNodeという名前は、紛らわしいね。tree構造を連想させられる。

管理クラスは、俺も用意してる。
シングルトンで、ファクトリパターンクラスの派生。

作ってるものも同じ。シューティング。
AIは用意してないけど、その辺りを用意すれば、アクションゲームもOK。
ただ、AIをハードコーディングしようとは思わないが。
ありものを作るなら、大抵、コリジョン判定、条件判定の組み合わせが違うだけだから。


160 :124:04/05/01 06:58 ID:bkNOTeqK
>>156
>>管理者のインスタンスで何をしたい?他entityの検索とかかな。
そうですね。
Entity間のやり取りでも管理者をかませた方が不正アクセスをチェック出来たり
デバッグ用のアクセスログ吐かせたり延滞メッセージ的な通知とかも出来そうだし。
仲介役が居ることのメリットはあるんじゃないかと思います。

>>どういうクラスへのポインタ?
ここで言うところのCCharacterですかね。
この部分は正直変な事になってると思います・・・。

161 :124:04/05/01 07:22 ID:bkNOTeqK
>>159
CGameObjectを管理するクラスがあってそのクラスがレンダラを持ってるんでしょうか?
例えば管理クラスが全ゲームオブジェクトのUpdate()を呼んでからレンダラの参照なんかを
Render()に渡してあげるとか。

AIはハードコーディングしてしまうかも。
部分的に再利用可能な形にする事もできるしちょっとした色付けは外部ファイルから
入力してあげれそれで十分かなーと。

162 :139:04/05/01 07:48 ID:9Tu48i71
>>161
実際、今作ってるものには、CGameObjectというクラスはないんだけど、、。

CGameObjectもしくは、CGameObjectManagerが、必要なタイミングで
(生成時、初期化時、視界内に入ってきたとき等々)
に、描画エンジンのmanagerを使って、描画オブジェクトを生成。と。

で、擬似コード
app::Update(frame)
{
描画manager->Update( frame );
GameObjectManager->Update( frame );
}
と。
描画機能と、ゲーム(CPU)的な機能は分離してます。


163 :139:04/05/01 07:53 ID:9Tu48i71
言葉足らずだったかな?
要するに、CGameObjectは、レンダラ機能はもたず、
レンダラがもつ描画ノードの参照を持ってるだけ。
update()時も、描画用のセットアップをしているだけ。


164 :名前は開発中のものです。:04/05/01 08:16 ID:Jz0Md+j7
>>157
>頭脳をメンバとして持った場合、親(キャラクタクラス)経由で手足クラスに命令を出す
>となると複雑になりませんかね。
どうして?変わらないと思うけど。
手足クラスが何やるか知らないけど、頭脳と手足が認識できる構造なら
どういう処理にしろクラスにしちゃった方がわかりやすいじゃん。

>システムで唯一無二の存在であろう管理クラスくらいはグローバルでも
>いいと思うんですがどうでしょうか?
駄目だよ。グローバル変数が駄目な理由も理解してないな。
システムで唯一無二のものを直接コードに入れちゃうってことは
そのクラスはそこでもう身動きがとれなくなっちゃうってことだよ。
どこでもどんなタイミングでもアクセスできちゃうし、
一番怖いバグが出るパターンだよ。

165 :名前は開発中のものです。:04/05/01 10:28 ID:W4jVRbBS
>>158
なりませんでした
概念だけは美しいが、コードは美しくなく汚くなっただけ
なんだかC言語で、OOやったときのような気分

166 :名前は開発中のものです。:04/05/01 11:23 ID:Jz0Md+j7
>>165
なんでそう見た目だけにかき回されるのか激しく疑問。
いくらコードが美しくたって概念が糞なら糞。
>>155のいう通りだろ。

167 :名前は開発中のものです。:04/05/01 11:31 ID:W4jVRbBS
むしろ、実装してみると、概念の方があなたの言う「見た目」に見えてくる
>>150みたになるのを防ぐ方法が挙げられなければ、
スパゲッティなコードになることを回避できない。

168 :名前は開発中のものです。:04/05/01 11:33 ID:W4jVRbBS
>むしろ、実装してみると、概念の方があなたの言う「見た目」に見えてくる
わかりにくいな

むしろ、実装してみると、概念にかき回される、と言いたい

169 :名前は開発中のものです。:04/05/01 11:42 ID:Jz0Md+j7
>>167
じゃあ構造体でわたせば?(これで解決するよね?)

170 :名前は開発中のものです。:04/05/01 11:53 ID:HtCFg7B3
>>160
>仲介役が居ることのメリットはあるんじゃないかと
なにもできないわけじゃないなら、管理される側からは管理している側が見えないように
しておいたほうがよい。管理する側の何かを変更をしたい時に、
管理される側にはその変更によって何も影響がないということを確信をもって取り組むことができる。
そのメリットの方が仲介役と管理者がいっしょにいることより大きいと思うよ。

もしも仲介役が必要ということなら仲介役クラス、というかインターフェイスをつくって
entity生成時に持たせてあげるようにしたらいい。

>>164
>グローバル変数が駄目な理由も理解してないな。
グローバル変数は、そのクラスが変更されたとき、膨大なコードの全体に対して
影響が及んだかどうかチェックして問題がないことを確信がもてる精神力が
あるのなら使える。ぼくは精神力に自信がないのでシングルdをさらすことはせず
必要とされる単純な処理だけをstaticメソッドとして公開してるyo

171 :名前は開発中のものです。:04/05/01 12:28 ID:HtCFg7B3
まぁ最初はリソースやコンテクストをいちいち引数渡しする形でデザインしておいたほうがいいんじゃないか
そのクラスのそれ以外のメソッドがリソースやコンテクストなしでも動けるなら、そのほうが。
んでクラスの全部のメソッドがそのリソースやコンテクストなしでは動けないということが判明したら
コンストラクタでもらうようにしては。

172 :139:04/05/01 12:31 ID:9Tu48i71
>>167
俺の場合、「やばい!」と感じたらw
とりあえず、クラスにして渡す。

作業してて「これやばいな」と感じたら、そのまま突き進まず、
別の回避策を考える事にしてる。絶対可笑しな部分があるから。

173 :152:04/05/01 13:27 ID:AwZfI0KO
>>166
というか155は抽象的極論なので一体何が言うとおりなのか理解不能です。
この際言葉遊びは捨てて(というか面倒くさいので)美しさ=概念的合理性と
解釈てしまいますが・・・・確認なんですが
こういうものを追求することは当然なのでありますが、これらが常に計算機側の
特性とマッチするわけでない、ということはお互いの共通理解として宜しいですよね。

ゲームの場合、わりと頻繁に この部分が絡むので論争に発展するのだと思います。
現実(ハード特性)との不整合を冷酷に示すパフォーマンスアナライザを恨めという
以外ありません。

174 :152:04/05/01 13:35 ID:AwZfI0KO
まぁ、ただ今読み返すと、ここで議論にあがってるのは
純粋に設計上の不備の部分の話なのかなぁ、とも思うので
173の内容は無粋だな。却下。

175 :名前は開発中のものです。:04/05/01 13:44 ID:Y5IhbaZz
ロジックとハード特性の不整合というより、ロジックと言語仕様の不整合、かな。

176 :152:04/05/01 13:48 ID:AwZfI0KO
>>175
そんな感じですな。美しさ=記述上の美しさ、という意味合いなら
やっぱ173は筋違いやね。


177 :名前は開発中のものです。:04/05/01 14:04 ID:4cYeRpR0
いや、俺は>>173の言ってることは当然のことなので悪いとは思わない。
ゲームにもよるが、ノードの数が物凄く多くなればキャッシュヒット
やら何やらの問題がボロボロと表出することがあるので、途中で
精度犠牲にして走査回数抑制する方向でロジックを修正することあるし。
最悪、内部データ構造から洗いなおすハメになることもあるし。




178 :名前は開発中のものです。:04/05/01 14:15 ID:T8UuVfk+
純粋にパフォーマンス上の話だと
手荷物にするか置き勉にするか、状況によっては相当違ってくるよね。

179 :名前は開発中のものです。:04/05/01 14:29 ID:Jz0Md+j7
>>173
>美しさ=概念的合理性
え?じゃあ、なんで俺にレスつけんの?
俺は
>>165
>概念だけは美しいが、コードは美しくなく汚くなっただけ
っていう言葉に対してレスつけたんだけど。
引数で渡すことに関しては賛成ってことでいいんでしょ?

180 :173:04/05/01 14:50 ID:AwZfI0KO
概念=抽象モデルという話なら、>>173
抽象モデルが糞なら(結果としてそれは)糞という発想は極端だなぁ
という、やや無粋な話。

抽象モデルとして説得力のある・人の直感的に分かりやすい代物であっても
それが常にハードウェア特性との親和性を伴うわけではないならば
何が糞で何が糞でないのか、は一概には決め付けられないだろう、という話。

これは詭弁ガイドラインに抵触している気がするので、>>174で取り下げた。

181 :名前は開発中のものです。:04/05/02 00:05 ID:GnjcB1ex
スクロール処理に関して知恵をかしておくんなさい

1.2DのアクションRPGをつくっています
2.プレイできる範囲全体を100*100セルとして定義、後ろ(どっか)にもってます
3.プレイヤーの見える範囲を10*10として定義、現在の座標位置より、2.でもってる内容から上下左右に1セル分多く取得してきます。
4.3.で1セル分多く取得してきているぶんをつかってプレイヤーが移動したときに、すこしずつずらしていきます
5.実際の画面への表示は、3.の内容にマスクして、10セル分だけ表示し、スクロールにみせかけています

最初は2Dのスクロール処理のみを考えていたんで、この方法で、スクロール処理ができるようになってよかったんです。
が、他のプレイヤーや、キャラを追加して、そいつらの動きが入ると意味不明になってしまいました。

たとえば、プレイヤーが(x,y)=(10,10)の座標にいて、他のプレイヤーが(x,y)=(12,12)の座標にいて、
プレイヤーが(x,y)=(10,11)に移動、他のプレイヤーが(x,y)=(12,11)に移動すると
先の上で説明したような状況になったときに、どう他のプレイヤーを描画したらいいのか悩んでます

考えているつもりですが、意味不明になって悩んでしまいます

全体的な処理としては、メインのループがあって、そこで、くるくるまわして描画処理をしています。

キーボードのイベントや、マウスイベントや、ネットワークからのイベントは、別のスレッドでキューにいれて、
上のメインを回しているスレッドから読んで描画に関する処理に影響させています。

長くなってしまった上に、意味不明なことを書いているようなきがするんですが、
よかったら知恵を貸してください。


182 :名前は開発中のものです。:04/05/02 07:16 ID:ewEdZS/b
>>166みたいな、単なる貶し系の文章が書きたいだけのやつが一人いるんだよね。
それが気に入らないから俺しばらく常駐してみてるんだが。

183 :名前は開発中のものです。:04/05/02 11:23 ID:8zjGYCSW
>>181
>そいつらの動きが入ると意味不明になってしまいました。
どう上手くいかないのかわからないんだが、
とりあえず、スクロール処理の部分って
プレイヤーの現在位置から見える範囲を決めてるわけだから
他のプレイヤーってこの処理に関係ないんじゃないの?

>>182
>>182の内容が貶し系なわけだがw

184 :名前は開発中のものです。:04/05/02 14:39 ID:YvKUw6Rv
>>181
 文章が長い割に、必要な情報が欠落している。
他のプレイヤーやキャラとはなんなのか、説明をちゃんとしろ。

185 :181:04/05/02 15:03 ID:GnjcB1ex
>>183
>>184

もうちょっとまとめてみました

プレイヤーと動かない対象(床と動いてないキャラなど)
にかんするスクロールは問題ないです

自分がスクロールしている最中に、
画面内に動く対象がいると、スクロールがうまくいかず、
飛んだみたいに見えるわけです
自分が(10,10)→(10,11)に移動し、
動く対象が(12,12)→(12,11)に移動したら、
2セルぐらい飛んだように見えるんです

また、自分が止まっている時に
画面内に動く対象がいても問題なく動いています

結果:
自分がスクロールしているときに
画面内の動く対象の描画位置を計算するルーチンがおかしい、
または、そんなルーチンが動いていないから、
飛んだように見える

あぁ、なんか解決したような兆しが見える・・・


186 :名前は開発中の者です。:04/05/02 16:53 ID:VrUs0Xi6
背景に張り付いてるキャラクターが、主人公と逆に動いた場合、
倍の速度で離れていくのは、普通のことなのではないでしょうか。
ドラクエやイースもそうなってるはずですよ。

(あまり関係有りませんが)
セルという言葉を使ってるようですが、RPGツクールでいうところの
「チップ」のことでしょうか。小さい四角のことをセルというのは
PCエンジンぽいですね。でべろかなんかいじっていた人なのでしょうか。

187 :名前は開発中のものです。:04/05/02 17:07 ID:BsWZXbD2
>>185
「飛んだように見える」と言われても

188 :練習帳著者:04/05/02 17:21 ID:Bla7cnMs
>>185

スクロール時のキャラクタ描画を「現在のスクロール量(ずらして
描画しているピクセル数)を減じた座標」に対して行うようにすれ
ばよいのでは? わかりにくければ、方眼紙に表示領域とスクロー
ル領域を描いてみて、1ピクセルずつスクロールさせるとどうなるか、
なぞってみてください。


189 :181:04/05/02 17:30 ID:GnjcB1ex
>>186
おっしゃるとおりですね。
倍速ではなれていくことを表現したいと思っています。
現状ではキャラがスクロールするというより、
飛んでるというかんじで、なんでかデバッグ中です

セルという言葉は、距離を表現するつもりでつかっています。
プログラム中では1セル中にはりつけるタイルを
チップという名前をつけています
ゲームプログラムは今回が初めてで、
詳しいこともわからず独善的に作っています
だから言葉も適当です
適切でなければ、以後、脳内で置換します


190 :181:04/05/02 17:35 ID:GnjcB1ex
>>187
そうですよね・・・。
適切な表現ができていないですよね。

>>188
すばらしいアイデアですね。
早速方眼紙にかいて試してみました。
なんか、自分のルーチンの間違いが見えてきた気がします。
サンクスです。

こーやって書いて実際に試してみるのがとても大切ですね

191 :181:04/05/02 17:55 ID:GnjcB1ex
自分の間違いがわかりました。

スクロール処理に問題があり、
>>188さんのアイデアで解決しました。
ありがとうございました。

次は、デバッグ中にわかった問題を解決していこうと思います。
自分が(10,10)にいて、動く対象が(12,12)にいて、一旦描画したとします。
その後、次の描画処理までに動く対象が(12,11)、(12,10)と移動した場合、
2セル動いているので、スクロール処理が想定している
ルーチン中で判断できず、飛んだようにみえていました。
自分の処理の中では必ず1セルしか動かないようになっていました。

これは現在作成しているプログラムで、ステップ実行などをしている際に、
動く対象が1セルずつ移動しているが、
実は2回移動して2セル動いてしまっている際に起こっているようです。

今はステップ実行などを行わない限り、こういった状況にはならないわけですが、
いずれさまざまな問題で発生する可能性があります。

で、解決案として以下を考えています。
@放置、トンでもいいじゃないか
A軌跡を事後に計算して描画処理をさせる

@でいこうと思っていますが、みなさんならどうされますか?

192 :名前は開発中のものです。:04/05/02 18:01 ID:tlpacHil
微分する

193 :181:04/05/02 18:07 ID:GnjcB1ex
微分して、軌跡に近いセルに描画ですか
いいアイデアですね

194 :名前は開発中のものです。:04/05/02 23:24 ID:imw4lXsM
>>181
処理構造に問題があるんじゃないの?

移動は、そのセルとやらが何ピクセルの大きさか知らないが段階を踏んでるんだろうね?
つまり、32ピクセル x 32ピクセルの大きさなら
移動は、瞬間移動?
それとも8ピクセル程度づつスライドして滑らかに描画してる?
背景のスクロールもしかり、セル単位で瞬間移動描画してる?

というか、スクリーン描画座標と
背景セル上での座標がつじつま合ってれば、そんな問題は出ないでしょ?
どっかに構造的、発想的な問題があるんでしょ。

195 :181:04/05/02 23:43 ID:GnjcB1ex
>>194

スクロールは、1回の移動あたりが1セル(16ピクセル)
1セルあたりの移動時間を500m秒
描画時に16ピクセル*(現在時間−移動開始時間)/1セルあたりの移動時間
としてスクロール表現のためのマージンを計算してずらす値にしています

>>どっかに構造的、発想的な問題があるんでしょ。
ありました。
自分がスクロールしている最中に、動く対象が動いた場合、
座標計算が元の位置のまま計算していたので、おかしかったです。
この問題は>>188さんのアイデアで解決しました。

196 :名前は開発中のものです。:04/05/03 00:42 ID:3nJi6lN4
>自分がスクロールしている最中に
処理は人によって自由だけど、
普通は自分(主人公キャラでしょ?)は、MAP上を移動していて
スクロールは別処理でしょ。
つまり、スクロールがどうなってようと
キャラ(主人公だろうが、違う移動キャラだろうが)はMAP上を移動するって処理で問題でないと思うけど?
移動したMAPのセルの更にそのスクリーン座標でキャラ管理でもしてるの?

キャラのMAP上の座標(セル) ->(スクロールしてようが)-> その描画スクリーン座標って処理をかませれば?

197 :名前は開発中のものです。:04/05/03 02:17 ID:/mbgxFmW
cかc++でdirectx使ったシューティングゲームのプログラミングを
基礎から完成まで詳しく解説してたサイトがあったんですけどお気に入りを謝って消してしまって見つかりません
そこのサイトの手順にしたがって学習していくと初心者にもとてもわかりやすくかったのに…
ソースファイルをコモンファイルとかに分割する方法まで詳しく解説してくれてたサイトで
CとC++とdirectxの基礎をまなびながらシューティングゲームを作るサイトでした

gooで色々検索しましたがなにしろヒット数が多くて探しきれなかったです

もしこのようなサイトをご存知でしたらご一報お願いします

198 :名前は開発中のものです。:04/05/03 02:30 ID:1qvBqI8L
あきらめろ

199 :名前は開発中のものです。:04/05/03 07:03 ID:pFjTwflE
Game Programming Gems 4 を読んだ人はいますか?
1とか2があればそれほど必要ではないですか?

200 :名前は開発中のものです。:04/05/03 07:52 ID:Egjl2fAk
>>198
まじでお願いします

201 :名前は開発中のものです。:04/05/03 07:59 ID:knX8BTK6
>>200
そのサイトに書いてあった言葉思い出してgoogleに突っ込んで
検索かけてみるしかないでしょ?

それより、気にするべきは再発防止だね。
お気に入りを消してしまったから、わからなくなりましたなんて
2度もやったら恥ずかしすぎて俺なら死にたくなるね。
人に知られたら、もう、2度と社会に出れないね。
永遠の負け組確定。

お気に入りの保存の仕方は覚えた?

202 :名前は開発中のものです。:04/05/03 08:12 ID:hQjA8AGn
>>199
俺は注文したよ。まだ届いてないから何とも胃炎が。
原書のほうは(邦訳版よりは)安いんだし。買っとけ。

203 :名前は開発中のものです。:04/05/03 15:40 ID:BkQwHd8z
>>201
アドヴァイスありがとうございました
お陰で見つかりました

ちなみに探してたのは
http://rina.jpn.ph/~rance/index.html
このサイトです


204 :名前は開発中のものです。:04/05/03 16:03 ID:rLHaxHTb
ネットワークゲームを作りたいのですがお勧めの本を教えていただけませんか。
探したところネットワークゲームを作るための書籍が少ないように感じましたので
書き込みました。ちなみにDirectPlayを使おうと思っています。
やはりTCP/IPとかのゲーム以外でのネットワークプログラミングという形で探したほうがいいのでしょうか。
アドバイスお願いします。

205 :名前は開発中のものです。:04/05/03 19:38 ID:nurq1E+4
資料はあるだろう
まともなサンプルは見たこと無いが

206 :名前は開発中のものです。:04/05/03 19:43 ID:Omwokgo9
>>181
そもそも、根本的に位置の管理方法が間違っていると思う。

プレイヤーやその他の移動するキャラクターの位置は、
背景スクロールにかかわらず、背景全体が収まる座標で持てば良い。
もちろん背景は、動かないとして計算する。

そして、実際の画面に出す時に、プレイヤーや他のキャラクターの位置を
画面内の表示位置に変換する計算式、表示する背景の領域を求める計算式、
を用意して、それぞれの表示位置を決めれば良い。


207 :名前は開発中のものです。:04/05/04 03:34 ID:VBEMEzQB
JavaやC#に慣れていると、
C++での開発が効率悪くてかなわない。
DirectXを用いたゲーム開発では、
いまだにC++が主流だしやむをえず。

208 :名前は開発中のものです。:04/05/04 05:59 ID:ErnoVSSx
スーパーファミコン用シューティングゲームのプログラムに携わった人いる?


209 :名前は開発中のものです。:04/05/04 06:58 ID:DaOo4sBx
>>207
そんなに変わるか?
オブジェクト指向言語だし、たいしてかわんねーよ。
何やって使ってんだよ。

210 :名前は開発中のものです。:04/05/04 07:20 ID:d02V5Vdq
>>207
>>209
まぁまぁ

211 :名前は開発中のものです。:04/05/04 09:08 ID:/pFqq6k/
まぁ、結構変わるね

結局ゲームで多用するリスト系とかはこれら中間言語系は得意
ポインタでガシガシやりよりバグでないしね
コンパイル時でエラーだしてくれるのでCより実行時でのチェックが少なくて負担は減る

ぶっちゃけC++はオブジェクト指向風味を取り入れたCでしかないと思われ

俺も深くjavaとかc#に触る前まではあんまり変わらんと思ってたけどね

212 :デフォルトの名無しさん:04/05/04 09:49 ID:ZcLCAYsw
SSE がもうちょっとレジスタ本数増えて
ベクトルの基本演算くらいサポートしてくれたらなぁ・・・
頂点シェーダレベルのことができるサブプロセッサがCPU側についてくれたらよいのに

213 :名前は開発中のものです。:04/05/04 10:05 ID:RR4igFmH
無駄に難しくてよいと思っている

何もかもアセンブラでもよろしい



怠け癖がつくと最終的には
「寝ッ転がりながら頭に概要を思い浮かべるだけで勝手にソース書き上がるようにしてほしい」

などと言い出しかねない

214 :名前は開発中のものです。:04/05/04 13:07 ID:UhuIoZ4M
簡単、難しいていうより、注意力便りなのは嫌。
人間、ミスする生き物だし。
人的ミスが入らないように自動化出来る部分はすべき。

215 :名前は開発中のものです。:04/05/04 14:58 ID:fBBUT8Xb
より具体的に言うなれば、
メモリ内のデータフロー、ロジックフローを
きちんと把握、利用できることが重要なのであって、
それに関わるコンピューター寄りの知識は
速度を重要視しない限りは必要無いんだよな。

環境に頼って手抜きしようとする人間は、
複雑化したデータフローなんて追えなくなってあぼーんするだけ。
でも環境に依存しようとしない人間は
脳内で可能な限り動きを構築してから実際にコードに落とすんで、
コンピューター寄りの本来の目的と直接関係しない部分は排除した方が都合がいい。

自分でデータを細かいところまで管理する環境を少しでいいから経験しないと、
メモリ上のデータをどう扱ったらいいのか学習しにくい。
学習初期に
「メモリ上のデータはライブラリが管理してくれるから俺はデータ突っ込むだけー」
なんて覚えたら洒落にならん。
確かにデータは突っ込むだけなんだが、
何も考えてないとすぐに商品が整頓されてないコンビニみたいになる。
学習初期に最も重要視すべきは管理能力だ。
結局、若いうちは無駄だと思うことも多少はやっといた方がいいってこった。

管理能力がしっかりしてきたら、最近の超高級言語に触れてもいいと思うな。
その方が開発効率いいもん。

216 :名前は開発中のものです。:04/05/04 15:50 ID:DaOo4sBx
>>215
いや、さすがにそんなところは
必要ないって言えばない部分だろ。
アセンブラ組んでた俺でも最近は絶対いらないって確信もって思うぞ。

217 :名前は開発中のものです。:04/05/04 16:39 ID:xC5TcH9e
>>216
現在は開発する上では必要ない事でも、知識としては知っておいた方が
良いことって、あるじゃない。


218 :215:04/05/04 22:27 ID:fBBUT8Xb
>>216
俺もアセンブラほどの学習は要らないと思うよ。
C/C++ でそこらのアルゴリズム本の内容を自分で実装できる程度で充分。

> 必要ないって言えばない部分だろ。
言えばない部分だな。

219 :デフォルトの名無しさん:04/05/04 23:02 ID:ZcLCAYsw
レイとトライアングルの交差判定ルーチン
SSE化したら笑っちゃうくらい速くなった
アルゴリズム全く換えてないのにC+FPUで書いたものより
20倍平均速くなった

SSEで内積だすのいちいちマンドクサかったけど
当たり判定が20倍速くなったっつーのはでかいので満足


220 :名前は開発中のものです。:04/05/06 06:47 ID:lM4J9+bg
何がひでえって、ライブラリ頼りな奴!
メーカーで言えばIO Interactiveみたいな

MFCで楽に組めるんだから最適化なんて面倒でしてらんないよーん

みたいな感じで思い浮かべてもらえると分かりやすい


だからっつってN64みたいな職人芸的コーディング必須!
んな環境はノーサンキューだが。

221 :名前は開発中のものです。:04/05/06 07:50 ID:dsRObUy2
仕事干されたハゲが吠えてますが、そっとしてあげてください。

222 :名前は開発中のものです。:04/05/07 14:08 ID:57ftLVJv
アセンブラでリバースエンジニアリングできる奴はとにかく食うに困らないな。

アンチウィルスで金を稼ぐ会社なら、これができるだけでOKだし
Winnyをイジッて暗号化を解いた奴もこれで金を得、
ウィルス作って人に迷惑かけるのにも役立つから、
まことにもって有用な言語だな

食うには困らんが時間は不自由するがね

223 :名前は開発中のものです。:04/05/07 15:15 ID:2CVAEUtd
>アセンブラでリバースエンジニアリング

ハァ…

224 :名前は開発中のものです。:04/05/07 15:39 ID:LKHXe0/4
2Dのアクションゲームを作っています。

 2つの長方形同士の衝突判定を行いたいのですが、それぞれが回転しているので
頂点のXY座標の大小で判断すると言う手法が使えません。

 法線の内角外角を使うとか、行列を使うとか、3D制御に近い手法が有ったような
気がするのですが、平面限定で高速化する手法はないでしょうか?


225 :名前は開発中のものです。:04/05/07 15:49 ID:vcA11uZ8
正確な判定方法と高速化は別問題。
高速化したければおおよその判定後、厳密な判定を行えばいいだけの話。

226 :名前は開発中のものです。:04/05/07 16:05 ID:UAroqB1G
>>224
AABB、OBBをキーワードにgoogleで検索してみ。

ちなみに「頂点のXY座標の大小で判断すると言う手法」は
一言で言えば2DにおけるAABB同士の衝突判定だーね。
OOB同士の衝突判定の適用対象を絞り込むためにAABBを
使うのも当然可。

227 :名前は開発中のものです。:04/05/07 16:05 ID:UAroqB1G
s/OOB/OBB/

228 :追記:04/05/07 17:55 ID:UAroqB1G
>>225
>正確な判定方法と高速化は別問題。

正確かつ高速であればより良い場合が多いわけだが、別問題とはこれいかに。

>高速化したければおおよその判定後、厳密な判定を行えばいいだけの話。

「だけ」か?高速化手法は何も一つではないんだが。


229 :224:04/05/07 20:42 ID:fOYveHqs
うーむ、やっぱり行列なのですね〜。

D3Dをいじっていた頃の苦い思い出が〜

とりあえず、行列で頑張ってみます〜、何か突然ひらめくかもしれないし。

Thanksです〜

230 :225じゃないけど:04/05/07 21:07 ID:AD11pjLw
>>228
>高速化手法は何も一つではないんだが。
効果があるのは225の方法しか浮かばないんだけど?俺は。
他に2つも3つも方法があったっけ?

231 :224:04/05/08 00:28 ID:tC9ANaFq
まてよ、2つが回転していると考えるから複雑になるんであって、
どちらかを座標系の基準にしてもう一方を相対角度、相対座標で考えたら
sin、cos、tanだけで片がつくのかな…

232 :226:04/05/08 00:51 ID:Uo5OKKLo
>>231
うん。例えば辺と辺の判定をするときに
どちらか一方を基準とする(軸とする)座標系に
投影してやると計算を単純化できるのと同じ要領。

233 :226:04/05/08 00:53 ID:Uo5OKKLo
>計算を単純化できる

ワリ。ここは嘘。

234 :名前は開発中のものです。:04/05/08 01:19 ID:aaHhGMRi
>>231
3Dのコリジョンである方法だったような、、。
自前で組んだ事がないのであれだが、、。
対象のローカル座標系に持っていくとかなんとかだったような。

235 :名前は開発中のものです。:04/05/08 01:47 ID:Uo5OKKLo
>>230
高速化手法は「前処理の近傍探索」だけではないだろ。
まぁ、たしかに重要なファクターではあるが、局所分布の
状態によって(ゲームによって)最適な実装は変わるなど、
汎用的究極的単一的解決方法はひとつではない単純ではないため。一言で片付けるのは単純化。


2Dアクションや格闘ゲームならベタな方法幾何計算の最適化
だってあるし、時間軸方向のキャッシュ・諸計算の
SIMDや外部プロセッサによる並列化など、状況に応じて
いろいろある。

236 :236:04/05/08 01:50 ID:Uo5OKKLo
↑誤送信。

>>230
高速化手法は「前処理の近傍探索」だけではないだろ。
まぁ、たしかに重要なファクターではあるが、局所分布の
状態によって(ゲームによって)最適な実装は変わるなど、
汎用的究極的単一的解決方法があるわけでもない。
一言で片付けるのはやや単純化に過ぎる。

2Dアクションや格闘ゲームならベタな方法幾何計算の最適化
だってあるし、時間軸方向のキャッシュ・諸計算の
SIMDや外部プロセッサによる並列化など、状況に応じて
いろいろある。


237 :226:04/05/08 01:56 ID:Uo5OKKLo
何度も御免。寝る寸前で酔ってるもんで。勘弁してください_| ̄|○

>>230
高速化手法は「前処理の近傍探索」だけではないだろ。
まぁ、たしかに重要なファクターではあるが、局所分布の
状態によって(ゲームによって)最適な実装は変わるなど、
汎用的究極的単一的解決方法があるわけでもない。
一言で片付けるのはやや単純化に過ぎる。

2Dアクションや格闘ゲームならベタな方法があるし
他にも幾何計算の最適化、時間軸方向のキャッシュ
諸計算の SIMDや外部プロセッサによる並列化など
状況に応じていろいろある。

寝る。

238 :名前は開発中のものです。:04/05/08 15:27 ID:/Hn+kYM5
リアルタイムのオブジェクト共有を実現したいのです.
共有の仮想空間にあるオブジェクト(クラスのnewしたもの)を作った場合,
つまり,例えば黒板に図形を書いた場合,
相手も自分もその図形を移動や塗りつぶしたり,拡大とか縮小とか可能にしたいんです.
でも,物理的に不可能なことは出来ないようにしたいんです.
(相手が移動してるのに,自分が削除してるとか)

常識的に考えれば,制御権のようなものを厳密にやり取りして,
特定ユーザに制御を委ねていくしかないと思います.
でも,シリアライズみたいにして,簡単にオブジェクトを転送すると,
サーバで差分を判断して・・・みたいな手法はないのでしょうか?

これって,ネットワークゲームで,例えば,ボスが攻撃されたら,全てのクライアントでの
ボスのパラータが変化するのと似ていると思うのですが,
ネットワークゲームではそのあたりをどのように扱っているのでしょうか?

参考になるような,サイトでも本でも(英語でも)ありましたら,教えてください.宜しくお願いします.


239 :名前は開発中のものです。:04/05/08 18:51 ID:0//jLLOq
>>238
C/Sモデルにしてサーバーで管理すればいい。

240 :名前は開発中のものです。:04/05/10 00:36 ID:g89ZL7xT
えと、質問です。
class GameObject
{
Camera camera;
Map map;
}
class Map
{
MapField field;
MapObject object;
}

こんな感じのクラス構成になっているんですが、
fieldやobjectの描画にはview frustumが必要なわけです。
そのため、cameraのポインタがgameobject>map>field>tree...
と、殆どのクラスに知られている状態です(汗
しかし引数として毎フレーム渡すのも速度、綺麗さ共に、、、
これを改善する知恵をお貸しください(;´д⊂)

#チョト前に同じような質問があるぽいですが、c++をイマイチ理解していないため
#多重継承を当然とした議論には付いていけない(´Д`;)ヾ

241 :名前は開発中のものです。:04/05/10 00:54 ID:bzGWAz8g
>>240
大域変数に「現在描画中のカメラ」というものを設けて、パラメータ取得はアクセサ経由で行えばよいのでは?

そもそも一般的なテクニックとしては、被写体がカメラを知っているという構造よりも、
カメラが被写体を知っているという構造が好まれます。被写体登録時にどのカメラで描画されるかを
(enumなどで指定して)、それ以後、被写体はカメラの詳細については感知しないという実装になります。


意味わかりますか? なんにせよ、もう少し情報が欲しいところですなあ。

242 :名前は開発中のものです。:04/05/10 01:24 ID:uqinqgft
>>240
多重継承は使わなくていいと思う。

>そのため、cameraのポインタがgameobject>map>field>tree...
>と、殆どのクラスに知られている状態です(汗
これはこれで正解だと思う。
>>241のカメラの方が物体を知っているっていう設計でもいいけど。
仮にカメラ、またその関連のものを引数で渡さずに、
グローバルインスタンスとして用意しちゃうと
カメラインスタンスと描画する物体のインスタンスとの関連が
すげーわかりにくくなっちゃうと思うよ。

引数は多くなっちゃうけど
突然どこかで内容を変更された変数に悩む事が無くなるから
こっちの方が俺はいいと思うけどね。

243 :名前は開発中のものです。:04/05/10 01:59 ID:OddJ+Pqz
>>240
>多重継承は当然とした議論

そんなことは決してありません。誤解の無いように。
まぁ、私なりに噛み砕いて説明させてもらいますと

ヤバイ。多重継承ヤバイ。まじでヤバイよ、マジヤバイ。
多重継承ヤバイ。
まず乱用。もう乱用なんてもんじゃない。超乱用。
乱用とかっても
「friendクラス20個ぶんくらい?」
とか、もう、そういうレベルじゃない。
何しろ無限。スゲェ!なんか節操とか無いの。クロスリンクとか何?名前重複とかを超越してる。無限だし超乱用。
しかも病み付きになるらしい。ヤバイよ、病み付きだよ<<以下略>>

244 :名前は開発中のものです。:04/05/10 02:09 ID:AwWht2q3
すいません皆さんに質問があるんですけれども…

今VC++6.0 と DirectX8.0 でゲームを製作しているのですが
DirectGraphics に支配された領域にswf 形式のファイルを
再生したいのですが。
ttp://www.denpa.org/~go/denpa/200304/atlflash.txt
↑このへんを参考にしていろいろやってみたのですが、
なかなか巧くいかないんです。
また、
ttp://www.macromedia.com/jp/software/flash/open/faq/
↑このへんでは「Macromedia Flash Player Source Code SDK ライセンス」とかの
購入とかについてがありまして
もしかして、ライセンス無しではswf 再生のアプリ等を作成する場合にはなんらかの
著作権問題などが発生するのでしょうか?
これについてなにか知っている方はいませんでしょうか?

質問の内容がひどく抽象的で申し訳ないのですが
知っている方がいましたら宜しくお願いします。




245 :名前は開発中のものです。:04/05/10 02:27 ID:UtYtnSiL
>>244 こことか? http://www.openswf.org/

246 :244:04/05/10 02:57 ID:AwWht2q3
>>245
ありがとうございまつ。
なんとなくそこでプレイヤーのソースが落とせそうな雰囲気があるような
ないような(汗 ・・・

ライセンスがどうこうの部分が怖いので翻訳ソフト買ってから出直してみます。
情報有難うございました。


247 :名前は開発中のものです。:04/05/10 20:43 ID:FfmNag7E
また初心者が>>241みたいなのを読んで騙されてあとで心配になって
レスするようなことがありませんように。

248 :名前は開発中のものです。:04/05/11 00:12 ID:bxfdcVbA
>>247
心配ならば、あなたの意見を書いてみてはいかが?

249 :名前は開発中のものです。:04/05/11 08:30 ID:LGS9vROR
>>247
俺も聞きたいね。

250 :名前は開発中のものです。:04/05/11 15:01 ID:v+m1DaIB
>>247
俺漏れも

>>240
無意味なフレームが始まらないうちにCameraや他のへんな名前がついたクラスを
それぞれ具体的にどういうデータのまとまりとして捉えているのか詳しく説明しておいておくれ


251 :名前は開発中のものです。:04/05/11 17:53 ID:t+MGq8Dm
そんなに変な名前なのか、チョトショック、、、
GameObjectはそんなに意味ありません。一番上位の物って言うか、、
Cameraはカメラのpos,dirを持っていてsetするとgluLookAtでそっち向いてくれます。
Mapはそのままマップのクラスです.
MapFieldはハイトマップです。quadtreeによりカリング、簡略化をして自分を描画してくれます。
MapObjectはマップのオブジェクト(メッシュ)の集まりです。(書かけ)

、、、えーと毎フレームポインタ渡します;;

252 :名前は開発中のものです。:04/05/11 21:08 ID:2A/hZ94M
OpenGLだよなぁ?
マトリクススタック使えばいいやん。

253 :名前は開発中のものです。:04/05/11 21:49 ID:+QOcSIS7
>>251
命名の仕方は別にいいと思うよ。
俺もこんな感じだけど。

わけがわからないものはGameObjectだけかなw
そんなに意味ありません。って自分でも言ってるしやっぱり意味無いんだよw

254 :名前は開発中のものです。:04/05/12 00:45 ID:BAYSJTEJ
>>240
殆どのクラスで知られる必要のあるものが、その通り殆どのクラスからアクセスできる
ようになっていることは何もおかしなことではないと思う。

もしも視錐台を参照することだけが殆どのクラスで必要で、
カメラの位置を変えることは必要ないなら、視錐台を読み取るメソッドだけを
staticにしてやって、カメラの位置を変える限定的なクラスにだけ
Cameraを引数で渡すようにしてもいいんでは?

255 :名前は開発中のものです。:04/05/12 02:55 ID:zyRW5yeg
カルドセプトのようなボード・カードゲームにおいてCOMのプログラミング
としてはどういったアルゴリズムなんですか?

256 :名前は開発中のものです。:04/05/12 04:08 ID:eA7QhGH1
>>255
どんなゲームでも人間と同じじゃないかな?
基本は、今の状況を見て、次の行動を判断する。
ってところだから。
稀に、インチキ臭いのあるけどw

257 :名前は開発中のものです。:04/05/12 06:29 ID:KGYWW9wS
>>255
オーソドックスなところでチェスとか麻雀を参考にしてみては。
資料が見つかりやすい。

読むにあたっては、初歩的な統計学やグラフ理論の知識が
要る場合があるかもしれんが、その辺苦手なら入門本の
一冊でもあれば十分。あとはチクチクやってれば何とかなるから。

258 :名前は開発中のものです。:04/05/15 17:09 ID:dpJnmqJq
キャラのアニメーションの質問なんですが
1つあたりの絵の使用時間はどのようにすべきなのでしょうか?

アニメーションを作るツールだと単純に時間を用いて
ウェイトをとっていますが、同じ方法なんでしょうか

もしくは、フレーム数を用いるのでしょうか?

259 :名前は開発中のものです。:04/05/15 18:27 ID:gPBAj94c
好きなように実装すべし


260 :             :04/05/16 10:24 ID:1hAhUILx
前に、回転する2つの2D面の衝突判定ってあるけど、俺のやり方
1.物体の半径を求めておく
2.まずは半径を使って円同士の接触判定をする
3.円同士であたってれば、ラインごとの判定
 四角形同士なら、全ての辺同士の判定をする。
 だから、判定回数は最大で16回。

261 :名前は開発中のものです。:04/05/16 11:52 ID:/kpE25cx
それって片方がもう一方に完全に入ってるとミスらない?

262 :名前は開発中のものです。:04/05/16 13:37 ID:IC4HysZi
>>258
どっちでも可能。

263 :名前は開発中のものです。:04/05/16 21:07 ID:Ygi0R2jO
>>260
四角形の辺ごとの判定の前に
四角形同士の判定を入れると>>261が解決すんのか?

264 :名前は開発中のものです。:04/05/16 22:37 ID:/6128CQM
>>260
四角形同士の判定をするために4辺の判定をしてるんだから
4辺の判定をするために四角形の判定が必要だったらいみねぇよ

265 :名前は開発中のものです。:04/05/16 22:38 ID:/6128CQM

263へのレスね

266 :名前は開発中のものです。:04/05/17 02:56 ID:oiA5Z1My
回転してる四角形のようだぞ


267 :名前は開発中のものです。:04/05/17 07:37 ID:itFQ+twD
>>266
そうか、回転してるんだっけ。
じゃあ、>>263は意味がねぇな。すまん。

ううむ、難しいなコレ。
俺なら諦めちゃうな、このやり方。
それか、片方の四角形のローカルに一度もってきて
(四角形のローカルにもってくると、片方の四角形は原点を中心とする〜略w)
そこから、もってきた四角形の辺の始点終点でローカルにある四角形の範囲の計算をしてから〜略
ってなるかな。結構、面倒だね。

268 :名前は開発中のものです。:04/05/17 11:51 ID:u8OQabWl
>260
お願いだから図に書いてくれー
オブジェクトはどんな形だ? 正六面体?
軸はどこだ? オブジェクトの中心か頂点か、面の中心か?
変な妄想してしまって収集がつかない。



269 :名前は開発中のものです。:04/05/17 12:18 ID:itFQ+twD
>>268
こんなのいちいち図に書いてたら話が進まないよw
軸や中心なんか話の問題にならないと思うけどな。

270 :名前は開発中のものです。:04/05/17 16:23 ID:A2tOSBQ0
多角形同士の判定でいいじゃん。

多角形Aの頂点が多角形Bの中にあるかどうか、
多角形Bの頂点が多角形Aの中にあるかどうか調べる。

内外判定は適当に線分を外に引いて、辺と交差する回数でチェキ

271 :名前は開発中のものです。:04/05/17 17:05 ID:MlZuRqOh
>>269
要するにOBB同士の衝突検出っつーことで一般的な話だから
OBB collision detection でぐぐれば図とか出るかもかも。

272 :名前は開発中のものです。:04/05/17 17:58 ID:MlZuRqOh
ごめん。>>269じゃなくて>>268だた。

273 :260:04/05/17 19:00 ID:RxL4Iwuq
>261
ミスるな。
2D面がそこまで速く移動しなければ問題にならないけど。
あれは、ワイヤーフレームの接触を判定する方法だな。
面が完全に中に入ってるかまで検出するには・・・。
ラインに、表と裏の情報を持たせて、
裏から出した法線が、相手のラインと接触するかを求める方法がある。

274 :名前は開発中のものです。:04/05/17 21:17 ID:bco6q7UB
>>271 AABBもな

275 :名前は開発中のものです。:04/05/17 22:19 ID:FXzbejeQ
ジョイパッドでの動作確認をしたいんだけど
キーボードをジョイパッド代わりにできるツールってないかな?
逆はあるんだけど・・・


276 :名前は開発中のものです。:04/05/17 22:54 ID:4g1lmZuF
無いの(710)なら(奈良)作ってしまえ平城京

277 :名前は開発中のものです。:04/05/18 00:15 ID:4cLQkCuf
つーか、普通に買って操作感とか確認してみた方がいいと思うが…

278 :名前は開発中のものです。:04/05/18 22:57 ID:LWDwmFAq
2000YENぽっちぐらい出せよ

279 :名前は開発中のものです。:04/05/18 23:24 ID:nVXuJDmB
複数のゲームデバイスが繋がってる状態も考慮しといてくれ

280 :名前は開発中のものです。:04/05/19 03:16 ID:h+b3Kx+z
>>275
ジョイパッドなんて安いんだから素直に買ってきなさい。悪いことは言わないから。

ゲーム作るなら違う種類のを複数持っといて
どれでもちゃんと遊べるか確認しろと言いたいほどだ。

281 :名前は開発中のものです。:04/05/19 10:28 ID:0nv4ICzh
そういえば、えろげの多くはジョイパッドすら対応してないな。

282 :名前は開発中のものです。:04/05/19 12:53 ID:NEnS95DB
>>281
ご自身のジョイスティックでおた(以下略

283 :名前は開発中のものです。:04/05/19 13:21 ID:adXQ/H95
>>281
USBオナホールの方が優先らしいw

284 :名前は開発中のものです。:04/05/28 04:45 ID:QLfJNzYc
相談です。

自分、パソコンの知識はほとんどありません。
ネットが出来る、2chに書き込めるって程度なもんです。

けど、将来はゲームを開発したい。
で、開発したゲームを家庭用ゲーム機で発売して、
みんなに良い評価をもらえるようなゲームを作りたい、と考えてます。

作ってみたいゲームジャンルは、全てです。
RPGも作ってみたい、アクションも、シミュレーションも、ネットゲームも作ってみたい、と思っています。
企画も作りたいですし、シナリオも書きたい、ドット職人なんてのもいいですね。
とにかくゲームを作りたいんです。

でもまぁ、そんなものは高望み以外のなんでもないことはわかっています。
だから、とりあえずはアクションを作ってみたいと考えています。
これなら、少人数で作ることも可能でしょうし、ゲーム作りの肝も詰まってそうかなぁ、なんて。

そんな俺が学ぶべき知識はどのぐらいあるのでしょうか?
そして、何を学んだらいいのでしょうか?
たぶん、星の数ほどの知識が必要だと思うのですが、とにかくやってみたいのです。

285 :名前は開発中のものです。:04/05/28 04:52 ID:iKc/Nojx
やる気と時間(大学生相当)がある人なら2年分ほどかな


とりあえず大きな書店にいって入門向けの本をひたすら立ち読みしなされ。
そして自分にあいそうなのを購入。

プログラマ目指してるのかプランナ目指してるのかよくわからんが

現状でプロのプログラマ目指すなら、
C言語、C++、VisualC++6.0、DirectX

あたりをキーワードにして本やら情報を集めればいいかと。

286 :名前は開発中のものです。:04/05/28 08:54 ID:ULLXse8H
プログラマになりたいなら
最低限の勉強でゲームを作れるようになりたいとか考えてるようでは無理では?
技術の進歩はものすごく早く、次から次へと新しいことを覚えなくてはならないからな
勉強嫌いでは務まらないのがプログラマ


287 :名前は開発中のものです。:04/05/28 08:56 ID:DUKb1jdd
>>284読む限りでは、ゲーム製作に携わりたいとしか読めないな。。。
漠然とした質問って困る。

288 :名前は開発中のものです。:04/05/28 09:58 ID:ywAV+H02
別にプログラマになりたいとは書いてないじゃないの

>284
プロ目指してるわけじゃないなら、難しいことなんて何も無いじゃん。
本屋でDirectXの本を何冊か買ってきなよ。
そしたら何からはじめたらいいか分かる。

289 :名前は開発中のものです。:04/05/28 18:38 ID:yyEXtvd6
>>284
学問に王道なし。

ゲーム作りというのは純粋な知的活動であり、相応の知的能力が求められる。

ひたすら本屋や図書館に通い、ひたすらGoogleにキーワードをブチ込み、
ひたすら数学や英語を勉強する。これが入力。
ひたすらプログラムを書き、ひたすら文章を書き、ひたすら絵を描く。これが出力。
興味を持ったこと、疑問に思ったことは、何でも学び、学ぶだけでなくそれを活用しよう。
自分の周りで起こることすべてに関心を持とう。脳に負荷をかけ、それを常態とせよ。

すべてのことに手を出したいのであれば、時間はいくらあっても足りない。
人並みにテレビを見たりゲームを遊んだりする余裕はもはやないと思え。24時間を管理せよ。
2chは1日数回まで。祭への参加禁止。

短くて半年、長くて10年もあれば、何らかの成果は出ているだろう。

実際的なことについては、まず、入門書の類を片っ端から読み漁るべし。
これはどんな分野に挑戦するときでも極めて有効な手段である。
専門書はいきなり読むには難解すぎるし、入門書は平易だがミスリーディングがありすぎる。
しかし、入門書を何冊もあわせて読めば、偏りを打ち消し、
また、説明のわかりにくいところを他で補うことができる。

290 :名前は開発中のものです。:04/05/29 18:53 ID:1snUEMHr
今はGoogleあるし、楽だな。
情報溢れすぎ、迷うぐらいかな。
こんな所で聞く必要もなし。
漏れらの頃は、X68000で他人のソース読みまくって、
覚えたもんよ。

291 :名前は開発中のものです。:04/05/29 19:47 ID:8INIajuj
少なくとも、井の中の蛙になる危険がないってのはうらやましいな。
俺の高校時代なんてまさに盲目だった。

292 :名前は開発中のものです。:04/05/29 20:45 ID:H034p2Oc
常時接続になってからコンピュータ書籍コーナーに入り浸ることが少なくなったな

293 :名前は開発中のものです。:04/06/03 02:35 ID:sjW+31p8
格闘ゲームのコマンド判別方法なんですが、
入力履歴とコマンド列群の全マッチをとる方法以外に
効率的な検索方法を教えてください。

294 :名前は開発中のものです。:04/06/03 02:37 ID:XVtbUixq
>>293 自動羊肉

295 :名前は開発中のものです。:04/06/03 07:47 ID:+90sbAK/
>>294が王道だけど、全マッチでもいいじゃん。
どうせたいした計算量じゃないんだし。

296 :名前は開発中のものです。:04/06/10 00:05 ID:EVE2hvMP
>>295
>どうせたいしたゲームじゃないんだしw
酷い人ね!

297 :名前は開発中のものです。:04/06/10 01:22 ID:5cqiK5gW
>293
いまはメモリが沢山あるから、
コマンドの全分岐パターンを、メモリにいれておけばいいじゃん。
コマンドに、波動拳と、たつまきがあるとして、
まず、下があって、次にコマンドとして継続可能な入力は、
右下か、左下で、
とう具合に。
波動拳なら、
まず、下で、次にコマンドとして分岐可能なのが、


298 :名前は開発中のものです。:04/06/10 02:40 ID:qBwAR2Yd
自動羊肉ってなんだろう。なんかあるのかな。

まあメモリがあるなら、とりあえず希望道理に動作する処理を作るのがいいかと。
まずパターンマッチで作ってみれば良し。

それで自分で入力して遊んでみれば、いろいろ改善点も見えてくると思う。

SNK系とカプ系でも設計思想が割れてて、なかはこうなってんだろうなぁとかそのうち見えてくると思うよ。ちと古いか。


299 :名前は開発中のものです。:04/06/10 02:42 ID:qBwAR2Yd
やっぱ相談される方としては、どう作ればいい?といわれるより、こう作ったんだけど
こうできませんって感じのがいいよな。

ヘローワールドくらい出力させられる段階になったら、まずなんか作ってもってこいとオジサンは言いたい!

300 :名前は開発中のものです。:04/06/10 02:46 ID:cR6g+xdu
struct InputNode {
 InputNode *ipsiron_node;

};

301 :300:04/06/10 02:50 ID:cR6g+xdu
描き込むつもりはなかったんだけど、間違ってなんか訳わからんのを描き込んでしまった( TДT)スマソ

302 :名前は開発中のものです。:04/06/10 03:01 ID:/LNWknHX
class HissatsuKomandoHadouken: extends HissatsuKomando{
public:
  void update(){
    switch(count_){
    case 0: if(g_Keyboard.getKeyState() == Keyboard.DOWN)count_++; break;
    case 1:
    /* (略) */
    case 3: Hatsudou(); count_ = 0; break;
    }
  }
private:
  int count_;

};

303 :名前は開発中のものです。:04/06/10 03:10 ID:qBwAR2Yd
そこまで自力で出せるなら、それを組み込んで遊んでみるのがいいかと。
もし壁にぶち当たったら、また質問スレにくればいい。

304 :名前は開発中のものです。:04/06/10 07:50 ID:ccdw5s27
>>298
オートマトンでしょ。

305 :名前は開発中のものです。:04/06/10 07:59 ID:R4NUZcHA
変数名の最後にアンダースコア使うなんて気持ち悪い。

306 :名前は開発中のものです。:04/06/10 13:57 ID:Le5pEI7v
おまえらツクールXP買え

307 :名前は開発中のものです。:04/06/10 22:40 ID:qBwAR2Yd
ツクールでプログラムできるやつってあったっけか。

308 :名前は開発中のものです。:04/06/10 23:00 ID:Y189To6+
>>307
マルチゲームScripter

内蔵の言語/簡易言語なら
最近体験版が出たRPGツクールXP、ADVツクールシリーズ、
格ゲーツクール、チャイムズクエスト
他にもあるかもシレン

309 :名前は開発中のものです。:04/06/12 16:36 ID:uX7X340v
>>285
何でVCが6.0なんだ?
ネイティブコードは普通に打てるし.NETでも構わないと思うが。
最近入門書も増えてきたし。

310 :名前は開発中のものです。:04/06/12 16:55 ID:gvpzCpXg
>>309
よく読みましょう

311 :名前は開発中のものです。:04/06/13 14:41 ID:zqEFd0SE
DirectX7のDirectDrawで透過処理をやっているのだけど、
落ちてたサンプルをほとんどそのまま使っています。
一通りは理解できて、動作するのだけど、どうしても解からない部分があります。
50%の透過色を得るのに、

※lptemp1=転送先のバッファ
※lptemp2=転送元のバッファ

*lptemp1 = ((*lptemp2 & 0xf7de)+(*lptemp1 & 0xf7de))>>1;

の式で、なぜ「& 0xf7de」する必要があるのでしょうか?

ディスプレイは16ビットの565でやっています。

312 :311:04/06/13 14:48 ID:zqEFd0SE
すみません。ちょっと言葉が足りませんでした。

「& 0xf7de」でビットマスクをかけているってのは解かったのですが、
これでなぜ正常に色が表現されるのかが解かりません。

よろしくお願いします。

313 :名前は開発中のものです。:04/06/13 14:55 ID:xISHbvDs
2進の加算では、桁上がりは最大でも1。
各要素のひとつ上のビットを0にしておけば、
加算時の桁上がりが確実にそこに反映される。
それを一つシフトすれば、元の各要素の位置に、
それぞれ足して2で割った値が入る。

隣り合う要素の最下位ビットが失われるので、
最大で1の誤差が生まれるが、演算速度の向上に比べれば
無視できる範囲だろう。

314 :311:04/06/13 15:45 ID:zqEFd0SE
>>313
なるほど。
加算した時の桁上がりが、別要素の色に悪ささせないために、
マスクをかけているわけですね。
確かにPhotshopで作った半透明画像と、
プログラムで出力してキャプった画像の色のRGB要素が微妙に違っていました。

おかげで胸のつかえが取れました。
ありがとうございました。

315 :名前は開発中のものです。:04/06/13 15:45 ID:EvZ8h1Zh
勝手に補足。
1 1110 111 1 10 11110b=F7DEh
RRRRRGGGGGGBBBBB

 1111011111011110
+ 1111011111011110
------------------
11110111110111100

11110111110111100 >> 1 =
1111011111011110


316 :名前は開発中のものです。:04/06/13 15:50 ID:xISHbvDs
>>314
知ってたから答えることもできたけど、
こんなコードをコメントなしで書いてしまうのはお勧めできない。

317 :311:04/06/13 16:14 ID:zqEFd0SE
>>315
補足ありがとうございます。
視覚的にも理解でしました。

>>316
すみません、以後気をつけます。


318 :名前は開発中のものです。:04/06/15 15:27 ID:VVOVJCXy
>>311
>落ちてたサンプルをほとんどそのまま使っています

どうでもいいが、そのサンプルの出典(ソースの出自)を書かないのも
あまり誉められた真似ではないな。俺は知ってるが、お前が貼る事に
意味があるので少しだけ待ってやる。

319 :名前は開発中のものです。:04/06/15 20:00 ID:zNZaMExs

アホ?

320 :名前は開発中のものです。:04/06/15 20:30 ID:H+leUq8X
アホだな。

321 :名前は開発中のものです。:04/06/15 20:45 ID:MqAReyL8
スルー汁

322 :名前は開発中のものです。:04/06/16 13:57 ID:cW2KlvaD
お、シナーが暴れてますな。
http://www.google.co.jp/search?hl=ja&ie=UTF-8&q=1111011111011110&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja

323 :名前は開発中のものです。:04/06/16 14:05 ID:cW2KlvaD
というのは冗談ですが、この辺の飽和演算系のチョイテクは
回路屋なら比較的サラっと出てくる(出てこなければおかしい)アイディアである。
 
ただし、ゲーム系プログラマに関しては信号処理のしの字も知らないDQNが
普通にのさばっているので、この手のアイディアの提供者は比較的絞られくる。
 
http://www.gamedev.net/reference/articles/article817.asp
http://www.emit.jp/prog/prog_b.html
 
他人へのリスペクトを忘れないってのは大事ですね。

324 :名前は開発中のものです。:04/06/16 15:34 ID:NZ8+ANNQ
lptemp1でググればズバリが出てきますよ(^_^)v

325 :名前は開発中のものです。:04/06/16 15:43 ID:Qvbskj5p
>>323
比較的サラっと出てくるのは、そういうコードに触れた事があったり前例があるから。
PCのアマチュアプログラマでも、たとえば上げられたページなんかを見たことがあれば
応用できるようになるだろうよ。

326 :名前は開発中のものです。:04/06/16 16:08 ID:cW2KlvaD
>>325
今度は何処に争点を置いてるんです?

327 :名前は開発中のものです。:04/06/16 16:12 ID:4oN7mGs1
その手のビット演算系のテクニックは、古いプログラマならだれでも思い付くだろ

328 :名前は開発中のものです。:04/06/16 16:31 ID:Y3zAuYuk
>>325
> 比較的サラっと出てくるのは、そういうコードに触れた事があったり前例があるから。

いや、算術演算の加算回路を知ってれば済む話だが。要するにそこは論点じゃあないよ。
汎用知識を個別の分野に適用しよう、というアイディアを思い付くことは素晴らしいし
ネット上で広めた奴には賛辞を惜しまないね。という話だろう。
 
>>327
レス番号を書きたまえ。尤も、お前さんの発言を否定する書き込みは見当たらないようだが。

329 :名前は開発中のものです。:04/06/16 16:44 ID:Y3zAuYuk
なお、大昔のPC-98用のペイントソフトを逆汗したときの経験だが
ぼかしツールのコードと思われる部分で16bitレジスタによる8bit値
飽和演算処理を見た。おそらく、それ以前の画像処理方面のプロプライエタリな
コードの中でも同様なテクニックが使われていたであろうことは
想像に難くない。
  
こうしたアイディアを発見的に思いつきオープンな場で広く語られる
きっかけを提供した奴らは気の利く奴らであり、相応の評価をしても
バチは当たらないだろう。

330 :名前は開発中のものです。:04/06/16 17:28 ID:qfS7ZFH2
フリーの物でゲームが作りたくてとりあえずJavaを一通りつかえるようにしました
でもJavaゲームってけっこう叩かれてて…
もう少し技術が身についたら他の物で作ろうと思うんですけど何がおすすめですか?
それともこのままJavaを使ってても充分なものをつくれるでしょうか?

331 :名前は開発中のものです。:04/06/16 18:26 ID:p3CztuKr
言語は問題ではない
ようはやる気

3Dものならアレだがまずはそのレベルまで言ってないと思うから
Javaで問題になることはないだろうね


332 :名前は開発中のものです。:04/06/16 18:55 ID:cW2KlvaD
>>330
ABA games とか覗いてみては。参考になると思われ。
http://www.asahi-net.or.jp/~cs8k-cyu/

あと、pure Javaではなくなるけど
JSDLとかJSparrowを使えば良い感じでイケます。
もし不満が出てきたら 

 ・C#+Cg(OpenGL)
 ・C#+HLSL(DirectX)

という富豪的プログラミングも可能です。

333 :名前は開発中のものです。:04/06/16 19:13 ID:p3CztuKr
まぁ、JNIでjavaからDirectXよんでもいいしな

javaも1.4からは標準でvram直とかDirectDraw使ったりして高速化できるし
フルスクリーン化もほんの数行でできるし通常の2Dベースなら問題ないけどな


334 :名前は開発中のものです。:04/06/16 20:35 ID:qfS7ZFH2
アドバイスありがとうございます
いろいろ考えるよりもまず作ってみますね

335 :名前は開発中のものです。:04/06/18 00:18 ID:9WjZIBPx
画像ファイルの形式ってなにを使えばいいんでしょうか?
今は使ってないんですが、将来的に透過情報も使うかもしれないので
PNGとかにしようかと思ったんですが、libpngを使うと思ったより実行ファイルが
大きくなっちゃいまして。


336 :名前は開発中のものです。:04/06/18 09:54 ID:F29KhlRt
手動でハンドリングするか、独自形式で持てばいい。
A付ビットマップだていいじゃないか。

337 :名前は開発中のものです。:04/06/18 16:59 ID:xHeZzj8T
>>335
>libpngを使うと思ったより実行ファイルが大きくなっちゃいまして。
 
無圧縮バイナリが200KB程度増えることが障害になるケースが
あるのか疑問だが、もし気になるならlibpngが内部で呼び出してる
zlibを直接呼び出せばいいのではないか。あれは64KB程度だろう。
 
実行環境のHDD容量をハデに使っても構わないなら>>336が云うように
RAW形式にしておけばいいし。どのみち配布時はLZ77派生アルゴで
圧縮するわけだし。

338 :名前は開発中のものです。:04/07/13 21:07 ID:BtuSWgS+
ガチャフォースみたいなアクションゲームの、ルート検索ってどうやるんですか?
迂回したり、飛び越えたりしたいのだが、どうやってルートを計算したらいいのか分からない。
マス目上にして、2Dシミュレーション+大雑把な高さのようなのにしようにも、障害物の大きさがバラバラ過ぎて、判定出来ない。
目を細かくすれば、無駄に容量食うし、処理も重くなる。
風雲新撰組を見ると、ポイントのようなものがあり、迷ったらとりあえずそこに出るという形になってるぽいですが、あれも何か変。
いいのありませんか?

339 :名前は開発中のものです。:04/07/22 22:48 ID:960yNB+R
壁ずりするときに必要な2点の壁の頂点座標ってどうやって取得するんですか?
DirectX&VC++使ってます。

340 :名前は開発中のものです。:04/07/25 04:45 ID:35wXch4G
>>339
正射影を考えればいいんじゃないかな
こことか参考になるかどうかわからないけど
http://www.cam.hi-ho.ne.jp/strong_warriors/teacher/chapter09.html


341 :名前は開発中のものです。:04/12/09 17:11:37 ID:xa3u+hyT
ホシュ

342 :名前は開発中のものです。:04/12/11 16:27:00 ID:vgTlHBwt
OpenGLでパーティクルを飛ばすソース作って来いと言われたのですがまったく思いつきません。
誰か教えてください
開発環境は.NETでGSlib使ってます。

343 :名前は開発中のものです。:04/12/11 16:34:08 ID:811lQTfW
>342
class CParticle{
public:
float px,py,pz;// 位置
float mx,my,mz;// 移動
void Update(){
my-=0.1f;
px+=mx;py+my;pz=mz;
}
};
インスタンスを配列でたくさん作ってそれぞれ別々の初期値を
px,py,pz,mx,my,mzに入れて、毎フレームUpdateを読んだ後に
px,py,pzの座標にビルボード表示しろ
px,py,pzの初期値を全インスタンスで揃えて
mx,my,mzをインスタンス毎に別々の値にすると
花火のようなパーティくるになる

このソースはさすがに理解できるだろ?
あと、マルチポストするんなら、先に質問してほうに断りいれないと失礼だぞ

344 :名前は開発中のものです。:04/12/11 16:45:12 ID:vgTlHBwt
すいませんマナーなってませんでしたね
初心者なんでそのソースみるとJAVAに見えるんですがどうなんですかね?

345 :名前は開発中のものです。:04/12/11 17:05:55 ID:811lQTfW
>344
C++です
自分の使用する言語
後、現在OpenGLでどの程度の事までできるのか
などなど、情報が少なすぎる



346 :名前は開発中のものです。:04/12/11 17:25:03 ID:1OS7WaCz
Javaじゃないのはすぐにわかるだろ

347 :名前は開発中のものです。:04/12/11 23:20:32 ID:t9QkwRza
すみません、
現在Cにて、シューティングのタスクシステムを構築中なのですが、製作する構造体で悩んでます
今考えているのは

@固有データの性質別に構造体を製作
A構造体を1種類しか作らない
Bプライオリティ毎に別の構造体を製作

多分実装するなら@かAになると思うのですが、
構造体の種類が増えると重くなるとか、不具合は出るのでしょうか?

348 :名前は開発中のものです。:04/12/11 23:38:46 ID:uYrLB73N
>>342
マルチポストですか

349 :名前は開発中のものです。:04/12/11 23:39:37 ID:uYrLB73N
>>347
今月のCマガにタスクシステムのってたぞ

350 :名前は開発中のものです。:04/12/11 23:52:03 ID:t9QkwRza
>>349
おお!
じゃぁ明日Cマガ買ってきて勉強してみます〜

351 :名前は開発中のものです。:04/12/12 00:37:31 ID:CeTMvWXF
ゲームを作るのにお勧めする、
言語ってありますか?

352 :名前は開発中のものです。:04/12/12 01:04:00 ID:/zorvY1T
>>351
C++かJavaが一番だとは思うけど、
挫折した(またはしそう)ならHSPが良いかもしれない

知り合いがHSPでゲーム作ってたけど、意外とキチンと出来てるので驚いた

353 :名前は開発中のものです。:04/12/12 01:10:19 ID:bBuHfoVs
ゲームの規模にもよるけど、JAVAはあまり向かない気がする

354 :名前は開発中のものです。:04/12/12 01:10:41 ID:CeTMvWXF
>>352
情報ありがとうございます。
C++ってお金かかりますか?

355 :名前は開発中のものです。:04/12/12 01:26:19 ID:/zorvY1T
>>354
コンパイラと開発環境はBCC使えば無料で揃える事が出来る

出来れば.NETを使った方が良いけどソフト代がン万円・・・・・
学生なら学割で5000円になるけどキーコードの申請に2週間以上かかる

そういえば.NETって評価版があったような希ガス
それと落としてみて使ってみてから決めるのがいいかも

356 :355:04/12/12 01:30:19 ID:/zorvY1T
ttp://www.kumei.ne.jp/c_lang/bcc/index.html
「猫でもわかるプログラミング」内に
BCCのチュートリアルがあったので張っておきます

連投スマソ

357 :名前は開発中のものです。:04/12/12 01:32:23 ID:bBuHfoVs
>>355
今はベータ版が無料で使えるYO(VisualC++ 2005 Express)

358 :名前は開発中のものです。:04/12/12 06:11:00 ID:V4Sj+KDu
>>355
vcToolKit + プラットフォームSDK + DirectX SDK
全部タダ
BCCよりいいよ

359 :名前は開発中のものです。:04/12/12 06:54:33 ID:yiVn8EQz
でも、必ず頭に入れておきたいのは

「ただより高い物は無い」

ってことだよね。
統合開発環境もってる人と比べたら、それなりの苦労はすると思う。
http://www.amazon.co.jp/exec/obidos/ASIN/B00009PJOC/
http://www.amazon.co.jp/exec/obidos/ASIN/B00009PJOD/
http://www.amazon.co.jp/exec/obidos/ASIN/B000063NKV/
学生にしたってなんでこんな金ケチるんだろう・・・。
これからかかる書籍代云々含めたらこんなどころの話じゃないのに・・・。

360 :名前は開発中のものです。:04/12/12 10:57:25 ID:eeUucuKY
苦労をしたなりに得られるものはあったよ。
書籍も殆どは図書館で済ませているし。
今はD言語+SDLだけど、総合開発環境に染まっていたらこれらの存在を知ることすら無かっただろうね。
総合開発環境も使ったことあるけど、俺は馴染めなかった。
結局のところ、人それぞれ。

361 :名前は開発中のものです。:04/12/12 11:13:06 ID:vLKNn5Dw
>>359
今はC#や無料のアドイン可能な言語が使えて4000円以下だけどな。

http://www.amazon.co.jp/exec/obidos/ASIN/B0002ERS18/250-8777118-1081041

まあ、.NETは初心者には複雑すぎるだろうからVCToolkitで不満が出たら買う程度の認識で構わないと思うぞ。

362 :名前は開発中のものです。:04/12/12 12:56:49 ID:gDl4N7ky
>>353
規模というか3Dが、だな
2Dでも規模が大きければJavaや.NETのほうがC++よりはいい

まぁSDL&OpenGLラッパー使えばどうでもいいが
Java3D方面はおいかけていないのでわからない

Javaの利点はあれだ、無料でコンパイラからIDE、データベースを
使った業務プログラムまでこなせるものがひとつの言語で作れるというところだろう

363 :名前は開発中のものです。:04/12/12 15:16:20 ID:T4tmo/uT
>>355
VS.net学生版登録しましたが,3日で垢とれました。

364 :名前は開発中のものです。:04/12/12 22:08:28 ID:ECDzMr09
2万でstudent買った一ヶ月後に五千円になりました。

365 :名前は開発中のものです。:04/12/12 23:03:21 ID:WoF+KpwQ
>>364
毎年更新するよりマシ

366 :名前は開発中のものです。:04/12/12 23:09:00 ID:B/rSPOKE
独学でプログラムは十分学べるでしょうか?

367 :名前は開発中のものです。:04/12/12 23:31:47 ID:FwlKHgFV
>366
私の持論ではプログラムは独学で身に付けるものです

368 :名前は開発中のものです。:04/12/13 00:12:14 ID:H/NM9SWx
ソースを書きまくる

369 :347:04/12/13 00:54:40 ID:oagD9H4j
>>349
Cマガ買ってきたら解決しました〜
どうもありがとうございました

370 :名前は開発中のものです。:04/12/13 08:23:09 ID:Bu85fQFn
>>366
むしろ経験上、独学以外で学んで奴にロクな奴はいない

>>360
よかったよかった
紹介した介がある

371 :354:04/12/13 23:44:03 ID:zV7Kakl+
皆さん本当にありがとうございます。
時間があればこつこつと勉強していきます^^

372 :名前は開発中のものです。:04/12/14 07:16:46 ID:poGq8Mnc
>>366
みんな独学してます。
専門学校も情報系の学部も、周りに同好の士がいるという以上の意味はたいしてない。

しかも、昔はプログラミングの学習曲線は相当鈍いのが常識でしたが、
今ならやる気さえあれば数年でアマチュア最高峰、下手なプロより上のレベルまで行けます。
この記事の表現に従えば、「高速道路が敷かれた」と。

 インターネットの普及がもたらした学習の高速道路と大渋滞
 http://blog.japan.cnet.com/umeda/archives/001909.html

俺が正統な書物や論文に当たれないまま
授業中にウンウンポリゴンの出し方考えてた頃と比べりゃめっちゃ恵まれてるから、
悩まずとっととやれ。

373 :名前は開発中のものです。:04/12/14 10:51:03 ID:73CldVQs
初心者がwindowsで2Dシューティングを作るには
どのプログラミング言語orツールが適していますか?
勉強しながら簡単なサンプル程度のものから始めようと思っています。

374 :名前は開発中のものです。:04/12/14 12:44:42 ID:EyG3+mk4
HSPかVC++
Delphi、Rubyもいいかもな
豆乳、GameMakerという手もあるか

375 :名前は開発中のものです。:04/12/14 13:10:05 ID:bBZqvcB7
初心者にC++をすすめるのはどうかと
ま、まずは言語自体が初めてなのかゲーム作成が初めてなのかによるが


376 :名前は開発中のものです。:04/12/14 13:45:31 ID:DDGCo+Mb
>どのプログラミング言語orツールが適していますか?
と聞いてるあたりからプログラム経験は無いと思われ。
そんな>>373にはMultiMedia Fusionを薦めてみる。責任は取らん。

377 :名前は開発中のものです。:04/12/14 13:52:11 ID:el6KibCx
ttp://www.enterbrain.co.jp/digifami/products/stg95/

378 :名前は開発中のものです。:04/12/14 15:46:14 ID:6EayMZnD
>373
プログラミングがしたいんじゃなくてゲームが作りたいだけなら>377
すぐに画面に何かだして動かしたいならHSP、GameMaker、豆乳
時間はかかっても超本格的にやりたかったらC/C++

ちなみにC/C++はどんなに早くても3ヶ月くらいは
ビットマップ一枚表示できないことを覚悟せよ
個人差や学習効率によってはもっとかかる
挫折者も多い
ちなみに漏れはCがはじめての言語で
結構みっちり勉強してたけど
絵をウィンドウに出すまで半年かかった
でもC/C++だと(ある程度マスターできれば)飯が食える

379 :名前は開発中のものです。:04/12/14 18:06:21 ID:FapYMSue
>>378
ヲイヲイ、初心者をいじめるなよ。
現実、.netでもCでSDKならSTGの型を作るだけなら
一週間(一日3〜4時間×5日+10〜14時間×2日を目安)でできぞ。
(馬鹿な事言ってるのは分かるけど突っ込まないでね。)
ただ、問題はそこから
アルゴリズムとか、言語の色んな仕組み、その他多くの関数を知らないと
そこから先進めなくなる。
で、一番高い難所は
Visual Studioの使い方だ。これを理解するのに2日掛った・・・。



380 :>>379:04/12/14 18:19:40 ID:FapYMSue
参考までに、自分が使ったものを、
・HSP(一番最初はこれが神に見えた。)
   Cを始めるまでに4・5日ぐらいはやってた。Sampleが多いから勉強しやすい。
・猫でも分かるプログラミング(今のCプログラム初心者が一度は見る所)
   でも、自分はあんまり役に立たなかった。古い記事が多いので念頭に置くこと
・WisdomSoft( ttp://wisdom.sakura.ne.jp/ )自分はここでCをほとんど覚えた。
   ここの人が書いてる「Windowsゲームプログラミング:書籍」で実質SDKを覚えた。
・C言語 ( ttp://www.wakhok.ac.jp/~kanayama/C/98/ ) とある短期大学の物 
   別にそこの学生じゃないんだけどね。上とあわせてCを覚えた。
・窓プログラミング (ttp://hp.vector.co.jp/authors/VA016117/index.html )
   色々とポインタとか、特別分かりやすかったわけではないが。
・あと、もう一つあるんだけど、今はWeb上に残ってないので省略。
   ( 自分はその時のDownLoad版を今でもたまーにみてるけど。)

あとは、Googleでとにかく分からない単語を調べる。=>分からなくてもそのうちどうにかなるさと開き直る。
エラーもとにかく調べる=>解決したときは、その方法を、そのページをコピーしてOffLineでも見れるようにしておく。


381 :>>379:04/12/14 18:37:06 ID:FapYMSue
基本的に、方針として
1.コンソール物をいくつか作ってみる。(main関数だけでいいから)
  ■適当に数回「分岐 if switch 」とか、「ループ」「配列」「文字列」「ファイル操作」とかのサンプルを研究
  で、プログラム板の宿題スレからなんか適当に選んで作ってみる。
2.関数を理解する。
  ■「引数」「関数」「返り値」とかの言葉を調べる。
  1.に同じく、プログラム板の宿題スレ(略
3.Win32APIを泣きながら覚える。
  ■とにかく、記事を読む。Sorceを読む。分からないものも調べる。
   でも分からないものはそのうちどうにかなるさぁと開きなおる。
4.自分だけで(カット&ペーストは使ってもいいが)キー入力と絵の表示を連動する物を作る。

5.あとは、野と成れ山と成れ

382 :名前は開発中のものです。:04/12/14 19:31:00 ID:6EayMZnD
>381
>5.あとは、野と成れ山と成れ
なんかカコイイw

383 :名前は開発中のものです。:04/12/14 22:57:59 ID:LLXVByAK
>>379
一瞬、「白紙の状態からC++を理解してSTG製作」を一週間でこなしたのか

とか思ってしまった俺は負け組み


まぁHSPはちょっとやったけど、あれも爆発的に手間が省けるってほどじゃない・・・・・・・
結局システムとか判定は1から作らないといけないし・・・・・・

384 :名前は開発中のものです。:04/12/15 05:08:46 ID:b6lgozwB
>結局システムとか判定は1から作らないといけないし・・・・・・

それを省いたら××ツクールになってしまう。

385 :名前は開発中のものです。:04/12/15 10:19:32 ID:HsGZhQ6q
>>384
でも、システムとか判定は種類が違えど、どこかしら似ている部分が多い。


386 :名前は開発中のものです。:04/12/15 14:08:56 ID:45BomRiK
再利用できる汎用エンジンを自分で作ればいいじゃないか。

387 :名前は開発中のものです。:04/12/15 14:52:20 ID:L/K/Ntdf
ゲーム開発そっちのけで
オナヌィツールを作るのに夢中になる罠

388 :名前は開発中のものです。:04/12/15 19:56:57 ID:b6lgozwB
まーわざわざゲームプログラミングやってるって
客観的に見たら、ォナニーにしか見えないだろうとは思う・・w

389 :名前は開発中のものです。:04/12/15 20:18:31 ID:uxKIR4qz
>388
まぁプラモデルなんかも同じようなもんだろうな

390 :名前は開発中のものです。:04/12/16 00:31:07 ID:U1q3cJqR
なんだって初めはオナニーだろうさ

391 :名前は開発中のものです。:04/12/16 00:42:48 ID:GydeynlB
>>390
じゃあ、もう、オナニーでいいよ。
みんなプログラムなんて組むのやめようよ。

392 :名前は開発中のものです。:04/12/16 01:19:50 ID:U1q3cJqR
391は不思議な頭の構造をしているようだ

393 :名前は開発中のものです。:04/12/16 07:16:53 ID:I5NiXAvz
・オナニーに似ている
と言っているのに
・オナニーしよう
というのは(*^ー゚)ノ ぃょぅな構造をしているとしか思えない

394 :373:04/12/16 08:50:59 ID:Ts+btREq
たくさんのご親切なレスありがとうございます。
>>377で作ってみます

395 :名前は開発中のものです。:04/12/16 09:18:20 ID:7k6UBUX7
まあ、最も無難な選択だ。

396 :名前は開発中のものです。:04/12/16 11:35:07 ID:nYcbMoQ4
最初はそれでいいと思う
それで限界だと思ったら別のを探せばいいしな

397 :名前は開発中のものです。:04/12/16 20:11:53 ID:A2FLIb2p
あ、>>395,396は>>391へのレスね。

398 :名前は開発中のものです。:04/12/16 23:02:01 ID:3yDx983G
あと、最初から欲張らないことだな。
目標は高く持つべきだが、いきなり挑戦するのは無謀。絶対嫌になる。
いきなりチョモランマ登頂を目指すのではなく、まずは天保山辺りから少しずつ進めていく。

399 :名前は開発中のものです。:04/12/17 01:11:42 ID:cec1JpT9
MFCで○×ゲームとか「クリックしたら動くゲーム」
とかは作れるようになったんですが、自動で動くゲームっていうのが分かりません。。。
http://www.geocities.jp/ball_by_vc/Ball.zip
クリックしたらボールが動く、っていうのを簡単に(60行ほど)作ったんで、
誰か1秒ごとに動いていく、のように書き換えてうpしてください。お願いしますorz


400 :名前は開発中のものです。:04/12/17 01:28:43 ID:kwb+kcf4
>>399
BallWnd::OnTimerを追加(中身はOnLButtonDownと同じくInvalidateで良い)
メッセージマップにON_WM_TIMER()を追加
InitInstanceの最後にSetTimerをElapse=1000で追加

引数はMSDNなりなんなりで調べれ

401 :名前は開発中のものです。:04/12/17 23:01:07 ID:phamhyn5
RPG、SRPGなどの、正方形のマスが1単位のフィールドのタイプのゲームでは、
どのようにフィールドを表示するのが普通なのでしょうか。

僕はSRPGを作っていて、僕のは、フィールド1マス分を表示する関数があって、
そこで、地形下地、地形上地、移動範囲、攻撃範囲、キャラ、カーソルと
順番に表示し、フィールド全体を表示する場合は、それを複数回行う方法です。

全てが1マスに収まっている場合はその方法でよかったのですが、
キャラの立つ位置を変えたり、ダメージを受けた時に吹き飛んだりさせたく、
キャラの位置をマスからはみ出して表示させたくなったのですが、
それをやった所、案の定、体が千切れて表示されてしまいました。

ツクールでは、地形サイズが16に対して、キャラが24なので、
はみ出しているのが普通なのですが、どの様に表示しているのでしょうか。

402 :名前は開発中のものです。:04/12/17 23:09:51 ID:Kqu8dkBQ
フィールドとキャラの描画を分ければいいだけの話じゃ…?

403 :名前は開発中のものです。:04/12/17 23:11:24 ID:tQoXALVp
フィールド1マスごとでなく、フィールド全体で、
地形下地、地形上地、移動範囲、攻撃範囲、キャラ、カーソル
と表示すればいいんでない。


404 :名前は開発中のものです。:04/12/17 23:11:42 ID:d+0PjBV1
RPGツクール2000の地形は拡大表示してたはず

405 :名前は開発中のものです。:04/12/17 23:14:53 ID:Am+j201E
>>401
STGみたいに座標で管理するのはNG?

背景描写して、その上から座標でキャラクターを描写
ゲーム中のキャラの座標は、マスのドット数で割れば出せる

俺だったらこういう風な処理にするけど、SLGは作ったことないからなぁ・・・・・・
誰か創ったことのある人の意見キボンヌ

406 :401:04/12/17 23:18:07 ID:phamhyn5
>>402
具体的にお願いします。

>>403
速度を早くするために、位置を指定して表示するためにそうしていました。
スクロールの時は、新たに視界に入る分のみ表示、
キャラが移動する時は、前の位置と移動後の位置のみとか。

>>404
キャラもですね。縦横それぞれ2倍に。

407 :401:04/12/17 23:21:22 ID:phamhyn5
>>405
細かくやれば、正しく表示は出来ると思うのですが、
セルという概念でデータを管理している以上、
それを生かした表示の仕方が無いかなと。

408 :名前は開発中のものです。:04/12/17 23:31:34 ID:Am+j201E
>>407
じゃぁ、>>402の言うように背景表示してから
キャラ表示すればいいだけの話では?

 / ̄ ̄/
 /   /
/__/こんな風に全ての背景を一気に表示させてから

 / ̄ ̄/
 /('A`)/
/__/キャラを描写して


 / ̄w/
 /('A`)/
/w_/木とか、キャラの上に来るオブジェクトをのっける

409 :408:04/12/17 23:32:15 ID:Am+j201E
ズレた・・・しかも判りにくいし・・・・・・・

410 :403:04/12/17 23:44:09 ID:tQoXALVp
>>406
>位置を指定して表示する

そういうふうにするなら、移動後の座標を予測して、その通り道のマスだけを描画するってのは?
どのみちマスとマスの中間にキャラを表示するには、
「1マス分を表示する関数」では表現できないから、
複数のマスを>>408みたいに表示する関数を作ればいいんでない。


411 :名前は開発中のものです。:04/12/17 23:44:56 ID:INtctKM+
>>408
たぶんだがそういうことをいっているわけではないかと・・・
だってそれはスプライトのプライオリティの設定だけですむわけだし

どっちにしろ抽象過ぎてどうしたいのかがつたわってこない

412 :401:04/12/17 23:46:18 ID:phamhyn5
>>408
もう一度その方法をやってみます。

引き続き、いい方法を見つけた方が居ましたら、教えてください。

413 :名前は開発中のものです。:04/12/17 23:49:38 ID:INtctKM+
そもそも2プレーン+キャラ程度なら速度稼ぐためのせこいことする必要ないんじゃないの?


414 :401:04/12/17 23:53:58 ID:phamhyn5
>>410
移動は、半歩ずつとかは無く、1マスごとに飛び飛びに行われます・・。
一マス移動、前のを消す、1マス移動、前のを消すという感じです。

>>411
確かに文章で説明するのは難しいです。

415 :401:04/12/17 23:58:14 ID:phamhyn5
>>413
どうなんですかね。確かに見た目で遅いなとは思わなかったですけど。
いい方法が無い場合はそれで行きますが、何かあればいいのですが。

416 :名前は開発中のものです。:04/12/17 23:59:06 ID:d+0PjBV1
補正値でキャラクタをずらして表示できるようにするか
シナリオ進行時は表示ルーチンを別にする

おそらくマップの論理座標x=1,2,3,....というの指定するだけでそれに対応した位置に
表示してくれる便利なルーチンを作ったんだろうが後から小芝居させるときに不便だと
気づいたんじゃないかな。
キャラクタをグラフィックの座標(0-639)で表示できるルーチンを先に作ってそれのラッパーで
論理座標を指定して表示でいるルーチンを作っていればこんなことにならなかったはず
今から作り直すか論理座標に追加でグラフィックの座標で補正できるようにすればいいと思う

>体が千切れて表示されてしまいました。
ここから推測するに1マス作成してから転送してるんだよね?
で、>>408みたいにするのは面倒だから代案を考えてくれと。
だったら影響があるマス全部に個別に対応するしかない
キャラクタが千切れたらその千切れたもう片方が本来あるべきマスに
描けばいい。

417 :名前は開発中のものです。:04/12/18 00:02:01 ID:fcL5sLlu
別に処理が軽い分には、問題ないと思うのだが・・・・・

処理軽ければ派手なエフェクトとかガンガン入れても平気だろうし、
低スペックマシンにも優しいし・・・・・


418 :名前は開発中のものです。:04/12/18 00:05:48 ID:fcL5sLlu
あ、思いついた・・・・

>キャラの立つ位置を変えたり、ダメージを受けた時に吹き飛んだりさせたく、
この処理の時だけ、動いたキャラを表示させないようにして
@から改めて動いたキャラを表示させれば良いんじゃないだろうか

この方法だと、キャラが一番上に表示されてしまうけど・・・・・・

419 :名前は開発中のものです。:04/12/18 00:14:29 ID:aIR3jZyQ
>>417
SLGならフルフレームでなくてもいいだろうし
マップチップが固定されて2プレーン程度であれば
600MHzクラスのCPU+UMAの統合チップセットでも
60fps余裕で出るぞ

ノーウエイトにしてみればわかるがサイズにもよるが200fps余裕でこえるかな


420 :401:04/12/18 00:16:54 ID:oq7OWQ9j
連続投稿とか出て書けないです。

>>416
何となく見えてきました。

>おそらくマップの論理座標x=1,2,3,....というの指定するだけで
>それに対応した位置に 表示してくれる便利なルーチンを作ったんだろうが
>後から小芝居させるときに不便だと気づいたんじゃないかな。
まさにです。

>>417
ゲームの制作意欲を残す為に、
常に難しい方法でやるように心がけています。

>>418
グラフィックを綺麗にする為に、マップチップで陸と海の境界線とか、
草と砂の境界線とか、それらを2層目で書くようにし出したんですけど、
足の位置にその境界線が来てしまって、草か水かどこに居るのか分かりにくくなり、
キャラの位置を全体的に上にずらそうと思いこれをやろうと思ったので、
常にやることになります。ダメージを受けた時はその方法でいけますが。

421 :名前は開発中のものです。:04/12/18 00:19:25 ID:nY+nxo0b
>>418
最後にソートすりゃいいんじゃね?
もしDirectX使ってるならrhwを指定するだけでいいだろうし
SDLならレイヤーに対応してたはず

でもそんな小細工できるならこんな質問しないよな_| ̄|○

>>419
環境がわからんから皆ツッコミが甘くなってるだけじゃないかと・・・・
GDIで>>401の方法だと40FPS出ればいいほうだろ

422 :401:04/12/18 00:26:47 ID:oq7OWQ9j
>>416
>影響があるマス全部に個別に対応するしかない
まさにここだと思うんですよね。
ずらして書いた後、そこの上に地形を書いたために千切れてしまったり、
逆にマスに上書きしたつもりが、キャラがずれている分消せなかったり。

>>419>>421
fpsの事を教えてください。調べてみると
「動画のなめらかさを表す指標。1秒間に何枚の画像を表示しているかを示す。」
らしいのですが。

ちなみに、C言語、SDKウィンドウズアプリ、イベントトリブン方式
で製作していて、フィールドのサイズは、13X13です。

423 :401:04/12/18 00:38:29 ID:oq7OWQ9j
かなりいろんな意見が聞けて勉強になりました。
それらを参考にもう一度やってみます。
うまく行きましたら、ご報告します。
みなさま、ありがとうございました。

424 :名前は開発中のものです。:04/12/18 01:09:32 ID:aIR3jZyQ
>>421
DirectDrawでのbltを基準にして考えていた
だからRiva128以降で16bppなら余裕かと思っていたが
GDIでも同じね
DDB使えばDirectDrawより早い

>>422
あーfpsわからないか
その考え方で合っているんだが、ゲームはWinのイベントドリブンで
考えるのはよしたほうがいいぞ
メインループでがりがり毎回描画するアクション系の考え方で
そのなかで独自のイベントを作っていったほうが・・・

どっかにSTGとかならメインルーチンの雛形ころがっているはずだから
それ参考にしてみるといいよ


425 :名前は開発中のものです。:04/12/18 02:23:17 ID:fcL5sLlu
('д`)ノ<先生、質問です

DxInputでパッドの入力処理を製作してるんですが、
bool型で各ボタンの状況を判断する方法以外で、何か良い方法は無いでしょうか?

426 :401:04/12/18 05:54:22 ID:oq7OWQ9j
1マスの全てを表示するのを全体に行うというのを、
地形を全体に、移動範囲を全体に、キャラを全体に、に変えました。

後の処理のやり方としては、キャラがずれてかかった分のマスをチェックして、
その分も追加して表示する、という案を使うと思います。
やり方は単純ですが、ずれチェックがかなり難しそうです。

ひとまず眠いので寝ますが、今日中に出来ると思います。

>>424
僕のやり方は、基本はメッセージループなんですが、
メインループの見易さ、細かさも取り入れたやり方をしています。

メッセージだと、その時に関係ないルーチンに当たったり、
グローバル変数だらけになったりして、メインだと、やや重くなりますが、
そこを両方とも解決できないかと編み出しました。
当然、アクション系では使いにくいやり方なのですが。

427 :名前は開発中のものです。:04/12/18 16:20:14 ID:nRcDUE9K
>>425
意味がわからんが、
ゲーム的には、
・押した瞬間かどうか: bool
・離された瞬間かどうか: bool
・押してからどれだけたったか: int
も実装しておくとらくだが

428 :401:04/12/18 20:45:34 ID:oq7OWQ9j
ずれチェックがどうしても重くなってしまいました。
仰っていた通り、全部表示してしまった方が効率がよさそうです。
通常時はずれられないようにして、スクロールの時とかには、
高速の従来バージョンで表示できるようにし、
戦闘など特別な時にのみずれられるようにします。

しかし、まだ問題がありました。
キャラの足が地形の境界線に掛かり、どの属性の地形にいるか分かりにくい事です。
そもそも、キャラの位置を全体的に上にずらして、境界線が絶対こない所に
足の位置が来るようにしようと思い、この質問をしていたのですが、
先ほど結論に達した、通常時はずらさないに反してしまいます。

解決方法として、一番楽な、その部分には目を瞑る方法、
少ないずれチェックで済む、上にだけずれている時の表示関数を作る方法、
ずれている時も全表示でなく位置を指定して表示できる、
ずれ方を半マスに限定して、キャラを半マスずつ表示する方法を思いつきましたが、
逆に位置関係が分かりにくいなどの弊害が起こる事も考えて、
一番楽な、目を瞑る方法で行きたいと思います。

ここらの部分を納得して先に進むことが出来ます。
みなさま、ありがとうございました。

429 :名前は開発中のものです。:04/12/18 21:09:54 ID:fcL5sLlu
>>427
成るほど!

じゃぁ、そのやり方で構造体作り直してみます!
ありがとうございます〜

430 :名前は開発中のものです。:04/12/18 21:13:56 ID:aIR3jZyQ
ようはハイドライドの森みたいな描画やりたいわけね
あんなの速度的にも軽い軽い
8bitマシンでさくさく動いていたし、ノーウエイトにすると早すぎたしね
内部の作りはSTGと同じにしていたとか聞いたことがある希ガス

半キャラ単位で描画してもいいし、Y軸基準で描画してもいい
あの程度でいいのなら100MHzでもさくさくかも

431 :401:04/12/18 22:04:34 ID:oq7OWQ9j
>>430
やった事がないのですが、このゲームですか?
スクショが乗っていて、何か見た事があるゲームではあるんですけど。
http://www2.plala.or.jp/yasinoue/oldgame/hyd1_1.html

432 :名前は開発中のものです。:04/12/18 22:17:10 ID:q7rx8BU3
>431
うわ、懐かしい
漏れがやったのはファミコン版のハイドライドスペシャルだけど

433 :名前は開発中のものです。:04/12/18 22:37:17 ID:BHPEV/eq
>>425
列挙子で

FREE 押されてない
PUSH 押した
PULL 放した
HOLD 押しっぱなし

を作って分類すると楽かも。

434 :425:04/12/18 22:46:42 ID:fcL5sLlu
>>433
早速その方法も試してみます〜

435 :名前は開発中のものです。:04/12/19 06:16:39 ID:DRqhJ+eh
スミマセン
D3DXMATRIXで、左右反転させるような関数って無いですか?

436 :名前は開発中のものです。:04/12/19 06:27:39 ID:DRqhJ+eh
スミマセン

D3DXMatrixRotationYで180°指定してやったらできますた

もうちょっと自分で確かめてから質問するようにします・・・・・・
スミマセン

437 :名前は開発中のものです。:04/12/19 09:51:38 ID:K0ZRB1bT
質問系のスレッドで質問させていただいたのですか、運悪くご返答を頂けなかったので
このスレッドで質問させてください。

今開発されてるスクウェア・エニックスのファイナルファンタジー12って
技術的にはかなり凄いんですか?
もぐりでも頑張ればグラフィック以外は再現できるレベル?
なんか戦闘がリアルタイムで、しかも地形の形状を戦闘に利用できて
かつ主人公以外は完全に自動で行動させられるらしいですけど。
プログラムの中さえ分かれば、自分でもどうにか再現できるレベルなのか。
皆さんはどう思っておられますか。

438 :名前は開発中のものです。:04/12/19 10:08:28 ID:7IrxQaSK
>437
プログラムわかんない人に説明すると長くなるので短く漏れの意見
設計はすごくしっかりしてるんじゃないかと思う

439 :名前は開発中のものです。:04/12/19 10:33:30 ID:bc/DHSmt
ttp://moon.cyberfront.co.jp/title/pc/halflife2/
ここのムービー見れ。

最高峰の物理エンジンとAI使ってるから。
FF12?ナニソレ?ってくらい凄いよ。

漏れはFPS系酔うから買ってないけど、
友人宅で見た時は鳥肌立った。

440 :名前は開発中のものです。:04/12/19 11:04:56 ID:WMy/66MH
>>439
Half-life2は2.4GHzのメモリ256M、VRAM32M以上レベルの高性能であのグラフィック。
FF12はCeleron300MHz、メモリ32M、VRAM8M相当の低性能であのグラフィック。

…釣られた?w

441 :名前は開発中のものです。:04/12/19 11:13:00 ID:7IrxQaSK
グラフィックはプログラムだけじゃ語れないからね
FFのテクスチャのクオリティはすごいと思うよ
小さくて制限の多いなかで、すごくいい仕事してると思う
素人さんはそれにだまされて「PCでFF以上のグラフィックって難しいですよね」
とか言いはじめるくらいだから
少し脳内補間が効いてるっぽいところもあるけど
多分>437もその口

442 :名前は開発中のものです。:04/12/19 11:13:24 ID:2VUgMi4z
>>440
グラボでいうと
Radeon最新とRivaTNTだからな。

443 :名前は開発中のものです。:04/12/19 11:25:18 ID:VXomDsbq
>>437
FF12のゲームシステムをツクールで再現したいという話か?

444 :名も無き冒険者:04/12/19 11:43:55 ID:bc/DHSmt
>>440
アルゴリズムの話に何でグラフィックやらハードの差が出てくるんだ?


・・・あ、釣られた?w

445 :名前は開発中のものです。:04/12/19 11:50:22 ID:bc/DHSmt
名前間違えた('A`)

つまり、>>437の言う

戦闘がリアルタイムで、しかも地形の形状を戦闘に利用できて
かつ主人公以外は完全に自動で行動させられる

システムなんてそんな敷居の高いものじゃないから、頑張れば
それなりのものは出来るんじゃね?

446 :名前は開発中のものです。:04/12/19 12:12:07 ID:WMy/66MH
>>444
じゃあお前、アルゴリズムさえ知っていたらPC98やX68000時代のマシンでHalf-life2やFF12を実装できるってのか?
…あれ?釣られた?w

俺が言ってるのは

>最高峰の物理エンジンとAI使ってるから。
>FF12?ナニソレ?ってくらい凄いよ。

Half-life2もFF12も似たり寄ったり、どっちも限られた環境を追求してあのグラフィックを作ってるんだから比べられるもんじゃないって事だよ。

447 :名前は開発中のものです。:04/12/19 12:30:09 ID:bc/DHSmt
>>446
>>437がグラフィック以外はって書いてるのに何でグラフィックの話持ち出すんだ?
あくまでアルゴリズムの話だぞ。

喪前さんは、ゲーム全体の話をしてるようだが・・・



448 :名前は開発中のものです。:04/12/19 15:24:24 ID:DRqhJ+eh
>>446
釣りだと思うけど、十分いけると思うぞ
と書き込みそうになったorz

確かにグラフィックが無理だし、物理エンジンも走るかどうか微妙だな・・・・・
スマソ吊ってくる

449 :名前は開発中のものです。:04/12/19 15:33:27 ID:DRqhJ+eh
マジレスすると>>437の言ってる事は
アルゴリズムが理解できて
尚且つ数学も理解できて無いと_

でも技術的には
結構ありふれた物使ってるのじゃないかと思われ

450 :名前は開発中のものです。:04/12/19 15:37:31 ID:WMy/66MH
>>447
話題が二転三転してないか?
お前が>>439で書いてるのはほとんどグラフィック関係だけじゃん。

物理エンジンはグラフィックに関係してないのか?
アクションゲームのAIをロールプレイングゲームのAIと比べられるのか?

俺が突っ込んでるのは「PCとPS2でそもそもジャンルが違うHalf-life2とFF12を比べられるわけないだろ、釣りか?」
って事なんだが。

お前にとってHalf-life2のアルゴリズムはFF12より凄いらしいが、真・三国無双と初代ドラクエだとどっちのアルゴリズムが凄いの?w

451 :名前は開発中のものです。:04/12/19 15:56:57 ID:DRqhJ+eh
>>437
連レスだけど・・・・・・
モグリじゃ再現はまず不可能
モグリでも再現できるようなら、
同人ゲームでそういった3Dをバリバリ動かすようなゲームが溢れてるはず

グラ関係等での制約もあるんだろうけど、
今の所そこまで高度な処理をするようなゲームは殆どない

こんな回答で良いのだろうか?

452 :名前は開発中のものです。:04/12/19 16:23:23 ID:yaeQpsCQ
前線に出たがるタムリン(ヒーラー)

453 :名前は開発中のものです。:04/12/19 17:25:18 ID:bc/DHSmt
>>450
はいはい、クマ-(AA略

アルゴリズムって言葉を調べてね。

454 :名前は開発中のものです。:04/12/19 18:31:41 ID:bc/DHSmt
あー。公式のムービーはプロモーションか。


ttp://www.4gamer.net/store/movie/HALFLIFE2_E3_2003.lzh

こっちを見ればわかるだろ。

455 :名前は開発中のものです。:04/12/19 19:02:26 ID:P175sgFg
国内だと低スペックの奴が、文句言いまくるからなぁ。
3Dですら、連中にとっては高スペックらしい。

456 :名前は開発中のものです。:04/12/19 19:36:37 ID:WMy/66MH
>>453-454
池沼か?
>>437はそもそもFF12がグラフィック以外なら素人に作れる物なのかを聞いてるのに、何でHalf-life2が話題に出てくる?
全く関係無いだろ?

457 :名前は開発中のものです。:04/12/19 20:02:30 ID:bc/DHSmt
>>456
読解力ってものが無いのか?

>>437
戦闘がリアルタイムで、しかも地形の形状を戦闘に利用できて
かつ主人公以外は完全に自動で行動させられる
技術が凄いのか?って聞いてるんだろ。

だから参考にするならHalf-Lifeを見ろと言ったわけ。


おまいさんは、ただFF12をけなされたと勘違いして脊椎反射で噛み付いてるだけじゃないか。

そりゃ総合的に見ればはFF12もかなり凄いって事くらい解るよ。


458 :名前は開発中のものです。:04/12/19 20:27:21 ID:yaeQpsCQ
既存のゲームの名前を出さずに考えるとどーなん?

459 :名前は開発中のものです。:04/12/19 20:31:14 ID:4xsPTOj3
ピンキリじゃないかね。
地形を戦闘に利用することが出来るようにすること自体は
そんな難しくないだろうけど、それを使ってゲームを面白くするシステムを考える方が難しい。

自動行動だって簡単な物はすぐ出来るだろうけど、「頭がいい」って言えるような
学習も備えたやつを作ろうとすると多少手間がかかる。

460 :名前は開発中のものです。:04/12/19 21:03:48 ID:P175sgFg
シミュレーションだけど、PC-88時代から大戦略などで地形を戦闘に利用することは出来た。
RPGでは英雄伝説のAIは、敵のHP情報などを使用して、割と頭の良い行動が出来た。

>>459の「学習を含めた」、というのは恐らくないだろうから(保存メディアの必要領域が
大きくなるから)、そんなに高度なものは作られていないと思う。

461 :名前は開発中のものです。:04/12/19 21:16:32 ID:+EamBMW/
>>460
以前どこかのRTSがやってたと記憶するんだが、
現在の状況を元に次の行動を決定する過程で
パーセプトロンと同じモデルを使っていれば
記憶に使う容量は学習が進んでも増える事はない(重みが変わるだけ)し、
SLGの分野では(類似した物が)そこそこ使われてる気がする

462 :名前は開発中のものです。:04/12/19 21:24:33 ID:P175sgFg
へー、凄いなぁ。
勉強になります。

463 :名前は開発中のものです。:04/12/20 00:43:20 ID:rMlKdZvO
何故にパーセプトロン限定、相互結合型も入れておいて下さい(A`)
てかNNがゲームに使われてるなんて話聞いたこと無いんだが、本当なの?
本当ならすげー嬉しい。

464 :名前は開発中のものです。:04/12/20 00:53:06 ID:rMlKdZvO
なぜにパーセプトロン限定?
あとNNをゲームに使ってるなんて話は聞いたこと無いんだけど、それ本当?
知ってたらネットワーク構造とかも含めて教えてホスィ(A`)

465 :名前は開発中のものです。:04/12/20 00:54:11 ID:rMlKdZvO
書き込みミスってたかと思ってたら出来てた。。。

466 :名前は開発中のものです。:04/12/20 00:58:26 ID:7rZTeKhR
研究目的に作られたゲームならいくつか見たことあるけど
商用ゲームに使われてる事例は知らないし、
さすがにまだないんじゃないか?

467 :名前は開発中のものです。:04/12/20 01:01:51 ID:7rZTeKhR
ごめん、調べてみたらあったわ
Renderware A.I.にニューラルネットマネージャがあるね。
曰く

「ニューラルネットワークは、一般に予測、分類、データの関連付け、概念化、およびフィルタリングに使
用される、高性能な統計分析データ構造」

実際に使った事例があるかどうかは知らないけど…

468 :名前は開発中のものです。:04/12/20 01:38:22 ID:NwRcaupm
わおほんとだ。ありがと。
事例はともかく、ミドルウェアに一応置いておく位には使えるのか。

涙が出そう。NNって完全に窓際族扱いで。。

469 :名前は開発中のものです。:04/12/20 03:11:33 ID:cqrg6fzo
NNってそんなにマイナーじゃないんでは?
Gems2の3.14にはColin McRae Rally2.0では多層パーセプトロンをつかってるって記述があった。

470 :名前は開発中のものです。:04/12/20 03:24:30 ID:tkuWKnTl
パターン認識の分野ではSVMやらが脚光を浴びてNNはもうブームが去った感じもしてしまうけど
ゲームの分野ではまだまだ未開拓に近いのでは<NN

471 :名前は開発中のものです。:04/12/20 15:35:20 ID:hImEK0ED
VC6にて、海賊をモチーフにした2Dな全方位シューティングゲームを製作しています。
現在、背景にポリゴンを用いて海面の揺れ処理を表現しているのですが
このコードでは、なんというか・・動きが変なんです。

gameFunctions.cpp内DrawSea関数で波の動きを制御しています。
ここの伝播処理部分にもっと施すことがあるだろうとは思うのですが、
具体的にどうすれば良いのかが、恥ずかしながら分かりません。

参考になるウェブサイトや、アドバイスなどを頂けたらと思います。
よろしくお願いいたします。

http://prisira.s59.xrea.com/20041219.zip

472 :名前は開発中のものです。:04/12/21 00:02:34 ID:KKJvDASb
>471
だから動作環境ぐらい書け

473 :名前は開発中のものです。:04/12/21 00:23:26 ID:YOOEfiig
>>471
そのままでも結構上手く動いてると思うけどね。
とことん凝るなら波動方程式で検索してみるといいよ。

474 :名前は開発中のものです。:04/12/21 00:27:21 ID:w8c1Lm3U
>>473
いやこれはマズいだろ。
一見動いてるように見えるけど、たまたま波の伝搬で誤差を打ち消し合ってるだけで
伝搬をさせないとエネルギーの誤差が蓄積してどんどん振幅が増して大変なことになる罠
波動方程式に基づいて計算するのが無難かと

475 :名前は開発中のものです。:04/12/21 00:31:11 ID:9lMiERGt
波動砲丁式

476 :名前は開発中のものです。:04/12/21 01:37:47 ID:sch2axpx
>>472
すいません、動作環境ってどれを書けば良いんでしょうか?
とりあえず使用しているDirectXSDKは9.0です。

>>473-474
御助言ありがとうございます。
波動方程式について調べてみたのですが、
数式では私には大変難しくよく理解ができませんでした。

それから色々ググっていたら、恐らく私が目指すべきに近いと思われるjavaアプレットを見つけました。
http://hp.vector.co.jp/authors/VA012735/applet/dropimg.htm
しかも大変ありがたいことにソースも公開されていました。
しばらくこのソースと睨めっこして、波動をマスターしたいと思います。

・・・これも何だか難しいですね。

477 :名前は開発中のものです。:04/12/22 09:45:46 ID:vEPXp48K
>>471のソースをコンパイルしてみると、sprite.cppのBeginSprite()で、
”error C2660: 'Begin' : 関数が不正な 0 個の実引数をともなって呼び出されました。 ”
というエラーが出る。
ちなみにVC++6.0、DirectX9.0 2004(October)
ヘルプを見ても HRESULT Begin(VOID);だし、引数はいらないように思うのですが。

d3dx9core.hを見ると、
DECLARE_ID3DXSprite_(ID3DXSprite, IUnknown)の中身が、
STDMETHOD(Begin)(THIS_ DWORD Flags) PURE; となっていた。
同じくd3dx8core.hでは、
STDMETHOD(Begin)(THIS) PURE; となっていた。
とりあえず、引数に0を入れてみるとコンパイルは通りましたが・・・。

みなさんはそのままでコンパイルが通ったようなので、どういった環境の違いに
よるものか悩んでいます。とりとめもなく書きましたが、何かわかる方、ご教授ください。
お願いします。

478 :名前は開発中のものです。:04/12/22 14:41:37 ID:quiBQpLd
SDK付属の英語の Document(Help) 読んでるか?
日本語Help って 9.0 と 2004(December) しか無かったような

対応したバーションの Help 読んでるなら
コードを書いた奴の環境とバーションが違っているんだろ


479 :名前は開発中のものです。:04/12/22 18:58:33 ID:JZkoDinq
>>478
×2004(December)
○2004(October)

ちなみにmsdnじゃOctber 2004って綴り間違えてる
             ↑

480 :名前は開発中のものです。:04/12/22 21:59:05 ID:VEp0024I
SRPGを作っているのですが質問です。
オーソドックスな視点の2Dのゲームなんですが、
このタイプで高さを表現する良い方法はないでしょうか。

それを行う為に、今マップの坂を、以下の絵の様に、草、茂み等の下地の地形に、
崖の絵を合成する形で表示しているのですが、余りしっくり来ません。
http://gamdev.org/up/img/2160.png
(http://hp.vector.co.jp/authors/VA020046/
のMACKさん作の素材で、それを少し改変しています)

下地の地形をベースに、影の付け方を変えて坂を表現するという方法を
考えましたが、そういう素材は見つからず、
下地を取り込むと、坂を自動的に作ってくれるツールがあるのかもしれませんが、
グラフィックに詳しくなく見つけられませんでした。

これに沿った方法で、または別の方法で、
高さを表現する方法がありましたら教えてください。

481 :名前は開発中のものです。:04/12/22 22:35:59 ID:qTuprgSw
ゼルダの伝説 神々のトライフォース
ttp://www.nintendo.co.jp/nom/9811/p04/zelda031.jpg
が参考になるかも。

482 :480:04/12/22 22:49:44 ID:VEp0024I
>>481
ありがとうございます。参考にさせていただきます。
自分もゲームでそういうのが使われていないか攻略本を見て探したんですけど、
ドラクエ6、ツクール4に少しあるぐらいでなかなかないんですよね。

483 :480:04/12/23 00:24:56 ID:zeGMsZ0H
もう一度ググって見た所、もこもこペイントというのを
見つけましたがこれでいけそうです。ありがとうございました。

484 :名前は開発中のものです。:04/12/23 01:31:56 ID:vYKn4Xgr
>>478,479
旧バージョンのヘルプを見てしまっていました。
あらためて2004(October)のヘルプで確認し、納得できました。
ありがとうございました。

485 :名前は開発中のものです。:04/12/23 14:33:36 ID:R6w3o4WD
>>425

enum{
BUTTON_A = 0x00000001,
BUTTON_B = 0x00000004,
BUTTON_C = 0x00000008,
BUTTON_X = 0x00000010,
BUTTON_Y = 0x00000020,
BUTTON_Z = 0x00000040,
BUTTON_L = 0x00000080,
BUTTON_R = 0x00000100,
KEY_UP = 0x00000200,
KEY_DOWN = 0x00000400,
KEY_LEFT = 0x00000800,
KEY_RIGHT = 0x00001000
};

これをDWORD型変数にOR演算でセット。
AND演算を使って判定。

以前の入力が欲しい時はDWORD型配列にする。

僕が以前格闘ゲームを作成したときに使用した方法です。

486 :名前は開発中のものです。:04/12/23 14:59:30 ID:rYMlNBD2
トリガーキーとかいう言葉すら知らないんだろうな。

487 :名前は開発中のものです。:04/12/26 18:12:17 ID:xK7O99x1
ゲーム作るならDirectX勉強しろーみたいなこと言われたのですが、
PSとかPS2,game cubeのソフトは、DirectXなるものが使われているんでしょうか?

488 :名前は開発中のものです。:04/12/26 18:29:15 ID:JxCJBP69
>>487
コンシューマでDirectX使ってるのはXBOXだけ

489 :名前は開発中のものです。:04/12/26 19:23:21 ID:z6k4KEYj
>>487
それを言ったのは誰だ?
WindowsやXBOXのプログラマが言ったならともかく、PS2やGCのプログラマに言われたなら軽くあしらわれてるぞw

490 :名前は開発中のものです。:04/12/26 19:27:18 ID:U7hutUIm
(Windowsで)ゲーム作るならDirectX勉強しろー


491 :名前は開発中のものです。:04/12/26 21:10:46 ID:PcH7Hb9Y
>487
まぁあながち間違いではない
右も左も2Dも3Dもその他もろもろもわからない香具師はとりあえずDirectXでも勉強しとけ
DirectXを通してグラフィックハードウェアがどういうものなのか知ることもできるし
3Dの勉強もできるし
ただDirectXにはD3DX系なんかの便利な関数やクラスの中身を
まったく理解せず使ってたらだめだろうな

プロットフォームが変われば使用するライブラリも変わるが、
しっかりとした知識を持っていればすぐ対応できる

逆にライブラリが変わったくらいで、すぐに対応できないような香具師は現場では使えない




492 :487:04/12/27 14:22:37 ID:c4eg2dH6
DirectXにしろPS、DCにしろ、言語はC++ですよね?
なんか、いまはC#だとか言ってるんですが。。。

493 :名前は開発中のものです。:04/12/27 15:16:06 ID:DotxQdES
とりあえずC/C++やっとけ
それが出来ればC#もあまり苦労せずに出来るようになるから。
(逆は案外難しい)

494 :名前は開発中のものです。:04/12/27 16:44:29 ID:FkSCbusX
案外というか、C#はいろんな機能提供してくれるからC#から入ると自分で
基本的な部分の仕組みを作る、というか考えるということが出来ない気がするなぁ。

495 :名前は開発中のものです。:04/12/27 18:05:01 ID:+zVJFTQh
>>492
あー、そいつ典型的なWindows専門プログラマだよ。
エロゲの会社にでも勤めてる奴?
XBOX2以降だったらC#が使えるようになるかも知れんが…

496 :名前は開発中のものです。:04/12/27 18:13:48 ID:PyUvd91V
ガベージコレクタだとか実行時型判定だとか、
最近の言語はプログラマの負担を減らす代わりに
CPUの負担を増やしてるからゲームには不向きだなぁ

497 :名前は開発中のものです。:04/12/27 18:37:27 ID:7gyZFTAp
動作速度はゲームの種類によりけりだけど、
わざわざランタイムを入れてもらわなければ動かないという方が致命的。

498 :名前は開発中のものです。:04/12/27 19:54:05 ID:VQkgEWr2
>>497
DirectXだって、ランタイム入れてもらわなきゃならんだろw

499 :名前は開発中のものです。:04/12/27 19:57:07 ID:P9U2f31C
2重のランタイムってのが許せない

500 :名前は開発中のものです。:04/12/27 20:15:49 ID:+zVJFTQh
このゲームをプレイするには拡張の周辺機器を買わなければなりませんよりはマシだけどな。

501 :名前は開発中のものです。:04/12/28 04:21:29 ID:eZh/IZfo
バージョン別ランタイムの普及率が知りたい・・・・

502 :名前は開発中のものです。:04/12/29 21:26:24 ID:y6PUZTMC
>>477
ID3DXSpriteインターフェースがDirectX9の前期と後期で変わってるっぽい
BeginのほかにDrawも変更食らってるのを確認済み
ID3DXSpriteインターフェース使って2Dライブラリ組んでた俺としては最新版は使えねぇ・・・
拡大縮小や回転が使えなくなっててもう最悪だった
2D作るのに気軽に使える環境を返してくれYO!
あと同じメジャーバージョンなのにインターフェース変えるなYO!

503 :名前は開発中のものです。:04/12/29 22:33:22 ID:QlZN4+1J
ライバルがいないから、仕様変え放題やりたい放題だ。

504 :名前は開発中のものです。:04/12/30 00:08:24 ID:KnybJ9RY
>>502
だから、拡大縮小回転は使えるって
全部Matrixで指定しる

505 :名前は開発中のものです。:05/01/07 21:15:47 ID:PnxhwrgV
質問質問。
今、2Dのアクションゲーム作ってるんだけど、
オブジェクト(敵や特別な地形)とオブジェクトとの当たり判定っていつやればいいの?

今は水平方向に動かすときと、垂直方向に動かすときにそれぞれ全オブジェクトとの当たり判定やってます。
ちゃんと動くけど無駄が多すぎな気がする・・・

506 :名前は開発中のものです。:05/01/08 00:24:20 ID:Mfb5U7xY
普通は、動かす動かさずに関わらずに毎フレームチェックするものだと思いますが。

507 :名前は開発中のものです。:05/01/09 14:51:26 ID:vGUkFhnG
>505
比較的軽い計算で、これは絶対に当たっていないって条件が判定できるものは判定する
ってやってるとは思うけど一応

508 :名前は開発中のものです。:05/01/09 16:01:21 ID:8Mf88qbF
>>505
Quad Tree
Oct Tree

509 :505:05/01/10 03:04:03 ID:pQUwlE+5
>>506
すいませんすいません、毎フレームごとにチェックはしてます。
ただ、その1フレームの中でさらに二回やっているんです。
具体的には、オブジェクトAがあって、
A.x += velX
って感じの水平方向の移動後と、
A.y += velY
って感じの垂直方向の移動後。
他オブジェクトと当たっていた場合は位置補正してます。

>>505
・・・やってないかもしれない。
矩形での当たり判定のみなのでこれが一番軽いかな、と手抜きを(汗
X座標やY座標でソートして明らかに外れているオブジェクト達との
判定はしないようにしたんだけど、オブジェクトの数が少ないと
かえって時間がかかっちゃいまして。。。

>>505
8分木は名前だけ知ってたけど、4分木は初めてです。
8分木の2次元版?って感じですか、どうやら。
どう実装すればいいのかよくわかりませんが、これをキーワードにちょっと
調べてみようと思います。

みなさんありがとう!


510 :名前は開発中のものです。:05/01/14 03:51:03 ID:i3bZFA1f
アクションRPG作ろうと思っているんですが
敵の思考ルーチンをプログラムする際に
参考になりそうなおすすめサイトがあれば教えてください。

511 :名前は開発中のものです。:05/01/15 00:22:48 ID:Q+iKu070
>510
サイトじゃなくて書籍だけど
「定本 Cプログラマのためのアルゴリズムとデータ構造」

512 :名前は開発中のものです。:05/01/15 00:27:16 ID:rN3ku86Q
>>510
サイトじゃなくて書籍だけど
「ゲーム開発者のためのAI入門」

A*ならgamdev wikiにもあったような・・・・

513 :名前は開発中のものです。:05/01/16 22:59:35 ID:CY/+3klI
2次元配列をゼロクリアしたいのですが簡単な方法ないですか?
今はfor分の二重ループで1つずつ代入しています
使用環境はVC++です

514 :名前は開発中のものです。:05/01/16 23:01:24 ID:NpLjrdXw
memset

515 :名前は開発中のものです。:05/01/16 23:23:24 ID:CY/+3klI
>>514
うまくいきました。ありがとうございます。

使用前
  for (int i=0; i<3; i++)
  {
    for (int j=0; j<3; j++)
    {
      map[i][j]=0;
    }
  }

使用後
memset(map, 0, sizeof(int)*9);

516 :名前は開発中のものです。:05/01/16 23:26:51 ID:IXkeSk7x
sizeof(map)じゃダメ?

517 :名前は開発中のものです。:05/01/16 23:42:36 ID:CY/+3klI
>>516
なるほど!全体を指定してしまったほうが手っ取り早いですね。
うまくいきました。ありがとうございます。

改良後
memset(map, 0, sizeof(map));

518 :名前は開発中のものです。:05/01/17 02:12:10 ID:Q4YWdrDN
なんか、ほほえましいな。自分が若かった頃を思い出す。
>>513は、もっとガンガレ!!

519 :名前は開発中のものです。:05/01/17 02:42:31 ID:jWBtbAdV
callocって無かった?

520 :名前は開発中のものです。:05/01/17 07:52:36 ID:6lEx3rdP
ZeroMemory(map, sizeof(map));

でもいいね。

521 :名前は開発中のものです。:05/01/18 01:05:52 ID:7XkOXKh6
忘れるな。
memset は string.h
ZeroMemory は windows.h

522 :名前は開発中のものです。:05/01/19 16:17:57 ID:ZQyRJ79S
むしろZeroMemoryは中身memset

523 :名前は開発中のものです。:05/01/19 18:28:10 ID:aRH3B+4H
さらにインライン展開されて、関数を呼ばずにストリング転送に変換される。

524 :名前は開発中のものです。:05/01/23 04:37:44 ID:LheYkhaz
なんかこんなのあったけど

http://www.microsoft.com/japan/msdn/library/ja/jpdncode/htm/secure10102002.asp


525 :524:05/01/23 04:52:12 ID:LheYkhaz
なんか違ってた

526 :名前は開発中のものです。:05/01/28 12:13:19 ID:7PgE831H
ファミコンのラディア戦記みたいなアクションRPGを作りたいけど
イベントの処理やデータの管理(セーブ機能をつけたい)などを
どう実現していいやら検討も付きません。
どこかに参考になりそうなソース付きのアクションRPGをDL出来るところは無いでしょうか?
ちなみにVC++とDirectXで作っててキャラ&敵の表示、あたり判定、攻撃、マップの移動などは出来てます。

527 :名前は開発中のものです。:05/01/28 17:50:53 ID:IiB3r9BB
>>526
暗号化と、バイナリモードのファイル入出力を習得すればできる
大事なのは考えることだ

528 :名前は開発中のものです。:05/01/28 18:07:56 ID:DhbqYSB9
別に暗号化する必要もないし、バイナリファイルである必要もない。
大事なのは「他人にいじられないようにする」という勝手な用件を脳内で作らないことだ。

529 :名前は開発中のものです。:05/01/28 19:29:59 ID:IiB3r9BB
>>528
よく意味がわからないんだが、どういうことだ?

530 :名前は開発中のものです。:05/01/28 20:52:13 ID:KA8jG9qB
イベントもセーブもどう弄られ様とかまわねーっつーことじゃないの?
弄られることで自分が不利益被らないなら、どーなっても良いんじゃないのかな。

大事なのは考えることだ
だけど、余計なことは考えなくて良い

531 :名前は開発中のものです。:05/01/28 21:19:33 ID:ZJQyR3uN
>>526
イベントが発生する時は、何かしらのアクションやシグナルがあるから、
それらをifやswitchとかで監視する。(他にも方法はあるだろうけど)
ボスが死んだらイベントが発生する、とか色々イベントを試していれば、おのずと形が見えてくると思う。
まぁ俺の言ってることは>>527、530と一緒で、とにかく試行錯誤したほうがいいよw


532 :名前は開発中のものです。:05/01/29 03:56:50 ID:hwmUiymu
>>526
何が分からないのかよく分からないからもっと具体的な質問をしてみな。
データセーブはファイルの入出力さえできれば簡単だろ。どこができないの?

イベントについては、最高の理想を言えば、ごちゃごちゃプログラムで泥縄式に
作るするんじゃなくて、シナリオ記述言語(スクリプト)みたいなのを自分で
勝手に考えて創って、それを読み進めるプログラム(=ゲームプログラム)を
作る…という感じにすると美しいぞ。

533 :名前は開発中のものです。:05/01/29 06:10:59 ID:dcHY39ty
>>526
>勝手に考えて創って、それを読み進めるプログラム(=ゲームプログラム)を
>作る…という感じにすると美しいぞ。

多分、526にはその技術が無いから、想像もできんのだよ。
イベントは、まず、イベントマップというのを作る。
これは、画面を表示するマップに重なっているイメージだ。
そんで、そのイベントマップに、イベント番号などを記録する。
すると、マップの。X=5.Y=6の地点で、イベントマップにイベント番号があれば、そこでイベント発生だ。
イベントは、メインルーチンと並列に実行されるようにせねばならない。
たとえば、勝手に上に歩いて、キャラクタが「勝手に足が動いたんだ」というセリフを出すイベントだとしたら、
その歩いてるときにも、ゲームの全体の進行を止めてはならない。

534 :526:05/01/29 09:16:02 ID:7YDq9IjJ
お返事ありがとうございます。

データの管理:まとめてメモリを確保して、セーブが必要なデータはそのメモリを使う。セーブする場合はそのメモリを保存する。
イベントの管理:イベントのデータが入ったファイルを用意して必要なイベントファイルを読み込んでおき、そのデータに応じて処理をする。

書き込む前に色々調べて上記のような処理で実現するのがいいんじゃないかとは思ったのですが、
教材になりそうなプログラムやサイトが見つからないのでここに書き込みをしました。
質問べたですみません。

シナリオ記述言語(スクリプト)をつくる技術はありませんが、イベントマップ方式?はできそうです。
イベントマップとはRPGツクールのイベント処理と同じ考え方ですよね。
体験版があるみたいなのでちょっといじってみようと思います。

535 :名前は開発中のものです。:05/02/07 22:00:54 ID:lJKKg9iL
クイックセーブ(何処でもセーブ)ができるシステム組むのって大変だよね。
でもこれが作れたらかなりの腕だと思うよ。

536 :名前は開発中のものです。:05/02/10 07:15:16 ID:wT+Y0IFB
>>535
場合によるだろ。
はじめからあらかじめ計画してあって
プレイヤーが今そこにいるための情報がすべてまとまっていれば
ファイルに書き込むだけで終わりだろ。

逆に何も考えずにただゲームを作った後で
どこでもセーブしたいとかいいだしたら地獄絵図だが。

システム組むのって大変だよね。
じゃなくてちゃんと計画できてなきゃそもそも不可能であってやるべきじゃねーことだろ。

537 :名前は開発中のものです。:05/02/10 15:17:17 ID:pqZJazXR
これが正解

大規模なシステム組むのって大変だよね。
作れたらかなりの腕だと思うよ。

538 :名前は開発中のものです。:05/02/10 16:57:44 ID:UHlpW5jj
まずはきちんとした設計を。

539 :名前は開発中のものです。:05/02/10 20:56:02 ID:R7En7PQ7
クイックセーブをシリアライズですまそうなんてぬかすなよ

540 :名前は開発中のものです。:05/02/10 23:29:01 ID:m8YDuGMo
理由を述べよ。

541 :名前は開発中のものです。:05/02/18 07:16:25 ID:NdgimZZ6
今DirectX9.0 SDK Update (Summer 2003) + VC++.netで
DirectXをプチプチと勉強しているんだけど、2体のポリゴンキャラクター同士の全ポリゴン判定?フル当たり判定?
をする場合どうやってやってますか?
自分が思いついたのはVertexBufferとIndexBufferを使ってLockするして判定する方法です。
でもこれだと速度的に心配なので他の方法ないかと思ってエロイ人が集っていて板違いじゃなさそうな
ここに相談しにきました。(;´Д`)ハァハァ

542 :名前は開発中のものです。:05/02/18 08:38:07 ID:I2CSa8I2
普通は衝突判定用の簡易オブジェクトを作るもんだと思うが…

543 :名前は開発中のものです。:05/02/18 09:00:28 ID:NdgimZZ6
・でもそれだとメッシュによって精度が落ちちゃうんですよ。
・勉強という事で何かいい方法がないか知りたいんですよ。(;´・ω・`)

544 :名前は開発中のものです。:05/02/18 09:11:40 ID:5R+gyy4l
簡易オブジェクトでぶつかってるやつだけ詳細にチェック

545 :名前は開発中のものです。:05/02/18 15:37:57 ID:JUukIzID
Lockせずにnewしてそこに置いとけばいいんじゃない?

546 :名前は開発中のものです。:05/02/18 20:15:52 ID:SyUoLxbM
>>544
それも思いつきました。
でもたくさんのメッシュが一度にぶつかるとやっぱりきついかな?って思いまして。

>>545
むむ!?(;`・ω・´)もっと詳しく説明やここよめアホってなサイトお願いします!

547 :名前は開発中のものです。:05/02/19 06:29:08 ID:UXB8Jg0C
>>546
たくさんのメッシュを一度にぶつけないでください(マジレス)
衝突判定に銀の弾丸はないのです

548 :名前は開発中のものです。:05/02/19 06:41:03 ID:O2/kCUDX
>>546
当たってるかどうかだけなら重くはならん。
ほかに何か求めたいのか?角度とか。

549 :名前は開発中のものです。:05/02/19 07:07:27 ID:j8BXkcXy
>>548
角度や摩擦など求める予定ですが、その前にLockして判定する以外
の方法を教えてくれたらと思っています。

簡易オブジェでぶつかっているやつだけLockしてフルチェックさせる方法でも
たくさんのオブジェクトが密集してしまうと結局は簡易オブジェクトなしでフルチェックする
場合とあんまり変わらず処理に影響してしまうので。

550 :名前は開発中のものです。:05/02/19 07:08:58 ID:T6zgD8Th
4つぐらい重なったら核爆発が起きるようにしてはどうか。

551 :名前は開発中のものです。:05/02/20 10:22:20 ID:Mw8d2O0L
>>550
えぇ!そんなぁ・・・。(´Д`;)

552 :名前は開発中のものです。:05/02/21 18:17:21 ID:b2LRiS8s
>>549
ゲームが作りたいなら全メッシュ衝突判定なんて考えない。簡易オブジェクトを使う。
それでも超重くなるとしたら設計が悪い。たくさんのオブジェクトが密集しまくる設計にしないでください。


553 :名前は開発中のものです。:05/02/23 00:55:24 ID:4mRmpQC+
D3DXVec3TransformCoordをヘルプで読んだのですがいまいち分かりません。
これはグローバルな座標変数をローカルな座標変数に変換するのですか?
あと似たような名前の
D3DXVec3Transformとの違いもD3DXVec3TransformCoord が理解できないため分かりません。
どなたか教えてください。お願いします。

554 :名前は開発中のものです。:05/02/23 05:48:21 ID:lVuNeIQF
以下の関数はDirectXヘルプを読んで、私がコーディングしたものです。
これらを見ても関数の意味が分からないようでしたら、ベクトルと行列の基礎をしっかり勉強してから再挑戦することをお勧めします。

VECTOR4F* D3DXVec3Transform
( VECTOR4F *pOut, const VECTOR3F *pV, const MATRIX44F *pM )
{
pOut->x = pV->x * pM->_11 + pV->y * pM->_21 + pV->z * pM->_31 + pM->_41;
pOut->y = pV->x * pM->_12 + pV->y * pM->_22 + pV->z * pM->_32 + pM->_42;
pOut->z = pV->x * pM->_13 + pV->y * pM->_23 + pV->z * pM->_33 + pM->_43;
pOut->w = pV->x * pM->_14 + pV->y * pM->_24 + pV->z * pM->_34 + pM->_44;
return pOut;
}


555 :名前は開発中のものです。:05/02/23 05:49:38 ID:lVuNeIQF
VECTOR3F* D3DXVec3TransformCoord
( VECTOR3F *pOut, const VECTOR3F *pV, const MATRIX44F *pM )
{
VECTOR3F ret;
float w;
w = pV->x * pM->_14 + pV->y * pM->_24 + pV->z * pM->_34 + pM->_44;
if(w) w = 1.f / w;
ret.x = (pV->x * pM->_11 + pV->y * pM->_21 + pV->z * pM->_31 + pM->_41) * w;
ret.y = (pV->x * pM->_12 + pV->y * pM->_22 + pV->z * pM->_32 + pM->_42) * w;
ret.z = (pV->x * pM->_13 + pV->y * pM->_23 + pV->z * pM->_33 + pM->_43) * w;
*pOut = ret;
return pOut;
}
VECTOR3F* D3DXVec3TransformNormal
( VECTOR3F *pOut, const VECTOR3F *pV, const MATRIX44F *pM )
{
VECTOR3F ret;
ret.x = (pV->x * pM->_11 + pV->y * pM->_21 + pV->z * pM->_31);
ret.y = (pV->x * pM->_12 + pV->y * pM->_22 + pV->z * pM->_32);
ret.z = (pV->x * pM->_13 + pV->y * pM->_23 + pV->z * pM->_33);
*pOut = ret;
return pOut;
}

556 :名前は開発中のものです。:05/02/23 05:53:24 ID:lVuNeIQF
すいません型を以下のように直しておいてください。

VECTOR4F → D3DXVECTOR4
VECTOR3F → D3DXVECTOR3
MATRIX44F → D3DXMATRIX


557 :名前は開発中のものです。:05/02/23 07:07:45 ID:5jBEcMCA
なんと独りよがりな

558 :名前は開発中のものです。:05/02/23 14:56:55 ID:9pm4uh9q
D3DXVec3TransformとD3DXVec3TransformCoordの違いが多分分かりました。

559 :554:05/02/24 17:48:31 ID:9BALKx7J
>557
少しでも質問者の疑問に答えられれば良いなと思って書いたレスを、「なんと独りよがりな」という言葉で一蹴ですか。
お前みたいなやつがいると正直やる気を無くすよ。

560 :名前は開発中のものです。:05/02/25 03:35:38 ID:8xpRQllj
なんでそこでキレるかなぁ〜

561 :名前は開発中のものです。:05/03/06 20:52:45 ID:+8c0xIHX
機嫌悪かったんだろ

562 :名前は開発中のものです。:05/03/15 00:30:34 ID:2caYpl3H
あの日だったんだろ

563 :名前は開発中のものです。:05/03/15 17:25:12 ID:l/6TEvIC
(*ノノ)

564 :名前は開発中のものです。:05/03/19 22:25:07 ID:zqD1MdPq
大手ゲームメーカーでプログラマやってます。
このスレ、レベルひくっ(ぷっ)笑えてきた。

プログラムなんかやめちゃえ!

565 :名前は開発中のものです。:05/03/19 22:53:19 ID:OqPAYq45
最初からレベルが高い人など居ませんよ。
くだらないことを書き込まないように。

566 :名前は開発中のものです。:05/03/20 05:27:02 ID:oSFOPQ/k
>>564
喪前は
人間やめちゃえ!!

567 :名前は開発中のものです。:05/03/20 05:28:52 ID:oSFOPQ/k
>>564
無能な上司の下で
デスマーチ頑張ってねwww

197 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)