ページ 11

RPGサンプルソースについて

Posted: 2013年3月07日(木) 23:04
by bobo
はじめまして。C++初心者です。
初めてゲーム開発でき、わくわくしながら昨日からこのサイトに張り付いています。

RPGを作りたいのですが、こちらで紹介されているサンプルソースですが、マップフィールドがウインドウサイズより大きい場合のサンプル(キャラクタ移動)はありませんでしょうか?

http://dixq.net/g/(ゲーム基本編の17~25)

また、画面の再描画ですが、毎回マップとキャラクターを更新しないといけないんでしょうか?
色々なマップが多くなるにつれ、マップ情報の格納などデータが肥大化してしまう気がしているんですが、
レイヤー分け(マップはマップ、キャラクターはキャラクターで動作する対象だけ再描画する)など出来ないんでしょうか?

マップは自分の今居るマップ情報だけ保持、メモリは都度開放する(?)作りになるんでしょうか?

よろしくお願いします。

Re: RPGサンプルソースについて

Posted: 2013年3月08日(金) 00:22
by softya(ソフト屋)
> RPGを作りたいのですが、こちらで紹介されているサンプルソースですが、マップフィールドがウインドウサイズより大きい場合のサンプル(キャラクタ移動)はありませんでしょうか?

手前味噌ですが私の書いた講座など如何でしょうか。
「RPG講座。」
http://dixq.net/forum/blog.php?u=114&sd=a&c=2

>また、画面の再描画ですが、毎回マップとキャラクターを更新しないといけないんでしょうか?
>色々なマップが多くなるにつれ、マップ情報の格納などデータが肥大化してしまう気がしているんですが、
>レイヤー分け(マップはマップ、キャラクターはキャラクターで動作する対象だけ再描画する)など出来ないんでしょうか?

どちらにしても画像もマップ情報もメモリには置いておかないと行けないのでメモリの心配は無用です。
あとマップチェンジの時に読み直せば良いので、肥大の心配も無用です。
それに大昔のMS-DOSと違い再描画したほうが簡単なので、逆に部分的に書き換えるほうが難易度が上昇します。
例え5レイヤーぐらい有っても今の時代は全部再描画しても問題ないと思ってもらって良いです。

Re: RPGサンプルソースについて

Posted: 2013年3月08日(金) 10:53
by bobo
softyaさん

ありがとうございます。確かにサンプル頂きました。
ありがたく解析させていただきます。

>例え5レイヤーぐらい有っても今の時代は全部再描画しても問題ないと思ってもらって良いです。

サンプルでは1秒間に4回?画面を更新していたので、WEB系出身の私としては画像のロードは重いという先入観がありました。
都度、画像ファイルを参照するわけではなく、メモリ上に乗ったバイナリを毎回参照するだけですね。

考えてみれば、画像描画もウインドウサイズは常に一定なので、ロードする回数も固定なんですね。
でも、全ての画像をメモリに載せると言うと、メモリ領域も気にしなければいけないのでしょうね。。

◆また、環境周りの質問もさせて頂きたいのですが。

サンプルの方はVisualstudio2008で作成されたようで、2012の私の環境では警告(恐らく文法的な記述が変わった?厳密になった?)が表示されます。
リビルドすれば問題なく動作するのですが。

そこで、このDXライブラリですが、概要を見るとDirectXのC++用のインターフェースライブラリですね。
という事で、DirectXがインストールされていないPCでは動かない、WindowsであればVisualStudioでなくても開発環境は構築できる(eclipseなど)。

何が聞きたいかと言いますと、このVisualStudioの2008,2012などのバージョン間の差異は、exe実行した時のランタイムに影響しないのであれば、このような文法チェックはMicroSoft上の都合という事ですよね?それともDirectXのバージョンに合わせた文法にしないといけないものでしょうか?

開発環境をVisualStudio→eclipseに移植してもソースをそのままコピペで利用できるんでしょうか?

長くなって申し訳ありません。お分かりになる方ございましたら、よろしくお願いします。

Re: RPGサンプルソースについて

Posted: 2013年3月08日(金) 11:30
by softya(ソフト屋)
bobo さんが書きました:softyaさん


サンプルでは1秒間に4回?画面を更新していたので、WEB系出身の私としては画像のロードは重いという先入観がありました。
都度、画像ファイルを参照するわけではなく、メモリ上に乗ったバイナリを毎回参照するだけですね。

考えてみれば、画像描画もウインドウサイズは常に一定なので、ロードする回数も固定なんですね。
でも、全ての画像をメモリに載せると言うと、メモリ領域も気にしなければいけないのでしょうね。。
秒間60回更新されるはずなのですが。
それと画像を全部メモリに載せるかは、500MB程度の実行メモリで収まるか次第です。
収まれば全部を最初の段階で読んじゃっても構いません。
bobo さんが書きました:softyaさん
サンプルの方はVisualstudio2008で作成されたようで、2012の私の環境では警告(恐らく文法的な記述が変わった?厳密になった?)が表示されます。
リビルドすれば問題なく動作するのですが。
どんなエラーが出ていますか? 2012が当方はちゃんと動かないので確認不能です。
リビルドで通るのなら、VC++バージョンの差による何らかの警告レベルなのかもしれません。
bobo さんが書きました: そこで、このDXライブラリですが、概要を見るとDirectXのC++用のインターフェースライブラリですね。
という事で、DirectXがインストールされていないPCでは動かない、WindowsであればVisualStudioでなくても開発環境は構築できる(eclipseなど)。

何が聞きたいかと言いますと、このVisualStudioの2008,2012などのバージョン間の差異は、exe実行した時のランタイムに影響しないのであれば、このような文法チェックはMicroSoft上の都合という事ですよね?それともDirectXのバージョンに合わせた文法にしないといけないものでしょうか?

開発環境をVisualStudio→eclipseに移植してもソースをそのままコピペで利用できるんでしょうか?

長くなって申し訳ありません。お分かりになる方ございましたら、よろしくお願いします。
VC++の構文チェックの問題と実行やライブラリの問題は別ですね。
それとeclipseでは動作確認していないので、そのまま動く保証は出来かねますが動かないような無茶はした覚えはありません。
もし問題が有っても少々の手直しでいけるはずです。
gcc(eclipse)用のDXライブラリを導入してもらえばコンパイルから実行まで可能だと思います。

あと「DirectXがインストールされていないPCでは動かない」ですが、DirectXエンド ユーザー ランタイムはWindowsXP以降であれば絶対入っていると思います。