Spark Project 勉強会 #3に行ってきた!
C, Java, JavaScript, Perlと結構書けるようになってきたので、今年はActionScriptを初めてみようかと思い、Spark Projectの勉強会のほうに参加してきました。
http://wiki.libspark.org/wiki/SparkStudy/03
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
マルチプレイ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
- ロジックをクライアントに置くとチート可能になってしまうから、サーバーにロジックを。