迷路画像作成のWebAPIを作ってます
先日からの実験でJavaScriptゲームのステージデータは、ブロックのパーツを並べるよりも巨大な1枚絵にしたほうが速度が出ることがわかりました。
しかしJavaScriptだけでは画像データ自体を生成することはできません(CanvasはIEが対応してない)。
そこで、サーバ側で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を独立させる。JSONやXMLでの出力に対応する。