ページ 11

DXライブラリで作る。RPGについて

Posted: 2010年10月25日(月) 20:37
by 滝の上のマスカット
初めまして、滝の上のマスカットといいます。
開発環境【VC++2010】
現在、DXライブラリを応用してRPGを作っています。
1面での処理に関しては、ある程度わかったのですが、
2面3面・・・となると、どう作ればいいのかわからなくなります。
わからない部分では、1面から2面へのリンクといったものです。
VC++2010で、今までなら、フォームを●個作って・・・という考え方ができたのですが、
これの場合は、そういった方法がとれないようなので困っています。
ちょっとグダグダしてしまったので、まとめます。

①DXライブラリを応用して、RPGを作っている。
②2,3面目の作り方がわからない。(1面はできる)
③1面→2面といった、リンクの方法がわからない。
④リンクした時に1面の情報を記録しておく。

自分の考えを言うと、リンクのところに、特定の数字を配列として入れておいて、そこに来たら
次のところと比べてキャラの位置を変える、といった感じです。
難しく考えすぎているだけなのでしょうか。
ちょっとした、ヒントでいいので、教えていただけないでしょうか。

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月25日(月) 21:39
by softya
②2,3面目の作り方がわからない。(1面はできる)
RPGであまり面と言う概念は使わないと思いますが、マップはファイルから読み込むのでしょうか?
もし配列で書いているのならかなり無茶ですが、実験段階ならそれも可です。

③1面→2面といった、リンクの方法がわからない。
当たり判定で特定の座標(イベント)を踏んだら、マップを切り替えるコードを作ります。
色々手法はありますが、マップ毎にマップ切り替え用にイベントを用意します。
踏んだイベントに対応をするマップの番号や座標をを構造体配列などで持っていれば良いでしょう。
/* イベント構造体の例 */
typedef struct {
int EventX;
iny EventY;
int EventSizeX;
int EventSizeY;
int JumpMapNo;
int JumpX;
int JumpY;
} tMapEvent:


④リンクした時に1面の情報を記録しておく。
この意味がわかりません。
1面の情報は何に使うのでしょうか?

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月25日(月) 21:44
by softya
もっと雑な接続方法としては、マップの端は必ず次のマップに接続する方法もあります。
マップ毎に接続する4方向のマップ番号を配列で持てば良いです。-1なら接続しない=マップチャンジしないって事でよいでしょう。

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月26日(火) 17:47
by ISLe
マップにアクセスするところをマップ情報へのポインタを使って実装すれば切り替えは簡単です。
DXライブラリにもRPGにも限定されない話だけどそういうことではないのかな。

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 12:06
by 滝の上のマスカット
もし配列で書いているのならかなり無茶ですが、実験段階ならそれも可です。

残念ながら、配列で書いているのです・・・・
マップを配列で書く以外の方法が、わからないもので・・・

あと、1面の情報を記憶しておくっていることに関しては、
アイテムを取得した時に再配置されないようにするためです。
取得した時に配列ならそこを 1(アイテム有)から 0(アイテム無)に
できるように感じたのですが・・・
配列を使わない方法では無理でしょうか?

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 15:47
by 滝の上のマスカット
↑に加えて、リソースの使い方なんですけど。
System::Resources::ResourceManager ^Resource
= gcnew System::Resources::ResourceManager(GetType());
を利用するのでは、ダメなのでしょうか。

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 16:34
by softya
>もし配列で書いているのならかなり無茶ですが、実験段階ならそれも可です。
>↑
>残念ながら、配列で書いているのです・・・・
>マップを配列で書く以外の方法が、わからないもので・・・

数種類のマップなら、それでも良いですがRPGだと町やフィールドやダンジョンで相当な広さや枚数になると思いますので、マップ作成ツールを利用しないと辛いと思います。
マップエディタ(作成ツール)は自作するか、汎用の物を使います。

無料のマップエディタの色々です。この中から都合の良いものを選びます。
http://search.vector.co.jp/search?query ... %83B%83%5E


>あと、1面の情報を記憶しておくっていることに関しては、
>アイテムを取得した時に再配置されないようにするためです。
>取得した時に配列ならそこを 1(アイテム有)から 0(アイテム無)に
>できるように感じたのですが・・・
>配列を使わない方法では無理でしょうか?

マップの書き換えた情報を覚えておきたいのですね?
ただ、その方法で覚えるとマップ配列全体をセーブデータにする必要が出てきます。
私のオススメとしては、書き換えた座標とデータだけを構造体配列に記録しておいて、マップロード時にその情報を書き換えるのはどうでしょうか?
あるいは宝箱とかはキャラクタにしておくのもひとつの手です。

>System::Resources::ResourceManager ^Resource
> = gcnew System::Resources::ResourceManager(GetType());

申し訳ない。C++/CLIに詳しくないので。
と言うかC++/CLIで書いているんですね。
資料とか少なくんじゃないですか?
ここで、C++/CLIでDXライブラリを使っている人を初めて見ました。 画像

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 17:21
by 滝の上のマスカット
もう一度環境を書き直します。
開発環境:Visual C++ 2010 Express(C++/CLI)

数種類のマップなら、それでも良いですがRPGだと町やフィールドやダンジョンで相当な広さや枚数になると思いますので、マップ作成ツールを利用しないと辛いと思います。
マップエディタ(作成ツール)は自作するか、汎用の物を使います。

無料のマップエディタの色々です。この中から都合の良いものを選びます。
http://search.vector.co.jp/search?query ... %83B%83%5E
↑確認させていただきました。
RPGといっても、マップを数字によって書いて、その数字に対する画像をそこに適応するみたいなことなのですが。
簡単に書くと、(自キャラは省略してます)
1=壁,2=敵,3=アイテム
{1,2,3}
とかくと、
壁敵アイテムと表示されるようにしているのですが・・・
一応、VBのほうで、それぞれを数字に変換するソフトを作って、それを利用しているのですが。

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 17:56
by softya
>RPGといっても、マップを数字によって書いて、その数字に対する画像をそこに適応するみたいなことなのですが。簡単に書くと、(自キャラは省略してます)
>1=壁,2=敵,3=アイテム
>{1,2,3}
>とかくと、
>壁敵アイテムと表示されるようにしているのですが・・・
>一応、VBのほうで、それぞれを数字に変換するソフトを作って、それを利用しているのですが。

ご本人が面倒でも構わなければ別段それでも良いのですが。
1=壁,2=敵,3=アイテム,4=イベント1,5=イベント2
{1,2,3,4,5}
でも本人が作るのが辛くなければ出来ると思います。

あとアイテム取得の状態をマップ配列を書き換えることで残しておくことも別段出来ますし、マップ配列の内容自体をセーブして保存することも出来ます。やりたいようにやって構いません。

ただ、私は苦労すると思いますよと自分の経験から説明しているだけですので、どれを選ぶかは滝の上のマスカットさんが決めてください。
滝の上のマスカットさんが作りたい方向性を残しつつ、出来る提案をしてみます。 画像

Re:DXライブラリで作る。RPGについて

Posted: 2010年10月27日(水) 22:56
by 滝の上のマスカット
そうですか。
地道にやるのも好きなので、自分はそっちの方を選びたいと思います。
いろいろとご指導ありがとうございました。
質問に対する、答えを見つけ出せたので、ここで〆たいと思います。 画像