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


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

Windowsゲームプログラミング 質問スレ



1 名前:デフォルトの名無しさん [05/02/25 05:10:53 ]
※回答する人も、質問する人も必ず読んでください 

【 回答してくださる方 】 
・ できるだけ優しく質問に答えてあげてください。 
・ 優しく教えるのが嫌でしたら、解決するためのヒントだけでも結構です。 
 「ググれ」以外の回答でおながいします。 
・ 神ですら理解不能な質問は無視して下さい。 

【 質問する香具師 】 
・ どんな事で躓いているのか明確にしる。 
・ 長くならないなら躓いている部分のコードを晒してみれ。 
・ 解決した場合、お礼を言うのは当然だが、何をどうしたら解決したかを明確に書け。 


774 名前:名前は開発中のものです。 mailto:sage [2007/11/09(金) 02:42:29 ID:C1/XHZLg]
>>773
基本的には混ぜても大丈夫。 CreateFile() して FILE* にキャストとか、
malloc() したメモリを HeapFree() とか、そういうのはダメだけどね。

775 名前:名前は開発中のものです。 mailto:sage [2007/11/09(金) 03:53:57 ID:GHmrdBW6]
データ型に関する質問です。

例えばSRPGにおけるHPなどのステータスが0〜999の値しか取らない場合、
short と int のどちらで宣言すべきでしょうか?

・ 一度にステージにいるキャラクターがMAX30人程度
・ 戦闘に必要なキャラクターのステータスが30個程度

としたとき、メモリの使用量は2KB程度しか違わないように思えるので
高速に計算することを考えたら int の方が適切なのでしょうか?
ゲームの性質上、ステータスが毎フレーム変わるわけではありません。
この計算速度は無視できる程度でどうでもいいのでしょうか?

総じて下らない質問でしたらすみません。

776 名前:名前は開発中のものです。 mailto:sage [2007/11/09(金) 04:26:48 ID:C1/XHZLg]
>>775 www.kouno.jp/home/c_faq/c1.html#1

777 名前:名前は開発中のものです。 mailto:sage [2007/11/09(金) 06:52:09 ID:mfpq6ZYz]
> 高速に計算することを考えたら int の方が適切なのでしょうか?
ですねえ。
いま時なら、その段階で、あえて「高速に」もこだわる必要性もないと思う。

とりあえず、intって感じでしょうか?

778 名前:名前は開発中のものです。 mailto:sage [2007/11/09(金) 19:46:52 ID:bSdrwNRD]
>>773
別の方法を挙げると、CreateFileMappingとMapViewOfFileを使う。
ファイルがとんでもなくでかい場合は、こっちの方が速いかもしれない。
もっと速度が必要なら、読みたい行の絶対位置をデータとして先に用意しておく。

>>775
そんなの悩んでも意味がない。intで桁が足りるデータは全てintでいい。
下手にshortを混ぜてアライメントが狂うと、全部intにするより遅くなるよ。

779 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 18:12:15 ID:BaXpb+cR]
long double time;
QueryPerformanceCounter((LARGE_INTEGER*)&time);

これに問題はありませんか?

780 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 18:38:31 ID:x5AA/ezs]
>>779
www.wdic.org/w/TECH/long%20double
らしいよ。
手元のVS2005で試したら同じサイズのようだが、
確実に定義されていないので怪しいかもしれない。

C++だったら、上の方に

template<bool A> struct RC_{RC_();};template<> RC_<true>::RC_(){}
#define CompileTime_SizeChecker(A, B) RC_<sizeof(A)==sizeof(B)> t##A##B

の二行を足して、

CompileTime_SizeChecker(time, LARGE_INTEGER);

とか書くと、サイズ違ってたらコンパイル通らなくなるから気づくよ。

781 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 18:55:23 ID:l4xnO5fs]
実行ファイルの大きさを小さくするにはどうしたらいいのでしょうか?
配布されている同人ゲーム等を見てみるとクオリティの高いSTGで300KB程度とかなんですが、
自分の作ったプログラムはロゴ→ニューゲーム、コンティニュー画面を表示するだけで1MBにもなってしまいます・・・。
言語はC++でVC2005ExpressEditon使っています。

それとクラスとポインタの使用は実行ファイルのサイズに影響するのですかね?

782 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 19:05:02 ID:bmwbpkY2]
>>781
デバッグビルドしたファイルじゃないだろうな?



783 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 19:11:28 ID:x5AA/ezs]
でかい画像をリソースで埋め込んでたりして…。

