【初心者】スレを立てる前にココで質問を【Part16】at GAMEDEV
【初心者】スレを立てる前にココで質問を【Part16】 - 暇つぶし2ch653:名前は開発中のものです。
08/03/22 13:00:27 QYE4+His
土日スレとか人は多そうでも話題がないスレでやったら
どこでもいいと思うけど、まぁあまりに話題がずれるのはまずい
別にここでも貼ればやってくれるかもしれない

654:名前は開発中のものです。
08/03/22 13:31:03 qkz8KQo9
>>652
自作ゲーム評価スレ
スレリンク(gamedev板)

655:名前は開発中のものです。
08/03/22 22:42:29 zDA2fauG
戦術級のシミュレーションを作りたいんですが、
その手のものの本格的なエディターのようなものは存在しないんですか?
ツクールとかURLリンク(www.hitpoints.net)これ、もしくは一からプログラミングしないとだめですか?

656:名前は開発中のものです。
08/03/22 22:51:41 vdUDtgoh
>>655
SRCとか。

ぶっちゃけ特殊なことをやりたいと思ったらツールを作ることから始めないと駄目。

657:名前は開発中のものです。
08/03/22 23:03:48 U4FLWBhC
>>653
土日スレ見てみましたが、スレ違いと言われそうです
しばらくROMって様子を見ます。

>>654
恐ろしく長寿なスレですね…
しかし完全に向こうのテンプレ違反になってしまうのでやめておきます。

お二人ともありがとうございました

658:名前は開発中のものです。
08/03/23 01:51:38 mPEw2+w/
>>650
言っていることには同意できるが、ゲームを作ろうする人間に
必ずしもプログラミングが必要なわけでもないでしょ。
作りたいものによっては既存のエンジンのスクリプトがかければ
十分ってこともありえるわけだし。

旅行にかならず車の免許が必要なわけないようにね。

659:名前は開発中のものです。
08/03/23 06:29:37 eLZdz9mC
PS3とかは開発コストがかかり過ぎて大手メーカー位しか
ソフト出せない状態で、DS・PSPの方が盛り上がってる(PSPは?)らしいけど
実際開発コストってどれくらいかかるの?

660:名前は開発中のものです。
08/03/23 06:42:18 +F+RSyfx
鼬GUY

661:名前は開発中のものです。
08/03/23 12:58:25 2zNLBPZ3
何年も前に、安いPCゲーム(エロゲ)で数百万、コンシューマだと安くても1千万とは聞いたなあ。


662:名前は開発中のものです。
08/03/23 18:19:21 2zNLBPZ3
具体的な作品を挙げながら、ゲームのジャンル(アクションとか)ごとに
基本的なデザイン論をまとめているようなウェブサイト、書籍などをご存知でしたらお願いします。

できれば日本語で。
対戦格闘ゲームについて調べてたのですが、うまく見つからなかったもので。

663:名前は開発中のものです。
08/03/23 18:37:37 cSZJpRcF
>>662
出来れば日本語でなんてそんな消極的なこと言ってどうするんだよ。
確かに日本語があればそっちの方がいいだろうけど・・・
インターネット上の殆どの情報は英語だぞ?

664:名前は開発中のものです。
08/03/23 18:46:58 2zNLBPZ3
英語の文書の場合、というかアメリカ人が書いたテキストの場合なんだが、
自分の知らないゲームを例に挙げてることが多くてな……。

プログラミングの本なら英語でもまだ読めるんだが、それ以外だとさっぱりだ。

665:名前は開発中のものです。
08/03/24 00:17:03 +0T08afk
対戦格ゲーで探したら、必然的に日本語の文章がヒットしそうだが

666:名前は開発中のものです。
08/03/24 00:37:59 tkEWMZpB
格ゲーの場合だが、
「基本は三すくみ:みたいなことを書かれてるページはあるんだけど、それくらいだった。

667:名前は開発中のものです。
08/03/24 12:07:19 nPahSoi8
>>662
とりあえず入力周りの整備として、
キーコンフィグ機能とコマンド入力を処理できる機能を作ってから考えれば?

668:名前は開発中のものです。
08/03/24 14:53:56 kALgXEvY
ああ、すまん。実際に格闘ゲームを作るわけじゃないんだ。
学校の宿題ってわけでもないけどさ。そんな年齢でもない。

669:名前は開発中のものです。
08/03/24 16:23:05 sI3+U67E
敵オブジェクトが死ぬと削除するからデストラクタが処理されるけど、
デストラクタに敵の爆発エフェクトオブジェクトを生成するコードを書くのは、
プログラム的に正しいと思う?


670:名前は開発中のものです。
08/03/24 16:25:44 sd47Pckk
爆発処理してる間って他の処理されなくならね?
別に作ったほうがいいと思うな常識的に考えて

