[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 06/17 09:43 / Filesize : 226 KB / Number-of Response : 832
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者】スレを立てる前にココで質問を【Part16】



1 名前:名前は開発中のものです。 [2008/01/03(木) 04:55:57 ID:29lql27X]
疑問に思うことがあれば、スレを立てずに、まずはココで質問。
スレッドを立てる前にはローカルルールを読みましょう。
pc8.2ch.net/gamedev/

>>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
gamdev.org/w/

ゲーム製作技術板公式アップローダ
gamdev.org/up/

ゲーム製作技術板公式掲示板避難所
bbs.gamdev.org/gamedev/

ゲーム製作技術板予備
yy13.kakiko.com/gamdev/

アップローダー予備
gamdev.hp.infoseek.co.jp/

gamdev.orgが落ちるたびにあげてみるスレ
pc8.2ch.net/test/read.cgi/gamedev/1107022166/

791 名前:名前は開発中のものです。 mailto:age [2008/04/13(日) 03:09:15 ID:zflyFYlt]
すみません、「その回数を数える」というのは具体的にどうするのでしょうか?
シェーダプログラム内でカウント数を保持する方法があるのでしょうか?

792 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 16:36:05 ID:Z1kaHYoi]
>>790-791
最近のシェーダーの仕様とか組み方とかよく知らんのだけど
俺がRadeon9800でPS2.0使ってた頃は出力はr0のみだった。今は違うのか?
少なくとも当時は、1パスでパーピクセルの処理結果を一箇所に集計して〜
みたいな使い方は出来なかったと記憶してる

793 名前:名前は開発中のものです。 [2008/04/13(日) 16:38:09 ID:zbXHPuUk]
3Dのゲームでよくライフが2Dスプライトでキャラの上に表示されてたりしますが
そのスクリーン座標ってどうやって取得するのでしょうか?


794 名前:793 mailto:sage [2008/04/13(日) 16:58:28 ID:zbXHPuUk]
事故解決しました・・・スレ汚しすみませんでした・・・

795 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 17:02:47 ID:Z1kaHYoi]
>>793
自分でワールド、ビュー、プロジェクション行列を設定してるんだから
その逆を辿ればスクリーン上の任意の点のワールド座標は取得できる
意味が分からないときは是非お買い求めください。      ボーンより
www.borndigital.co.jp/book/program/4-939007-37-5/4-939007-37-5.html

つか素直にID3DXSprite::SetTransform使え
オブジェクトの真上に来るようなワールド行列をぶち込めば済む

796 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 17:04:34 ID:Z1kaHYoi]
ち、営業失敗か

797 名前:793 mailto:sage [2008/04/13(日) 18:13:15 ID:zbXHPuUk]
>>795
レスどもです。後述のやり方使わせていただきます。
本ほしいけど高いです・・・1ヶ月生活切り詰めれば買えそうだけど・・・

798 名前:787 mailto:age [2008/04/13(日) 19:38:00 ID:9OE2EiOk]
>>792
今も基本的に各出力画素に出力ですね。

ピクセルシェーダを以下のようにして、最後の画素(画面右下?)に合計値が出力されるように
試みてみました。

void PS(
float2 in_Tex : TEXCOORD0 ,
out float4 out_Color : COLOR0 )
{
in_Tex.x = in_Tex.x + g_Ofs.x;
in_Tex.y = in_Tex.y + g_Ofs.y;

static float4 SumColor = float4( 0.0 , 0.0 , 0.0 , 1.0 );
SumColor += tex2D( TexSamp , in_Tex );

out_Color = SumColor;
}

結果は、普通にテクスチャの絵がそのまんま出力されてしまいました・・・
ピクセルシェーダ稼動中はSumColorの値は保持されると期待したのですが、
毎ピクセル計算する度にSumColorはクリアされちゃってるってことでしょうか。
staticの存在意義が分かりませんね・・・

799 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 21:16:01 ID:VIYt+noJ]
DirectXの質問ですが
LPDIRECT3DSURFACE9のGetDCで
WinAPIを使用(TextOutなど描画処理)すれば
それでデバイスを使用した高速描画ってことになるんですか?



800 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 22:29:32 ID:zLBVEijV]
>>799
デバイスのコアな部分までは分からないから言い切れないけど
TextOutなどGDIを使用する限り、ならないって事になってる。
GDIはプリンタにも共通して使用できなければならない。

801 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 22:44:05 ID:H29I1VXA]
基本的に手抜き用だから性能気にするなら使うの止めた方が良い。


802 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 22:55:49 ID:0WnkT/ZQ]
たまにWinAPI使ってテクスチャーに描いて、
フレーム毎の描画はテクスチャーマッピングで済ますんじゃね?