784 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 20:50:38 ID:St6/82Xq]
長さ一緒でも浮動小数点型に整数のバイナリ書き込むのは無しだろ

785 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 21:31:16 ID:l4xnO5fs]
>>782
デバックですた(´・ω・`)
Releaseにしたら600KB程度になりました。ありがとうございます。
>>783
VisualC++2005ExpressEditionにはリソースエディタが付いてないみたいなので
リソースはしたことないです。

これでもサイズが大きいのはやはり作り方が悪いのかなぁ・・・


786 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 21:42:12 ID:oCBgFW/V]
なんとかライブラリとか使ってるんじゃねーの

787 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 21:42:22 ID:x5AA/ezs]
それはソースが見たいなぁ。
敵の出現テーブルとかハードコーディングで埋め込んでない?

788 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 22:10:46 ID:76aqh1yL]
紙芝居ゲームとかぬるいRPGの場合
60FPSも確保するのは勿体無いと思うんだけど
OnPaintw@d)ldwmeek?

789 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 22:47:56 ID:x5AA/ezs]
WM_PAINT ( OnPaint 呼んでるメッセージね) に合わせて描画して問題ないよ。

ただ、リアルタイムな処理を入れる場合、
垂直線回帰をタイマーに使った方が、楽だし、滑らかに動くので、
ループ回して描画し続けるのもありだと思う。

たとえばRPGなら、自キャラの移動や、背景、サブキャラの動き、
紙芝居ゲーなら文字を一文字づつ表示するエフェクトとか、
切り替え時のエフェクトとか、雨や雪のエフェクトを入れる場合。

ゲームって、止まっているように見えても、さりげないところ、
さりげない効果で画面が変化しまくるから、
イベントドリブンで組むのはあまり有利じゃないんだよ。
あくまでイベントドリブンを利用して奇麗に作りたいと思った場合、
ちょっとだけ難易度上がるので、自分のウデと要相談。

790 名前:名前は開発中のものです。 mailto:sage [2007/12/22(土) 23:17:00 ID:76aqh1yL]
なるほどー

791 名前:名前は開発中のものです。 mailto:sage [2008/01/03(木) 21:28:13 ID:Dl+ms8yz]
ところで質問なんだけど、
FPS60で画面更新するゲームは更新時にパッドの入力情報を毎度読み込んでるの?
それともゲームの実時間性にあわせてるの?
たとえば格ゲだったらfps60で毎度パッドの入力情報を読み込んでるとか、
紙芝居ゲームだったらfps60で何回の更新に一度の割合でマウスの情報を読みに行くとか。
こういうインターフェイス部のセオリーみたいなのってありますか?

792 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 01:20:25 ID:j9EhfGPR]
>>791
ゲームによるんじゃないかな?

とはいえ、おれが組むときは、画面更新(draw)と、それ以外の更新処理(update)を分離して、
それ以外の更新処理を60FPSなら60FPSにして、そのときにパッド入力を全部読んでる。
パッド入力処理なんて、重くねえしな。

家庭用の格闘ゲームなんかでも、描画30FPSで、パッド入力60FPS(たぶんその他の処理も)のゲームとかあるみたいだよ



793 名前:名前は開発中のものです。 mailto:sage [2008/01/06(日) 01:22:02 ID:j9EhfGPR]
あと、3Dの可変フレームレートなゲームは作ったことないのでわからんのだが、
この辺が、くわしい

MOUSE TIPS - Gamer's Gadget Memo
gadget.tm.land.to/pukiwiki/MOUSE%20TIPS/#pc933e31

794 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 14:17:49 ID:pld7JNV0]
シナリオもある程度できた
イラストもある程度描けるようになった
さていよいよ。。。

これからゲームプログラミングをイチから覚えるなら
C#から入った方がいいですか?
関連書籍が少ない気がしないでもないですが。。。

795 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 15:21:57 ID:V9t8Hq3e]
ジャンルによるんじゃね

796 名前:名前は開発中のものです。 mailto:sage [2008/02/02(土) 15:41:41 ID:pld7JNV0]
ジャンルはSRPGです
シナリオのあるシヴィザードもどきな作りです

797 名前:名前は開発中のものです。 mailto:sage [2008/02/05(火) 11:18:08 ID:SuSx4cF9]
>シナリオもある程度できた
>イラストもある程度描けるようになった
>さていよいよ。。。

BGMは?
SEは?

798 名前:名前は開発中のものです。 mailto:sage [2008/02/06(水) 19:57:00 ID:lwQjFBy5]
>>797
BGMやSEはフリー素材を探してみます

MSのサイトからVC# 2008 のEXPRESS EDITION を落としました
ガンバルゾ

799 名前:名前は開発中のものです。 mailto:sage [2008/02/07(木) 04:50:06 ID:0WsdZlaN]
がんがれ

800 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 07:01:56 ID:vAjuqD62]
右も左も前も後ろも上も下もわからないので
Windowsゲームプログラミング(著:赤坂 玲音)
という本を買おうと思うのですが、
一般的なC言語の参考書でいうところの基本編ではなく
応用編のほうまで勉強しないと理解するのは難しいですか?

今は配列とかポインタとか構造体とかfopenぐらいの初心者用の参考書で勉強中です
アドバイスよろしくお願いしますm(_ _)m

801 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 11:08:36 ID:X3Tglhmn]
>Windowsゲームプログラミング
内容は著者のサイトにあるWindowsAPIの解説に、テトリスとか
基本的なゲームを作る内容を加えたものなので、まずそっちを
読んでみれば良いかも。
C言語の入門書の次に読むには悪くないと思う。

ゲームを作る上での話(キーを押したら弾打ったり、タイトル
画面からシーンを切り替えたいみたいなこと)は、C言語関係の
本には載ってないので、自分の使用言語である程度の知識を
得たら、まずいろいろ読みまくるのが良いのでは。

読んでて分かんない部分があれば、その時点でネットで
調べたり教科書で覚えればいいし、具体的なサンプル見て
勉強していった方が飽きないし、頭に入りやすいと思う。

802 名前:名前は開発中のものです。 mailto:sage [2008/02/08(金) 18:41:14 ID:s69uaGj+]
> 今は配列とかポインタとか構造体とかfopenぐらいの初心者用の参考書で勉強中です
あと関数を書けるようになったら、C++だって大丈夫(C言語の機能しか使えないけどw



803 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 10:37:35 ID:cP4krxKj]
アドバイスありがとうございますm(_ _)m

実際にサンプルをいじってみて、
わからないことや、やりたいことができたら
そのつど調べてみようと思います

804 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 17:41:03 ID:cP4krxKj]
買ってきてから知った
第2版が26日に発売って…なんてこったい

805 名前:名前は開発中のものです。 mailto:sage [2008/02/10(日) 19:02:16 ID:YRzw/q4P]
26日までの時間を買ったんだよ!

806 名前:名前は開発中のものです。 [2008/02/13(水) 04:00:42 ID:nKzj8Y4Z]
今RPGを作っているのですが、オープニング画面、マップ画面、メニュー画面、戦闘画面などでキー入力や描画の処理が変わりますよね
自分が考えているのは今どの場面かを入れる変数を作って、

case WM_KEYDOWN:
    if(wp == VK_UP){
        switch(now){
          case OPENING: {処理;}
          case MAP {処理;}
        }
    }

といったものなのですが、「なんか違うなー・・・」と感じてしまいました
これ以外に良い方法ありませんか?

807 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 04:21:06 ID:vPNwDT7b]
>>806 www.google.co.jp/search?q=State+%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3

808 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 09:55:04 ID:Bwqd+W+c]
enum { E_KEY_UP = 1, E_KEY_DOWN = 2, E_KEY_LEFT = 4 E_KEY_RIGHT = 8, };
int g_key_now;

case WM_KEYDOWN:
 if(wp == VK_UP){
  g_key_now |= E_KEY_UP;
  break;
 }
case WM_KEY_UP:
 if(wp == VK_UP){
  g_key_now &= ~E_KEY_UP;
  break;
 }
 
あとはopening処理、map処理の中でそれぞれg_key_nowの内容を見れ。

809 名前:名前は開発中のものです。 mailto:sage [2008/02/13(水) 13:47:09 ID:nKzj8Y4Z]
>>807-808
ありがとうございました
参考にします

810 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 17:17:54 ID:G8Sp5cnc]

本来こうやって扱うデータを
t->x[ i ];

間違って
t->x;

こうやっちゃった時に何か知らせる手段はありませんか?


811 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 17:26:18 ID:GHm3FFF+]
ここで聞いちゃう?

812 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 18:07:59 ID:lllhF3T4]
C/C++でなく,NETを使うとか



813 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 18:34:31 ID:G8Sp5cnc]
>>811
すいません
WinAPIでゲーム作ってたもので、スレ間違えてたかもしれないです

>>812
.NETって便利なんですか?
でもとりあえず今回は、WinAPIでやり遂げます

814 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 22:53:31 ID:wcRsgxJ1]
>>810
その2つの型が違えば問題ないはずなんだけど。
C++ ならクラスを使って意図的に違う型にしてしまえばいい。

815 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:28:26 ID:G8Sp5cnc]
>>814
if( t->x[ i ] == ○○ )  ○
if( t->x == ○○ )     ×

敵の移動の分岐をかいてて、
こういう記述ミスがあって
気づきやすい所だったから良かったものの、わかりにくい所だったらヤバいなぁとおもったのです
違う型にするっていうのは良くわからないです
けど、 == 判定だから、t->x 自身を使えないようにしないとかなぁっておもったり。
そもそもこんなところミスするようじゃダメなのかな・・・

816 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:32:54 ID:scJliyMv]
関数一個書いたらステップ実行でテストする。
関数内部のパス(通り道)を全部通るように条件を変えてきちんとテストする。


817 名前:名前は開発中のものです。 mailto:sage [2008/02/29(金) 23:33:08 ID:wcRsgxJ1]
>>815
いやミスするのが悪いんじゃなくて、その2つのうち後者が明らかに間違いなのに
エラーにならないようにしてるのが悪い。

t->x[ i ] と t->x の型は何だ?
たとえば x が int [5] なら t->x[i] は int で t->x は int* になる。
int とも int* とも比較できてコンパイルエラーにならないものといえば
定数 0 ぐらいしか思い当たらないけど。

818 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 05:42:59 ID:PjSoEStG]
class cmp
{
public:
operator int*()
{
return &a;
}
operator int()
{
return a;
}
int a;
};

こんなクラスじゃない?

819 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 11:19:40 ID:UIc4fn4M]
>>817
Boolean型でした
すいません。なんでxにして書き込んじゃったんだろう・・・

ループ(){

  if( t->I[ i ] == FALSE )continue;

  //処理

}
t->I[ i ]がTRUEだったら
処理をさせるというところで、添え字を忘れていました。

820 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:15:47 ID:/NUBYqIN]
>>819
FALSE が 0 なんだろうな。
C++ なら、配列を std::vector とか operator [] を持ったクラスに置き換えることで
添え字忘れをコンパイルエラーにできるよ。

821 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 21:43:43 ID:UIc4fn4M]
>>820
検索してみたら凄い複雑でした。
が、
がんばってみます

822 名前:名前は開発中のものです。 mailto:sage [2008/03/01(土) 22:10:22 ID:ESvEWD62]
今時、生の配列なんてつかわねーよ JK



823 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 11:02:54 ID:xmvf+jZ6]
>>822
そうなんですか〜

でも、Vectorみたいな機能のある
ゲームによく使われる言語ってC++だけじゃないですか?

824 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 15:52:37 ID:GhRRsOcA]
でも、の意味がわからない

825 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:14:09 ID:lVPKkR1+]
作者も言われたんだろうか?
www.kent-web.com/pubc/book/test/uploader/uploader.cgi?mode=downld&no=690

826 名前:名前は開発中のものです。 mailto:sage [2008/03/02(日) 19:15:07 ID:lVPKkR1+]
誤爆

827 名前:名前は開発中のものです。 mailto:sage [2008/03/05(水) 15:45:57 ID:bPKCPzKB]
>>824
今時と申されたので、C++やってない人はどうなのかなと思って「でも」と付けたのですが

828 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 02:08:27 ID:OuSoXFED]
普通の配列はダメですかorz

829 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 09:29:45 ID:EAhmszDh]
ダメというか・・・生の配列は、面倒くさくない?
スクリプト言語みたいに整備されてるわけじゃないし

830 名前:名前は開発中のものです。 mailto:sage [2008/03/09(日) 10:16:44 ID:aQ0SDMkZ]
生の配列って言うのが、静的確保した配列のことなのか、
vectorやlistでない単なる配列のことなのか


831 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 15:09:01 ID:d99ZfhW7]
低レイヤーな言語での言語仕様に含まれる配列機能のこと

832 名前:名前は開発中のものです。 mailto:sage [2008/03/13(木) 22:56:00 ID:Bu/r75Um]
>>830
後者だろ



833 名前:名前は開発中のものです。 mailto:sage [2008/03/15(土) 15:13:57 ID:Ih29OWzv]
そんなに配列使わないかな。
俺はコンテナも使うけど配列も使う。
間に挿入したり要素数が状況によって全く異なる場合など
コスト面からコンテナを使うしかない場合も多いけど。

834 名前:名前は開発中のものです。 mailto:sage [2008/03/20(木) 10:03:34 ID:EXQJqkak]
配列というか配列演算子は使うでしょ。

HeapAllocで適当にメモリ確保して、配列演算子でアクセス。
後はほっとけばアプリ終了時に勝手にガーベッジコレクションされる。


835 名前:名前は開発中のものです。 mailto:sage [2008/03/20(木) 19:42:02 ID:3UvZiAFC]
Javaやってるとnewしたまんまほったらかしにするのは
道具をしまったりゴミをゴミ箱にまとめるのをサボってるようで
あまりいい気がしない。

836 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 18:18:37 ID:cEumy9Hm]
>>835
アセンブラからCに入ったときはnew・deleteすら気持ち悪かったよ
メモリマップが書けなくなるから

Javaは純粋なメモリ以外のリソースはdisposeが用意されてることが多いし
あまり気にならなかったな、そういうもんだと思った

837 名前:名前は開発中のものです。 mailto:sage [2008/03/21(金) 20:21:50 ID:ZTMinpqE]
自前でガベコレ作れるのがC++。
まあ、STL使えれば十分なんだけどな、大概のケースでは。

838 名前:名前は開発中のものです。 mailto:sage [2008/03/22(土) 23:20:05 ID:4IZtFb4c]
確かに最初はmallocもどこから確保してくるのか不思議に思った。

839 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 02:06:12 ID:ldqMhhG3]
なんという歴史スレ

840 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 11:22:54 ID:F88bQWhP]
>>839
つまり、mallocやnewがメモリーをどんなアドレスで取得してるか、
といった事を調べる話題になるわけだな?

841 名前:名前は開発中のものです。 mailto:sage [2008/03/26(水) 12:06:51 ID:EIOlO8Pg]
>>838
それ言い出すと、ファイルハンドルが何処から発生するか気にするか?
といった話にすらなりかねん。

842 名前:名前は開発中のものです。 mailto:sage [2008/04/28(月) 17:01:51 ID:RhBkZtBI]
Basicから入ったから、Cで明示的にメモリ確保するのが気持ち悪かった
その後、Delphiやってたから、C++でメモリ確保しないクラスが気持ち悪かった



843 名前:名前は開発中のものです。 mailto:sage [2008/05/08(木) 23:18:51 ID:SrRQ+rts]
今作っているゲームはWM_CREATEでけっこうな量のファイルを読み込んでいるので、
Windowが表示されるまでにそれなりに時間がかかってしまいます。
誤って何度も起動してしまわないように、Nowloadingと表示させてから読み込みたいのですが、どのように書けばいいのでしょうか?


844 名前:名前は開発中のものです。 mailto:sage [2008/05/09(金) 00:49:24 ID:haEAxt1Y]
WM_CREATEじゃなくてゲームループで嫁

845 名前:名前は開発中のものです。 mailto:sage [2008/05/09(金) 01:00:00 ID:PjWlUEdO]
>>843
WM_CREATE PostMessageで適当なメッセージ(WM_USERとか)を投げる
WM_PAINT   初期化フラグが立っていなかったらNowloadingとだけ表示する
WM_USERとか 読み込み処理をする、適度にInvalidateRectとUpdateWindowを何度も実行する

ただ、必須スペックに想定してるマシンで5秒以上かかるようなら
ちゃんとイベント処理をこなせるようにしといたほうがいいよ
メイン処理が別スレッドならそれを先に開始するとか、タイマー系イベントでちょっとづつ読み込むとか

846 名前:843 mailto:sage [2008/05/09(金) 11:55:14 ID:hS3O5d5Q]
参考にして作ろうと思います。
ありがとうございました。

847 名前:名前は開発中のものです。 mailto:sage [2008/05/10(土) 23:33:42 ID:3aq7UNCV]
WM_USERよりもWM_APPがおすすめされている。
いずれにせよ、#define WM_INIT (WM_APP + 0)のように名前つけろよ。

848 名前:名前は開発中のものです。 mailto:sage [2008/05/15(木) 22:42:04 ID:YwFUHQF5]
というか、初期には簡単な画像読み込んでLoading画面表示して
フラグ管理して処理すれば別に問題なくね?

849 名前:名前は開発中のものです。 mailto:sage [2008/05/16(金) 03:17:36 ID:LjZKGE9Y]
WindowsXPのPC(メモリ256)で製作中のゲームをVista(メモリ1G)で動作テストしてみたのですが、
なぜかアニメーションの処理速度が半分ぐらいにまで落ちてしまいました。
WindowsAPIのタイマーを使ってアニメーションさせているのですが、これが原因なのか否かも良くわかりません。
なにか思い当たる点が有りましたら、ぜひ教えてください。お願いします。

850 名前:名前は開発中のものです。 mailto:sage [2008/05/23(金) 22:33:50 ID:jPx0XBwI]
VistaだとGDIが完全にソフトウェア処理になるから
描画速度自体は確実に落ちるよ

851 名前:名前は開発中のものです。 mailto:sage [2008/05/23(金) 22:56:52 ID:7QUeOTrk]
DDB使ってなけりゃ関係ねぇよ

852 名前:名前は開発中のものです。 mailto:sage [2008/05/24(土) 09:35:06 ID:WyL1Uf6E]
>>851




853 名前:名前は開発中のものです。 [2008/08/03(日) 23:47:04 ID:eUp/hKRM]
C++とDirectXでゲームを作っています。
音楽と効果音の再生をDirectSoundでやろうと思ったんですが、
調べているとVistaはDirectSoundに対応していないと書いてたんですが、
XPとVista両方に対応させたいとしたら、音は何で鳴らせばいいでしょうか。

854 名前:名前は開発中のものです。 mailto:sage [2008/08/04(月) 03:26:18 ID:Zbdzki70]
ハードウェア固有のサウンドエフェクトとか考えなけりゃ普通にDirectSoundでおk
もしくは最近のSDKに追加されたXAudio2とか検討してみ。
ゲーム用途ならこっちの方が使いやすいと思う。

855 名前:853 mailto:sage [2008/08/04(月) 22:34:14 ID:ro4/+LzM]
どうもありがとうございます。
全く音が鳴らないというわけではないんですね。
使う機能はパンとボリュームと再生位置の通知だけなので、
このままDirectSoundを使うことにします。

XAudio2も時間があるときに見てみます。

856 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 18:45:06 ID:6PyoA3BU]
C++でゲームを作っています。
爆弾をセット、一定時間後に爆発 という動作をさせたいんですがどのように表現すればいいのでしょうか?
一定時間後に、という部分がいまいちうまくいかなくて・・・よろしくお願いします

857 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 19:20:43 ID:jIGgrvQE]
メインループの中で一定時間をカウントして、イベントを起こす。

858 名前:名前は開発中のものです。 mailto:sage [2008/08/07(木) 21:31:09 ID:afI3YDNl]
GetTickCount( )というPC起動から何ミリ秒経過したかを返すAPIがある。
爆弾をセットした時に時間を取得し、爆発時間を加える。
GetTickCount( )で取得した時間が爆破時間を過ぎたら爆発。

859 名前:856 mailto:sage [2008/08/08(金) 15:38:46 ID:czGsvGYo]
お早いアドバイス、ありがとうございます。
やはりタイマー関数のようなものを使わないといけませんか・・・
いまいち使い方がわからないのでifやforを駆使していました。
タイマー関数のようなものを使わないというのはやはり勧められないものでしょうか。

860 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 16:32:11 ID:w2HHE1WB]
俺ならキャラごとにカウンターもたせて、1フレームごとにカウントさせるなぁ。

タイマー使ったら、例えば処理落ちしたときとかに爆発タイミング変わったりして困るんじゃない?

861 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 17:31:57 ID:79kn61a7]
作るゲームにもよる
例えば等速処理したいときとかどうする

862 名前:名前は開発中のものです。 mailto:sage [2008/08/08(金) 21:56:47 ID:w2HHE1WB]
ああなるほど。
処理落ちしても、ゲーム速度は変わらない設計なら当然タイマー使用のほうになるのか。



863 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 14:19:34 ID:u1XmHl+X]
俺もやりたいんだけど1フレームごとにカウントってどうやるの?

864 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 18:37:29 ID:EcZynTEp]
while (1) {
  ゲームループ実行();
  VSYNCを待つ();
  カウント変数++;
}
基本的にはこれだけ

865 名前:名前は開発中のものです。 mailto:sage [2008/08/10(日) 23:22:09 ID:u1XmHl+X]
>VSYNCを待つ();
ってなんですか?

866 名前:名前は開発中のものです。 mailto:sage [2008/08/11(月) 18:10:04 ID:g7MMOmCL]
もうwindowsプログラミング以前の低次元のことだから他のスレいきなよ






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

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

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