671:名前は開発中のものです。
08/03/24 16:28:12 kALgXEvY
構築→解体のコストが軽いならいいんじゃねー?とか思った。

672:名前は開発中のものです。
08/03/24 18:45:55 3dfB7YLZ
>>669
正しい正しくないは他人に判断付かないでしょ
ただひとつ言えることは、キャラクタの
  コード上の死(インスタンス破棄、メモリ解放)と
  ゲーム上の死(HPゼロ、破壊)が
同一(or同時or同フレーム)でないとか、順序があるとか
そういう実装もあり得るということ。その場合
ゲーム上の死=即delete(デストラクタ呼び出し)とはならないわな

>>700
naze?

673:名前は開発中のものです。
08/03/24 19:00:52 nPahSoi8
オブジェクトが消滅するからと言って、爆発が発生するとは限らんじゃないか。

画面外に行って消えた時とか、シーンが移行して現在のシーンを全て破棄する時とか。

674:名前は開発中のものです。
08/03/24 19:05:20 6FTHtViB
>>669
そのオブジェクトを他所のリストかなんかに加えて、
爆発処理が終わったら自身をdeleteできれば問題無い様な気がする。

が、爆発処理の頻度が高いようなら生成/deleteを繰り返すより、
どっかに十分な数を確保して使いまわすのが良いと思う。

>>700
俺にはちょっと理解できないので、
ヒントかなんかでももらえるとありがたいです。

675:名前は開発中のものです。
08/03/24 19:14:58 3dfB7YLZ
アンカー間違えてたw
>>700じゃなくて>>670

676:名前は開発中のものです。
08/03/24 21:06:25 C1IXlTqK
C++は、小規模なオブジェクトの構築・解体を繰り返すことを前提として設計されていません。
newとdeleteが頻発するようなコードは、セオリーを外したダメコードです。

まぁ、マシンスペックでカバーできる程度の、軽度の駄目さですが。

677:名前は開発中のものです。
08/03/24 21:15:50 6FTHtViB
>>675
は本当につまらない奴だ。そう思うだろ? >>700

678:名前は開発中のものです。
08/03/24 23:29:50 kALgXEvY
newそのものではなく、new相当のフラグを立てて使えってコトかな

679:名前は開発中のものです。
08/03/24 23:39:55 6FTHtViB
爆発処理なら、その状態を示す変数がフラグ代わりになりそうだ。

680:名前は開発中のものです。
08/03/25 20:10:15 U303z/Vz
winAPIだけ使ってゲーム作るときって、バックバッファから画面への描画はどうやってるんでしょうか?
今は描画ごとにInvalidateRectしているんですが、重すぎて、とてもじゃないけど60FPSとか無理です。

681:名前は開発中のものです。
08/03/25 22:58:08 KONWzfSh
CreateDIBSectionとかBitBlt使ってソフトレンダが基本だろ
GDI+とかよく知らね

つか、今時GDIでゲーム製作ってどんなマゾプレイだよ

682:名前は開発中のものです。
08/03/25 23:36:13 KKItpC1w
HBITMAP hbmpOff;
HBITMAP hbmpOffOld;
HDC hdcImg;
HDC hdcOff;
HDC hdc
hdc = BeginPaint(hWnd,&ps);
//ダブルバッファ準備
hdc = CreateCompatibleDC(ps.hdc);
hbmpOff = CreateCompatibleBitmap(ps.hdc,YOKO, TATE);
hbmpOffOld = (HBITMAP)SelectObject(hdc, hbmpOff);
hdcImg = CreateCompatibleDC(ps.hdc);

//ここから描画処理

//ダブルバッファ片付け
BitBlt(ps.hdc, 0, 0,YOKO,TATE, hdc, 0, 0, SRCCOPY);
SelectObject(hdc, hbmpOffOld);
DeleteObject(hbmpOff);
DeleteDC(hdc);
DeleteDC(hdcImg);

683:680
08/03/26 21:56:32 oXPjkMU8
>>682
こんな感じのをRender();としてゲームループにぶち込んでるんですが、InvalidateRectしないと描画がされないです。

684:名前は開発中のものです。
08/03/26 22:06:42 bqtpJoF6
それは当たり前
描画ごとにInvalidateRectっていうのがどういう意味か分からんけど
PAINTに描画を全部書いて、TIMERで定期的にInvalidateRectを呼ぶとか
InvalidateRectの第3引数をFALSEにするとか
ダメならDirectX使え

685:680
08/03/26 23:26:01 oXPjkMU8
第三引数はFALSEにしてます。
描画ごとに、というのはゲームループ内のRender();の上にInvalidateRectを置いている状態です。
ちょっと重すぎてどうにもならないので、DirectXを使うことにします。ありがとうございました。

