マップエディタ
Posted: 2010年5月05日(水) 16:23
by ライス
簡単な2DのRPGを制作しようと思っています。
マップはマップエディタで作ろうと思っているのですが、
探し方が悪いせいか、なかなか良いマップエディタが見つかりません。
よろしければ、お勧めのマップエディタを教えてくださいm(_ _)m
内容としては、
・フリー(無料)
・レイヤー機能がある
・当たり判定が設定できる(最低でも通行可,通行不可くらいはできる)
・作成したマップデータをプログラムに組み込める
のような、マップエディタだと嬉しいです!
開発環境は、"Microsoft Visual C++ 2008 Express Edition"で、
ライブラリは、"DXライブラリ"です。
わがままかもしれませんが、よろしくお願いしますm(_ _)m
Re:マップエディタ
Posted: 2010年5月05日(水) 17:24
by HK
私も以前同じようなことに悩まされて、結局自分でマップエディタを作ってしまいました。
休日を1日使って、1日かければ作れるような簡単なものでしたが、もちろん通行可、通行不可の設定や
自分の欲しい機能も盛り込みました。
プログラミングを始めたての頃に作ったので、一般的な方法とかけ離れてるかもしれませんが我流の方法を
簡単に説明しますと、
①素材チップを入れていく二次元配列、それを保存するためのcsvファイルを用意
②素材をチップ別に通し番号をつけて読み込む。
③いま作ってるマップと、元の素材を画面に表示して、あとはマウスでペイントのような感覚で塗っていく
④R,Wキーで読み込みや書きだしをする。特定のキーを押して塗ると通行不可になる。など、キーを利用。
こんな感じです。
今作ったらあっさり作れるかもしれません。
自分でつくってみるのも面白いかもしれませんね
めんどうなら良いマップエディタを探すほうがよいかもしれませんが、
以前私もあまり良いのを見つけられなかったので…
直接的な解決法でなくてすみません。
Re:マップエディタ
Posted: 2010年5月05日(水) 17:34
by ライス
いえいえ、参考になりました。
やはり、良いマップエディタを見つけるのは大変なんでしょうかね…。
でも、自分で作れる自身が無いんですよね^^;
まぁ、見つからなかったら自作しかないですよね。
自作する事になったら、参考にさせてもらいます。
ありがとうございました。
Re:マップエディタ
Posted: 2010年5月05日(水) 17:37
by softya
レイヤーと当たり判定を考えるとこれじゃないでしょうか。
「platinum 」
http://www.vector.co.jp/soft/win95/game/se231004.html
当たり判定は専用レイヤーを使います。
ただ、汎用ですのでアニメーションやイベント設定などはツール上で行えません。何らかの工夫が必要です。
あとサンプルがC++ですので、C言語だとドキュメントの不親切な情報を頼りに作るしかありません。
[追記]
RPG作りで問題となるのは、
1.マップの作成。
2.イベントやNPCの配置。
3.シナリオの扱い(全部プログラムorイベントスクリプトを使うのか?)
4.戦闘時のアニメーション処理(全部プログラムでタイミング制御?)
5.敵や自キャラのパラメータ、アイテムなどの管理
6.お店で販売している商品の管理
7.宝箱のアイテムの管理
などなどなんですが、ひとりで作業している分には良いのですが、プロの世界だと1~7までツールを用意する必要が出てきます。プログラマとゲームプランナーやシナリオ(要するにドラクエの堀井さんの様な人)が別々に作業するためなんです。
アマチュアでも1から3はツール化・スクリプト化を考えないと手間がかかると思いますね。

