20110224 flamixer
TRANSCRIPT
超高速超高速 FlashFla sh 合成エンジン合成エンジンFlamixerFlamixer
KLabKLab 株式会社株式会社 稲田 直哉 稲田 直哉
自己紹介、のような・・・
稲田 直哉 (@methane)KLab Inc.
Python系で活動エキスパート Pythonプログラミング標準ドキュメント翻訳プロジェクトMessagePack for PythonTortoiseBZR
swfmill の Flash Lite 1.1 対応
それはとっても難しいなって
(ガラケーの )Flash Lite 1.1
100KB制限Flashからダウンロードしたデータも含める通信制限キーのイベントハンドラでしか、loadVariables, loadMovie できない
しかも上下キーは on(KeyPress) じゃないので通信できない
ソーシャルゲームでの Flash
トイボットファイターズ、戦国バスターシナリオ、バトルログ私が店長アパレルショップ店のレイアウトアイテム、アバターアイテム恋して彼氏セリフ、ボイス
これらの演出には Flashの動的生成が必須
SWFの動的生成
swfmillswfに対する知識が必要遅い
ming直接全体をデザインできない
もうSWF合成も怖くない
Flamixerの機能
ダイナミックテキストのテキスト置換スクリプト変数埋め込み画像置換ムービークリップ置換
設定ファイル
どのテキストを書き換える?変数名で指定どの画像を置き換える?ベタ塗りダミー画像の色で指定どのムービークリップを置き換える?インスタンス名で指定
設定例
symbol_targets: # ムービークリップ指定- target1 # インスタンス名- target2
text_targets: # ダイナミックテキスト指定- varname1 # 変数名- varname2
image_targets: # 画像指定“FF00FF”: “IMG_BG” # ベタ塗り色と名前"00FFFF": "IMG_CHARA"
コード例$texts[‘varname1’] = ‘ ’夢も希望も ;$texts[‘varname2’] = ‘ ’ありゃしない ;$imgs[‘IMG_BG’] = file_get_contents($bg);$imgs[‘IMG_CHARA’] = file_get_contents($char);
header('Content-Type: application/x-shockwave-flash');
echo flamixer(file_get_contents($templ),$texts, $imgs);
画像合成もムービーもあるんだよ
KGD&Flamixer
KGD = GDの魔改造版高速読み込み高速アルファブレンディング高速リサイズ独自フィルタFlamixer連携
Flash内部フォーマットに直接変換
ムービークリップ合成
合成用の素材は別 SWFとして用意同じ素材を複数箇所に合成しても、容量は 1つ分
負荷なんてあるわけない
ベンチマーク
http://www.klab.jp/dsas_host/fla_effect.html
概算
1コアあたり 200合成 /sec4コアサーバーなら 800合成 /sec
SWF合成時間< HTML生成時間SWF合成時間< Smartyの require時間
専用サーバーも、キャッシュも、いらないんだよ
こんなの絶対おかしいよ
Flamixerの仕組み
設定ファイルで合成対象を指定する⇒合成対象じゃない部分が判る
先に合成に適したフォーマットに下ごしらえ⇒合成はほとんど連結処理
テンプレートファイル
解析も合成も
しないんだよ
swfの内部構造 テンプレート (msgpack)
画像合成処理
JPEG画像普通の JPEGのデータ部分を切り出し、 EOI, SOI を頭につけるだけロスレス画像
PNGともGIFとも違う独自形式zlib圧縮だけでも 240x240pxで 3msくらい
ムービー合成
テンプレート
パーツ
実装
事前処理C++ & Pythonコマンドラインツール実行時処理
C++ & PHPC++の関数を呼び出すだけなので、簡単に多言語対応可能
僕と契約して!DSAS for Social
単体提供(レベニューシェア or 固定費)
問い合わせ https://www.klab.jp/qa/dsas_host/index.html