さて、ついに師走突入です。
ここんとこ、掲示板やらで言いふらしているとおり、ぽちぽちとマップエディタを作っておりました。
こういうときって、マジでDELPHIありがたいですね。問題のマップエディタはこんな感じになりました。↓
マップのリサイズなどができないものの、まぁこんなもんでしょう。そこそこ使えます。
主な機能としては....
・チップの塗りつぶし、直線描画、矩形塗りつぶしなどが可能
・チップエディットのときのみ、最大32回のアンドゥー可能
・オブジェクト配置機能搭載
・NaGu-Ru専用機能の搭載(^^;
・「最近使ったファイル」に対応
・etc....
こんなところです。まさに必要最低限というか僕のニーズにしか応えてないので
こんなもんがあれば上等なんですけどね。まぁ、それはそれとして。
あ、そうそう。「最近使ったファイル」で思い出したけど、なんだかTMenuItem.Captionに
文字の代入がうまく行かないみたい。DELPHI 5になってのことね。なんか、へんてこな文字が
勝手に挿入されてたりするんですよ。Inpriseの方、バグですよ〜。
コードエクスプローラもしょっちゅうとまるし。
今メールでよく話してる人がいるんですが、「マップエディタできたよ〜」みたいなことを
いっていたら「やっぱりオリジナルマップで遊べるようにするんですか〜?」てなことを
言われました。それってナイスアイデアかも。
僕の知っているところでいうと、ナイスマップエディタが付属しているゲームっていうのは
「QuakeU」です。マジすごい機能です。さすがこれでマップ作ってるだけある、って思えます。
だって、ほとんど3Dモデリングソフトだもん。
そりゃ、ソフトウェアレンダリングエンジンにもバカ高い金額がつきますよ。
あと「AoE」ね。これまたすごい。やっぱ、Microsoftもこれでマップ作ってんのかなぁ〜。
多分、「俺らはこれでマップ作ってるんだよ、マップ作るやつを作るのに3ヶ月かかったんだよ!」
みたいな超気合入りまくりのとてつもないマップエディタを作った会社は
だいたい「オリジナルマップ作れます」とかいってパッケージにエディタを同封してるはず。
というわけで、「割と普通に使えるマップエディタを作ろう」、って話になったんですよ。
今まで使ってたやつは、それはもう極悪なツールで、話にならないほど操作感が悪くて、
「とりあえず動きます」という、まるで
「サンプルをつけておくのでそれを見て勉強してください」
という極悪解説書みたいなもんだった。
思えば、ステージ1のマップってこれだけで作ったんだから、俺って逆の意味ですごい(?)
まぁ、そんな感じで製作開始。
前回から、俺の中で一番要望が高かったのは
ずばり、「塗りつぶし機能の搭載」です。80 * 30 = 2400 チップの広大なマップを、
いちいちぽちぽちと塗りつぶしられっか!!とか常日頃思っていたので。
しかしながら、「塗りつぶし」のアルゴリズムって考えたこともないし、面倒くさそーだし、なんか楽できないか、
うーん、と頭を悩ませていたら、
「おっ、これでいける!!」
というのを思いつきました。もちろん、アルゴリズムを思いついた、のではありません(^^;
VCLの「TCanvas」を使うことにしたのです。
もちろん、「あるものは使おう」という思想にのっとってます。
で、なんでTCanvasで塗りつぶしができるか、っていうことなんですけど、
もちろん「TCanvas.FloodFill」命令を使うに決まってるじゃないすか!!
んで、マップデータの配列に、ピクセルデータを書きこむ...。こんだけです。
楽チンでしょ?
さて、先ほどいったとおりTCanvasを使いまくって、直線描画とかいろんな機能を追加し
調子付いてたら、問題にぶち当たりました。その問題とは「Z」がもたらしたものです。
拙作「NaGu-Ru」のような、
「始点の位置がどこにあるのかわからん」ゲームを作った方や、3Dをやっている人は
おわかりかと思います。そう、「キャラの描画順番」の問題です。
どんなことかっていうと、奥にあるものが、手前にあるものの上に描かれたら、なんか変でしょ?
それがここでいう問題です。
具体的には、NaGu-Ruでは「マップ = 背景」という使用になっているので、たとえ手前にあろうと奥にあろうと
マップは一番真っ先に描かれます。だから、さきほどのような問題が出てくるわけですねぇ〜。
おわかりいただけましたでしょうか?
ちゅうわけで、これを解決するには
「物体は背景としてではなく、「もの」としておけるようにする」
ってことですね。なんの問題もない、簡単なことです。これをマップに自由におけるようにすれば、
「Zなんて怖くねぇ!!」ってことになります。
ということで、早速製作しましょう。
タイトル通り、この世の中はいろんなものが集まって出来ています。当たり前ですね。
ここで、それを実現しようと思います。マップエディタっていわば「世界エディタ」!!
ということで、「いろんなもの」を配置できるようにしました。
お得意の「TList」を使って、ソッコーで作り上げました。TList最高。
もち、ドラッグ&ドロップにも対応。いっそう便利に仕上げてみました。
さて、配置できるようになったということで、配置するものを用意しなければなりませんね。
ということで、日ごろの生活で見かけたものをドシドシ追加していきました(まだ5種類ですが)。
今のところ「自動販売機(PocaCola)」「ごみ箱」「ポスト」「並木」です。
今後の予定は「お金」「肉」「ジュース」「まむしドリンク」など、もりだくさんです。
話がだんだんわけわからなくなってきたので、
この辺でしめときます(^^;
それでは、問題のマップエディタをお楽しみ下さい。