• ベストアンサー

Doja3.5 APIのImageMapについて

Doja3.5でシューティングを作っています。 マップ画面に16x16のマップチップを並べて描画しているのがすが、当たり判定やマップの上下ループの処理などをいれるにつれて処理が重くなってきました。 そこで、マップの描画にImageMapを使用したところ処理の重さは以前より改善されたのですが、いろいろネットで調べていたところ「ImageMapはつかわない」という様な書き込みをちらほら見るのですがImageMapは、あまり良くない関数なのでしょうか・・・ 使用しないほうがいいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yokkou
  • ベストアンサー率30% (34/111)
回答No.1

ImageMapがオプションAPIだとすると、あまり使用されないのかもしれません オプションAPIの場合、各端末によって動作が異なる危険があり、Dojaで動いても携帯で動かないという最悪の事態を招きます 処理速度はpaintでの描画オブジェクト数を減らしたり、処理ロジックを見直すことで改善できます また、常に背景全部を描画しているとすると、15*15のマップチップを描画することになります 当然、期待する性能は得られません 発想を転換すれば、結構性能改善されますよ

hare_gu2005
質問者

お礼

ご回答ありがとうございます。 なるほど・・・オプションAPIであるかどうか、 調べてみたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DLLって

    C言語を勉強しているのですが、いまいちよくDLLの意味がわかりません。例えば、シューティングのゲームで、当たり判定の処理をDLL形式?で保存して、違うシューティングを開発するときにそのDLLの関数を使って当たり判定を簡単にする。みたいな解釈でいいのでしょうか。また作成するときはどうやって作ればいいのでしょうか。ちなみにvisual studio 2008を持っています。ご教授お願いします。

  • Windows API ペンを作るタイミング

    ゲームのプログラミングをしています。 テキストのサンプルプログラムではペンやブラシをWM_CREATEの中で hPen[1] = CreatePen(PS_SOLID, 2, RGB(50,70,0));    :    : のような感じで生成して WM_PAINT内でSelectObject(hdc, hPen[i]); として使っているのですが 自分のプログラムはPaintという関数を使っています。 その場合Paint(~)にそれらの配列を渡す形で良いのでしょうか? 一応今はそれで動いてます。 ただ描画の処理は1つの関数にまとめると書いてあったので Paint内で生成&削除をした方がよいのかとも思いまして・・・ どっちが一般的なのか、どういう場合はどうすればいいのかっていうのが 経験がなくて全然わからないので教えて欲しいです。 一応落ち物ゲームやシューティングゲームを想定してます。

  • 画像読み込み

    現在Microsoft Visual C++ 2008 Express Editionをつかってゲームを製作していてhttp://homepage2.nifty.com/natupaji/DxLib/dxprogram.htmlを参考に勉強しているのですがここの  30.アクションゲームにおけるマップとの当たり判定基本におけるプログラムでの // マップの描画 { int i, j ; for( i = 0 ; i < MAP_HEIGHT ; i ++ ) { for( j = 0 ; j < MAP_WIDTH ; j ++ ) { // 1は当たり判定チップを表しているので1のところだけ描画 if( MapData[i][j] == 1 ) { DrawBox( j * CHIP_SIZE, i * CHIP_SIZE, j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE, GetColor( 255, 255, 255 ), TRUE ) ; } } } } // キャラクタの描画 DrawBox( ( int )( PlX - CHAR_SIZE * 0.5F ), ( int )( PlY - CHAR_SIZE * 0.5F ), ( int )( PlX + CHAR_SIZE * 0.5F ) + 1, ( int )( PlY + CHAR_SIZE * 0.5F ) + 1, GetColor( 255, 0, 0 ), TRUE ) ; のところのキャラクターとマップの画像を自分の書いた画像にするのはどうすればいいのでしょうか? 一応上のプログラムと同じサイズの画像を書き、load graphなどでためしているのですが成功しません・・・。 分かる方いらっしゃいましたら教えてもらえないでしょうか(m;_ _)m

  • XNAでのゲーム制作で困っています

    2Dゲームの衝突判定なのですが、 キャラクターサイズの半分がめり込んだ形になってしまいます。 原因は基準座標点の取る位置です。 キャラクターは中心で、マップチップは左上になっており、今いる座標をマップサイズで割ったとしてもずれが生じるみたいです。 キャラクターが中心なのは、敵との衝突判定をやりやすくするためです。 補正をかけたとしても直りそうにないのですが、何かアイディアはありませんか? マップ描画の基準座標が中心になるように設定できればいいのか、 若しくは別の方法があればご教授お願いします。

  • Wiiの解像度は横720×縦480だそうですが

    Wiiの解像度は横720×縦480ピクセルだそうですが地デジは1920x1080 ということはゲームの上下に黒帯が入るのですか? それとも勝手に画像を伸ばすのでしょうか? その場合ゲームのキャラが太って見えたり、動きがおかしくなったり当たり判定が違ったりしないのでしょうか?

  • C# マップエディタの描画方法

    現在マップエディターを作ろうとして 色々試しているのですが かなり迷走してきたので質問させてください 現在RPGツクールなどでよく見られる マップチップの配置をするところの描画で悩んでいるのですが private void Picture_Main_Paint(object sender, PaintEventArgs e) { float fSize = 1.0f; //float fSize = 0.5f; //float fSize = 0.25f; e.Graphics.ScaleTransform(fSize, fSize); for (int z = 0; z < 4; z++) {   for (int j = 0; j < 100; j++) // ループ回数は適当です   {     for (int i = 0; i < 100; i++)     {       int X = (int)(32 * fSize) * i;       int Y = (int)(32 * fSize) * j;       e.Graphics.DrawImage(bitmapBase[0, 0], new Point(X, Y));     }   } } } といったようにしているのですが 等倍ならまだしも縮小したときは画面分のループを行うので 処理が重すぎて使い物になりません。 マップエディタのような描画で なにかヒントになるようなものがあれば何でもいいので 教えていただけないでしょうか よろしくお願いします。

  • GetDeviceCapsの値が不正

    現在、MFCを使ってドローツールを作成しています。 マップモードをMM_HIMETRICとし、内部データも0.01mm単位で持ち、 View描画処理と帳票処理を共通化しています。 そこで質問なのですが、一部の関数(CreateCompatibleBitmap等)で どうしてもピクセル単位で指定する必要があるため、 HIMETRICからPIXCELへの変換処理をしています。 この変換処理にGetDeviceCaps(HORZSIZE OR VERTSIZE)を使っているのですが、 この関数は、ディスプレイ(グラフィックボード)によって正しい値が取得できないことが判明しました。 仕方なく、別の手段としてGetDeviceCaps(LOGPIXELSX OR LOGPIXELSY)や HIMETRICtoDPなど使用してみたのですが、 マップモードをMM_HIMETRICとした場合、誤差があり正しく描画できません。 漠然とした質問で申し訳ないのですが、行き詰ってしまいました。 ドロー系Winodwsアプリの経験のある方で、 あっこれは!と言ったヒントがありましたら教えて下さい。 宜しくお願い致します。

  • DispatchMessage呼び出しでブロックする

    Win32APIのDispatchMessageについて質問させてください。 ゲームのように自動的に更新描画されるアプリケーションで、メッセージループと同じスレッドで描画処理を行うことを想定しています。 通常の挙動として、ウィンドウメニューを開いたりした場合、DispatchMessageの呼び出しがブロックするようです。(メニューを閉じるまで関数が戻らない) 例えば、Windows付属の「ピンボール」などでも、メニューを開いた瞬間にすべての時が止まります。 このような現象を避けたいのですが、何か良い方法はないでしょうか? 描画ループとメッセージループを別スレッドで非同期に処理する方法も試しているのですが、「メニューアイテムを選択してもメッセージが来ない現象」(これの条件など詳しくは調査できてないです)が発生したりして、いろいろ悩まされてます。 何か情報がありましたら教えてください。よろしくお願いします。 テスト実行の環境はWindows2000です。

  • サイズの確認はどうすれば?

    現在javascriptで簡単なシューティングゲームを 作っています。 で、ウインドウズのペイントを使って自分で 自機、敵機などをデザインしたのですが その幅、高さをどこで確認したらいいのか 分かりません。 プロパティで512×384となっていますが 絶対にそこまででかくはありません。 サイズが分からないので当たり判定の処理に 困り、現在とまどっております。 どこを見ればペイント機能で作った画像のサイズを 確認することができるのでしょうか。 よろしくお願いします。

  • WSHスクリプトから動かしたEXCEL・VBAマクロでWSHスクリプトを停止する方法

    WSHスクリプトからEXCELファイルのVBAマクロを呼び出し実行させます。 このマクロ内ではif関数で設定している条件の真偽を判定しています。偽の場合、マクロは終了しEXCELファイルは一旦閉じられます。そして一定時間がたったら、WSHスクリプトのループ処理で再び同じマクロが開かれif関数で条件判定を行います。 もし、真の場合、マクロの設定処理の実行・終了とともにWSHのループ処理も終了させたいのですが、VBAマクロからそのマクロを実行させているWSHスクリプトを停止させることは可能でしょうか。

このQ&Aのポイント
  • 性格がタイプでも容姿が好きじゃないと付き合いにくい?蛙化現象に陥ったら
  • 見た目と中身、どちらが重要?見た目を重視しない人は存在する?
  • 友人から恋人に発展する際に気をつけるべきこととは?
回答を見る