686:名前は開発中のものです。
08/03/27 04:43:00 Zl00DOrU
>>682
描画のたびに描画バッファを再構築してたら重いのは当たり前だよ。
会議で言えば一人が発言するたびに社屋を建て直してるようなもの。

CreateCompatibleDC、CreateCompatibleBitmap、SelectObjectはウィンドウ構築時に、
Deleteはウィンドウ破棄時にやるべき。
必要があるならウィンドウサイズ変更時にもバッファの再確保も行う。

687:名前は開発中のものです。
08/03/27 16:46:02 OF5Tw2Sb
>686
せめて会議室くらいにしておこうぜw

688:名前は開発中のものです。
08/03/28 00:07:35 smCTpwfB
どんな会社やねんw

689:名前は開発中のものです。
08/03/28 15:14:23 ADjvgne4
C++とDXライブラリ使ってFFDシステムを再現したいのですが、やり方が皆目検討がつきません。
この場合どういうクラス設計をすれば良いのでしょうか。
因みにオブジェクト指向初心者です。

FFDシステムについてはこちら
URLリンク(www.littlewitch.jp)

690:名前は開発中のものです。
08/03/28 15:37:55 ADjvgne4
上のリンクじゃちょっと分かりにくいんでゲーム中の動画も貼っときます。

691:名前は開発中のものです。
08/03/28 15:38:27 ADjvgne4
っと貼り忘れた。
URLリンク(www.youtube.com)

692:名前は開発中のものです。
08/03/28 21:52:44 ooKQhOnp
FFDシステムとやらはゲームデザインぽいので
クラス設計やオブジェクト指向、プログラミングとは直接は関係ないと思う。

とりあえず
1.台本(スクリプト)ファイルを読み込み解析する部分
2.いろんな画面効果(エフェクト)や画像や音を台本の通り表示する部分
3.選択肢ある場合のフラグ管理やその他もろもろ
普通のアドベンチャーゲームと変わりません。

もしかしたら的外れな回答をしてるかもしれない。
なにぶん>>689のレベルがわからないので・・・

693:名前は開発中のものです。
08/03/29 09:06:28 qt/2k1bt
DXライブラリでマリオのような横スクロールアクションを作りたいのですが
なにかオススメの参考書をご存知の方、ぜひ教えていただきたい
14歳から始めるC++ゲームプログラミングという本は誤字脱字満載の糞本で
凄まじいショックを受けました

694:名前は開発中のものです。
08/03/29 09:32:13 CDrfebZX
>>693
URLリンク(gamdev.org)

695:名前は開発中のものです。
08/03/29 09:51:52 rfMdXcT/
>>693
URLリンク(ogawapc.myhome.cx)
インデントがしんでるんだけど、VC++で読み込めば、
たぶん、だいじょうぶ。


696:名前は開発中のものです。
08/03/29 16:59:27 wr8ZQT/y
>>695
おいおい、そこは参考にならんだろう。
ユーザ関数も使わず全部グローバル変数でやってるとこだぜ。

697:名前は開発中のものです。
08/03/29 17:42:21 fkmuI5QI
オガワンに釣られるなよ


698:名前は開発中のものです。
08/03/29 19:27:44 rfMdXcT/
>>696
抽象が学べればいいというか、抽象を学ぶということが
学ぶということだろう。

グローバル化の時代っていってなかったか。
(すげーおもしれーこといったおれ)

ユーザー関数を使ってないコードは、クラスを使ってないコードは、論外というのは
かなり素人だな。そもそも、順序として、ベタなコードがまずあって、そして、関数化なり
クラス化するのが、ものの順序というもので、まぁ、おれは関数化もしないけど、
する人はそこからすればいいというだけの話で、なんとも、そんな順序も分からないで
コード書いたら、さっそく、バグのオンパレードなわけで、なんとも、はや。


699:名前は開発中のものです。
08/03/29 20:05:30 xW2ue0td
>>695
まるでCOBOLだな、時代に適応できてないみたいだ
可読性の低いコードなんて論外

700:名前は開発中のものです。
08/03/29 20:32:12 /Xc/TT61
コード以前に書き込みの可読性自体が低いなw

701:名前は開発中のものです。
08/03/29 20:41:43 rfMdXcT/
>>699
何の時代だよw望むものが作れればいいじゃん。
一般的にいって、関数化、クラス化というのは可読性が
落ちるものだよ。そんなこともわきまえていないのか。
驚きだね。

>>700
ユーは自然言語が不自由してるようだね。
「我輩は猫である」でも読んで、まずは、自然言語を
学ばれたい。


702:名前は開発中のものです。
08/03/29 20:49:31 2KYDTduy
変な方向に盛り上りそうな気配だ

703:名前は開発中のものです。
08/03/29 21:52:10 xW2ue0td
>>701
広域変数しか使ってない時点で大体理解できたけど
関数化して読みにくくなるって、どれだけヘタレなのよ?
どうせ変な処理を無理矢理まとめたような関数でも書いたんだろ