803 名前:名前は開発中のものです。 mailto:sage [2008/04/13(日) 23:46:57 ID:Z1kaHYoi]
まぁ恥ずかしい長文を画面いっぱいに描画するなら
普通のWindowsアプリ同様に差分描画は必須だろう

毎フレーム全文をTextOutとかは想定外の使い方

804 名前:787 mailto:age [2008/04/14(月) 01:13:34 ID:juYmtKjM]
ttp://www.hsjp.net/upload/src/up15435.jpg
やりたいことはこれです。

「テクスチャを参照する際にピクセルシェーダを活用することが有効です。」

とありますが、具体的にどんなシェーダ処理になるのでしょうか?
だいたいの方針などでも十分ですので、ご助言ください。

805 名前:名前は開発中のものです。 mailto:sage [2008/04/14(月) 01:17:20 ID:PJR5ohHg]
うわぁ著作物を無断ぽくうpする知的障害者ってまだ死滅していないんだなぁ(棒読み

806 名前:名前は開発中のものです。 mailto:sage [2008/04/14(月) 03:55:35 ID:EkC361iO]
ここはあくまでゲーム制作の初心者を対象にしているスレ。
平気で無断うpするようなネット初心者はお呼びでない。

807 名前:799 mailto:sage [2008/04/14(月) 20:20:32 ID:acAkUx6Q]
>>800-803
ありがとうございます。
現在SRPGのようなものを製作しているのですが、各キャラのアニメの処理落ちがひどく
DirectXを導入しようと思ったのですが、使い方を誤っていたわけですね;

808 名前:名前は開発中のものです。 [2008/04/14(月) 23:22:29 ID:D8DlEzlI]
>>755
要するにボールの座標(by)を常に保存しとくのに
入れ物がいるってことでしょうか?
「bflag=0の間」って定義じゃ意味として間違ってるんでしょうか?

809 名前:名前は開発中のものです。 mailto:sage [2008/04/14(月) 23:43:26 ID:1JnIIKqn]
>>808
byに200が入ってたとして、
by -= 1;するとbyは199になる
次にby -= 1;をしたときは200から199じゃなくて199から198になる



810 名前:名前は開発中のものです。 mailto:sage [2008/04/14(月) 23:57:30 ID:jqKpEXH3]
まるまるソースアップすればすぐ解決しそうだけどね
ローカル変数でしたとかありそうだし

811 名前:名前は開発中のものです。 mailto:sage [2008/04/15(火) 00:27:38 ID:8mjR27PX]
まさかずっと考えてたのか・・・
とりあえず自機は動いてるみたいだし
>>720丸写しで動きそうな気もするんだがね

まあ、>>810だろうな

812 名前:名前は開発中のものです。 mailto:sage [2008/04/15(火) 23:34:09 ID:R308PVzI]
敵とか主人公とかアイテムの画像はひとつの配列入れて描いたほうがいいの?
それともべつべつ?

813 名前:名前は開発中のものです。 mailto:sage [2008/04/15(火) 23:35:32 ID:VPYFMazR]
大体の場合画像はいっぺんで描いた方が早いよ

814 名前:名前は開発中のものです。 mailto:sage [2008/04/15(火) 23:52:03 ID:805Lw7LR]
>>812
んなもんどっちでやってもゲームは作れるよ。好きにすれ

ところで俺がたった今3秒でひらめいた糞ゲーは
主人公が敵になったりアイテムが仲間になったりするんだ。凄いだろ?
だから敵とか主人公とかアイテムは共通の手続きで取り扱いたいね
ひとつのリスト(配列)に入れるというのは悪くない考えだ

815 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 00:05:58 ID:4gn/04tn]
オブジェクト指向でのデータ構造に関する質問です。

シューティングゲームの敵オブジェクトを数種つくるとき、

1.親クラスを同じにして種類ごとのクラスをつくる
2.一種類のEnemyクラスのオブジェクトをたくさん作って、種類を表す変数kindの値によって挙動を場合分け
3.一つのEnemyManagerクラスをつくって、必要な変数を配列として保持し、各敵をインデックスによって管理
4.その他俺が考え付かない素晴らしい方法

のどれをすべきなのでしょうか。ご指導頂ければ幸いです。

的外れなこと言ってたらごめんなさい^^;

816 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 00:11:20 ID:6tcgJhqC]
>ご指導頂ければ幸いです。

先生、手を動かす前から悩む子は嫌いだな
手が使えないなら口を使ってもいいんだよ

とりあえず1〜3を全部やれ。すると人は4に行き着く
でもそれが勘違いだったことに気づくのに時間はかからない

そのときHSPは救いの手を差し伸べるだろう

817 名前:815 mailto:sage [2008/04/16(水) 00:24:52 ID:4gn/04tn]
>>816
一通り試してみたけど違いが分からなかった、という前提でお願いします。
俺が気付かないだけで「これはやっちゃダメだろ」みたいのがあるのかな、って。