Re:マップエディタ
Posted: 2010年5月05日(水) 18:49
by ライス
なるほど~。
ご丁寧にありがとうございます。
いろいろ試してみて、自分にやりやすい方法で頑張ってみます!
ありがとうございましたm(_ _)m
Re:マップエディタ
Posted: 2010年5月05日(水) 19:27
by softya
>いろいろ試してみて、自分にやりやすい方法で頑張ってみます!
レイヤー機能が本当に必要かも考えてみてください。
ドラクエ1ぐらいを作るのなら、必要な機能ではありませんよね。
SFCのFF4~6とか上を見ちゃうと必要とされるかも知れませんが。
>簡単な2DのRPG
とおっしゃってますので、不要な機能はバッサリ切るのも一つの方法です。
Re:マップエディタ
Posted: 2010年5月05日(水) 20:45
by ライス
>不要な機能はバッサリ切るのも一つの方法です。
確かにsoftyaさんの言うとおりですよね。
頭に入れておきます^^
>私もPlatinumを使っています。
ookamiさんもPlatinumを使ってるんですね^^
よろしければ、当たり判定の具体的な設定の仕方を教えてくださいm(_ _)m
(当たり判定用のレイヤーに、フラグを置くことまでは分かったのですが…)
後、作成したマップデータをゲーム使いたいのですが、どのようにして呼び出すのでしょうか?
よろしくお願いします。
Re:マップエディタ
Posted: 2010年5月05日(水) 22:28
by ookami
> よろしければ、当たり判定の具体的な設定の仕方を教えてくださいm(_ _)m (当たり判定用のレイヤーに、フラグを置くことまでは分かったのですが…)
たしかに Platinumそのものには、当たり判定の概念はないですので、自分で実装しないといけないですね。当たり判定用のレイヤーのデータを読み込んで、0なら通れる、1なら通れない、といった実装をするイメージでしょうか。
> マップデータをゲーム使いたいのですが
僭越ながら、Platinum の ppjファイルを読み込んで DXライブラリで表示する、というソースコードを公開しております。ご参考ください。(...と言いながら、ぜんぜん自信ないです;;;; 読みにくいかも)
http://oookami.sakura.ne.jp/htm/index.php?pageID=10
「AEn 0.11 ソースコード」リンクでダウンロード。
「aen.sln」を開き、
「stage.cpp」の ppjFile::load でロード、drawStageで描画です。

