20110224 flamixer
Upcoming SlideShare
Loading in...5
×
 

20110224 flamixer

on

  • 1,429 views

Flamixerの紹介

Flamixerの紹介

Statistics

Views

Total Views
1,429
Views on SlideShare
1,429
Embed Views
0

Actions

Likes
1
Downloads
3
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

20110224 flamixer 20110224 flamixer Presentation Transcript

  • 超高速 Flash 合成エンジン Flamixer KLab 株式会社 稲田 直哉
  • 自己紹介、のような・・・
    • 稲田 直哉 (@methane)
      • KLab Inc.
    • Python 系で活動
      • エキスパート Python プログラミング
      • 標準ドキュメント翻訳プロジェクト
      • MessagePack for Python
      • TortoiseBZR
    • swfmill の Flash Lite 1.1 対応
  • それはとっても 難しいなって
  • ( ガラケーの )Flash Lite 1.1
    • 100KB 制限
      • Flash からダウンロードしたデータも含める
    • 通信制限
      • キーのイベントハンドラでしか、 loadVariables, loadMovie できない
      • しかも上下キーは on(KeyPress) じゃない ので通信できない
  • ソーシャルゲームでの Flash
    • トイボットファイターズ、戦国バスター
      • シナリオ、バトルログ
    • 私が店長アパレルショップ
      • 店のレイアウトアイテム、アバターアイテム
    • 恋して彼氏
      • セリフ、ボイス
    • これらの演出には Flash の動的生成が必須
  • SWF の動的生成
    • swfmill
      • swf に対する知識が必要
      • 遅い
    • 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 合成 /sec
      • 4 コアサーバーなら 800 合成 /sec
    • SWF 合成時間< HTML 生成時間
      • SWF 合成時間< Smarty の require 時間
    • 専用サーバーも、キャッシュも、 いらないんだよ
  • こんなの絶対 おかしいよ
  • Flamixer の仕組み
    • 設定ファイルで合成対象を指定する ⇒合成対象じゃない部分が判る
    • 先に合成に適したフォーマットに下ごしらえ ⇒合成はほとんど連結処理
  • テンプレートファイル 解析も合成も しないんだよ swf の内部構造 テンプレート (msgpack)
  • 画像合成処理
    • JPEG 画像
      • 普通の JPEG のデータ部分を切り出し、 EOI, SOI を頭につけるだけ
    • ロスレス画像
      • PNG とも GIF とも違う独自形式
      • zlib 圧縮だけでも 240x240px で 3ms くらい
  • ムービー合成 テンプレート パーツ
  • 実装
    • 事前処理
      • C++ & Python
      • コマンドラインツール
    • 実行時処理
      • C++ & PHP
      • C++ の関数を呼び出すだけなので、簡単に 多言語対応可能
  • 僕と契約して!
    • DSAS for Social
    • 単体提供(レベニューシェア or 固定費)
    • 問い合わせ https:// www.klab.jp/qa/dsas_host/index.html