トップページgamedev
986コメント314KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001プチ9627m01/11/06 18:47ID:G6Fk/ND/
ゲームプログラミング全般についての質問スレッド。
駄スレ立てる前にココで聞きましょう。

■旧スレ(プログラミング技術板より)
○パート1
http://piza.2ch.net/tech/kako/969/969984472.html
○パート2
http://pc.2ch.net/test/read.cgi/tech/985540361
○パート3
http://pc.2ch.net/test/read.cgi/tech/1002894129/
045844002/05/14 01:21ID:QkMxU4bA
>>457
THX!

ま、正直なところ、DirectXであれこれやるならVC++を使うことをお薦めするが・・・。
0459名前は開発中のものです。02/05/14 06:42ID:???
>>457
それでいいと思うよ。
0460名前は開発中のものです。02/05/14 08:45ID:???
DirectXの機能を使うと楽になる部分もあるけど、ほとんど使わないで済む程度のゲーム
だったらVC++とかDelphiのライブラリ内で作っちゃった方がいい。
0461名前は開発中のものです。02/05/14 14:24ID:???
>>460
そりゃそうだ。
マインスイーパ作るのにDirectXはいらないな。
適材適所。
0462名前は開発中のものです。02/05/14 21:31ID:gp9yAFEg
 
0463名前は開発中のものです。02/05/18 20:47ID:OvBslwUs
 
0464名前は開発中のものです。02/05/19 11:39ID:l8bBGy5I
FF XIでのヘタレッぷりには大いに笑わせてもらった。
映画で懲りたかと思えばコレか、
おまえらゲームプログラマの質なんてたかが知れてる。

