VidualStudio.net C++ DXライブラリでRPGを初めて作成中なのですが、キャラ移動、マップ移動、マップスクロールなど実装したのはいいのですが、ゲームがとても重いです。
CPUの使用状況によってはスムーズな動きをするので、おそらくマップの描画に問題があるのだとおもいますが、マップは32x32ピクセルのものをゲームのスタート時に読み込み、2D配列に格納したintタイプのマップにあわせてDrawGraphイメージハンドルからひとつひとつ描いています。
これでは効率が悪すぎるのでしょうか?それとも初めからすべてマップ情報をメモリにロードするとメモリ不足で結局ディスクから読み込んでいるのでしょうか。(でもそれほどの量はテスト段階ですので扱っていないのですが。。。)
もっと効率のいいマップの描き方があれば教えていただきたいのでここに投稿させていただきました。
ちなみに、DXライブラリはここのものを使わせていただいています
http://homepage2.nifty.com/natupaji/DxLib/dxdloa …
No.1ベストアンサー
- 回答日時:
参考になりそうなQ&A:
http://okwave.jp/qa4329951.html要は「マップは予め一枚絵にしておけ」ってことですが。
#描画回数が増えれば増えるほどRAM→VRAMの転送にかかる時間が馬鹿にならなくなります
No.3
- 回答日時:
こんにちは。
補足いただきました。私の勘違いで、的外れな事を書いてしまった様です。読み飛ばして下さい、すんません。
No.2
- 回答日時:
こんばんは。
オフスクリーン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)
}
}
みたいな感じでやってます。
なにが具体的に違うか教えてください。再度すみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ペーパーマリオみたいにドット絵でない2Dのイラストを作ったりするには何のソフトを使えばいいでしょうか 2 2023/05/29 11:28
- その他(ゲーム) みなさんはシミュレーションRPGにどういうものを求めますか? 昔に比べたら作品数がどんどん先細っちゃ 1 2022/03/28 14:55
- Google Maps Google マップの特定の場所を指定した情報を保存し、他の人に送る方法を教えて下さい。 2 2022/05/23 21:08
- CPU・メモリ・マザーボード ゲーミングpcのファンのことについて教えて欲しいです。 6 2023/03/05 07:44
- その他(スマホアプリ・スマホゲーム) Yahooマップについて使い方 前までGoogleマップを使っていたのですが、電車移動はYahooマ 1 2022/11/05 11:06
- Google Maps スマホ料金をおさえるため、スマホプランを月3GBのものにかえた。3GB以内に収めるために、普段はモバ 3 2022/08/09 19:50
- モニター・ディスプレイ PCゲームで急にFPSが落ちました 2 2022/11/18 00:42
- 画像編集・動画編集・音楽編集 ボカロの架空窓口の閉鎖という曲で動画を作りたい者です。 1 2022/06/13 18:12
- Google Maps Googleマップに投稿された画像を自身のホームページやブログ等で使用してよいでしょうか? 1 2023/02/14 00:28
- Google Maps Googleマップの仕様について Googleマップ上で、自分が移動したルートをなぞって移動距離を調 1 2023/01/28 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列を使わずに、変数名を動的...
-
C言語 配列の長さの上限
-
複数の選択範囲の行番号を個別...
-
配列で格納したものをmsgboxで...
-
メモリの初期値
-
配列同士の文字列の比較
-
VB.netでRadioButtonを配列にし...
-
パイソンの
-
2次元配列を戻り値とする関数?
-
FORTRAN77の配列(除算)
-
C# Listを使わずに2次元配列の...
-
ポインタの配列のコンマについて
-
unsigned char配列への入力の仕方
-
VBで構造体の配列を関数に渡す...
-
テキストファイルから文字列を...
-
C# 配列の変数宣言について。
-
テンキーの配列について
-
c++によるジャンケンプログラム
-
Functionの戻り値を2次元配列...
-
char型の配列 char buff[20] = ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列の参照渡しで型が一致しま...
-
配列を使わずに、変数名を動的...
-
VBで構造体の配列を関数に渡す...
-
配列で格納したものをmsgboxで...
-
unsigned char配列への入力の仕方
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
擬似コード 長さがmの配列でな...
-
【速いブラインドタッチ】手を...
-
パイソンの
-
C言語初心者 ポインタについて...
-
ExcelVBAで質問です。離れた二...
-
配列を含む構造体の初期値について
-
複数の選択範囲の行番号を個別...
-
Functionの戻り値を2次元配列...
-
C++ vectorに配列をプッシュしたい
-
先頭アドレスとは何ですか?
-
テキストファイルから文字列を...
-
Redimした動的配列はEraseする...
おすすめ情報