704:名前は開発中のものです。
08/03/29 22:19:43 Zx+40KZU
>>703
そこは難しいところだよね。
OOPとかだと、ちゃんと設計すれば機能追加・変更には凄く強くなる。
ただし、具体的な処理が見えないからクラス名とメソッド名が上手く
命名されてないと何をしているのか全く分からなくなる。

そうなると実際に呼び出してるメソッドのソースを見に行くけどそこでも
さらに別のクラスを・・・ってことになる。

分かりやすいコーディングって永遠の課題だよな

705:名前は開発中のものです。
08/03/30 02:23:28 ABeNHFQa
プロトタイプの時点ならクラスとか細かく考えることも無いと思うよ。
クラス設計がどーだこーだ言ってる間があったら、とりあえずさくっと動くもの作って
実際動かしながら細かい仕様を決める→決まったら保守等考えてリファクタリングと。

最初からきれいなコードで作るならリファクタリングなんて言葉生まれてこないでしょ。

706:名前は開発中のものです。
08/03/30 07:00:36 dN2GIaRp
人生もリファクタリングできねーかなw
樹海行って分解→輪廻転生→再構築とか無しな

707:名前は開発中のものです。
08/03/30 10:33:05 ZglXyMId
>>692
すいません、こちらの質問自体的外れだったようですね。
丁寧な回答ありがとうございます。

708:名前は開発中のものです。
08/03/30 12:00:56 Zl3XnbJF
>>704
順を追って読むだけで済むアセンブラ最強

709:名前は開発中のものです。
08/03/30 16:45:11 J/IMcgwF
プロトタイプを使い回しちゃ駄目っしょ。
それじゃ無計画に作り始めるのと変わらないよ。
一旦破棄してスッキリ再設計がプロトタイピングの基本。

710:名前は開発中のものです。
08/03/31 17:52:56 o6thuUMV
ブロック崩し作ってるんだけど
自機にボールくっついてる状態(bflag=1)から
スペースキー押して(bflag=0)ボールを真上に打ち上げたいんだがどうすりゃいいんだろう・・・・
by=by--; ってやってもボールは微塵にも動かない
ちなみにDXライブラリ使ってます

711:名前は開発中のものです。
08/03/31 17:56:50 o6thuUMV
ちなみにby,bxはボールの座標です

712:名前は開発中のものです。
08/03/31 18:00:42 6Xmv80aV
by -= 1;

713:名前は開発中のものです。
08/03/31 18:28:42 o6thuUMV
ダメです・・・・一瞬ほんの数ミリ宙に浮くんですがすぐに戻ります
上のほうまで一定の速度でふわーと浮かんでいくようにするにはどうすればいいんでしょうか・・・・

714:名前は開発中のものです。
08/03/31 18:32:13 6Xmv80aV
こんな風にしてないか?
main{
  move();
}

move{
  int by = 100;
  by -= 1;
}

本当はソースうpしてもらったほうが早いんだがな

715:名前は開発中のものです。
08/03/31 18:34:24 o6thuUMV
DrawBox(bx,by,bx+10,by+10,GetColor(50,250,250),TRUE);
if(bflag=1){
bx=jx+45;
by=jy-10;
if(key & PAD_INPUT_M ){
bflag=0;
by-=1;
}
}

こんな具合です
スペースを押したらbflag=0になりボールが上に上がっていって、あとは画面内を跳ね回るといったものを今目指してます

716:名前は開発中のものです。
08/03/31 18:39:08 6Xmv80aV
これだとスペースを押している間[ if(key & PAD_INPUT_M ) ]だけ
bflag = 0と
by -= 1
が実行されるんじゃないか

717:名前は開発中のものです。
08/03/31 18:42:53 6Xmv80aV
if(スペースが押されたら){
    bflag = 0;
}

if(bflag == 0){
    by -= 1;
}

if(ボールがバーに戻ったら){
    bflag = 1;
}

718:名前は開発中のものです。
08/03/31 18:58:21 j8KphFca
×:if(bflag=1)
○:if(bflag==1)

719:名前は開発中のものです。
08/03/31 19:05:51 o6thuUMV
>>717-718
スペースキーのほうも自機の移動と同じ感覚でやってた・・・・
やってみたのですがだめでした・・・・
なにがいけないんだろう、ボタンを押す→ボールが上にずっと移動→天井に当たったら下に移動
この流れになると思ったんえすが・・・・

720:名前は開発中のものです。
08/03/31 19:31:35 6Xmv80aV
DrawBox(bx,by,bx+10,by+10,GetColor(50,250,250),TRUE);
if(bflag == 1){
    if(スペース押したら){
        bflag = 0;
}
}else if(bflag == 0){
    if(kabef == 1){
        by -= 1;
        if(by <= 0){
            kabef = 0;
        }
}else if(kabef == 0){
        by += 1;
        if(自機にくっついたら){
            kabef = 1;
            bflag = 1;
        }
    }
}