Re:マップエディタ
Posted: 2010年5月08日(土) 11:22
by ライス
すみません^^;
学校が忙しくて、返事が遅れてしまいました。
ookamiさん、ありがとうございます。
早速、試してみます。
Re:マップエディタ
Posted: 2010年5月08日(土) 12:28
by ライス
すみません、どちらも出来ませんでした…
申し訳ないのですが、具体的なやり方を教えてくださいm(_ _)m
ppj・csvのどちらか1つだけでもお願いしますm(_ _)m
Re:マップエディタ
Posted: 2010年5月08日(土) 14:05
by softya
それが出来ないとすると、もっと簡単なことから始めた方が良いと思います。
前のスレで作ったプログラムのマップ配列の内容をファイル出力してマップファイルを作成できますか?
マップファイルがどういう物か自分で作ってみるのが勉強になると思います。
Re:マップエディタ
Posted: 2010年5月08日(土) 14:17
by ライス
ありがとうございますm(_ _)m
マップファイルについて、基礎から学んでみます。
それを学んで基礎ができてから、またチャレンジしてみますね。
Re:マップエディタ
Posted: 2010年5月08日(土) 14:26
by softya
マップファイルができたら、自分で読み込むプログラムも作ってくださいね。
こんな感じです。
(A)マップファイルを作るプログラム。配列にマップデータを初期値でパターン設定したものを使う。
(B)マップファイルを読み込んで表示するプログラム。マップファイルから配列に読み込んで表示する。配列の初期値は読み込んだことが分かりやすいように0で埋めておくこと。
マップファイルは、最初はテキスト形式が良いでしょう。
Re:マップエディタ
Posted: 2010年5月11日(火) 17:11
by やっくん
横から失礼します。
>アマチュアでも1から3はツール化・スクリプト化を考えないと手間がかかると思いますね。
私が現在製作中のRPGはエフェクトは全て手計算でやってます。マップも数値を自分で打ち込みです。
まさかこんな方法があるとは(^^;
エフェクト、マップ作るのに何度も書き直してコンパイルしてはしんどいですよね><
2つ質問させていただきます。
マップエディタというのはどのような構造になっているのでしょうか?
ここのレスを読むと、マップエディタで書いたマップ画像に対応するマップチップの値でファイルに保存され、それをプログラムで読み込むと解釈しました。
例えば、以下のように。(それとも何か別の情報も色々付加?)
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
また、2Dエフェクトを作るツールの場合はファイルに以下のように画像の座標変化を保存して、プログラム側でそれを逐一読み込んでいくのでしょうか。
0.0 0.0
1.0 0.2
3.0 1.3
-以下略-
どちらもいろいろな形式があると思いますが比較的簡単な構造を教えていただけないでしょうか。

Re:マップエディタ
Posted: 2010年5月11日(火) 17:58
by softya
マップファイルは最低限、マップチップパーツの情報は必要ですよね。
テキストファイルの前提で説明します。
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
これは、マップチップパーツの番号ですかね?
一行に横のパーツ数だけ並んでいて縦は縦のパーツ数並ぶと言った感じでしょうか。
基本はこれだけでOKだと思いますが、次のような物を加えてやると管理が楽になります。
5,4 ← 一行目にマップのサイズを指定する横5パーツx縦4パーツと言う意味になる。
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
更に加える情報として、マップパーツのファイル名を加えてみましょう。
town.bmp ← 街の背景パーツのファイル名。
5,4 ← マップのサイズを指定する。
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
これだけでも十分なんですが更にイベントも加えてみます。
town.bmp ← 街の背景パーツのファイル名。
5,4 ← マップのサイズを指定する。
[map]
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
[event]
0,1,0,0,0
0,0,0,0,0
0,0,0,0,0
0,0,2,0,0
0,0,0,0,0
0を踏むとイベントは起きませんが、1か2を踏むとそれぞれのイベントが発生します。
これにシナリオファイルとNPCの発生も考慮してみましょう。
town.bmp ← 街の背景パーツのファイル名。
town.scn ← 街のシナリオファイル
5,4 ← マップのサイズを指定する。
[map]
1,1,1,2,3
4,3,1,1,3
1,1,1,1,1
0,0,0,0,0
[event]
0,1,0,0,a
0,0,0,0,0
0,0,0,0,b
0,0,2,0,0
0,0,0,0,0
a,bと言うのが街人(NPC)の発生ポイントです。
と言う事で簡単なマップ・イベントファイルの構造編でした。
エフェクトに付いては長くなったので分けます。
Re:マップエディタ
Posted: 2010年5月11日(火) 18:17
by softya
>2Dエフェクトを作るツールの場合はファイルに以下のように画像の座標変化を保存して、プログラム側でそれを逐一読み込んでいくのでしょうか。
エフェクトをデータ化させる場合は、座標もなのですが色々と付加情報を付けとくと便利です。
0.0 0.0
1.0 0.2
3.0 1.3
-以下略-
これだと座標だけですよね。
X座標 Y座標 エフェクトパーツ番号
でパーツアニメが出来るようになります。
X座標 Y座標 エフェクトパーツ番号 半透明度
で半透明度を変更可能に。
X座標 Y座標 エフェクトパーツ番号 半透明度 加算・減算半透明フラグ
で加算半透明や減算半透明が指定出来ます。
これにレイヤーとかフレーム補間の事も含めるとなお良いのですが、それはここまで理解出来たらまた後日説明したいと思います。
Re:マップエディタ
Posted: 2010年5月11日(火) 21:25
by やっくん
softyaさん、返信ありがとうございます。
とりあえずRPGの戦闘部分におけるソースの形が整っているので、こちらから作ってみようかと思います。