フィールドマップ
ようやくフィールドマップが作れるのですが、サーバとクライアントのやりとりの詳細が未定だったので今回決めます。
このスクリーンショットを見るに
クライアントが要求することは
- マップ情報下さい
にたいして、サーバは
- この会場は(w,h)の大きさである
- マス(a,b)にxxxサークルがある
- マス(c,d)にyyyサークルがある
- マス(e,f)にzzzサークルがある
-
マス(g,h)にサークルはない(机があるだけ)
:
:
サークル情報は、サークルid,サークルカットのurlがわかればなんとかなりそうです。
マスは1次元で管理すると取り回しが楽そうです。
会場を歩くキャラクタはドラクエの村人のようにランダムで歩行させます。
サークルの配置場所を決めるロジックについて
配置場所の決定は、サークルメニューより出店状態にした瞬間に起こります。
現状は予め候補を決めておいて、その中からランダムに取得するようにします。
配置場所は以下のようなマス目で赤・黒の色を塗ったところになります。
サークルが出店するときは DataStoreに1出店場所/1エンティティで予め作成しておいて、まだ出店していない場所を検索するようにすると良さそうです
予め作成する方法ですが、以下のようにハードコーディングします。
https://gist.github.com/nagai/3788f27b94d5321abb7f
サークルスペースを作るのにエンティティの書き込み量が多く時間が掛かりそうだったので
TaskQueueを使って並列化しました。またこのapiはサービス管理者以外は必要ないので、
- url: /admin/api/event/.*
login: admin
secure: always
script: controller.admin.api.event.app
と管理者権限でログインが必要にしています。
そんなわけで本日のブランチはこちら
https://github.com/nagai/freemarket/tree/20140511
次回はクライアント側にサークル入場・退場処理とフィールドマップのレンダリングを作ります。