迷路画像作成のWebAPIを作ってます


 先日からの実験でJavaScriptゲームのステージデータは、ブロックのパーツを並べるよりも巨大な1枚絵にしたほうが速度が出ることがわかりました。
 しかしJavaScriptだけでは画像データ自体を生成することはできません(CanvasIEが対応してない)。
 そこで、サーバ側で1枚絵で生成することにしました。
 WebAPIっぽい感じにしたので、今後活用していけたらいいなと思ってます。


 とりあえずこんな事が出来ます。
1) 迷路画像作成(迷路はランダム生成)
http://labs.dokokano.net/app/webapi/mazeimage/?w=19&h=19&out=image

実際にうごかしてみる


2) 迷路画像作成(迷路のデータを指定)
http://labs.dokokano.net/app/webapi/mazeimage/?w=9&h=7&out=image&mazedata=011000110100101001001111100011111110111111111001000100010000010

実際にうごかしてみる


3) 迷路をHTMLで取得(迷路はランダム生成)
http://labs.dokokano.net/app/webapi/mazeimage/?w=51&h=51&out=html
実際にうごかしてみる


よかったらいろいろ試してみてください。
迷路サイズは101x101くらいまでは大丈夫でした。


API仕様

API URL】
http://labs.dokokano.net/app/webapi/mazeimage/


【パラメーター】
w : 迷路の横サイズ(ブロック数)
h : 迷路の縦サイズ(ブロック数)
out: 出力形式
 image : PNG画像で出力されます
 text : テキスト形式で出力されます(壁="#",通路=" ")
 hetml : text形式をHTML用に整形して出力します
mazedata:
 迷路のデータ 
 左上から、壁=1,通路=0の形式をつなげた文字列を渡してください。
 ※省略時はランダム生成されます
seed: 迷路をランダム生成する際の乱数のシード(数値) 
 ※省略時は毎回異なる迷路になります


■ 技術的なこと

迷路の画像はPHP5.2上でGDを利用して描画してます。
特にかわったことはしてません。
ソースは→こちら


101x101のマップを作ろうとしたら失敗。これはメモリー不足だった。
php.iniを「memory_limit = 128M」に変更した。


■ つくりかけです(バグとかあります)

・迷路の自動生成がうまくいってません。
なんか、繋がらないところに通路ができちゃったり・・・
このサイトの穴掘り法を参考にしています。
永遠に帰ってこないこともあるので30000回探索したら生成を中断するようになっています。
まあ、これはこれでそれっぽいかな(ぉ


・マップのイメージパーツが足りない
マップの壁の配置によってイメージパーツを変えるようにしたのですが、実際に作ってみたらパーツが全然たりなかった><


■ 今後の改良予定
・迷路の自動生成を直す(だれか直してーw)
・迷路のデータを他のWebAPIから取得出来るようにする
・使用するイメージパーツを指定出来るようにする
・壁や床の色、サイズを指定しての迷路生成をできるようにする
PNG以外の画像形式への対応
・迷路データの受け取り方は現在はURLの長さ制限がきびしいので、別受け渡し方も検討
・迷路データ生成のWebAPIを独立させる。JSONXMLでの出力に対応する。