トップページgamedev
392コメント151KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。02/11/04 20:41ID:a1Mhmm8N
ゲームプログラミング全般の質問スレッド。
扱う話題のダイナミックレンジはやや広め。包容力高め。
他の初心者質問スレとの棲み分けを探りつつ
これからもマターリと活用しておくれ。
 
■前スレ
【Part4】http://game.2ch.net/test/read.cgi/gamedev/1005040025/
■旧スレ(プログラム技術板)
【Part1】http://piza.2ch.net/tech/kako/969/969984472.html
【Part2】http://pc.2ch.net/tech/kako/985/985540361.html
【Part3】http://pc.2ch.net/tech/kako/1002/10028/1002894129.html
■関連スレなど
>>2-5
0083名前は開発中のものです。02/12/25 21:43ID:ocB35uV6
とりあえず>>82をやったあとは、
マップ上にキャラクターの絵を置いて、キーボード操作によって
キャラの位置を動かすのをやってみるといいかも。
習作としてはシューティングが最適だったりするんだよね。
重力の概念とか考えなくていいし。
0084名前は開発中のものです。02/12/25 21:45ID:C+V8gp8b
>>81
どんな教科書だ?
00858102/12/25 21:59ID:RXUO2PKH
なるほど、シューティングか。
サラマンダみたいなやつの背景をうごかせるようになればいいのか。
CとDirectX、どっちが関数使いやすいですかねぇ。

>>84
C言語の本で確か「初めてのC」って名前でした。
0086あぼーんNGNG
あぼーん
0087名前は開発中のものです。02/12/25 22:06ID:Kq2zu9Np
>85
CでDirectXを操作するのだよ。DirectXは言語じゃない。
0088名前は開発中のものです。02/12/25 22:09ID:qyObx7qF
>87
うむ。

っつか素の ANSI C だとグラフィック関係を制御するライブラリ関数ないし。
0089名前は開発中のものです。02/12/25 22:13ID:Kq2zu9Np
言葉足らずだった。DirectXは慣れないと画面がパー、要再起動だから
C言語の関数でやってみてからDirectXに移行した方がいい。
グラフィックを扱う部分は大した量じゃないから後ですぐ移行出来る。
00908502/12/25 22:15ID:RXUO2PKH
なるほふぉ。
勘違いしてました。

今手元にあるヴィジュアルCはグラフィック関係を制御できますか?
0091名前は開発中のものです。02/12/25 22:26ID:Kq2zu9Np
http://www.sun-inet.or.jp/%7Eyaneurao/
VC持ってるんならここのスクリプトを使えばいい。
ここの講座もためになる。
0092名前は開発中のものです。02/12/25 22:40ID:qyObx7qF
>>89
> C言語の関数でやってみてからDirectXに移行した方がいい。
要らぬ誤解を招かぬように「まずは Win32 API (GDI)」とでも言っておいた方が
良いと思われ。

標準 C ライブラリ関数には GUI 関係は全く既定ないから。(それどころか CUI
のスクリーン制御さえ既定ないわけだが)

> 今手元にあるヴィジュアルCはグラフィック関係を制御できますか?
もちろん。

Win32 API でプログラム組みたいなら、「プログラミング Windows」って本がバイ
ブル。分厚い本だが、懇切丁寧に書いてあるから読むのは難しくない。
0093名前は開発中のものです。02/12/26 03:31ID:sowo2pdC
>>92 APIについて
Windows95 APIバイブル1も一冊あるとかなり便利。
ただ、ヘルプを読んでれば十分という話も。
0094あぼーんNGNG
あぼーん
0095名前は開発中のものです。02/12/26 11:15ID:9T0jKzma
VC++をC++とは違う言語と思ってる人もたまに見かけるよね。
VC++ == MFC みたいな
0096名前は開発中のものです。02/12/26 12:11ID:FD9iJ3tp
VC++は製品名
C++は言語
0097名前は開発中のものです。02/12/26 12:12ID:LkNUpvkb
言語仕様的には標準のC++とVCのC++はかなり異なる
0098名前は開発中のものです。02/12/26 13:16ID:u+QTkfIN
g++も標準C++からかけ離れすぎ
0099あぼーんNGNG
あぼーん
01009002/12/26 19:37ID:kDKABYvS
くじけそうです。
VC++の使い方が分かりません。
0101名前は開発中のものです。02/12/26 21:26ID:KKaDaCig
なにがやりたくてなにがやれないのか説明しる
0102名前は開発中のものです。02/12/26 21:29ID:bqU4KP+U
>98
拡張機能多いからな。インラインアセンブラ, typeof, 可変引数を使える #define と
か便利。

