ページ 1 / 1
実行速度・・・・・
Posted: 2007年11月07日(水) 00:16
by 自由の天使
たびたび、申し訳ありません。
今、卒業研究を製作していて、当サイトを参考にさせていただいています!
で、自分でも参考にしながら、プログラムでゲームを作成しているのですが、実行速度が恐ろしいほど遅いのですが、どのようにすればいいのでしょうか?
プログラムは現在、メインプログラムからタイトル画面(選択や音楽)を作成しているところです。
関数の使いすぎなのでしょうか??
パソコンのメモリはしっかりあるのですが・・・・。
よろしくお願いします。
Re:実行速度・・・・・
Posted: 2007年11月07日(水) 10:24
by GPGA
実行速度の話を行う場合、使用しているPCのOS、CPU、残メモリ量、残HDD量/総HDD量、グラフィックカードの提示と
作成しているゲームの画面サイズ、一画面に表示している画像の総合面積等を明記してください。
ただ、「タイトル画面(選択や音楽)を作成」や「パソコンのメモリはしっかりある」などのあいまいな情報提示では、回等側も憶測レベルの回等しかできません。
憶測レベルで回答するならば
ゲームで処理速度が遅い場合、基本的に描画周りで、関数呼び出しなどの通常処理では
for文を1万回ほど回すなどというような、よほど負荷の高い処理を行う場合以外はほとんどありません。
Re:実行速度・・・・・
Posted: 2007年11月11日(日) 16:00
by 自由の天使
ありがとうございました!!
Re:実行速度・・・・・
Posted: 2007年11月11日(日) 19:01
by 管理人
解決でいいのでしょうか?
DXライブラリをお使いでしたら、遅くなる要素は色々考えられます。
・画面をキャプチャする関数を何度も呼んでいる。
・フォント変更関数を毎回呼んでいる。
・何度も何度も画像をαブレンドしている。
・画面全体を常にαブレンドしている。
・待機をSleepなどではなく、whileで回して待機している。
・1秒間にかなりの回数の描画をしている。
などなど・・。
後、60FPSでは、1万回程度の計算なら処理は重くならないのではないでしょうか?
1万回描画するなら別ですが・・。
シューティングだとよく100x100の比較など何度もするので・・。
恐らくGPGAさんの仰った意味は具体的な量ではなく「多い」という代名詞的言い方だったのでしょうが、
質問者さんがシューティングを作っていると言う事で、
比較回数を今後気になさると思ったので、言わせていただきました。
私の環境では、10億回の足し算の計算は0.6秒でした。もちろん単純にフルに使ってしまうと重くなるでしょうけど、
こちらのプログラムで計算速度が計測できますので、実行してみてください。
#include <stdio.h>
#include <time.h>
int main(void){
int i,ans=0;
clock_t start;
start = clock();
printf("計算開始\n");
for(i=0;i<1000000000;i++)
ans+=i;
printf("処理に%.3f秒かかりました。結果%d\n", (clock()-start)/1000.0, ans);
return 0;
}
ansは無駄な計算で、結果の確認には関係ありません。コンパイラの最適化によって計算が省かれる事を防ぐ為にいれてあります。
Re:実行速度・・・・・
Posted: 2007年11月11日(日) 22:49
by GPGA
>管理人さん
こんばんは
for文一万回に関してですが、補足説明が足りませんでした。
最近各掲示板を見ていて思ったのが、DXライブラリを使用している方々のPCでは
いまだにWindow98などのマシンを使用している方が少なくないということです。
このあたりのOSのCPUの性能は300MHz~800MHzくらいだと思います。
今回、質問者の方がタイトルで重くなるということを言っているあたり
かなり低スペックPCを使用していると考えました。
また、for文の中の処理について何も記述していなかったのですが
ゲームということで、シューティングの弾一万個分の移動および、当たり判定を行うくらいの
処理を想定して、書きました。
説明が不足し、混乱させてしまったこと、誠に申し訳ありませんでした。
Re:実行速度・・・・・
Posted: 2007年11月11日(日) 23:35
by 管理人
補足ありがとうございます。
そうですね、ノートPCでPenIIIとか、デスクトップでもセレロン等を使っている人が思いの他多い事最近知りました。
重くなる・・というスペック的な要素が絡む質問はご自分のスペックを示してもらうのが一番ですね。
1万回の計算と言う意味はそういうことだったんですね。
1万個一度に画面に弾が表示されるとすごいことになりそうですね^^;
それだと重くなると思いますm(_ _)m
ボムだったり、何かのアイテム変化だったり、自機以外の見方だったり、色々な要素が増えてくると単純に弾と自機だけの比較ではなくなってきますものね。
こちらこそ変に言葉尻捉えるような事を言ってしまいすみませんm(_ _)m