>>715
一回スペース押すとbflag = 0なんで
if(bflag=1){


by-=1;
}
}
が処理されない。


721:名前は開発中のものです。
08/03/31 19:32:47 aPwJsVfr
ボールの移動ルーチンにバグがあるんだろう

722:名前は開発中のものです。
08/03/31 19:33:47 6Xmv80aV
        }
    }else if(kabef == 0){
        by += 1;
ずれた

723:名前は開発中のものです。
08/03/31 19:46:54 o6thuUMV
みなさんありがとう
移動ルーチンに異常があるんでしょうか・・・?ボールの動きがないというのは
スティッチ見た後にまたやってみます


724:名前は開発中のものです。
08/03/31 19:56:40 aPwJsVfr
ソース全部出したほうが早い。
壁の判定間違ってたり、変数を毎回初期化してるとか

725:名前は開発中のものです。
08/03/31 21:25:06 PAeYxJr2
スティッチwwwww

726:名前は開発中のものです。
08/03/31 22:24:16 2PoabXwE
リロ&スイッチ。

727:名前は開発中のものです。
08/03/31 22:51:34 92M1w2qN
フローチャート書いて、ちゃんと動くか図を見ながら確認した方が早いんじゃないのか?

728:名前は開発中のものです。
08/03/31 23:08:04 2PoabXwE
フローチャート…。
何もかもが懐かしい。

729:名前は開発中のものです。
08/04/01 14:58:55 9ujhl7+i
カナダ人の書いた朝鮮人のフローチャートか

730:名前は開発中のものです。
08/04/01 21:20:39 NZQeH72J
シューティング作ってるんですが、

\ | /
 自機

こんな感じで3方向に出るミサイルの処理を書いてて、弾を作る処理と弾の移動の処理はできたのですが、
斜めのミサイルを描画するとき進行方向に傾けさせたいのですが、一つの画像(上を向いたミサイルの絵)だけで可能ですか?


731:名前は開発中のものです。
08/04/01 21:36:43 0wOaQ7ZR
可能です。

732:723
08/04/01 21:51:37 AouXDKP/
>>724
今現在は自機の移動とボールの発射しかプログラムしていないので
間違ってる可能性があるのは変数を毎回初期化してるという点かもしれません
スペースキーを押して発射→ボールちょっと動いて最初に戻る
ただボタンを押してボールを上に移動させるのにもbflagはやっぱ使うべきなんでしょうか?
>>727
一応フローチャートを想定しましたがbflag=0でボールが上に移動という時点でなんらかの
間違いがあるみたいです・・・・・
if(key & PAD_INPUT_M)
これだと押したときだけボールの座標が変わるって意味になるんでしょうか?
押してボールが移動し続けるにはbflag必須?


733:730
08/04/01 22:52:06 NZQeH72J
>>731
WINAPIで作ってるので、画像を描画する関数の引数が 右上X座標、 右上Y座標、 左下X座標、 左下Y座標
といった感じなのですができますか?
できれば具体的な方法を教えてください

734:730
08/04/01 22:53:28 NZQeH72J
どうでもいい訂正ですが、
右上X座標、 右上Y座標、 左下X座標、 左下Y座標 ×
左上X座標、 左上Y座標、 右下X座標、 右下Y座標 ○
です

735:名前は開発中のものです。
08/04/02 07:44:34 yEMc6CZY
Win32APIはよく分からんけど、これは?
URLリンク(www.it-engineer.jp)

736:名前は開発中のものです。
08/04/02 09:30:33 mBhEFyT9
>>733
ゲーム初期化時に回転済みのビットマップを生成しておくといいよ。
でもドット絵を使うなら手書きで3枚用意した方が綺麗に表示できる思う。

737:名前は開発中のものです。
08/04/02 10:22:20 yEMc6CZY
三方向に射出した後、うねうね軌道が動かないならそっちの方がいいな。
うねうね動く場合でも8~16方向くらいあらかじめ用意したほうがいいと思うけど。

738:名前は開発中のものです。
08/04/02 11:20:31 yueRKLvK
マジかみんな
描画用の関数にラジアン角度を引数に取るよう作ってたんだが、むしろこっちが異端か?

739:名前は開発中のものです。
08/04/02 13:49:35 KHsY3oV1
太鼓の達人のようなゲームをつくろうと思うのですが、
どのような言語やソフトを使えばよいのでしょうか?
C言語を半年勉強した程度の能力はあります。
どなたか、わかる方答えていただけると幸いです。

740:名前は開発中のものです。
08/04/02 14:51:13 yEMc6CZY
電子工学だと思う。

741:名前は開発中のものです。
08/04/02 14:53:28 oCV1Xu4/
C半年だとコンソールアプリになるな

742:名前は開発中のものです。
08/04/02 15:02:17 Uuvipq4f
ターゲットを決めるのが先かな
Windows?

743:名前は開発中のものです。
08/04/02 15:15:16 KHsY3oV1
真面目に答えていただいてありがとうございます。

>>741
具体的にどのようにしたらよいのでしょうか?
>>742
Windowsです。

こちらに関しては呆れるほどに初心者ですので、燗に触るようでしたら
スルーしていただいて結構です

744:名前は開発中のものです。
08/04/02 15:35:12 QAuvnuXl
>>740はスルーかよ
入力デバイスどうすんのって話だと思うが

とりあえず、コンソールでも1キーだけでも動くもの作ってみたら?
BGMは必須だと思うけど、その他のAV的要素ってあとからでもOKだろうから

745:名前は開発中のものです。
08/04/02 15:46:44 KHsY3oV1
>>744
すみません、前者がよくわかりません。
後者は、要するにプログラムを書いてみろって事ですよね。
BGMについては用意してあります。自分で作曲したもので太鼓の達人ができたらいいなと思って
このスレに書き込んだものですからw

>>740
すみません、違う話だと思ってしまいました。
入力デバイスはキーボードでいこうと思っています。
別に電子太鼓を作ろうとまでは思っていませんのでw



746:744
08/04/02 16:59:48 QAuvnuXl
太鼓の達人ってゲームに必須な要素って多くないと思うから、まずは最低限必要なものを作るところから初めてはどうか、という意味。
さすがにコンソールアプリでは難しいかもしれないけど

音楽鳴らせて、キー入力のタイミングが判断できればOKなのかな?


747:名前は開発中のものです。
08/04/02 17:13:28 KHsY3oV1
>>746
そういうことですね、
音楽鳴らせて、キー入力のタイミングが判断できれば成り立ちますね。
言語はCで、Visual C++ 2008 Express Editionを使って
やってみようと思いますがどうでしょうか?


748:名前は開発中のものです。
08/04/02 17:40:33 oCV1Xu4/
太鼓の達人ってbm98みたいなもんじゃね?
曲弾きたいだけなら、プログラム作らなくてもあれでも代用できそうな気が
ちょっと古いけど

749:名前は開発中のものです。
08/04/02 17:56:35 KHsY3oV1
>>748
確かに代用できるかもしれませんが、
太鼓の達人のノートの種類が大まかに2種類なのに対し、BM98は最低5key以上となっています。
数箇所のkeyを使わない設定となると、見栄えが悪いと思います。

750:730
08/04/02 19:21:02 5WZMzuoU
>>735-737
有り難うございます。
大変助かりました。
どちらの方法も試してみて、良い方法を使おうと思います。

751:名前は開発中のものです。
08/04/02 20:24:48 1sA0ZO96
太鼓の達人は太鼓叩くからおもしろいんであって
太鼓なかったら地味だと思うんだが

752:名前は開発中のものです。
08/04/02 20:36:46 Blss73IL
DS版が否定された

753:名前は開発中のものです。
08/04/02 22:23:19 Fyx9iI0t
ひとつ聞きたいんだが

by -= 1;

↑これだと一瞬だけ座標が変わるだけじゃない?
徐々に上に移動って意味はこれでいいのかな?

754:名前は開発中のものです。
08/04/02 22:43:45 KHsY3oV1
>>751
太鼓よりもコントローラの方が得意な人も多いと思いますし、
キーボードで設定しておけば、USBコンバータを使えば太鼓でもプレイが可能なのでは?

755:名前は開発中のものです。
08/04/03 00:41:35 BL3q8jAP
あの太鼓って、外側は実は木製なんだよな。
分解写真見てびっくりした記憶。

>752
否定していいと思うんだ。(ぼそ)

>753
何の話だ?
ぷちエスパーすると、毎フレームbyが初期化、または定数がセットされるなら一瞬だけ。
描画条件やタイミングによっては動かないかもしれない。

普通は、byはフレームごとに初期化されない(値が保持される)ので
毎フレーム1ドットずつ動く計算になる

756:755
08/04/03 00:45:15 BL3q8jAP
ああ、すまん。ブロック崩しの人か。
>755での暴言は忘れてくれ。

757:名前は開発中のものです。
08/04/03 06:18:34 mgvlg8ul
DXライブラリを使って2次元アクションゲーム作ってるんですが、
なんというか、どうもRPGツクールと同じように
「1から作ってるわけじゃなく、すでにあるものを組み合わせてるだけ感」があって(もちろんRPGツクールほど顕著じゃないですが)、どうにも作ってていまいちノれないんですが

そこで質問なんですが、ウインドウズプログラミングを使って1から作るのと
DXライブラリで作るのでは同じゲームを作るとしたとき、だいたいどのくらい効率や時間は違いますか?
やっぱりウインドウズプログラムの方が極端に時間がかかりますか?


758:名前は開発中のものです。
08/04/03 07:08:17 BL3q8jAP
これからDirectXとかの勉強をします、とか言うなら半年くらいのオーダーで違う

759:名前は開発中のものです。
08/04/03 11:47:10 bFlfPZb3
>>757
どうせDirectXを習っても、自由度が高すぎるからDXライブラリみたいなライブラリを自前で作ってると思うよ。
結局のところ3Dモデルや画像読み込んでいじくるのが目的の大半で、
読み込む処理は決まりきってるし、動作と座標はスクリーン座標かワールド座標で管理するだろうし。

仮にC言語周りは完璧でDirectXを覚え始めるとして、スプライト、入力処理、音響処理のラッパーを作るとなると
2ヶ月程度。3D周りに手を出すとさらに2~5ヶ月。
作った後は、DXより自分好みにライブラリを作ってるだろうから開発効率いいんじゃね?

760:名前は開発中のものです。
08/04/03 14:37:47 u2kemPAd
DXライブラリにしても、そのまま使うんじゃなくて
さらにラッパを用意したりする人も多いけどな。

761:名前は開発中のものです。
08/04/03 14:45:18 mgvlg8ul
>>758-759
なるほど、だいたい感じはわかりました。
ありがとう。


762:名前は開発中のものです。
08/04/03 18:12:31 /J2vdBIl
数百くらいあるオブジェクト同士の当たり判定をしたい場合、総当り以外に何かいい方法ありますか?
総当りでチェックしながら、一回判定したのは外していくという方法以外思いつきません…

763:名前は開発中のものです。
08/04/03 18:47:20 IqOcn4qg
1Dなら二分木、2Dなら四分木、3Dなら八分木
という方法で空間を分割することで
当たり判定の最適化ができます

764:名前は開発中のものです。
08/04/03 18:50:56 HifUC8Yv
【空間分割による最適化】
隣の部屋(room ≒ portal 、block 、area)で誰と誰がどのように触れ合っているか等
毒夫にとっては全く関係のない話なのです

    |                   \
    |  ('A`)           ギシギシ
   / ̄ノ( ヘヘ ̄ ̄        アンアン/

765:名前は開発中のものです。
08/04/03 22:10:07 /J2vdBIl
>>763-764
ありがとうございます
キーワードがいただけたので、あとは自分で調べて見ます

766:名前は開発中のものです。
08/04/06 22:08:08 7HPWr1su
戦略シミュレーション作ろうとしているのですが、平面座標で
CPUがプレイヤーの駒に対し障害物があった場合、障害物から
左右に走査線を走らせ、反対側にたどり着けば
角(横3px以内、45・90・135)の点を全てストックして、現在の座標より直進で進める
もっとも外側に近い点を目標とし、再びループ。
という仕組みでコードを組んでいますが、障害物の深度から検索しているので
正確なルートを確保できません。
何かアドバイスを頂けないでしょうか。

767:名前は開発中のものです。
08/04/06 22:46:38 +JZYHxk+
「経路探索」といえば「A*」

768:766
08/04/08 16:53:31 U0qhjBuH
>>767
ありがとうございます。難しそうですが、チャレンジしてみたいと思います。

769:名前は開発中のものです。
08/04/10 09:03:53 xSsqVcTa
単発質問スレが乱立しやすいこの板では
この類のスレは常時ageの方がいいのではないかと言ってみるage

770:名前は開発中のものです。
08/04/10 12:30:51 4RKOcDZu
それもそうだな

771:名前は開発中のものです。
08/04/10 12:34:40 nQoNMMIw
だが断る

772:名前は開発中のものです。
08/04/10 15:29:09 jGCpfgDP
いやいいこと言ってるかも

773:名前は開発中のものです。
08/04/10 16:33:45 kl6WBrXE
>>770-772
お前ら言ってることとやってることが違うじゃねぇかw

774:名前は開発中のものです。
08/04/10 19:14:58 KzinQoVU
たしかにいいことだ

775:名前は開発中のものです。
08/04/10 19:17:47 IRGlQQnq
どうでもいいことだ

776:名前は開発中のものです。
08/04/10 19:57:46 xSsqVcTa
>>770-772
お  ま  え  ら

777:名前は開発中のものです。
08/04/10 22:05:07 W5MU10M/
ローカルルール読め阿呆で十分

778:名前は開発中のものです。
08/04/11 19:11:04 8wte2Ya/
javaでゲーム作成ってスレ落ちたままだけど誰も立てないの?
javaマでゲーム作ってる俺はよく覗いてたのに。

779:名前は開発中のものです。
08/04/11 19:26:28 inAxJvIm
この板でも落ちるのか…w
ひょっとしてもしかすると次の中に無い?

Javaでゲーム作る話してるキチガイがいるよ(藁
スレリンク(gamedev板)
むしろjavascriptでゲーム作ろうぜ
スレリンク(gamedev板)
JAVAアプリでゲーム
スレリンク(gamedev板)
Javaアプレットのゲームの限界は!
スレリンク(gamedev板)
【JAVA】2Dアクションゲームを作る【初級】
スレリンク(gamedev板)

780:名前は開発中のものです。
08/04/12 04:23:06 bJw5ptYJ
>>778
みんな誰かが立ててくれるのを待ってたりしてなw
無いのならいっそのこと自分で立てたらどうよ?

781:名前は開発中のものです。
08/04/12 06:54:49 33XEr2k7
俺のプロバもう久しくスレ立てられないのよ。

782:名前は開発中のものです。
08/04/12 07:18:07 y8iAp7J0
●買え、●

783:名前は開発中のものです。
08/04/12 07:59:00 5Otwi7xM
スレ建てできるjava使いがいないなら、
テンプレを用意して頼み込んでみたら良い人(つまり俺以外)が、
建ててくれるかもしれないぞ!

784:名前は開発中のものです。
08/04/12 11:56:34 hx3BYZRW
おk代行スレ行ってくる

785:名前は開発中のものです。
08/04/12 23:45:57 sQo000PS
スレリンク(gamedev板)l50
Javaでのゲーム作成 3本目

できたなんかあったら追加してくれ

786:名前は開発中のものです。
08/04/13 00:10:37 sQCOMomw
●じゃなくて株主優待でもいいんじゃね?
今は暴騰してるけど

787:名前は開発中のものです。
08/04/13 00:19:01 zflyFYlt
DirectXに関して質問です。

黒のバックに白の点がいくつか描かれているテクスチャがあります。
この白の点の数をカウントし、その数に応じて処理を変えたいです。
シェーダー(HLSL)を使って、このカウント値を取得したいのですが、どのようにすれば良いでしょうか?

788:名前は開発中のものです。
08/04/13 01:09:44 xnDBZw+p
そのカウント値っては予め数えてある値なのか、それともシェーダー上でカウントするのかどっちなんだ?

789:名前は開発中のものです。
08/04/13 01:20:20 zflyFYlt
シェーダー上でカウントしたいです。
白の点の数はフレーム毎に変化します。

790:名前は開発中のものです。
08/04/13 01:38:23 N62LMulN
ピクセルの数をカウントするなら簡単だよね

不定の面積を持った点だと困るな、
画像処理してデジタル化してから
スキャーンして、見付けたら別の色で塗りつぶし
また、スキャンし、終わるまで。
塗りつぶした回数を数える。
誤差がでるだろうな


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

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

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


794:793
08/04/13 16:58:28 zbXHPuUk
事故解決しました・・・スレ汚しすみませんでした・・・

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

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

796:名前は開発中のものです。
08/04/13 17:04:34 Z1kaHYoi
ち、営業失敗か

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

798:787
08/04/13 19:38:00 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:名前は開発中のものです。
08/04/13 21:16:01 VIYt+noJ
DirectXの質問ですが
LPDIRECT3DSURFACE9のGetDCで
WinAPIを使用(TextOutなど描画処理)すれば
それでデバイスを使用した高速描画ってことになるんですか?

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

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


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

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

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

804:787
08/04/14 01:13:34 juYmtKjM
URLリンク(www.hsjp.net)
やりたいことはこれです。

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

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

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

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

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

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

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

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

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

まあ、>>810だろうな

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

813:名前は開発中のものです。
08/04/15 23:35:32 VPYFMazR
大体の場合画像はいっぺんで描いた方が早いよ

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

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

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

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

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

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

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

816:名前は開発中のものです。
08/04/16 00:11:20 6tcgJhqC
>ご指導頂ければ幸いです。

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

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

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

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

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

818:名前は開発中のものです。
08/04/16 00:27:15 1RgW84Mk
1&2

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

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

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

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

821:名前は開発中のものです。
08/04/16 09:12:06 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
08/04/16 21:13:41 4gn/04tn
>>820
違いが分からなかった、というのはおかしいですね。すみません。
どれが最適か分からなかった、と言いたかったのです。
>>819さんの言うとおり、結局は個人の好みに行き着くのでしょうか。
>>821さんのように、1+管理クラスでやってみようと思います。皆さん回答ありがとうございました。

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

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

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

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

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



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

828:名前は開発中のものです。
08/04/18 20:38:32 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:名前は開発中のものです。
08/04/18 20:40:46 d+O1TZBw
ってフラグ類も初期化されてなくね?

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


831:名前は開発中のものです。
08/04/18 20:42:21 JOpRcNIL
bflag=1もループ前にないといけないな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch