プロが教える店舗&オフィスのセキュリティ対策術

VidualStudio.net C++ DXライブラリでRPGを初めて作成中なのですが、キャラ移動、マップ移動、マップスクロールなど実装したのはいいのですが、ゲームがとても重いです。

CPUの使用状況によってはスムーズな動きをするので、おそらくマップの描画に問題があるのだとおもいますが、マップは32x32ピクセルのものをゲームのスタート時に読み込み、2D配列に格納したintタイプのマップにあわせてDrawGraphイメージハンドルからひとつひとつ描いています。

これでは効率が悪すぎるのでしょうか?それとも初めからすべてマップ情報をメモリにロードするとメモリ不足で結局ディスクから読み込んでいるのでしょうか。(でもそれほどの量はテスト段階ですので扱っていないのですが。。。)
もっと効率のいいマップの描き方があれば教えていただきたいのでここに投稿させていただきました。

ちなみに、DXライブラリはここのものを使わせていただいています
http://homepage2.nifty.com/natupaji/DxLib/dxdloa …

A 回答 (3件)

参考になりそうなQ&A:

http://okwave.jp/qa4329951.html

要は「マップは予め一枚絵にしておけ」ってことですが。
#描画回数が増えれば増えるほどRAM→VRAMの転送にかかる時間が馬鹿にならなくなります
    • good
    • 0
この回答へのお礼

なるほど。
参考になりそうです。ありがとうございました。

お礼日時:2008/10/22 08:39

 こんにちは。

補足いただきました。
 私の勘違いで、的外れな事を書いてしまった様です。読み飛ばして下さい、すんません。
    • good
    • 0
この回答へのお礼

いえいえ、私も曖昧な質問でしたので。

回答ありがとうございました。

お礼日時:2008/10/22 22:19

 こんばんは。


 
 オフスクリーンA,B共に、VRAM上に確保されている事を前提としますが、加速させるのであるならば、前もって32x32のマップパーツを、オフスクリーンBへタイルの様に並べて置き、2D配列を使用して、オフスクリーンBのマップパーツを参照して、オフスクリーンAに向かって並べれば、速くなると思います。

 ↓width = (32x4) height = 32 マップパーツをファイルから読んでタイル状に整列させて一枚絵に仕立てる
 オフスクリーンB
 ○☆▲■

 オフセット位置
 ○-0、☆-1、▲-2、■-3

 ↓オフスクリーンBのオフセット位置をマップする
 int array2d[][]...
 11111111
 12300001
 11111111
 10000001
 10000001
 11111111
 12111111
 11111111

 ↓オフセット位置に対応した絵をオフスクリーンBからオフスクリーンAに向かって転送して埋め尽くす
 オフスクリーンA
 ☆☆☆☆☆☆☆☆
 ☆▲■○○○○☆
 ☆☆☆☆☆☆☆☆
 ☆○○○○○○☆
 ☆○○○○○○☆
 ☆☆☆☆☆☆☆☆
 ☆▲☆☆☆☆☆☆
 ☆☆☆☆☆☆☆☆

この回答への補足

こんにちわ。

恥ずかしながら、貴方が何をしているのかよく理解できません。

ええと、今私がやっているのはファイルから整数型2D配列を読み込み、その整数に対応した絵をイメージハンドルを格納した配列を指定して描画する。
つまりファイルから
map[][]={
1,1,1,1,1,1,
2,2,1,1,0,0,
0,0,0,1,1,1,
1,1,1,1,3,3,
0,0,2,3,1,1,}
このようなものを2d配列に格納、

イメージファイルから
○☆▲■
を読み込み、イメージハンドルの配列に
img[0] = ○、img[1] = ☆、img[2] = ▲、img[3] = ■、
と格納し、
for(i=0;i<;i++){
for(j=0; j<; j++){
DrawGraph(x,y, img[map[i][j]],TRUE)
}
}
みたいな感じでやってます。

なにが具体的に違うか教えてください。再度すみません。

補足日時:2008/10/22 03:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!