ページ 11

キャラクターの移動速度が

Posted: 2009年3月08日(日) 16:35
by s-rush
いつもお世話になっています。
先日の勉強会・懇親会お疲れ様でした。

貴重なお話を聞かせていただいた後、無性にゲーム作りを進めたくなって、
製作を進めたのですが、キャラクターの動きが急に遅くなってしまいました。

この現象が起きたのはマップを少し大きくした後です。
まだ全体のマップも完成しておらず、(4分の1くらい?)
このままマップを大きくしていくと、キャラの移動速度が
極端に遅くなってしまうのではないかと心配しています。

プロジェクトごとアップさせていただきますので、少し見てもらえないでしょうか?


[新バージョン]
http://down11.ddo.jp/uploader/download/ ... /data1.zip
pass
[pokemon]
マップの1部は未完全ですが、気にしないでください。

マップを入れ替える前の物もアップしておきます。
移動速度の比較ができるんじゃないかと思います。
こちらの方は少しバグが残っていますが、音が鳴らないだけなので
支障はないと思います。

[旧バージョン]
http://down11.ddo.jp/uploader/download/ ... h/data.zip
pass
[poke]


開発環境はおなじみのVC++2008 EEです。

よろしくお願いします。

Re:キャラクターの移動速度が

Posted: 2009年3月08日(日) 16:58
by Mist
graf.cppの39行目からの「フィールド描画」の描画で、「画面外は描画しない処理※1」とコメントしているけど未実装のようですね。
全部描画しているからマップ広げたら遅くなったんじゃないでしょうか。

Re:キャラクターの移動速度が

Posted: 2009年3月08日(日) 17:42
by s-rush
>>「画面外は描画しない処理※1」とコメントしているけど未実装のようですね。
どのような処理というかアルゴリズムが思い浮かばなかったので^^;

どのような感じで実装すればよろしいのでしょうか?
自分の位置を中心にY方向±10、X方向に±8の範囲を描画する
という感じでいいのでしょうか?

Re:キャラクターの移動速度が

Posted: 2009年3月08日(日) 18:06
by Mist
> 自分の位置を中心にY方向±10、X方向に±8の範囲を描画する

まぁ、そういう方法でもいいと思いますけどちょっと計算すればそのマップチップが表示される範囲に含まれているかどうかはすぐにわかると思いますよ。

こういうのは自分で考えられるのが一番と思います。
一応、以下に私のやり方書いておきますのでどうしても思いつかない場合に見てください。
(以下の数行をマウスでドラッグすると見ることができます)

マップチップの一つの大きさが32*32ですから、あるマップチップが画面に表示されるかどうかは描画座標が以下の条件を満たしている場合になります。
-32 < 描画X座標 < 表示領域のX方向サイズ(640)
-32 < 描画Y座標 < 表示領域のY方向サイズ(480)

Re:キャラクターの移動速度が

Posted: 2009年3月08日(日) 18:16
by s-rush
>Mistさん
ありがとうございます。
しばらくドラッグは我慢して、少し考えてみます。

Re:キャラクターの移動速度が

Posted: 2009年3月08日(日) 22:02
by s-rush
Mistさん、ご回答ありがとうございました。
おかげで解決することができました^^

ちなみに、ドラッグするとこなく解決したのですが、
私がはじめに定義した(?)描画範囲が違っていました^^;

-32 < 描画X座標 < 表示領域のX方向サイズ(640)+32
で考えていました・・・

ここんところを参考にさせていただいて修正しましたけど。