つまりHSPから出直せってことですか?

818 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 00:27:15 ID:1RgW84Mk]
1&2

819 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 00:51:51 ID:HSHLz9Y4]
自分が組みやすいように組めばいいよ
ゲームの規模やシステムによって最善は変わってくるだろうし



820 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 01:14:15 ID:6tcgJhqC]
>>817
>一通り試してみたけど違いが分からなかった、という前提でお願いします。

なら話は簡単だな。どれでやってもゲームは作れるってこと
あとは自分の都合にあったやり方を選択すればいいだけ
作るときの人数構成は。一人で作ってるのか、2〜3人で作ってるのか
ゲーム自体の規模は。敵の数は、種類は、ステージ構成は、2Dなのか3Dなのか
敵やステージのデータを誰が作るのか、誰が調整するのか、自分なのか
それとも仲間なのか、それはプログラマなのか、それとも絵描きなのか
いや絵もプログラムも作れない妹にやらせるのか、などなど

実際に1〜3全部やってみたのにそれぞれの得手不得手、長所短所が
見えないなんてことは絶対にありえないからな

821 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 09:12:06 ID:Fn26u7Ao]
>>815
俺ならこうする。

class Enemy {
  int x;
  int y;
  int life;
  void draw(int x, int y);
  void move();
}

class Enemy1 extends Enemy{
  void draw(int x, int y) {
  ...
  }

  void move(int x, int y) {
  ...
  }
}

1. 敵は共通して現在の座標、ライフ、描画メソッド、移動メソッドを持つ。これを基本クラスとする。
2. 個別の敵オブジェクトは基本クラスであるEnemyクラスを継承して実装する。
3. EnemyManagerは敵オブジェクト(インスタンス)を配列、連結リストなどで保持して一括管理する。


822 名前:815 mailto:sage [2008/04/16(水) 21:13:41 ID:4gn/04tn]
>>820
違いが分からなかった、というのはおかしいですね。すみません。
どれが最適か分からなかった、と言いたかったのです。
>>819さんの言うとおり、結局は個人の好みに行き着くのでしょうか。
>>821さんのように、1+管理クラスでやってみようと思います。皆さん回答ありがとうございました。

823 名前:名前は開発中のものです。 mailto:sage [2008/04/16(水) 22:39:55 ID:8TmMLG1t]
小品ならそれでもいいけど
中作以上だとクラスがあぼーんする

824 名前:名前は開発中のものです。 mailto:sage [2008/04/17(木) 11:28:54 ID:zg8t/6Yz]
>>823
規模や状況によって最適解は変わるってアドバイス受けてるんだから
それくらい作ってりゃ気付くでしょ

825 名前:名前は開発中のものです。 [2008/04/18(金) 19:51:15 ID:rgTpHM1z]
ブロック崩しの者です
あれから試行錯誤してみましたがイマイチ解決に向かいませんでした
ただボールが勝手に浮上していくときもあったのでこれはもしかすると・・・なのでしょうか
www2.uploda.org/uporg1374806.zip.html

いろいろいじって汚くなったのでかなり削ってしまいましたが
間違いなどを指摘していただければありがたいです
ちなみにスペースキーを押したらボールが浮上することだけを考えたので
壁に当たったときの挙動などは考えていません

826 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:28:24 ID:rLjiap3t]
DrawBox(bx,by,bx+10,by+10,GetColor(0,140,140),TRUE);
bx=jx+45;←この行
by=jy-10;←この行
if(bflag ==1){
は要らないんじゃないか?



827 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:34:11 ID:rgTpHM1z]
>>826
それなしでやったところ、ボールが画面左上端に表示されてしまいました
bfag==1にボール座標を書いてるのですが認識されてないんでしょうか?

828 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:38:32 ID:d+O1TZBw]
bx,byが値入れられる前に一度使われてるぜ
あと、
>DrawBox(bx,by,bx+10,by+10,GetColor(0,140,140),TRUE);
>bx=jx+45;
>by=jy-10;   ←ここで上書きされてるから上昇しない
>if(bflag ==1){ (略

上の真中2行削除して、メインループの前の宣言時に
int bx = jx + 45, by = jx - 10;
とでもしとけ

と実行してないけど言ってみるテスト
インデントは綺麗に使おうぜ

829 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:40:46 ID:d+O1TZBw]
ってフラグ類も初期化されてなくね?



830 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:41:19 ID:rLjiap3t]
変数に初期値を入れてないからbflagの初期値は不定じゃないかな?
bx,by,bflagを初期化してみたら?


831 名前:名前は開発中のものです。 mailto:sage [2008/04/18(金) 20:42:21 ID:JOpRcNIL]
bflag=1もループ前にないといけないな






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<226KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef