ゲームプログラミング相談室【Part6】
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名前は開発中のものです。
04/03/06 01:25ID: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
0926名前は開発中のものです。
2006/03/03(金) 21:45:17ID:0OTmGa8a思う。
0927名前は開発中のものです。
2006/03/03(金) 22:42:51ID:o73IJu/Mってのが基本的なタスクシステムのキモの一つなわけで
実体の有無(画面に表示されるかどうかって意味だよな?)はあまり関係ないんだな。
ただ、当たり判定や重力計算を独自のタスクで組むと、それを適用したいキャラを
リストからいちいち探さなくちゃいけないしあまり効率がいいとは言えない。
関数の内容によってリストを別けるとか解決策はいくらでもあるが
そこまでして使うものか?とも思う。
0928名前は開発中のものです。
2006/03/03(金) 23:00:14ID:Es3EQncu欲張りだから最初から失敗が嫌
とか言っても一発で成功したこと一度もない・・・
コンパイルの度に”必ず”ひとつはエラー出す
タスクとしてリストにぶっ込みたいんだけど色々問題があって
>>927
「リストからいちいち探さなくちゃいけない」
この辺でずっと悩んでた
タスクリストの一番最初に入れるのはもちろん無理だし
一番最後に入れるとタスクリスト内のデータをまた最初から検索しなおさなくちゃならないから単純に処理2倍だし
各タスクの行動関数に組み込むと再利用性がうんこ
0929名前は開発中のものです。
2006/03/03(金) 23:07:35ID:LreP13W+なんでタスクリストに入れたいの?
「タスク」とか「タスクリスト」の意味が曖昧なまま話しても無駄っぽいから
もっと実のある話にしたければ次スレ立てて
「タスクで組む」の意味を具体的にしてから話すことだね。
0930名前は開発中のものです。
2006/03/03(金) 23:09:42ID:fF4cU66H重力計算クラスはどんな機能が必要で
外からはどんなインターフェースが必要なのか。
0931名前は開発中のものです。
2006/03/03(金) 23:11:40ID:o73IJu/M実行順優先度とか設けてないの?
入れるなら最初か最後でしょ。
優先度ごとにリストを設けておけば総なめしなくても済むし
一本のリストで全てをまかなおうと考えない方がいいよ。
0932名前は開発中のものです。
2006/03/03(金) 23:13:51ID:YtzA4e+Q適応したい処理の対象のリストを、フレーム毎に作成すればいいんじゃね?
検索の約一兆倍スマートでクールだと思うよ??(当社調べ)
0933名前は開発中のものです。
2006/03/04(土) 11:27:18ID:N+C0gx8b0934名前は開発中のものです。
2006/03/04(土) 14:05:42ID:ja9F3fLO0935名前は開発中のものです。
2006/03/05(日) 02:39:49ID:UHXFHf4y0936名前は開発中のものです。
2006/03/05(日) 05:38:38ID:YPNEIoPdプログラマのとこか?
0937名前は開発中のものです。
2006/03/05(日) 12:16:19ID:n3bvOOgL1pixelずつの移動であれば移動する場所の座標で当たり判定をして
ヒットしていれば移動しない、ヒットしていなければ1pixel進むでいいですよね。
けど、通常の3倍で進むような場合は3pixel進んだ場所の座標で当たり判定をして
ヒットしていれば移動しない、ヒットしていなければ3pixel進むではよろしくないです。
3pixelは進めなくても2pixelは進める可能性があるからですが、
こういう通常の3倍で進む場合は1pixel進む処理をx3してやるのが普通なんでしょうか?
それともほかに良い方法がありますか?
0938名前は開発中のものです。
2006/03/05(日) 12:58:26ID:5Th9ilrN真っ当に考えれば、n pixel進むためには、
n 回ループで 1 pixel ずつ判定するしか方法はないと思われる。
状況によっては、先に n pixel進めてみて
移動不可だったら (n-1) pixelを試すという逆順のほうが効率がいいかも試練が。
0939名前は開発中のものです。
2006/03/05(日) 12:58:30ID:ZGr9k1wh何ピクセル埋まったかを計算してその分戻せば?
0940名前は開発中のものです。
2006/03/05(日) 14:07:05ID:cQK4mU/uぴったり止まるなら>939が丁寧な方法で>938が簡易だな。
0941名前は開発中のものです。
2006/03/05(日) 18:42:16ID:n3bvOOgL>>939 まさにそれですね。
ジャンプして天井にぶつかったり
落下して地面に着地した時、
キャラクターの移動速度を上げたときに
挙動が変だったのがこれで直りそうです。thx。
0942名前は開発中のものです。
2006/03/05(日) 20:55:44ID:UHXFHf4yいや全部。 仕事でプログラマとか実務側の方をやってると
全部がだいたいそのとおりなので笑える。
笑えないのは現在進行形の場合だな。
0943名前は開発中のものです。
2006/03/05(日) 23:50:36ID:VVgrQx5R0944名前は開発中のものです。
2006/03/07(火) 13:47:15ID:/9MR8SBK0945名前は開発中のものです。
2006/03/07(火) 13:54:24ID:ZvqJ1rtZ0946名前は開発中のものです。
2006/03/07(火) 14:05:02ID:gwpzJjwD0947名前は開発中のものです。
2006/03/07(火) 17:59:12ID:FUu2poXAけど買えなかったorz
0948名前は開発中のものです。
2006/03/07(火) 20:37:37ID:BkDgmlhw縦,横,チップサイズ \n
番号,番号,番号,番号,番号 \n
番号,番号,番号……
とかなってるマップの読み込みをスマートにできないかな
暗号化とかもまた意味不明
0949名前は開発中のものです。
2006/03/07(火) 21:07:51ID:/Dd4UB8zとってもスマートなのだが。
暗号化?
ぐぐれよ
0951名前は開発中のものです。
2006/03/07(火) 21:40:39ID:FUu2poXA0952名前は開発中のものです。
2006/03/07(火) 21:58:02ID:BkDgmlhw0953名前は開発中のものです。
2006/03/07(火) 22:01:07ID:P11agiDo0954名前は開発中のものです。
2006/03/07(火) 22:14:57ID:FUu2poXAで次スレ
0955名前は開発中のものです。
2006/03/07(火) 22:58:17ID:BkDgmlhw早速やってみた
変換ツール作りの段階でコンパイラにコンパイルエラー連射されると困る
0956名前は開発中のものです。
2006/03/08(水) 01:38:07ID:FOxUDukTバイナリをテキストに変換するのを作るのに2時間かかった
マップ以前に今後について考える必要があるかも
0957名前は開発中のものです。
2006/03/08(水) 09:37:07ID:cf7g5b6+例えばperlで>>948のCSVをバイナリ化するならこう書ける。
open(IN, 'map.txt');
while (<IN>) {
chomp($_);
my @linedata = split(/,/, $_);
foreach my $data (@linedata) {
$out .= pack("s", int($data));
}
}
close(IN);
open(OUT, '>map.dat');
binmode OUT;
print OUT $out;
close(OUT);
0958名前は開発中のものです。
2006/03/08(水) 10:00:00ID:FOxUDukT短いなぁ
ちょっとそっち関連の勉強でもしてみる
0959名前は開発中のものです。
2006/03/08(水) 22:10:22ID:/wiAUAS30960名前は開発中のものです。
2006/03/10(金) 23:11:01ID:eoGMdw8Pタスク構築していろいろやってみたんだけど、デバッグ中にタスク削除辺りでエラーが出る
WinMain.cpp - エントリ。タスクやキャラクラスの宣言
CTask.cpp - タスクシステム
CChar.cpp - キャラクラス。タスククラスを継承。全キャラクタの継承元クラス。
CUser.cpp - 自キャラ管理。爆発クラスの呼び出し。 キャラクラス派生
CExplosion.cpp - 爆発クラス。一定時間経過で開放。
CRenderer.cpp - DirectX
ChipPoint.h - テクスチャ座標配列
クラスCUserがカーソルキーによる移動時に一定間隔でCExplosionをnewしてタスクリストに追加、
CExplosionが一定フレーム爆発し続ければメンバ関数Proc内で
CTask::TaskKill(TASK* t)にthisポインタ渡して開放待ち状態に移行
TaskKill内では渡されたタスクのタスク用デストラクタを実行してそのタスクのStatusメンバにステータス列挙体のSTATUS_KILLを詰め込む
その後にCTask::TaskExecution()を実行してTASK_KILLのタスクをCTask::TaskDelete(TASK* t)に渡して開放したいんだけど、
そのTaskExecution()内のswitch文でTASK::Statusを参照するとエラーが出る
長々長々とスマソ。ソースは「とりあえずやってみっか」的でかなり雑
0961名前は開発中のものです。
2006/03/10(金) 23:25:25ID:0u3ISKgKで、何だ?
「暇人の皆さん、このとりあえずやってみっか的ソースをデバッグしやがれ。」
って事か?
0962名前は開発中のものです。
2006/03/10(金) 23:51:07ID:6klj+UjHソースを上げるスレッド
ttp://pc8.2ch.net/test/read.cgi/gamedev/1005038280/
0963名前は開発中のものです。
2006/03/11(土) 00:34:44ID:fYcMiC+y(1)(2)(3)の順に読んでね、お兄ちゃん。
for(TASK* i=Top->Next; i!=End; i=i->Next) ← (2) 次のi->Nextは開放後の不定値になり
{
(中略)
switch(i->Status) ← (3) そして、どかーん☆
{
case STATUS_KILL:
TaskDelete(i); ←(1) ここでiの実体を開放した場合、
break;
};
}
0964960
2006/03/11(土) 00:49:40ID:ojp9Bp1Nすまんかった。
>>963
おお、なるほど
オブジェクト側で何かやらかしてるのかと思ってたから
タスク実行ループは疑いもしなかった
実行できました。ありがとうございます
0965名前は開発中のものです。
2006/03/11(土) 01:09:54ID:xs4HFJgg0966名前は開発中のものです。
2006/03/11(土) 03:07:50ID:CNVjlctO0967名前は開発中のものです。
2006/03/11(土) 04:58:54ID:HaVUH+Mi0968名前は開発中のものです。
2006/03/11(土) 05:18:19ID:HaVUH+Mi例えば
class map_data
{
public:
BYTE chip_x,chip_y;//チップのインデックス
};
というクラスがあり、これをそのままサイズ分ファイルに書き込みます。
このクラスはマップファイル用に使われるので実際はマップの編集作業に大変時間を取られます。
しかし、このクラスに何かの変数を追加する必要が生じまして
class map_data
{
public:
BYTE chip_x,chip_y;//チップのインデックス
char flag[4];//
};
こうなったとすると、クラスのサイズの違いから読み込み位置にズレが生じてしまい、
前回頑張って作ったマップのデータが意味の無いものになってしまいます。
これを回避するために上手い方法は無いでしょうか。
今はファイル読み込み関数を旧式、書き込み関数だけを新しいものにして、
一旦新形式でセーブしてから読み込み関数を新形式にする方法と、
あらかじめchar reserved[1000]という余分なスペースを確保し、
追加分の変数のサイズだけ引いていくという方法でやっていますが面倒です。
0969名前は開発中のものです。
2006/03/11(土) 08:29:22ID:r0/M++6p0970名前は開発中のものです。
2006/03/11(土) 08:37:41ID:/5hGWtyv0971名前は開発中のものです。
2006/03/11(土) 09:11:12ID:czh0rJIG0972名前は開発中のものです。
2006/03/11(土) 13:21:52ID:3b41TJWIhttp://live19.2ch.net/test/read.cgi/ogame/1142050870/
0973名前は開発中のものです。
2006/03/11(土) 14:29:54ID:OQA38ARhプロパティシート?プロパティテーブル?プロパティセット?そんな感じのやつ。
それができないようなデータならreservedを設けるしかないな!
0974名前は開発中のものです。
2006/03/11(土) 15:30:10ID:CNVjlctOいま時だとXMLとかでもいいかもしれず。
0975名前は開発中のものです。
2006/03/12(日) 02:10:41ID:v/iGtfpN0976名前は開発中のものです。
2006/03/12(日) 10:32:49ID:9Xx2pFM60977名前は開発中のものです。
2006/03/12(日) 10:37:21ID:bZfGY06EMMOFPSで常時一万オーバー接続で快適に稼動させるには、
どのあたりから手をつけr
0978名前は開発中のものです。
2006/03/12(日) 10:53:06ID:FjM9fEPE0979名前は開発中のものです。
2006/03/12(日) 11:07:49ID:bZfGY06E>まずはIPv6が標準プロトコルになるまで待つ。
では、その日を夢見てゲ製をサボリ、マターリ惰眠を貪ろうかと思います。
本当にありがとうございました。
0980名前は開発中のものです。
2006/03/12(日) 13:28:50ID:zIFbhKP6IPv6になれば速度上がるの?
0981名前は開発中のものです。
2006/03/12(日) 16:22:43ID:1FvRGjG/IPv6が標準になるころには光接続も標準になるだろうし、1万人で遊ぶのも
なんとかなりそうな気ガス。
10年後くらいか。
レス数が950を超えています。1000を超えると書き込みができなくなります。