RPGというか、経営シュミレーションみたいなものを作ることを目標にしているのですが、
マップの描画ってマップチップに分けて逐一描画するより画像一枚にしてスクロール表示の方がいいのですか?
店の内装を、どうぶつの森の自室のように自分の好みに変えられる作りにしたいので、
マップの1区間に一つずつ変数を当てはめて、そこにリクエストに応じて一つ一つマップチップを入力していこうと思うんです
描画するとき、その変数一つ一つを一々描画していたら遊べないほど重くなったりするでしょうか?
そもそもそのプログラムが描けるかも疑問ですが・・・目標として。
RPGマップ描画、一々読み込みは不可?
Re: RPGマップ描画、一々読み込みは不可?
マップの大きさや描画方法によって多少は左右されるとは思いますが、
多次元配列にマップ情報を格納し、ループ文によってマップチップを
1つずつ描画する方法でも問題はないと思われます。
多次元配列にマップ情報を格納し、ループ文によってマップチップを
1つずつ描画する方法でも問題はないと思われます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: RPGマップ描画、一々読み込みは不可?
そうですね。dxwx さんが書きました:RPGというか、経営シュミレーションみたいなものを作ることを目標にしているのですが、
マップの描画ってマップチップに分けて逐一描画するより画像一枚にしてスクロール表示の方がいいのですか?
マップチップは、移動判定(歩ける歩けない)の処理を単純にしてくれるって所がポイントですね。大体のマップツールもマップチップ単位の判定になってますし。
画像一枚だと歩けない範囲はドットで指定するとしてどうやりましょうか?ってところから考えないと行けませんよね。
まぁ、歩けない範囲画像とか別に用意したりするんですけどね。
重さはさほど気にしなくて良いと思います。dxwx さんが書きました: 店の内装を、どうぶつの森の自室のように自分の好みに変えられる作りにしたいので、
マップの1区間に一つずつ変数を当てはめて、そこにリクエストに応じて一つ一つマップチップを入力していこうと思うんです
描画するとき、その変数一つ一つを一々描画していたら遊べないほど重くなったりするでしょうか?
そもそもそのプログラムが描けるかも疑問ですが・・・目標として。
それとカスタマイズを考えると壁・床・家具・カーペット等全部別画像でマップチップを使わずに管理したほうが良いと思いますよ。
家具の位置とか自由に配置したいですよね。
あと、どうぶつの森だと3Dポリゴンだと思いますが、2Dで作られる予定ですか? 私は難易度が低いのでとりあえずは2Dの方が良い思います。
[補足]経営シュミレーションだと家具というより内装・インテリアかな?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: RPGマップ描画、一々読み込みは不可?
自分は作った事無いのでなんともいえませんが・・・
画像を変えたいなら、大きい画像を一つ作っておいて、GdiplusのオーバーロードされたDrawImage関数で範囲を指定して描くがいちばん軽いかと思います。
一つ一つのパーツごとにRect型変数にでも入れておいて。
逐一描画するのはあまりオススメできないと思います。
DXライブラリを使うのかどうか知りませんが、DX系を使う時、小さい画像をたくさん読み込むのはタブーだという話を聞いた事があります
画像を変えたいなら、大きい画像を一つ作っておいて、GdiplusのオーバーロードされたDrawImage関数で範囲を指定して描くがいちばん軽いかと思います。
一つ一つのパーツごとにRect型変数にでも入れておいて。
逐一描画するのはあまりオススメできないと思います。
DXライブラリを使うのかどうか知りませんが、DX系を使う時、小さい画像をたくさん読み込むのはタブーだという話を聞いた事があります
C,C++,C#,これらを極めることを「3C政策」と言う
Re: RPGマップ描画、一々読み込みは不可?
えっと…すみません、お二方のアドバイスをよく理解できていなくて…
自分の考える「マップチップ単位で」というのはこんな感じです。
1:マップ全体を単位に区切り、一行目×一列目のマスを配列の{0,0}に指定します。
2:一つの単位のマップチップ(花一つとか)を1つの変数に当てはめます。
3:2を、1の指定の場所に代入します。
このやり方で、インテリアを変更したいときは2の変数を変更していく感じです。
「画像一枚で」というのは、あらかじめ必要な画像をマップエディタとかで作っておいて、それを一枚だけ表示しスクロールする感じです。
>>ソフト屋さん
いつもお世話になってます!日記、読ませて頂いています。
>そうですね。
>マップチップは、移動判定(歩ける歩けない)の処理を単純にしてくれるって所がポイントですね。大体のマップツールもマップチップ単位の判定になってますし。
>画像一枚だと歩けない範囲はドットで指定するとしてどうやりましょうか?ってところから考えないと行けませんよね。
>まぁ、歩けない範囲画像とか別に用意したりするんですけどね。
↑ここではマップチップ単位での処理を推薦されているのですか?
「歩けない範囲」についてはプログラミングの館に参考になるものがありましたので、それを見て頑張ろうと思っています。
>重さはさほど気にしなくて良いと思います。
>それとカスタマイズを考えると壁・床・家具・カーペット等全部別画像でマップチップを使わずに管理したほうが良いと思いますよ。
>家具の位置とか自由に配置したいですよね。
↑こちらでは「画像一枚で」の方法を推薦されているんですよね?
読解力に乏しくて申し訳ありません。結局のところ、「画像一枚」の方法を推薦されているということでよろしいですか?
>あと、どうぶつの森だと3Dポリゴンだと思いますが、2Dで作られる予定ですか? 私は難易度が低いのでとりあえずは2Dの方が良い思います。
もちろん2Dです。3Dを作る技術はないので…。
棚などのインテリアは、レイヤーなどを使い指定されたマスにその都度描画しようと思っています。
>>オカピーαさん
申し訳ありません。おっしゃっていることが高度すぎて、現在の自分には理解できません。
ですが、大きな画像を一枚で利用する方がいいということはわかりました。ありがとうございます。
ちなみにDXライブラリを利用しているので、マップチップはLoadDivGraphとかを使って一枚の素材画像を分割描画する予定でした。
自分の考える「マップチップ単位で」というのはこんな感じです。
1:マップ全体を単位に区切り、一行目×一列目のマスを配列の{0,0}に指定します。
2:一つの単位のマップチップ(花一つとか)を1つの変数に当てはめます。
3:2を、1の指定の場所に代入します。
このやり方で、インテリアを変更したいときは2の変数を変更していく感じです。
「画像一枚で」というのは、あらかじめ必要な画像をマップエディタとかで作っておいて、それを一枚だけ表示しスクロールする感じです。
>>ソフト屋さん
いつもお世話になってます!日記、読ませて頂いています。
>そうですね。
>マップチップは、移動判定(歩ける歩けない)の処理を単純にしてくれるって所がポイントですね。大体のマップツールもマップチップ単位の判定になってますし。
>画像一枚だと歩けない範囲はドットで指定するとしてどうやりましょうか?ってところから考えないと行けませんよね。
>まぁ、歩けない範囲画像とか別に用意したりするんですけどね。
↑ここではマップチップ単位での処理を推薦されているのですか?
「歩けない範囲」についてはプログラミングの館に参考になるものがありましたので、それを見て頑張ろうと思っています。
>重さはさほど気にしなくて良いと思います。
>それとカスタマイズを考えると壁・床・家具・カーペット等全部別画像でマップチップを使わずに管理したほうが良いと思いますよ。
>家具の位置とか自由に配置したいですよね。
↑こちらでは「画像一枚で」の方法を推薦されているんですよね?
読解力に乏しくて申し訳ありません。結局のところ、「画像一枚」の方法を推薦されているということでよろしいですか?
>あと、どうぶつの森だと3Dポリゴンだと思いますが、2Dで作られる予定ですか? 私は難易度が低いのでとりあえずは2Dの方が良い思います。
もちろん2Dです。3Dを作る技術はないので…。
棚などのインテリアは、レイヤーなどを使い指定されたマスにその都度描画しようと思っています。
>>オカピーαさん
申し訳ありません。おっしゃっていることが高度すぎて、現在の自分には理解できません。
ですが、大きな画像を一枚で利用する方がいいということはわかりました。ありがとうございます。
ちなみにDXライブラリを利用しているので、マップチップはLoadDivGraphとかを使って一枚の素材画像を分割描画する予定でした。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: RPGマップ描画、一々読み込みは不可?
ご愛読、ありがとうございます。dxwx さんが書きました:>>ソフト屋さん
いつもお世話になってます!日記、読ませて頂いています。
あぁっと書き方が悪かったですね。
レイアウトの自由度を望むなら一枚画像の方式を採用したほうが良いです。
当たり判定とかを単純化したいのならマップチップ方式が良いと思います。
それとマップチップ方式を使うとすると背景(壁と床)と家具類が合成されるべき所が問題になるので、マップチップ方式ではレイヤー構造を採用しないとまずいです。
1レイヤーの単純マップチップ方式だと背景(壁と床)と一体になった画像を用意する必要が出てきて背景の自由な変更ができなくなります。
なので描画する時は次のように下から描画していきます。
レイヤー1:壁・床の画像
レイヤー2:家具などの上に置く画像
キャラクタレイヤー:自キャラなど描画
レイヤー3:照明などの空中にあるもの
【補足】
>棚などのインテリアは、レイヤーなどを使い指定されたマスにその都度描画しようと思っています。
レイヤーって書いてありましたね。失礼しました。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: RPGマップ描画、一々読み込みは不可?
迅速な返信感謝します!
なるほどよくわかりました、レイヤーを上手く利用すればマップチップ単位でも良いということですね?
ツクールやウディタの心得が多少ありますので、マップチップの方が考えやすいです。
ソフト屋さんの日記も参考にさせて頂きながら作り送めたいと思います!
なるほどよくわかりました、レイヤーを上手く利用すればマップチップ単位でも良いということですね?
ツクールやウディタの心得が多少ありますので、マップチップの方が考えやすいです。
ソフト屋さんの日記も参考にさせて頂きながら作り送めたいと思います!