マップツール?について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
あさか

マップツール?について

#1

投稿記事 by あさか » 14年前

現在簡単なゲームを製作している最中なのですがマップについて疑問があったため質問させて頂きました

マップの表示自体は座標を数値の配列で表現しているのですが
(例:{0,1,1,1,1,1,1,1,1,0}の様に。)
次のステージへ進んだ時にまた座標を並べていたのではソースコードが無駄に長くなってしまいバグの温床にもなりかねないと思いました。

そこでマップデータの座標は外部ファイルから読み込みたいと思い、その方法を教えて頂ければ助かります。


一応外部ファイルはエクセル形式を想定してますが、これも何か他にもっと適した形式があればアドバイスをお願いします。

環境はVC+2008でDXライブラリを使用しています。
FileRead_open?を使うべきなのでしょうか。
三次元配列を使用しているのですが、上手くファイルの数値を配列に代入するには一体どうすれば良いのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マップツール?について

#2

投稿記事 by softya(ソフト屋) » 14年前

マップツールは、汎用ツールを利用するか自分で作る場合が多いです。
自分で作る場合は、DXライブラリを使うのもひとつの手ですよ。

参考:汎用マップツール。
「Platinumの詳細情報 : Vector ソフトを探す!」
http://www.vector.co.jp/soft/win95/game/se231004.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あさか

Re: マップツール?について

#3

投稿記事 by あさか » 14年前

ご紹介されていたサイトのソフトについて調べてみましたが、少し予想と違っていたためどのように運用すれば良いのか分かりかねてしまいました。

というのも現在クォータービューで何階層かに分かれているタイプのゲームを作っているためです。


もしかしたらご紹介されたマップツールでも製作出来るのかもしれませんが、マップツール自体初めてのためどの様に扱えば良いのかも分かりませんでした。
マップツールの役目はマップデータの座標情報を記憶するだけでは、どうやら無いみたいで。

検索して調べた所戦闘の処理まで行うものもあるらしく、どこまで頼れば良いのやら・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マップツール?について

#4

投稿記事 by softya(ソフト屋) » 14年前

マップの地形自体に関連した何らかの情報が必要であれば、同時に設定したほうが楽ですよね。
なのでマップツールは移動不可の情報とか、マップに固定発生するキャラの情報とか、トップビューの2Dマップでも奥・地面・手前のレイヤーが必要だったり、イベント発生位置を指定できたりする訳です。
クォータビューだとしても、タクティクスオウガみたいなものは高さ情報や移動不可の地形の情報も必要としますからね。

なので、どこまでツールに頼るかは今後どの様にゲームを作り上げるかとか、バグやバランス修正の手間をどうするかって所にかかっています。ゲームによってツールの出来如何で出来上がるレベルが変わってしまうものもあるでしょう。
簡単な例で言えば、マップを作る手間がかかりすぎてマップの数が減ってしまってはゲーム本来の完成目標から外れてしまいます。そのぐらい重要なものですね。

>というのも現在クォータービューで何階層かに分かれているタイプのゲームを作っているためです。

これは同時に表示されるのでしょうか?
建物の各階が同時に表示されているってイメージを持ったのですが。
具体的なマップのイメージが分かると、どうするのが良いかアドバイスできると思います。
作るマップの数とか、同時表示する階層数とか、マップ画像パーツの数とか、必要フラグ(移動不可、移動コスト、イベントなどなど)出来るだけマップに関わる情報を列挙してください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あさか

Re: マップツール?について

#5

投稿記事 by あさか » 14年前

現在は二階層のみで同時に描画されています。
切り替えボタンというものを設置し、それを押す事により対応していない方の階を暗く描画する事で片方を見易くしております。

・作るマップ数
取り敢えずは6面(最悪ソースコードでも頑張れる量にしておこうと考えていたので)を想定しておりました。

・同時に表示する階層数
2階層です。本来もっと階層を増やしたかったですが、まずは二階層でしっかり完成させます。

・画像パーツ数
まだ決めておりません。
座標の数値で例えば0なら移動不可、1なら平地画像・・・ の様にしていたので、後でも増やせるかなと考えていました。

・必要フラグ
同上。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マップツール?について

#6

投稿記事 by softya(ソフト屋) » 14年前

その程度であればExcelでも構わないと思います。

普通RPGとかであれば、マップ画像パーツだけでも100~200なんてざらですから数値だけでマップなどが組み立てれない以上は画像を配置するマップツールの出番となります。
サイドビューのアクションでもマップに仕掛けがあったり複雑な画像パーツ構成になりますよね。なので、マップツールなしにはとても作っていられないですし、マップツールがあれば作業分担した場合にCG担当の人に作業を頼めるメリットもあります。
何しても作業効率化のための手段です。

作るのが少ないマップ数だとツールに対応したりツールを作る手間自体が手作業でマップを作る手間よりも増えてしまいますので無理する必要はありません。あとは興味があれば作ってみては?とは思います。結構作りがいがあります(つまり時間がかかる)。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

あさか

Re: マップツール?について

#7

投稿記事 by あさか » 14年前

規模が大きくなりそうだったらマップツールを検討したいと思います。

エクセルについてなのですがFileRead_openを使う際、一旦何かしらの変数に代入させるのでしょうか?それともそのまま配列に代入するのでしょうか。
エクセルの形式上数値の羅列になると思うのですが  , の記号については必要ないと何処かのサイトで見ました。

しかし三次元配列の場合  {} の位置がシビアなため、どう代入させれば良いのでしょうか?

{} 一つづつにエクセルファイルから読み取った数値を当てはめる方法が一番確実だとは思うのですが、そんな事をしていてはわざわざ外部から読み込んだ意味がないと思ったので・・・。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: マップツール?について

#8

投稿記事 by softya(ソフト屋) » 14年前

龍神録にマップではありませんがcsvから読み込んでいる処理があるので参考にしてください。

「龍神録プログラミングの館」
http://dixq.net/rp/11.html
csvは文字ですから、マップ配列に格納する時は数値に変換する必要があります。
龍神録では、一旦数値文字列を配列に貯めてatoiで数値に変換しています。

>しかし三次元配列の場合  {} の位置がシビアなため、どう代入させれば良いのでしょうか?
Excelの最初の一行に横の数、縦の数を定義して,次からは一行目のデータ、2行目のデータと並べて行って縦の数が終わったら次の階層のデータとしてはどうでしょうか?
イメージ書くとこんな感じでしょうか。

コード:

csv           配列
3,5 → 横3,縦5
0,0,0  → [0][0][0~2]
1,1,1  → [0][1][0~2]
2,2,2  → [0][2][0~2]
3,3,3  → [0][3][0~2]
4,4,4  → [0][4][0~2]
0,0,0  → [1][0][0~2]
1,1,1  → [1][1][0~2]
2,2,2  → [1][2][0~2]
3,3,3  → [1][3][0~2]
4,4,4  → [1][4][0~2]
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る