ショックウェーブムービーのデータ受け渡しについて


[UP]

ショックウェーブムービーを用いてコンテンツを作成するにあたって、 スコアなどのデータをサーバに記録したり、ムービー間でデータの引き継ぎを 行うためにどうすればよいかを調査した結果、以下のような結論が得られた。

ショックウェーブはサーバへの URLによるリクエストと文字列の受け取りのみをサポートしているため、 サーバに処理を渡すときにはCGIのQUERY_STRINGを利用し、CGIは必ず 文字列を返すようにすることで、サーバとのデータ受け渡しが可能である。
また、goToNetMovie()スクリプトを用いてムービーをロードする場合、 グローバル変数が引き継がれる。ただしこの場合、ムービーのステージサイズが 同じでないと画面が乱れる等の不具合が生じる。

今回は、ムービーをプレイしているユーザ名と、そのユーザの スコアを記録する必要があるため、以下のような手順を用いた。

まず、最初のムービー。

  1. ユーザ名を入力させる
  2. CGIを用いてサーバにユーザ名を渡す
  3. サーバははじめての場合、ユーザ名の妥当性をチェック後ユーザ登録を行う。2回目以降はチェックのみ
  4. チェックの結果をステータス文字列で返す
  5. 次のムービーへユーザ名をグローバル変数の形で引き継ぐ

2つめ以降最後以外のムービー。

  1. ムービーはグローバル変数でユーザ名を受け取る
  2. CGIでユーザ名とスコアを渡す
  3. サーバはスコアをセーブ
  4. スコアが合格点以上ならば結果をステータス文字列で返す。
  5. 次のムービーへユーザ名をグローバル変数の形で引き継ぐ
  6. 不合格の場合はCGIで結果のHTML文書を生成、そちらへジャンプ

最後のムービー。

  1. ムービーはグローバル変数でユーザ名を受け取る
  2. CGIでユーザ名とスコアを渡す
  3. サーバはスコアをセーブ
  4. CGIで結果のHTML文書を生成、そちらへジャンプ
最初と2番目の図では呼ばれるCGIを一つのように表現しているが、 実際には2つの CGIを使い分けている。これは、サーバで判定する ことによって反応時間が長くなることを防ぐためである。