Spark Project 勉強会 #3に行ってきた!

C, Java, JavaScript, Perlと結構書けるようになってきたので、今年はActionScriptを初めてみようかと思い、Spark Projectの勉強会のほうに参加してきました。

http://wiki.libspark.org/wiki/SparkStudy/03

Flashの最新動向

Flash Player10での、3Dの強化が印象的でした。PV3Dなしでも結構色々作れるかもしれません。3Dの分野は今後面白そうですよね。

Spark Project紹介

ライブラリ紹介

  • StreetView
  • TeraClock
  • gunyarapaint

は使ってみたいと思いました。

タイムラインで作るモーションタイポのコツ(kagi55xさん)

アニメーション関連の作り込み方について。スクリプターには若干関連がない話でしたが、タイムラインとかの使い方は勉強になりました。

MacBookの傾きをFlashで取得してなんかします(ll_koba_llさん)

Physical Computing。Macbookの傾きでFlashを動かす。

  • AMSTrackerで傾きがわかる。
  • Socketサーバー経由でAMSTrackerに値を渡す

JSplash(gyuqueさん)

Flashを強引にJSに変換してブラウザで動かすというbinary hackネタ。
以下の二つのツールは、割と使う場面がありそうでした。

  • swfmill -> swf to xml
  • flare

Dangoを使ったオンラインゲーム開発(gawgawさん)

未踏ソフトで開発したDango。Rails + 通信部分の作り込みによるサーバー。
yossyさんと作った大富豪で使ったそうです。

マルチプレイFlashゲームの作り方(yossyさん)

クラス構成
  • DangoThread
  • Controller
    • SceneControlThread
    • SceneThread
  • Model
    • ユーザー、ルームなど
    • Dangoのオブジェクトをモデルに変換
  • View

Controllerから、Model, Viewを操作。ControllerはThread(そうめん)で実装。
Scene毎にThreadを実装。それをControlするSceneControlThreadを用意。

SceneThread

SceneThreadでは、

  • サーバーとの通信
  • モデルの生成、操作
  • Viewの操作

Sceneにおけるサーバーの通信

  • dangoを使う

SceneThreadでのイベントの処理

  • queueをメッセージに入れる
    • eventが発生したら、queueにMessageに変換して格納
    • SceneThreadでは、queueに入ったメッセージをpollingして順次Messageを処理。
    • Schene毎にQueueは用意
  • ゲーム開始通知、カート配布通知、カードの変換、ターンの通知などサーバーから複数のイベントが届いても、それを順に処理するためにqueueを用意している。
  • Message + Queue + Threadによる開発
  • Sceneの分割
    • Sceneの種類に応じてThreadを分割
まとめ
  • メッセージ駆動 + Thread
  • ロジックはサーバー、FlashはView
    • ロジックをクライアントに置くとチート可能になってしまうから、サーバーにロジックを。