LoginSignup
0
0

More than 5 years have passed since last update.

即売会サービスを作ろう9(TaskQueue編)

Posted at

フィールドマップ

ようやくフィールドマップが作れるのですが、サーバとクライアントのやりとりの詳細が未定だったので今回決めます。
b56ed26c-077f-e39c-2582-51bc29f48cab.jpeg

このスクリーンショットを見るに
クライアントが要求することは

  • マップ情報下さい

にたいして、サーバは

  • この会場は(w,h)の大きさである
  • マス(a,b)にxxxサークルがある
  • マス(c,d)にyyyサークルがある
  • マス(e,f)にzzzサークルがある
  • マス(g,h)にサークルはない(机があるだけ)

    :
    :

サークル情報は、サークルid,サークルカットのurlがわかればなんとかなりそうです。
マスは1次元で管理すると取り回しが楽そうです。
会場を歩くキャラクタはドラクエの村人のようにランダムで歩行させます。

サークルの配置場所を決めるロジックについて

配置場所の決定は、サークルメニューより出店状態にした瞬間に起こります。
現状は予め候補を決めておいて、その中からランダムに取得するようにします。

配置場所は以下のようなマス目で赤・黒の色を塗ったところになります。
map.jpg

サークルが出店するときは DataStoreに1出店場所/1エンティティで予め作成しておいて、まだ出店していない場所を検索するようにすると良さそうです

予め作成する方法ですが、以下のようにハードコーディングします。
https://gist.github.com/nagai/3788f27b94d5321abb7f
サークルスペースを作るのにエンティティの書き込み量が多く時間が掛かりそうだったので
TaskQueueを使って並列化しました。またこのapiはサービス管理者以外は必要ないので、

app.yam
- url: /admin/api/event/.*
  login: admin
  secure: always
  script: controller.admin.api.event.app

と管理者権限でログインが必要にしています。

そんなわけで本日のブランチはこちら
https://github.com/nagai/freemarket/tree/20140511

次回はクライアント側にサークル入場・退場処理とフィールドマップのレンダリングを作ります。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0