次はどんな手で笑わせてくれるんだ?
サーバが重くてつながらないのにチョコボ大陸横断レースでもするのか?(藁
0465名前は開発中のものです。02/05/19 11:41ID:???
>>464 スレ違い、板違いです。
0466名前は開発中のものです。02/05/19 14:58ID:???
人間以外の生物は書き込みにこないで下さい。
0467名前は開発中のものです。02/05/19 15:25ID:???
プログラミングあるいはソフトウェア構築の話なら歓迎だぞう
0468名前は開発中のものです。02/05/19 16:38ID:5QVs0KEU
構造設計スレに書いたんだけど、あっという間に閉鎖スレになっちゃったのでこっちで再送


すいません、STGを作るの初めてなんで疑似タスクで質問させてください。
疑似タスクの仕組みとしては LogicianLoad を参考にさせてもらっています。

----------------
Q: 1フレームの中でタスクの優先順位を何回も変更する場合ってありますか?

優先順位を変更するならば、タスクをリストに登録する際どうやってその位置を見つけますか?
リストの先頭からざーっとなめてるんですか?
----------------

とりあえず、私としては以下のようにしてるんですが、よくないところとかあったら教えてください。

----------------
固定長ワークの配列を作る。要素数 256個とか。

タスクは、ワークへのポインタを持つ。
いくつものタスクがおなじワークへの参照をすることがあるので、ワークには参照カウンタを持たせる。

タスクのリストへの登録は map<優先度, list<タスク *> > な優先度マップを用意して、

優先度マップ[優先度].push_back(&タスク);

としてリストに登録。タスクの優先度変化とか、チェンジタスクとかは同じワークを参照するタスクを
つくって対応。状況に応じて自殺。
----------------
0469名前は開発中のものです。02/05/19 18:12ID:???
>>468
適切なソートアルゴリズムを選択すれば良い。
この場合、バケットソートが丁度良いかもしれない。
バケットソートについてはgoogleで検索して下さい。
0470hosoku 02/05/19 18:16ID:???
優先順位別のバケット(リスト)を用意しているのだから
要素を追加する位置をサーチする場合、そのコストはゼロ。
0471hosoku02/05/19 18:18ID:???
リストは一つでも良い。
各優先順位の先頭(or最後尾)ノードへの参照テーブルを用意する。
0472hosoku02/05/19 18:25ID:???
「タスク」という言葉は最近は通じない場合が増えている。
外人相手には100%通じないので、その辺も気を付けて。
047346802/05/19 20:33ID:???
>各優先順位の〜

なるほどです。やってみます。
0474名前は開発中のものです。02/05/20 03:37ID:???
優先順位ってどうして必要なんですか?

1 移動
2 衝突判定
3 オブジェクトの生存チェック
4 描画

こういう風に順番を分ければ、処理順が重要になる事って
あまりない気がするんですが・・・
0475名前は開発中のものです。02/05/20 06:46ID:???
>>472
外人相手だと何と言えばいい?
0476名前は開発中のものです。02/05/21 01:09ID:0jVRIemA
>>474
その1〜4の順番分けをすることが、まさに処理の優先順位をつけることだと思うのだが・・・。

もちろん、メインループ内でそれぞれの処理を行う関数を順に呼ぶようにしても作ることは
できるんだけど、その辺をフレキシブルに変更できるようにするための仕掛けがタスクな
わけじゃん。
0477名前は開発中のものです。02/05/21 01:15ID:???
>>476
優先順位と言えば優先順位みたいなモノだけど、
474で書いたように呼ばれる順番を保証しないと、
(好き勝手な優先順位で好き勝手に死んだり生まれたり)
安全と最適化を両立しづらくないですか?
0478名前は開発中のものです。02/05/21 01:43ID:???
だから、優先度は 決められたヘッダーとかで識別子を宣言するように
チーム内で決めるのがふつうなんじゃないの?
0479名前は開発中のものです。02/05/21 14:08ID:lOTv7vN.
DirectX8で、3Dモデルを使い、ようやく簡単なアニメーションが
できる様になったのですが、ここではたと詰まってしまいました。

あるアニメーションセットから、別のアニメーションセットに移る時
一般にどのような補間がなされているのでしょうか?

とりあえず自分でも色々試したのですが、一瞬で移行すると場合によっては
不自然だし、現在の位置から移行先の最初のフレーム位置まで
適当に補間をかけてみたら、なんとも奇妙な動きになってしまう始末で(- -;
……まさか、同じ座るという動作でも、移行前のものにあわせて
何パターンもアニメーションを作るのでしょうか((((; ゚Д゚)))

なんとも手詰まりで…アドバイスいただければ幸いであります。
0480名前は開発中のものです。02/05/21 15:05ID:???
ケースバイケースで、つなぎのモーションをかませるとか、
つなぎの姿勢をかませるとか、
そこら辺はノウハウの問題なんじゃないかと思うんですけど
状態遷移図みたいなのを書いて検討してみるしか。
048148002/05/21 15:06ID:???
訂正。
しか。→とか。
0482名前は開発中のものです。02/05/21 15:58ID:???
D3DXVec4LerpでQuarternionに線形補完を掛けるとか
0483名前は開発中のものです。02/05/21 16:02ID:???
モーションA start<------+------>end
モーションB      start<------+------------------->end
                 ^0.0   ^1.0
この0.0〜1.0の区間を補完すればいいんでない?
0484名前は開発中のものです。02/05/21 16:04ID:???
Σ0<= t <= 1.0 A * t + B * (1 - t)
048547902/05/21 17:14ID:???
レスありがとうございます。返事が遅くてすいません。
…勘違いして、ずっと別のスレを監視してました(;´Д`)

>>480
なるほど!後のパターンを増やすのではなく、つなぎを噛ませるのですか。
うー、しかし同じアニメーションからの遷移でも、どのコマから移るかによって
いろいろ考えなきゃなのかな…。しかし完璧を求めるなら、これをやるべきですよね。
>>482
線形補間でやると、組み合わせによっては突拍子もないのがでちゃうんです。。
たぶん私のモーションの作り方が悪いんですが…でもこれが手軽で良いですよね。
>>483-484
ややや、つまり移行時間を決め、その間のAとBを合成しつつ、
だんだんとAの影響を弱め、Bの方を顕在化させるわけですね!
むはー、プログラム的にも解決できるなんて(*´Д`)

皆様のレスに基づき、それぞれのアニメーションにあった方法をあてて
いきたいと思います。一人じゃ絶対思いつかない事ばかりで…本当に大感謝です〜。
0486名前は開発中のものです。02/05/22 01:58ID:emKWkvCg
姿勢は QuaternionSlerp 位置は エルミート曲線で補間。
その他、キーワードは Catmull-Rom スプラインかな。
あとは自分で調べてくれ。
0487名前は開発中のものです。02/05/22 16:22ID:wmr.hUOI
ネット対戦ゲームつくりたいのですが
いいホームページ知りませんか?
ちなみにVISUALBASICで作ろうとおもいます
04889902/05/22 16:35ID:???
-------風俗の総合商社・MTTどこでも-------

〇デリバリーヘルス〇デートクラブ〇女性専用ホストクラブ〇
〇ハードSM奴隷クラブ〇レズビアン倶楽部〇ホモ・オカマ倶楽部
〇変態痴女と遊ぶ会〇痴漢・覗き趣味の会〇変態同好会・各種!
●楽しく遊べます! 090-8002-8356番
-----------美男・美女会員など多数在籍中-----------
  http://www.mttdocomo.jp/
-----女性アルバイト随時募集・高収入(日払い)月100万円可能-----
-----レズビアン・スタッフ●ホモスタッフ●女性専用ホストスタッフ同募-----
http://www.mttdocomo.jp/
------------------------------------------------
0489名前は開発中のものです。02/05/22 17:15ID:DJLFFQIk
つーかモーションとモーションをブレンドしてるゲームって少ないと思うけど。
普通キャンセルだろ。
0490名前は開発中のものです。02/05/22 17:46ID:???
>>489
DOA3
0491名前は開発中のものです。02/05/22 19:15ID:???
>>489
今時キャンセルなんてやってるのは時代遅れのメーカーぐらい。
0492名前は開発中のものです。02/05/22 23:37ID:???
GCマリオはキャンセルだったかな
0493名前は開発中のものです。02/05/23 14:44ID:???
ブレンドすると現実的にはありえない動きをしてしまう罠
0494名前は開発中のものです。02/05/23 16:55ID:???
ブレンドしなくても現実的にはあり得ない動きをしてしまう罠。
0495名前は開発中のものです。02/05/23 18:38ID:???
キャンセルした方が良いケースと補間した方が良いケースがある。
mouchottoatamatukaouze
0496名前は開発中のものです。02/05/23 20:02ID:???
基本的にすべての動作は補完で繋ぐべき
不自然になっちゃうなら補完式を考え直すべき
0497sage02/05/23 22:57ID:FUqKSSOQ
現実と照らし合わせれば。
補間もキャンセルとごまかすための手法の一種にすぎないのだが。
だから、どちらが優れているなどないと思われ。
case by case。
一つのことに凝り固まるのは、頭悪いぜ。
0498名前は開発中のものです。02/05/23 22:58ID:???
名前をsageちまった。
俺が頭悪かったようです。
逝ってきます。
0499名前は開発中のものです。02/05/23 23:06ID:???
>>497 FUCK aSS
0500名前は開発中のものです。02/05/24 00:29ID:???
>>497
あんまり、本当の事を言うと話が止まるので
わかっていてもしらんぷりしとけよ(ワラ
0501名前は開発中のものです。02/05/24 01:21ID:???
トルネコみたいなダンジョンではなく、女神転生シリーズに近い
通路ばかりのダンジョンをランダムで生成したいのですが、
唯一見つかったアルゴリズムでは綺麗なダンジョンが作れませんでした。
トンネルを掘るようにしてダンジョンを作るアルゴリズムを使うと
綺麗なダンジョンが作れる、と読んだのですが、参考になる
情報などがありましたら教えていただけないでしょうか?
よろしくお願いします。
0502名前は開発中のものです。02/05/24 01:54ID:???
http://members.tripod.co.jp/karai/
このページ見た?なんか凄そうだけど。
色々なパターンが紹介されているみたいだし。
0503416(HSP) ◆HoSW/FCI02/05/24 03:53ID:btbuBamk
>>501
 0が通路で1が壁だとすると、まず、n×mの広さを1で全部埋めます。一番外側だけ0にすると範囲チェックしなくて済むから楽かも。
 で、親座標と子座標を用意して、親は左上から右下まで2ステップずつ捜査させます。子は親からランダムに4方向を選んで移動するわけですが、これも2ステップずつ移動させます。子の移動先が壁だったら掘って、またランダムに移動。
 移動予定先が全部通路で選択肢が無い場合は、子の移動は終了して、親を1つ進めます。
そしてまたその親座標から子を移動させて動けなくなるまで掘っていく。これを最後まで繰り返すと解が1つだけの迷路ができます。

 同様の方法で2つの接しない壁を作っていくという方法もありますが、上記のほうがシンプルかも。
0504416(HSP) ◆HoSW/FCI02/05/24 04:06ID:???
 上記の方法を発展させ、矩形を用いて自由な角度に掘り進んでいく方法も。
 すでに掘った場所には移動しない、という判定自体は同じです。この場合の分岐方法は、掘り進んでいく過程で分岐点を複数置いていく(記憶していく)ことになります。
 記憶しないで矩形の範囲単位で掘れるだけ掘るという方法もありますが、洞窟っぽくはならないでしょう。また、掘っていく過程で矩形の大きさを変えれば、より自然の洞窟に近い迷路ができます。
0505名前は開発中のものです。02/05/24 06:13ID:???
>>502
アルゴリズムを作れそうにはないけど
パズル的に楽しませていただきました。

>>503
そのアルゴリズムをベースに作ってみようかと思います。
ありがとうございました。
0506名前は開発中のものです。02/05/24 06:23ID:???
完全ランダムで無くて良いのなら n x n のサイズの小さい迷路を
いくつか作っておいて、つながるように並べるのもあり
0507やさしい02/05/27 01:43ID:???
板で協力してゲームを作ろうと思ったので
プログラマを募集してます
われこそはと思うつわものは覗いてください

http://ex.2ch.net/test/read.cgi/shar/1022428219/
0508名前は開発中のものです。02/05/27 22:56ID:???
 
0509名前は開発中のものです。02/06/25 01:31ID:???
sage
0510オhル艦長02/06/25 14:18ID:J1CGzihY
緊急浮上
0511名前は開発中のものです。02/07/24 12:32ID:???
VBで敵を誘導させて全滅させればクリア、というゲームを作っています。
敵の番になったら、自分のいるマスにむかって1歩(1マス)近づく、
という感じにしたいのですが、ちょっとなやんでいます。

敵のキャラと自分のキャラの座標を比較して、
敵のx座標が自分のx座標より大きければ1マス分増やす、
y座標が自分のy座標より小さければ1マス分減らす、というかんじです。

ifやSelect Case の入れ子でやってみたんですが、
行がながーくなってしまって、
どうもこれでは上手いやり方ではないような気がします。

もっと効率の良い考え方がありましたら教えていただければと思います。
説明がへたですみません。。
051251102/07/24 12:49ID:Ml.IF7uc
あげてみたり。。。。
0513名前は開発中のものです。02/07/24 12:54ID:???
>>511
どうして長くなったのかわかんないけど、行がなが〜くなったらそれぞれの処理を分割するしかないのでは?
ifの条件文が長い場合はあらかじめ比較するモノを変数に入れておくとか。
if〜endifはつかってるよね?

手法としては、移動する処理自体を1つの関数にしておいて後から高速化するのが望ましいかも。
とりあえず遅くてもゲーム自体はできるから。
0514名前は開発中のものです。02/07/24 12:56ID:???
>>511
>敵のx座標が自分のx座標より大きければ1マス分増やす、
>y座標が自分のy座標より小さければ1マス分減らす、というかんじです。

敵のx座標が自分のx座標より小さい場合や
y座標が自分のy座標より大きい場合は考えなくていいのか

俺ならとりあえず移動処理をブラックボックスにしてほっとく
あとからいくらでも高速化できる(かもしれない)からな。
0515名前は開発中のものです。02/07/24 13:08ID:???
>>511
このスレどうよ
http://game.2ch.net/test/read.cgi/gamedev/1024902432/l50
051651102/07/24 13:22ID:Ml.IF7uc
レスありがとうございます。
>ifの条件文が長い場合はあらかじめ比較するモノを変数に入れておくとか。
んと、とりあえずこんな感じにしてみたんです。
select case Npc.x(敵のx座標)
case is > Player.x(自分のx座標)
  if Npc.Y < player.Y then
Npc.X = Npc.X - 32(32はひとますぶんです)
Npc.Y = Npc.Y + 32
endif
...こんなかんじで、敵のいる位置のパターンが8こ(斜め4個に上下左右)
もあるんで、どんどん入れ子じょうたいになってしまって。。。

>移動する処理自体を1つの関数にしておいて後から高速化するのが望ましいかも。
ふむふむ。上記の移動の処理をMoveNpc というPublic Subにしているんですが、
そのなかに自作の関数をいれるということでしょうか?

>敵のx座標が自分のx座標より小さい場合や
y座標が自分のy座標より大きい場合は考えなくていいのか

そうなんです!パターンのぶんだけif −endif 文がふえてしまって
ながくなっちゃってるんですよね。これをもっとどうにかして
みじかくならないかなあと。。。

>俺ならとりあえず移動処理をブラックボックスにしてほっとく
ふむふむ、さきにほかのところを完成させちゃえー、ということですね。
たしかに、、、ほかにも考えなきゃいけないとこがいっぱいあるんで
そっちもがんばりたいとおもいます。
051751102/07/24 14:00ID:Ml.IF7uc
ここに書かせてもらってレスを拝見したおかげで、
ぱにくってた頭が少しすっきりしたみたいです。
移動処理のとこの致命的なミスを発見し、うまくなおせました!
(行の長さは相変わらずながくなっちゃいましたが)
今は敵が死んだときの処理をがんばってます。
0518名前は開発中のものです。02/07/24 17:42ID:???
>>516
> そうなんです!パターンのぶんだけif −endif 文がふえてしまって

if 敵のx座標 < 自分のx座標 then 敵のx座標を増やす
if 敵のx座標 > 自分のx座標 then 敵のx座標を減らす
if 敵のy座標 < 自分のy座標 then 敵のy座標を増やす
if 敵のy座標 > 自分のy座標 then 敵のy座標を減らす

コレだけで済むと思うんだが。

ちなみに、
> Npc.X = Npc.X - 32(32はひとますぶんです)
今の状態では右へ1キャラ分移動するのに32を加えていると思うけど、
これはそういう風にするんじゃなくて、将棋の「マス」みたいに管理すべき。
そしてグラフィックを表示するときにx座標とy座標を32倍すればいい。
051951102/07/24 19:40ID:Ml.IF7uc
レスありがとうございます、書きこみ遅くなってすみません。
>>518
>今の状態では右へ1キャラ分移動するのに32を加えていると思うけど、
>これはそういう風にするんじゃなくて、将棋の「マス」みたいに管理すべき。
>そしてグラフィックを表示するときにx座標とy座標を32倍すればいい。

おお!ということは、移動処理のほうでNpc.X = Npc.X+1にして、線画処理で
BitBlt FrmMain.PicMain.hDC, Npc.X * 32, Npc.Y * 32, 32, 32, FrmMain.PicChara.hDC, 0, 32, vbSrcPaint
てなかんじでいいのでしょうか?
この方がのちのち管理もしやすそうですね。

今までは1個1個のマス目の番号を割り出すときに
intBlockNo = (8 * (Chara.Y / 32)) + (Chara.X / 32)
ってやってたんですが、この方法ならいちいち32で割らずにすむので
かなりすっきりできますね!!!
これからさっそくかきなおします。
0520名前は開発中のものです。02/07/25 01:52ID:???
>>516
absとsgn関数をうまく使え

if abs(敵のx座標-自分のx座標) < 1 then 敵のx座標にsgn(敵のx座標-自分のx座標)を加える
Y座標についても同じ
052151102/07/25 02:23ID:VlAcWhO2
レスありがとうございます。
>>520
>absとsgn関数をうまく使え

今 abs関数とsgn 関数調べてきました!
絶対値、、、中学のときに習ったような、、自分の不勉強さに身がちぢこまります。
理解できてないままソースにコピペではあまりにも恥ずかしいので
いまから紙にかいて考えてみます。

あれれ?と思うようなとこはたくさん有りますが
ゲームのおおまかなソースが書きあがったので、
明日は他の部分ももっと効率的な書きかたができないか考えてみます。
0522名前は開発中のものです。02/07/25 12:19ID:???
>>521
お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?と
小一時間(以下略

慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
とマジレスもしてみるテスト
0523チューニングなんて後から02/07/25 12:51ID:???
とりあえず作りかける

ちょっと効率のいいアルゴリズム発見

それにあわせて書き直す

さらに効率のいいアルゴリズム発見

それにあわせて書き直す

さらに効率のいいアルゴリズム発見


052451102/07/25 21:22ID:???
レスありがとうございます。激しく反省中の511です。
>>522
>お前は効率的な書き方をマスターしたいのかゲームを完成させたいのかどちらだ?
ゲーム完成させたいです!

>慣れないうちはきっちり動くものを作り上げてから速度&効率のチューニングをやれYO!
そうですね、まだ直さなきゃ行けないとこがいぱーいあるのに
綺麗なソースをかきたいなんて100年早かったです。。反省。。。

>>523
うう、完成しないままループしてしまいますね。。。。。
きっちりさいごまで仕上げることに専念します。

今日は移動用の選択カーソルの不具合をなおします。
0525名前は開発中のものです。02/07/25 22:06ID:???
>>524
報告ならここにしろ
■自主製作ゲーム:開発状況報告スレ■
http://game.2ch.net/test/read.cgi/gamedev/1005143186/l50
0526西村トオル、ナイスですね〜02/07/26 20:35ID:???
今、DirectX8で3Dのゲーム作っています。
カメラアングルは、女優(対象)を後ろから捉えています。
そこで質問なんですが、
イベント中とかにゲームの動きを止めて
カメラだけを動かして女優(対象)を舐め回すように撮影したいんですが、
(取り合えず、女優を中心に球を想定して、常に女優の方を捉えつつ
その球面上をカメラが移動って方向で)
何か良いカメラの動きのアルゴリズムとか知りませんか?
やはり、監督自身(自分で)動く軌跡(座標)を切ってやらないといけませんかね?
0527名前は開発中のものです。02/07/26 22:27ID:???
>>526
ベジェ曲線みたいにすりゃいいんじゃない?
0528名前は開発中のものです。02/07/28 03:47ID:???
>>511
検証もせずに、他人のコード採用してたら、それこそあぼーんだよ。
解決案が必要なのに、エゴに凝り固まって、他人のソース見ることも出来ないのは、もっと重傷だけどね。
まあ、ゲームに関して言えば、コーディング技術云々より、ゲーム全体としてのデザインの方が重要だから、
そんな小さなことにこだわるな、というのが正解かもね。
0529名前は開発中のものです。02/08/15 17:23ID:???
>>528
んなこたーない
0530名前は開発中のものです。02/09/15 11:53ID:???
おまいらは、リソースの管理はどうしてますか?
基底クラスを書いて、音や絵やその他のデータなんかも
まとめて管理してるんでしょうか?
0531名前は開発中のものです。02/09/15 19:09ID:???
>>530
PCの話で良い?

データのI/Oはインタフェースに肉付けしてく形で作ってる。
具象クラス側で生ファイル、圧縮ファイル、ネットワーク、リソース、
各I/O方法にあわせる事が出来るし、プロトタイプ作ってる途中は
生ファイルI/Oだけあればよいし。
053253002/09/17 02:30ID:???
>>531
私も同じようなもんですが、ネットワークは別にしてました。
参考になりました。
0533名前は開発中のものです。02/09/19 05:00ID:N2qPvY6Q
スプライトを管理するクラスが作れません。C++ です。

今は、各々のキャラクタのクラスがサーフェスやアニメーションの情報も持っていて、
なんとなく不細工な感じがするので、見た目の情報を切り分ける事にしたんですが、
それを一元管理するクラスの設計が出来ません。

今動いてる物をいじるんだから、それなりに便利にしようと思い、
確保したサーフェスやアニメーションの情報や、今表示中のスプライトの情報を、
管理クラスの寿命と共に廃棄できるようにしようとしたり、
サーフェスやアニメーションの情報を削除しても、それをまだ使用してるスプライトがあったら、
そのスプライトが削除される時までは、保持されるような物を作ろうとしました。

けれど、実装してもうまくいかないし、
整理しようと紙に書いていても、頭が混乱してきました。

みなさんは、こんな場合にはどう設計されていましたか?
053453302/09/19 05:03ID:???
sage 忘れてました。
すみません。
0535名前は開発中のものです。02/09/19 05:10ID:???
普通にリファレンスカウンタ使う
0536名前は開発中のものです。02/09/19 05:14ID:???
俺の場合

◆オブジェクトクラス
スプライトへのポインタ(場合によってはテーブル)
各種パラメータ
_______

◆スプライトクラス
対象サーフェスへのポインタ
サーフェス上のRECT
現在位置
アニメーションありの場合RECTのテーブル
_______

◆サーフェースクラス
サーフェス実体
スプライトからの参照カウント

という風に階層分けをしてうまく作った。
053753602/09/19 05:18ID:???
場合によっては、

スプライトクラスを

◆スプライトクラス
現在位置
スプライト定義クラスへのポインタ
表示しているRECTのindex

◆スプライト定義クラス
対象サーフェスへのポインタ
RECTのテーブル

と分ける。
0538名前は開発中のものです。02/09/19 05:18ID:???
キャラをオブジェクトと見立ててそれぞれで画像を管理するとめちゃくちゃにならない?
私がやったときは、各キャラのデータを保持するクラスを作って
それとは別に「キャラのデータを元に画面を組み立てる」関数を作った。

ハードコーディングでキャラの外見を決める場当たり的な方法だけど、
小規模なら混乱を最小限に防げてプラクティカルだよ。
0539名前は開発中のものです。02/09/19 05:35ID:???
スプライトをリファレンスカウンタで管理するってどうよ。
シーン構築時に必要な物をすべて読み込んで、
終了時にまとめて削除する方が速いしスマートじゃね?
054053302/09/19 05:42ID:???
>>535-536
早朝からありがとうございます。

リファレンスカウンタは、調べていてる時に見つけて
>>536 さんのような感じにしていたんですが、
管理するクラスと、それに管理されるクラスとの関係を
上手くまとめられませんでした。

ゲーム開始前の時点で、管理クラスにサーフェスやアニメーションなんかの
描画に関係する物を登録して、終わった時には、使っていたほうは意識せずに、
管理クラスが、自動的に廃棄してくれるようにしようとしたんですが、
>>533 で書いたように、混乱して終わりました。

ここらへんの管理クラス回りの設計を質問したかったんですが、
文章が長い上に要点がボケてました。すみません。
054153302/09/19 06:08ID:???
>>540 を書き込む前に、その間の書き込みを確認してませんでした。

>>537
そうやって定義を分けておくと、同じ種類のキャラクタのスプライトで使いまわせますね。
参考になりました。

>>538
>「キャラのデータを元に画面を組み立てる」関数
が私が最初にとっていた方法だと思います。
その場合のキャラのデータとは、見た目やゲーム内での状態を一つにまとめて
表してる物の事ですよね?
違ってたら、すみません。

>>539
> シーン構築時に必要な物をすべて読み込んで、
> 終了時にまとめて削除する方が速いしスマートじゃね?
そうしたかったんですが、このへんが、よくわからなかったところなんです。
必要な物を管理するクラスの設計を、触りだけでも解説していただけませんか?
0542名前は開発中のものです。02/09/19 12:33ID:???
>>539
読み込み失敗時のエラー処理が繁雑になるから、ゲーム開始時点で
まとめて読んでしまった方が良いかも。データ量にも依るけど。
0543名前は開発中のものです。02/09/19 15:44ID:0CTGoUX3
vertex-shaderってなんですか?
0544名前は開発中のものです。02/09/19 15:57ID:???
vertex-shader(頂点シェーダ)ってのは、
トランスフォームやライティングやテクスチャやブレンディングなどの頂点処理機能のこと。

プログラマブル頂点シェーダは、いままで処理系(Direct3Dなど)の
固定機能のみであったのに対して、これらの機能をプログラムできるってやつ。
0545名前は開発中のものです。02/09/19 16:04ID:39QNxA7D
http://muvc.net/jsweb/happy_solution.html
054654302/09/19 16:38ID:???
>>544
サンクス。
禿しくわかりました。
オレイデス(・∀・)つ旦~
0547名前は開発中のものです。02/09/20 02:00ID:???
>>545
イイ!
0548名前は開発中のものです。02/09/20 04:38ID:???
ここはひどいインターネットでしたね
0549名前は開発中のものです。02/09/22 18:44ID:lBYio+jt
画角を、視点からの距離に応じて自然に変化させる事はできますか?
普通の人間に近い画角を設定すると、至近距離での物の見え方が
おかしいように感じます。
0550名前は開発中のものです。02/09/22 19:54ID:???
その問題は随分昔から色々言われてきて、
今のところ現実的な解決方法が見つかってないと思う。
至近距離のものは、目には歪んで見えているのに真っ直ぐのものを
真っ直ぐと認識できる。これは脳みそが補正しているからです。

至近のものをなんとかして正しくゆがめて表示すると、
それはそれで不自然に感じるはず。
なぜなら、脳が補正しないから。
0551名前は開発中のものです。02/09/22 19:57ID:???
もー少し書くと、
最大の問題は、目からディスプレイまでの距離が離れているから、
自然な映像は目からディスプレイよりも近い映像を表示し得ない
のです。

ヘッドマウント式のディスプレイであれば、
正しくゆがめるとちゃんと認識できると思う。
0552名前は開発中のものです。02/09/22 22:18ID:???
>>551
HMDは焦点距離を1mくらいに設定してるので、
結局うまく認識できないと思う。
0553名前は開発中のものです。02/09/22 22:28ID:???
それは16Bitでの単色のグラデーションが汚いことより重大な問題なのか?
0554名前は開発中のものです。02/09/22 22:52ID:???
Virtual Realityとしては結構な問題。
グラデーションはbit数を上げれば解決するけど。
0555名前は開発中のものです。02/09/23 00:45ID:ThYVC2el
dxfフォーマットの詳しい解説ページ教えて下さい
本は絶版みたいだし、お願いします
0556名前は開発中のものです。02/09/23 01:03ID:v6pFfVCj
>>555
やめとけ。検索すればすぐでると思うが、情報がいい加減でひどい
フォーマットってうわさだ。何に使うん?
0557名前は開発中のものです。02/09/23 01:11ID:???
ちょっと調べたが酷いもんだったなあ
3D拡張もあるらしいが
■ このスレッドは過去ログ倉庫に格納されています