トップページ > 記事閲覧
高度な数値マップを生成する方法を教えてください
名前:田中一郎 日時: 2019/11/18 14:25

DXライブラリを使ってRPGゲームを作っている初心者です。 ワールドマップ(町やダンジョン等も含みます)を作る際に { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,13,13,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,13,13,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,11,11,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0 }, { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 }, ※0=海,4=草原,13=城,11=村 このような形に数値マップを作成して、それから値に対応したチップ画像を描画していくやり方が一般的だと思います。 僕は「ペイント」を使ってまず色を塗って、そのRGB値で区別して番号を割り当てています。 ですが、ドラクエ6のような緻密なワールドマップを作成する時には、使用するチップ画像が多くなって色の種類も膨大な量になると想像しています。 友達と一緒にゲームを作っているのですが、今のマップが単純な見た目なのでもう少し見栄えを良くしてくれと頼まれました。 ペイントを使って色を塗ってやろうとも思ったのですが、100×100のマップもあり、それを全部手動で細かく色を塗っていてはまずおわらないだろうと思いました。 上のような単純な数値マップを元に、高度な数値マップを生成するようなプログラムも考えましたが、どれもうまくいきません。 どなたか高度な数値マップを生成する良い方法があれば教えて頂けないでしょうか。 また、ゲーム会社等のプロはどのようにマップを作っているのでしょうか。 宜しくお願いします。
メンテ

Page: 1 |

Re: 高度な数値マップを生成する方法を教えてください ( No.1 )
名前:田中一郎 日時:2019/11/18 17:40

(訂正)ペイントを使って色を塗ってやろうとも思ったのですが、100×100のマップもあり、それを全部手動で細かく色を塗っていてはまずおわらないだろうと思いました。 ↓ ペイントを使って、RGB値で色を区別してマップを作成しようとすると、100×100のマップもあり、それを全部手動で細かく色を塗っていてはまずおわらないだろうと思いました。
メンテ
Re: 高度な数値マップを生成する方法を教えてください ( No.2 )
名前:B.E 日時:2019/11/18 23:15

>>上のような単純な数値マップを元に、高度な数値マップを生成するようなプログラムも考えましたが、どれもうまくいきません。 例えば左上から順番に調べていって、海のマップチップなら上下左右を調べて、 隣が陸なら必要に応じて海岸線のあるマップチップと差し替えるって処理をしていく感じじゃダメでしょうか? マップチップの種類が多くなると、ちょっと複雑になるので難しいようなら一度で終わらせようとせずに、 一回目はマップの全部の海を調べて草原との境界なら修正、 二回目はマップの全部の森を調べて草原との境界なら修正、 三回目はマップの全部の山を調べて草原との境界なら修正。 というように処理を分けて書けば、手間ですがさほどコードは複雑にならずに処理できると思います。 (ただ複数のマップチップが隣接し合う所を綺麗に処理しようとすると、やはりある程度複雑になりますが…。) 上記のやり方が無理なようであれば、既存のマップエディタ使うという手もあります。 (結局手作業になりますが、ペイントソフトでドット打つよりは楽だと思います) 「マップエディタ」で検索すれば有料・無料かかわらず結構ソフトが出てきますよ。 大体どのソフトもファイルフォーマットの細かい説明があるので ある程度Cのスキルがあるなら、ファイルから自作のソフトへの読み込みコードは書けるはずです。 (ソフトによってはCやC++の読み込み用のサンプルコード付属したりしてます。) エディタの機能とファイルフォーマットの仕様を吟味して、 自分の扱いやすいソフトを選べばいいと思います。 大抵の場合、機能が充実(レイヤー機能やオブジェクト配置機能等)する程、 ファイルフォーマットは複雑になる傾向があります。 どうしても気に入るマップエディタがない場合、自作するのも手だと思います。 DXライブラリを使えるのであれば、十分作れると思います。 (操作性を求めるとWindowsAPIの知識とか必要になってくるかもしれませんが...) あと私はゲーム会社の人間ではないので、以下は憶測ですが、 ゲーム会社も、規模にもよると思いますが社内ツールを作ったり、既存のツール使ってると思いますよ。 今はゲームメーカーも普通にUnityとか使ってますし…。 (Unityはマップエディタではなくゲームエンジンですが、既存のツールの一例として挙げました...)
メンテ
Re: 高度な数値マップを生成する方法を教えてください ( No.3 )
名前:田中一郎(解決済み) 日時:2019/11/19 16:57

回答ありがとうございます。 >>例えば左上から順番に調べていって、海のマップチップなら上下左右を調べて、 >>隣が陸なら必要に応じて海岸線のあるマップチップと差し替えるって処理をしていく感じじゃダメでしょうか? >> >>マップチップの種類が多くなると、ちょっと複雑になるので難しいようなら一度で終わらせようとせずに、 >>一回目はマップの全部の海を調べて草原との境界なら修正、 >>二回目はマップの全部の森を調べて草原との境界なら修正、 >>三回目はマップの全部の山を調べて草原との境界なら修正。 >>というように処理を分けて書けば、手間ですがさほどコードは複雑にならずに処理できると思います。 >>(ただ複数のマップチップが隣接し合う所を綺麗に処理しようとすると、やはりある程度複雑になりますが…。) 前半のプログラムの処理は、僕もこの質問をした後に思いつきました。 上下左右だと使うメモリが大きくなりすぎて8GBしかない僕のPCだと難しいようなので、真ん中と上・右・下・左、と別々にやろうかと思っていました。 でもそれだと角の部分等が変更できないのでいくつかは手作業で変えていこうと思っていたのですが、 B.Eさんのように陸と海等、使うマップチップを限定すれば恐らく上下左右の5次元配列でも使えると思います。 プログラムの記述に時間がかかりそうですが、多分こちらの方が確実に変更していけると思います。 >>上記のやり方が無理なようであれば、既存のマップエディタ使うという手もあります。 >>(結局手作業になりますが、ペイントソフトでドット打つよりは楽だと思います) >>「マップエディタ」で検索すれば有料・無料かかわらず結構ソフトが出てきますよ。 マップエディタという物は知ってはいたのですが、深くは調べていませんでした。 もし、上のやり方で出来ないようなら使ってみようと思います。 >>ゲーム会社も、規模にもよると思いますが社内ツールを作ったり、既存のツール使ってると思いますよ。 >>今はゲームメーカーも普通にUnityとか使ってますし…。 >>(Unityはマップエディタではなくゲームエンジンですが、既存のツールの一例として挙げました...) やはりそうなんですね。さすがにこのようにマップの描画等をほとんどプログラミングだけで行うのは限界があると感じていました。 マリオメーカみたいにタッチパッドで作れるようなツールがあったら、遥かにそちらの方が効率良いですし、イラストレータの方も作れるようになると思うので。 unityがアプリ等に使われているのは知っていましたが、マップ描画も多分出来るんでしょうね。 僕はC言語しか使えないですが、C言語でゲーム作りをしたかったのでDXライブラリを選びました。 今回のゲームが完成したら、もしかしたらunityも使ってみるかもしれません。 B.Eさん、今回も適切な回答ありがとうございました
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存