話が変わるが、頂点ブレンディング。剛体変換を行う複数の行列 M1, M2, ... と、
頂点毎に重み w1, w2, ... を用意して

 M = Σwi * Mi (ただし Σwi = 1)

で出した M を使うってのは分かるんだが、当然この M って剛体変換じゃない
よね。

頂点変換は良いとして、法線ベクトルの計算をどうしたものかと思ってるんだが、

o 法線ベクトルの算出も M を使う。
o ただし法線と M の積を求めた後で、出てきたベクトルをノルムが 1 になるよう
 に正規化する。

で良いのかね。
010310002/12/26 22:09ID:kDKABYvS
ソースをC++で打っていいのか分からなくて困ってます。

まずはVC++の使い方から調べます。
0104名前は開発中のものです。02/12/26 23:04ID:hDb5j8vT
ソースはテキストエディタで討ってくダサい
010510302/12/26 23:14ID:kDKABYvS
あ、ちょっと説明が悪かったです。
VC++を立ち上げて新規作成を選んでファイルのところに
C++ソースファイル
HTMLページ
SQLスクリプトファイル
とか色々あるのでどうすれば良いのか分からなくなってます。
0106名前は開発中のものです。02/12/26 23:31ID:u+QTkfIN
>>105
ヘルプに「チュートリアル」があるので、
まずはそれを一通りやってください。
0107名前は開発中のものです。02/12/26 23:50ID:5pSEx7R5
本を買ってきてください。
VCの本を買えばプロジェクトの作り方から実行方法までは迷うことはないです。
その金も惜しむなら、検索エンジンで
猫でもわかるプログラミング
で検索をかけてください。
0108名前は開発中のものです。02/12/27 03:00ID:8wDhiAR8
>>105
君はここじゃなくてプログラム板の初心者質問スレッドで
聞いたほうがいいよ。
0109あぼーんNGNG
あぼーん
011010502/12/27 10:18ID:CvRh/hw0
ありがとうございます。
がんばります。
0111名前は開発中のものです。02/12/27 10:19ID:3lURIe+n
RPGを作っているのですが、
「素人は数値や文章を打ち込む事をプログラムだと勘違いしている」
「数値や文章なんて、プログラムと切り離してエクセル等でササーっと打ち込めば済む事」
といった類の事を耳にしました。
テキストエディタのマクロを使う事くらいしか思いつかず、
どういやって切り離すのかまったくイメージ出来ません。教えてください。

あと、「そんな事はスクリプトを組んでスクリプトにやらせるべきで、逐一書くのなんて作業効率悪すぎ」
なんて事もどこかで読みましたが、ここで言うスクリプトって言うのは関数の事で合っていますか?
0112名前は開発中のものです。02/12/27 10:27ID:USn1psUA
> スクリプトって言うのは関数の事で合っていますか?
いいえ。
0113名前は開発中のものです。02/12/27 12:00ID:njWlRsrn
>>64
遅レスだけど、
>if ( (mx<ex+exa)&&(mx+mxa>ex)&&(my<ey+eya)&&(my+mya>ey) )
こーやったほうが処理が稼げると思ふ。。。
if( mx > ex+exa ) goto HIT_CHECK_END;
if( mx+mxa < ex ) goto HIT_CHECK_END;
if( my > ey+eya ) goto HIT_CHECK_END;
if( my+mya < ey ) goto HIT_CHECK_END;
// 当たったヨ
アボーン;
HIT_CHECK_END:
// 当たらなかったヨ
ヤレヤレ;
0114名前は開発中のものです。02/12/27 12:38ID:lBLepIDx
>> 113
コンパイルかけたら同じ出力になると思う。
0115あぼーんNGNG
あぼーん
0116名前は開発中のものです。02/12/27 14:55ID:V5zq1+E8
>>112
即レスありがとうございます。用語辞典読んでも実感が沸かない。

