20110224 flamixer

24
超高速 超高速 Flash Flash 合成エンジン 合成エンジン Flamixer Flamixer KLab KLab 株式会社 株式会社 稲田 直哉 稲田 直哉

Upload: inada-naoki

Post on 14-Jul-2015

1.158 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: 20110224 flamixer

超高速超高速 FlashFla sh 合成エンジン合成エンジンFlamixerFlamixer

KLabKLab 株式会社株式会社 稲田 直哉 稲田 直哉

Page 2: 20110224 flamixer

自己紹介、のような・・・

稲田 直哉 (@methane)KLab Inc.

Python系で活動エキスパート Pythonプログラミング標準ドキュメント翻訳プロジェクトMessagePack for PythonTortoiseBZR

swfmill の Flash Lite 1.1 対応

Page 3: 20110224 flamixer

それはとっても難しいなって

Page 4: 20110224 flamixer

(ガラケーの )Flash Lite 1.1

100KB制限Flashからダウンロードしたデータも含める通信制限キーのイベントハンドラでしか、loadVariables, loadMovie できない

しかも上下キーは on(KeyPress) じゃないので通信できない

Page 5: 20110224 flamixer

ソーシャルゲームでの Flash

トイボットファイターズ、戦国バスターシナリオ、バトルログ私が店長アパレルショップ店のレイアウトアイテム、アバターアイテム恋して彼氏セリフ、ボイス

これらの演出には Flashの動的生成が必須

Page 6: 20110224 flamixer

SWFの動的生成

swfmillswfに対する知識が必要遅い

ming直接全体をデザインできない

Page 7: 20110224 flamixer

もうSWF合成も怖くない

Page 8: 20110224 flamixer

Flamixerの機能

ダイナミックテキストのテキスト置換スクリプト変数埋め込み画像置換ムービークリップ置換

Page 9: 20110224 flamixer

設定ファイル

どのテキストを書き換える?変数名で指定どの画像を置き換える?ベタ塗りダミー画像の色で指定どのムービークリップを置き換える?インスタンス名で指定

Page 10: 20110224 flamixer

設定例

symbol_targets: # ムービークリップ指定- target1 # インスタンス名- target2

text_targets: # ダイナミックテキスト指定- varname1 # 変数名- varname2

image_targets: # 画像指定“FF00FF”: “IMG_BG” # ベタ塗り色と名前"00FFFF": "IMG_CHARA"

Page 11: 20110224 flamixer

コード例$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);

Page 12: 20110224 flamixer

画像合成もムービーもあるんだよ

Page 13: 20110224 flamixer

KGD&Flamixer

KGD = GDの魔改造版高速読み込み高速アルファブレンディング高速リサイズ独自フィルタFlamixer連携

Flash内部フォーマットに直接変換

Page 14: 20110224 flamixer

ムービークリップ合成

合成用の素材は別 SWFとして用意同じ素材を複数箇所に合成しても、容量は 1つ分

Page 15: 20110224 flamixer

負荷なんてあるわけない

Page 16: 20110224 flamixer

ベンチマーク

http://www.klab.jp/dsas_host/fla_effect.html

Page 17: 20110224 flamixer

概算

1コアあたり 200合成 /sec4コアサーバーなら 800合成 /sec

SWF合成時間< HTML生成時間SWF合成時間< Smartyの require時間

専用サーバーも、キャッシュも、いらないんだよ

Page 18: 20110224 flamixer

こんなの絶対おかしいよ

Page 19: 20110224 flamixer

Flamixerの仕組み

設定ファイルで合成対象を指定する⇒合成対象じゃない部分が判る

先に合成に適したフォーマットに下ごしらえ⇒合成はほとんど連結処理

Page 20: 20110224 flamixer

テンプレートファイル

解析も合成も

しないんだよ

swfの内部構造 テンプレート (msgpack)

Page 21: 20110224 flamixer

画像合成処理

JPEG画像普通の JPEGのデータ部分を切り出し、 EOI, SOI を頭につけるだけロスレス画像

PNGともGIFとも違う独自形式zlib圧縮だけでも 240x240pxで 3msくらい

Page 22: 20110224 flamixer

ムービー合成

テンプレート

パーツ

Page 23: 20110224 flamixer

実装

事前処理C++ & Pythonコマンドラインツール実行時処理

C++ & PHPC++の関数を呼び出すだけなので、簡単に多言語対応可能

Page 24: 20110224 flamixer

僕と契約して!DSAS for Social

単体提供(レベニューシェア or 固定費)

問い合わせ https://www.klab.jp/qa/dsas_host/index.html