超高速 Flash 合成エンジン Flamixer KLab 株式会社 稲田 直哉
自己紹介、のような・・・ <ul><li>稲田 直哉  (@methane) </li></ul><ul><ul><li>KLab Inc. </li></ul></ul><ul><li>Python 系で活動 </li></ul><ul><u...
それはとっても 難しいなって
( ガラケーの )Flash Lite 1.1 <ul><li>100KB 制限 </li></ul><ul><ul><li>Flash からダウンロードしたデータも含める </li></ul></ul><ul><li>通信制限 </li></...
ソーシャルゲームでの Flash <ul><li>トイボットファイターズ、戦国バスター </li></ul><ul><ul><li>シナリオ、バトルログ </li></ul></ul><ul><li>私が店長アパレルショップ </li></ul...
SWF の動的生成 <ul><li>swfmill </li></ul><ul><ul><li>swf に対する知識が必要 </li></ul></ul><ul><ul><li>遅い </li></ul></ul><ul><li>ming </...
もう SWF 合成も怖くない
Flamixer の機能 <ul><li>ダイナミックテキストのテキスト置換 </li></ul><ul><li>スクリプト変数埋め込み </li></ul><ul><li>画像置換 </li></ul><ul><li>ムービークリップ置換 <...
設定ファイル <ul><li>どのテキストを書き換える? </li></ul><ul><ul><li>変数名で指定 </li></ul></ul><ul><li>どの画像を置き換える? </li></ul><ul><ul><li>ベタ塗りダミー...
設定例 <ul><li>symbol_targets:  #  ムービークリップ指定 </li></ul><ul><li>- target1 #  インスタンス名 </li></ul><ul><li>- target2 </li></ul><u...
コード例 <ul><li>$texts[‘varname1’] = ‘ 夢も希望も’ ; </li></ul><ul><li>$texts[‘varname2’] = ‘ ありゃしない’ ; </li></ul><ul><li>$imgs[‘ ...
画像合成もムービーも あるんだよ
KGD&Flamixer <ul><li>KGD = GD の魔改造版 </li></ul><ul><ul><li>高速読み込み </li></ul></ul><ul><ul><li>高速アルファブレンディング </li></ul></ul><...
ムービークリップ合成 <ul><li>合成用の素材は別 SWF として用意 </li></ul><ul><li>同じ素材を複数箇所に合成しても、 容量は 1 つ分 </li></ul>
負荷なんて あるわけない
ベンチマーク http://www.klab.jp/dsas_host/fla_effect.html
概算 <ul><li>1 コアあたり 200 合成 /sec </li></ul><ul><ul><li>4 コアサーバーなら 800 合成 /sec </li></ul></ul><ul><li>SWF 合成時間< HTML 生成時間 </l...
こんなの絶対 おかしいよ
Flamixer の仕組み <ul><li>設定ファイルで合成対象を指定する ⇒合成対象じゃない部分が判る </li></ul><ul><li>先に合成に適したフォーマットに下ごしらえ ⇒合成はほとんど連結処理 </li></ul>
テンプレートファイル 解析も合成も しないんだよ swf の内部構造 テンプレート (msgpack)
画像合成処理 <ul><li>JPEG 画像 </li></ul><ul><ul><li>普通の JPEG のデータ部分を切り出し、 EOI, SOI  を頭につけるだけ </li></ul></ul><ul><li>ロスレス画像 </li><...
ムービー合成 テンプレート パーツ
実装 <ul><li>事前処理 </li></ul><ul><ul><li>C++ & Python </li></ul></ul><ul><ul><li>コマンドラインツール </li></ul></ul><ul><li>実行時処理 </li...
僕と契約して! <ul><li>DSAS for Social </li></ul><ul><li>単体提供(レベニューシェア  or  固定費) </li></ul><ul><li>問い合わせ https:// www.klab.jp/qa/...
Upcoming SlideShare
Loading in …5
×

20110224 flamixer

1,245
-1

Published on

Flamixerの紹介

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,245
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

20110224 flamixer

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

    Clipping is a handy way to collect important slides you want to go back to later.

×