スクリプト==サクラエディタで言う所のマクロだと理解していいんですか?(秀丸マクロとか)

「そんな事はスクリプトを組んでスクリプトにやらせるべきで、逐一書くのなんて作業効率悪すぎ」って言うのは、

せんし・300/150/150/50
ぶとうか・200/160/70/150
ゆうしゃ・2500/140/140/140
と打ち込んだテキストをスクリプトにかけてCの書式にする方が、
逐一ステータスをCで記述して行くよりも圧倒的に速い。って事ですか?
0117あぼーんNGNG
あぼーん
0118名前は開発中のものです。02/12/27 19:33ID:USn1psUA
>116
そんな感じ。

ただし実際には素の C まで落とさずに、中間言語に落として、プログラム側では
中間言語を解釈するインタプリタを用意することが多い。こうすると、パラメタやら
イベント処理を変えても再コンパイル不要になるからプログラマの手間・データを
変更してから実際に動かして試すまでのタイムラグが減る。
0119名前は開発中のものです。02/12/27 23:28ID:1/oKDJhP
あんたらが 何話してんのか さっぱりだ
 オレが悲しい 年末2ちゃん
当方C++歴5年、DirectX歴1年、4月から新人プログラマ
がっくり。
0120名前は開発中のものです。02/12/28 01:08ID:w/8XZg/Y
うんうん。イベントコントロール関係はスクリプトコンパイラ(独自)で
バイナリを吐いて、それを解釈しつつ実行というのが多いと思う。
UCSD PASCALみたいな感じか。
0121あぼーんNGNG
あぼーん
0122名前は開発中のものです。02/12/28 16:40ID:XAkUMvyT
質問させていただきます。
私は最近Cをはじめた者です。一つ疑問があります。
アプリケーションなどを開発するのと
ゲームを開発するのは、まったく同じものと考えてよろしいのでしょうか?
使用する言語が同じだとしましても、アプリとゲームを開発するのでは、
何か違いがあるのでしょうか?最近非常に悩んでおります。
専門学校などでも、アプリ開発の学科もあれば、「ゲームプログラム学科」
というのもありますし、何か違いがあるのかと思いまして質問させて
頂きました。よろしくお願いいたします。
0123名前は開発中のものです。02/12/28 16:55ID:6+UzED5V
>>122
違いは無い。
012412202/12/28 16:58ID:XAkUMvyT
>>123さん
ありがとうございます!
コレで悩みが全て飛びました。
気がねなく勉強できます。ありがとうございました!!
0125名無しは開発中02/12/28 17:36ID:6v0StEIP
中間言語というのはバイナリなのですよ。つまり
0102aabb...とかいう16進数なのです
プログラム中では定数をあてはめます。

#define command_1 0x01
#define command_2 0x02
.....

command_kaiseki(int no){
switch(no){
case command_1:
1の処理
     break;
case command_2:
2の処理
......
  }
}





0126名前は開発中のものです。02/12/28 17:45ID:9/qiHtyl
スクリプト言語作るにあたって、
yaccやlexを使えるようにしておくと楽でいいかもね。

あと、参考スレ
http://game.2ch.net/test/read.cgi/gamedev/1005114698/
0127名前は開発中のものです。02/12/28 21:35ID:a5KU/+oB
野球拳を作りたいのですが何を使えばいいと思いますか?
0128名前は開発中のものです。02/12/28 21:43ID:LbjIcZ3v
登場人物には女の子を使えばいいと思うよ
0129名前は開発中のものです。02/12/28 22:26ID:Q6tgt9eh
>>128
男の子もキボーン (笑)
0130名前は開発中のものです。02/12/28 23:56ID:/o2fnhX+
野球拳ってどんな拳法ですか?
0131あぼーんNGNG
あぼーん
0132名前は開発中のものです。02/12/30 13:32ID:KFhb8kwQ
>>123
大きく人生を狂わせるような発言では?
0133名前は開発中のものです。02/12/30 13:48ID:c0Wr5svx
プログラムを学校で習おうとする時点で人生が狂っている
0134名前は開発中のものです。02/12/30 23:20ID:9kumBzua
プログラミングの知識がある方、興味を持たれた方、
ロックマン知らなくてもどんな人でもいいので少しでも手助けを

脳内ロックマンを作るスレ
http://choco.2ch.net/test/read.cgi/nanmin/1033731222
0135あぼーんNGNG
あぼーん
0136名前は開発中のものです。03/01/04 14:14ID:Oaz/Glfr
あのさ、今シューティング作ってるんだけどさ。
敵の出現場所を定義するのがすごい面倒なんですよ。

ファイルに、敵が現れる時間、場所、種類などを書いて、それを読み込ませて
るんだけど、ちょっと間に敵を追加したいと思ったら、それ以降の敵の時間を
全部ずらさなければいけなくなります。

みなさんはどんなフォーマット使っていますか?
0137名前は開発中のものです。03/01/04 14:18ID:RYWMO7ZD
XMLみたいなmachine/human readableなフォーマットにして、
適切なツールを作るのが賢明じゃないかなあ。
0138名前は開発中のものです。03/01/04 14:19ID:Pe6gSFnI
>>136
直前の敵との相対時間
0139名前は開発中のものです。03/01/04 14:36ID:Oaz/Glfr
う〜ん。
相対時間ならそれはそれで、面倒になることはないかな…
一応やってみますか。
0140あぼーんNGNG
あぼーん
0141名前は開発中のものです。03/01/04 14:41ID:Siq0Vq2w
2人で戦えるゲームを作ろうと思うのですが、二人が同時にボタンを押したら同時に処理しないといけないのでしょうか?
これだとペンティアム4のハイパースレッド機能という奴を使わないといけないのでしょうか?
最近PCをX68000からWindowsXPに変えたばかりなのでよろしくお願いします。
0142あぼーんNGNG
あぼーん
0143名前は開発中のものです。03/01/04 14:59ID:RYWMO7ZD
>>141
mainloop()
{
 一人目のキー処理();
 二人目のキー処理();
 時間を進める();
 描画();
}

>PCをX68000からWindowsXPに変えたばかり

ナントカ山口に騙されてたクチか?
0144名前は開発中のものです。03/01/04 15:02ID:HHCJx2gu
>>141
まぁマルチスレッドで処理するという手もあるが、見たところゲーム製作は
初心者(失礼)っぽいので、擬似タスクから勉強したほうが良いと思うよ。

参考URL
http://www.hh.iij4u.or.jp/~peto/Games/games_top.html
0145あぼーんNGNG
あぼーん
0146名前は開発中のものです。03/01/04 19:09ID:b7FiLgbb
>>144
キー入力の処理とそれとは、まったく関係ないが…
0147名前は開発中のものです。03/01/04 19:19ID:b7FiLgbb
>>136
手を抜きたければ配列ってのもあり。

static unsigned int enemys[] = {
1, 0, 0, 0, 0, 0, 1, // 0 frame目
0, 0, 0, 1, 0, 0, 2, // 60 frame目
0, 0, 0, 0, 0, 0, 2, // 120 frame目
..
};

1 行 60 frame 単位で処理して、出現座標の x 座標に対応したところに
敵出現情報を埋めておく。0 で敵なし, 1, 2, 3, .. が敵の種類とかさ。

少し凝った処理が必要(たとえば 30frame で出したい)とかになったら、
上位 24bit をパラメタとして敵出現関数に渡して、そっちで細かい処理
をさせる。
0148名前は開発中のものです。03/01/04 19:25ID:Sa70MEqM
>>146
キー入力とは関係ないが、
> これだとペンティアム4のハイパースレッド機能という奴を使わないといけないのでしょうか?
こんなことを言ってる様だと、擬似タスクの勉強からはじめろって言いたくなる
気持ちもわかるだろ。
それじゃあーハイパースレッド機能のないX68000では二人用のゲームは
作れないのか?と問いたくなるけど(w

>>141 はキー入力のことは一旦置いといて、ゲーム制作の基本中の基本を
解説しているサイトを検索して読み漁った方がいいかと思うけどね。
0149あぼーんNGNG
あぼーん
0150名前は開発中のものです。03/01/04 20:57ID:iAU/RP0w
そこで疑似タスクなんてチンケな物出してくる君の実力もそこまで。
ゲームのメインループとキー入力の関係を教えた方が百倍為になる。
0151名前は開発中のものです。03/01/04 21:19ID:tSU5Xw8/
入出力は、本気で考えると意外と深いぞ。

昔のようなハードウェアを 1 つのプログラムで占有できる環境なら
ポーリングさせれば良いんだが、今時の環境についてマジに理解しよ
うとすると、割り込みと OS 側の処理に関する知識が必須になる。

とりあえず「DirectInput では現在のキー入力状態を取得する API
が提供されてるから、それを使えば良い」ぐらいの理解で済ませてお
いて、細かい話は必要になるまで忘れといた方が幸せじゃないかね。

>>141 にちょい追加だが
mainloop()
{
 キーボード入力状態のスナップショットを取得(); // 細かいことは Win32 にお任せ
 一人目のキー処理();
 二人目のキー処理();
 時間を進める();
 描画();
}
0152名前は開発中のものです。03/01/04 21:31ID:mQYZkk6z
俺は151みたいなのが嫌いです。
015314803/01/04 21:41ID:Sa70MEqM
>>150
> ゲームのメインループとキー入力の関係を教えた方が百倍為になる。
ハァ?何それ?・・・って感じですがなにか?

>>151
141のレベルを推測するとそこまで考える必要は全然ないと思われ。
そんなのは逆に知識ひけらかせてるだけにしか見えないが。

そもそも質問にマジレスするとなると、まずほとんどの二人用ゲームで
「同時に処理する必要はないし、厳密にはできない」だな。もちろんこれだけで
141がきちんと理解できるのか疑問だけど、それ以上のことは141自身が
言ってないので答えようがないな。
0154名前は開発中のものです。03/01/04 21:59ID:tSU5Xw8/
> 「同時に処理する必要はないし、厳密にはできない」
そもそも「同時」ってのが何を指してるのか考えないといかんよな。

>>141
現実世界だと時間は連続して流れてるわけだが、ゲームではふつー 1/60 秒なり
何なりの適当な間隔でゲームを進行させる。だから、入力を処理するのも「押し
たらすぐ」ではなくて、押したらそれを覚えておいて、次のゲーム進行のタイミ
ングで処理すれば良い。

…ってのがすべての基本かね。
0155名前は開発中のものです。03/01/04 23:09ID:UD5seDi4
俺みたいなヘタレ高校生がゲーム製作で食っていけるように
なるにはどうしたらいいんだ!?
人生の先輩達よどうか教えておくれ・・・
0156名前は開発中のものです。03/01/04 23:20ID:9YV/5Oa6
>>155
マジレスすると、ゲーム以外のことを沢山勉強すべし。
0157名前は開発中のものです。03/01/05 01:16ID:BX37WwrG
プログラマになりたいなら、プログラミングはやっといた方が良いけど。
あと数学と物理と英語。
0158名前は開発中のものです。03/01/05 02:04ID:Y2P5Wwxz
>>155
ゲーム制作をさせてくれる会社に入りましょう
015914103/01/05 03:22ID:GM2t1dvX
んま!こんなに馬鹿が釣れましたわ!
0160あぼーんNGNG
あぼーん
0161名前は開発中のものです。03/01/05 07:23ID:cPL0Ma17
>>155
プログラマになりたいなら、大学までプログラムは放って置いて
高校までに英語をネエティブ並みに話せる、書ける、読めるようになっておきたい。

俺が。
0162名前は開発中のものです。03/01/05 20:39ID:XJftI3rc
>>161
俺漏れも
0163名前は開発中のものです。03/01/05 21:51ID:+ZilYbBV
英語はプラスアルファに過ぎんから、本業のプログラミングできんと話に
ならんぞ。まぁ、英語も読むぐらいはできないと困るが。
0164名前は開発中のものです。03/01/17 11:54ID:zxXu494p
     ∧_∧
    ( ´∀`)< 糸冬 !!
    /,   つ
  ( ((_(_, )) )
     しし'
0165名前は開発中のものです。03/01/23 12:30ID:B/UbhrUo
age
0166si03/01/29 11:03ID:03M+lMkZ
簡単なゲームのプログラミングぅpしてください。
C言語で希望です。
0167名前は開発中のものです。03/01/29 13:57ID:2TLqok57
ローグ・クローン2 日本語版 ソース
http://www.vector.co.jp/soft/dos/game/se000996.html
0168あぼーんNGNG
あぼーん
0169名前は開発中のものです。03/01/29 21:03ID:SdJpN0Xo
http://www.hh.iij4u.or.jp/~peto/ みながら勉強してるんですが、
ちょっと疑問に思ったので質問させてください

たとえば、飛行機を表すタスクがあって、飛行機が移動しますね。
で、3Dのゲームだとカメラから描画の順番とか決めたりする処理がきて、で、そのあとに描画本体が来ますね。
とうぜん、飛行機の描画処理は飛行機タスク自体がおこなっていると思うのですが、ここで疑問が生じました。

飛行機タスクは、1フレームの中で優先順位が変わるたびにリストの中を移動しているのでしょうか?
それだとリスト中の位置を特定するのにいちいちサーチをしているのでしょうか?

それとも、「飛行機」を表す複数のそれぞれ優先順位の違うタスクで一つの「飛行機」を構成している?
それだとデータをどのように共有しているのでしょうか?

おしえてください。
0170名前は開発中のものです。03/01/29 21:18ID:fBpSUHac
>>169
>飛行機の描画処理は飛行機タスク自体がおこなっていると思うのですが
ダウト
0171名前は開発中のものです。03/01/29 21:26ID:SdJpN0Xo
はぅ。

そいでは、どうやって描画してるのでしょう?
飛行機描画関数に飛行機を渡しているのかな?
0172名前は開発中のものです。03/01/29 21:36ID:SdJpN0Xo
っていうか、聞きたいことずれました。

要するに、

1.タスクはリストの中を移動することがあるのですか?
Yes -> 2 / No -> 3

2.リストの中をどうやって移動するのですか?

3.そしたら(描画をするのが飛行機タスクじゃないにしても)どうやってタスク間で情報を共有していますか?
0173名前は開発中のものです。03/01/29 23:11ID:KEqojg40
タスクは前タスクと後タスクのアドレス情報を持ってるから
移動するとか考える必要ないんじゃない?
あと、タスク間での情報の共有って? 各タスクから共通の関数呼べば済むのでは?
0174名前は開発中のものです。03/01/30 00:37ID:L8+k5MAr
>>171
描画をタスク自身が行うとは考えにくい。
タスクというレベルにまで到達しているなら、
「描画専門タスクに描画を依頼する」
という方式になっていると思う。

描画されるものとしての飛行機と、
アプリ内でのオブジェクトとしての飛行機を、
区別することが肝要だと思う。
0175名前は開発中のものです。03/01/30 02:17ID:BqRtFvdb
>>173
2方向リスト処理ですよね。この場合、私の質問は、STLで書いちゃうと
std::list<task *> tasklist;
tasklist.remove(this);
tasklist.insert(newpoint, this);
の newpoint の位置をどうやってチェックしてるんですか?っていう意味だったのです。
listの先頭から全部なめていくのかなー・・・、それとも別の頭いいやり方があるのかな〜と。

情報の共有というのは、もし飛行機が
struct 飛行機 {
 actor * a1, * a2;
}
で構成されるものだとして、a2 はどうやって a1 の中の変更した情報をチェックするのだろーとか考えてました。
いちいち new 飛行機 とかすると、(速度的な面で)疑似タスク使ってる意味がありませんよね?

>>174
なるほどです。
描画されるものとしての飛行機っていうのは、単純に飛行機のスプライトとか3Dモデルとかでいいですか?
0176名前は開発中のものです。03/01/30 02:20ID:ZJQj5onM
>>171
そのページの概念は処理順が安定している内部処理に絞られた物なので、
描画には向かないです。つーか勝手に用語用法決められても(汗

描画系で言ったら、

フレーム毎に「TCBアドレス+カメラ距離のセット」のリストを作成し、
距離基準にソーティングした後、リストを順になめて描画をする

様な処理が必要です。(実際にはマルチパスレンダやらなにやらで、優先度
の基準は色々追加されていく)
0177名前は開発中のものです。03/01/30 02:26ID:BqRtFvdb
あ、情報共有のところ、修正って言うか追加です。

「飛行機作るときに、a1 に a2 へのポインタかませば良いんじゃないの?」
っていうのは、飛行機を構成する疑似タスクがたくさんになってくると、メモリ領域の中身が
ポインタだけで埋まっちゃう・・・とか思ったので、使わないんじゃないかなとおもいました。
017817103/01/30 03:30ID:BqRtFvdb
>>176 なるほどです。めもめも。

#これで書けたら、うれしなっとプチ
0179デフォルトの名無しさん03/01/30 03:38ID:dIfJNfqd
私は new 飛行機 でやってる人なので、参考になるかわからんけど…

newpointの位置
「ここから先は敵タスク」みたいな目印用のタスクを何個か加えて、
それのポインタをグローバルで持たせてる。
それ使って大雑把にサーチした後に細かく見てる感じでやってるけど… 他に良い方法あるのかな

情報の共有
基本的に、子が親のポインタを持つのみ。
親から子に何かさせたい時は、親が自分のフラグを変えて、子がそれを見に行く。
子同士で何かさせたい時は、子が親のフラグを変えて、他の子がそれを見に行く。

補足
タスクの移動は、タスクを管理している側で操作したほうがいいと思う。
自分で移動するとnextが変わっちゃうので、他タスクがスキップされたり2回処理されてしまう。
情報の共有は、親は自分が参照されているかどうか、調べる必要があるかも。
子が持っているポインタが開放されたタスクを指していることがないように。
0180>>16903/01/30 03:47ID:Lo8nF9w1
3Dの場合、半透明部分は後で描画しないといけないとか、細かい処理があるので、
「3D描画エンジン(仮名)」というような割合高機能なクラス(もしくは関数群)を作って、
それに描画を依頼する形で考えると良いのでは。

1.各物体オブジェクト(タスク)は、「3D描画エンジン」に指定位置での指定3Dモデルの
  描画を依頼する。
2.「3D描画エンジン」は、それらの情報(位置、方向+モデル)を総合してソートなどして
  描画順などを決め、一気に描画する。

つまり、描画順は各物体オブジェクト(タスク)にとっては知ったこっちゃねぇと。
描画エンジンが面倒みてくれるよと。こゆわけです。
だから描画順によってリストを移動などしなくて良いのです。
0181名前は開発中のものです。03/01/30 07:34ID:xfHNFz6r
WM_PAINTで一気に描画するWindowsの基本と一緒だね。
タスクは結局ステートを変更するだけに過ぎない。
018217103/01/30 13:02ID:BqRtFvdb
>>179
>情報の共有
子同士で何かするときのイメージなんだけど、親を掲示板に見なして、
A「なんかすっぜ」
B「おー」

B「おれはやったぜ」

A「そかりょかーい」
B「うぃ」

みたいな感じでいいのかな?

タスクの移動に関して「nextが変わっちゃう」問題は、タスクを取ってきたときに
nextを保存しておくのはダメですか?

>>180
なるほどです。
■ このスレッドは過去ログ倉庫に格納されています