Adobe Flashの最近のブログ記事

ついこの間ケータイ向けゲームサイトでFlash合成部分を担当したので、もっと色々勉強しないとと思って行ってきた。
http://atnd.org/events/12534

会場を提供して頂きましたZynga Japan様、どうもありがとうございました。

以下、メモ書き(ほぼ原稿そのままなので読みにくいかも。すいません)

「『トレジャーアイランド』でのFlash Lite 1.1を用いた開発事例」

  • Zynga Japan emorinsさん

トレジャーアイランド

  • ガラケー向けのゲーム
  • 何か発掘したりとかして財宝とかゲット → 友達と楽しむ
  • ガラケー向けソーシャルゲームの開発なのでFlash liteを使った
    • Flash liteにはバージョンが色々ある

Flash lite のバージョン

  • 普及率を見てどのバージョンを採用するか決める
  • 古いヤツが1.0、ガラケーの最新版は3.1
  • できるだけ新しいバージョンを使いたいけど普及していないので、特定の機種でプレイ出来なくなる可能性がある
  • DoCoMoだとまだFlash Lite 1.1を使っている人がいる
  • 最新のFlash liteで開発しちゃうとプレイできないユーザーが出てくる
    • 低いバージョンを選ばざるを得なくなる
  • トレジャーアイランドでは1.1を採用

Flash Lite 1.1 / 2.0

  • 表現できる幅が狭まってしまう
  • 100kb制限、メモリ量も少ない → サーバーサイドで動的生成、.swf内の変数やビットマップ、ムービークリップなどを入れ替えて表現を広げる
    • ガラケー向けFlash Liteでは一般的な手法

どんな動的生成方法?

  • いろんな生成方法がある
    • swfmill
    • SWF Editor
    • バイナリの編集
  • やり方は、
    • ベースの.swfを作る
    • SWF Editorで編集したり、
    • swfmillで.xml ←→ .swfの変換
    • バイナリを直接編集して出力

動的生成しているところ

  • キャラクターの画像(アバター的なもの)
    • プレイヤーごとにキャラクターが異なるので、ユーザーごとに生成して出力分け
    • キャラクターのデータをFlashに全部入れてしまうと容量超えてしまうので
  • 背景画像
    • 島によって異なるので動的生成で入れ替えている
    • 何枚も.swfを用意する必要がなくなるので、管理も簡単

bitmapの入れ替え

  • ベースとなる.swfから SWF Editor を使って予め用意してあるbitmapに差し替える
    • http://pwiki.awm.jp/~yoya/?swfed ?

メモリ管理

  • 容量とは別にメモリの管理も頭を悩ませる課題
  • Flash liteにおけるメモリ容量はキャリアとか機種でだいぶ差異がある
    • メモリの容量が壁になって制作に支障がでる
    • bitmap とかムービークリップとか使うとどんどんメモリを食っていく
    • 効率的にメモリを使って開発する必要がある
  • Flash Liteにおけるメモリ管理
    • GC → マーク&スウィープ
      • Flash上で使ってるオブジェクトと使ってないオブジェクトを識別
      • 使ってないオブジェクトを開放、どんどんメモリ喰うのを防いで再生
    • ケータイのヒープは2種類
      • Static heap(静的ヒープ)
      • Dynamic heap(動的ヒープ)
      • Device Centralとか見ると書いてある
    • Static heap
      • Flash Playerに割り当てられた固定のヒープ
      • ムービークリップやビットマップを使うと、都度確保される
    • Dynamic heap
      • Static Heapを使い終わったら、ケータイのOSから動的に割り当てられる
      • ヒープチャンクが32kb。32kbづつ消費していく
      • Dynamic Heapが使えるのはFlash Lite 2.0以降なはず
      • 1.1で使える機種は無いか、少ない → Static heapを使っていくしかない
  • メモリ不足になるとどうなるか?
    • Flash Playerが動かなくなる
    • bitmapが赤くなる
    • Flashが再生できない
  • ビットマップデータは、Flashのステージ上に置くと無圧縮32bitに展開
    • 100px * 100px * 4バイト = 40kb (64kb)
    • Dynamic heapは32kb単位で確保なので、40kbのものを置こうとすると64kb使う
  • フラグメントがおきやすい
    • 大量の変数にnullを代入して参照を切ってもなかなかメモリがあいてくれない

どうやってメモリを効率的に使うか?

  • GCがあるので、参照を切れば開放される
    • nullを代入
    • ムービークリップをremoveMovieClip する
    • こまめに参照を切ってメモリの空き容量を増やしていくことが必要
  • スイープのタイミング
    • 60秒間隔
    • メモリ不足でエラーになった時
    • メモリ使用量が突然20%以上跳ね上がった場合(2.0以上のみ? 1.1では発動しなかった)
    • GCを起動する関数とかは用意されていないので、このタイミングでしかスイープしてくれない
      • 使い終わった変数にnullを入れておいても、すぐに容量が空くわけではない
  • できるだけメモリ食わないで開発する方法
    • 使うものはあらかじめステージ上においてしまう、後からロードしたりしない
      • メモリの使用量を抑えることができた
  • なんか効率のいいメモリ管理方法とか開発方法を知っていたら教えて下さいw

まとめ

  • トレジャーアイランドはmixiで絶賛稼働中なので、是非遊んで下さい

最新版を http://swfmill.org/ からダウンロード。
configureする時にlibxml2が必要。

$ wget http://swfmill.org/releases/swfmill-0.3.1.tar.gz
$ tar zxvf ./swfmill-0.3.1.tar.gz
$ cd swfmill-0.3.1
$ ./configure
(中略)
No package 'libxml-2.0' found

【10/26 追記】
configure & make するのにyumで以下を入れた。
libxml2-devel
libxslt-devel
freetype-devel
libpng-devel

コンパイルする時に xslt.h が無い、とか言われるのでググってみたらこんなサイトを見つけた。
$ tail -f /var/log/mylog:swfmill インストール - livedoor Blog(ブログ)
今インストールしているのは検証環境で、いつ更新がかかるか分からないリポジトリ上のソースからビルドすると本番環境作る時に困りそうなので、必要そうなソースファイルだけ手動で取得して対応した。

$ cd ./src/xslt
$ wget http://bazaar.launchpad.net/%7Edjcsdy/swfmill/trunk/download/head%3A/srcxsltxslt.h-20090609152137-53i91h057e1vr5oe-125/xslt.h
$ wget http://bazaar.launchpad.net/%7Edjcsdy/swfmill/trunk/download/head%3A/srcxsltxslt_pack.cpp-20090609152137-53i91h057e1vr5oe-126/xslt_pack.cpp

やりたいことは社内にFlashLiteに限らず)のノウハウをためるためのWikiを構築し、そこにAS (esp. AS3) やらMXMLなどのコードを貼ってノウハウ蓄積&共有&活用を図りたい。
いずれ社外にも公開できるといいんだけどなぁ。。

ということでPukiWikiSyntaxhighlighterを使えるようにし、AS3のコードをハイライトするまでの方法をまとめてみる。
まず必要なものは以下の通り。

  1. Windowsマシン+WinRAR これはsyntaxhighlighterが.rar形式で配布されているので・・。Stuffit Expanderでは展開に失敗しました。展開するのにWindowsマシンのWinRARがあった方が楽チン。まぁ、Linux上でも展開できるみたいですが
  2. PukiWikiのversion1.4.6以降。1.4.5までは複数行のプラグイン引数に対応していないので、現行の1.4.7あたりを入れておくのが吉
  3. syntaxhighlighter本体。Google Codeから入手できます。どうでもいいですけど、YUIもsyntaxhighlighter使ってますね
  4. AS3用のスタイルファイルと(一応念のため)MXML用のスタイルファイル。AS3用はdigitalflipbook: AS3 Syntax Highlighting (with SyntaxHighlighter)から入手、MXML用は中垣 茂 ( Shigeru Nakagaki ) | ブログ ( Flex, AIR, ColdFusion ) | MXMLコード用 SyntaxHighlighter を作ってみたから入手しておきましょう
  5. Pukiwiki用のプラグイン。Plugin/highlight.inc.php - Sonots' PukiWiki プラグインから入手して下さい
  6. PukiwikiプラグインやLinuxファイルシステムへの基本的な理解。上手くいかなくてもなんとかしようという忍耐力

こんなもんでしょうか。全部PukiWikiが稼働しているサーバーの~/tmpあたりにFTPクライアントで一式アップしておきましょう。モノさえ揃ってしまえば後はコマンドで作業した方が絶対に早いので。
WindowsならFFFTPの利用率が高いと思いますが、SmartFTPがお薦めです。これに慣れると二度と他のFTPクライアントに戻れなくなります。

MacならFetchだな。

クダラナイ番組を垂れ流してるだけのTVなんかもういらね。2011年にアナログ放送終わると同時に終わっちまえ。

http://www.adobe.com/flashon/

youtubeで「すげー!」って感動してたのがアホみたいに思えてくる。

最新版のFlash Playerがないと「UPGRADE TO HD」のリンクが出るはずなので、言われる通りにアップグレードする。
アップグレード自体はすぐ終わる。
何でもいいから適当なtrailerを選択して、右上にある「HD ON」のリンクを押す。


体感した方が早い。

11/1に行って来ました。

参加したセッションは午前の基調講演と

↑コレ、あともう一個Flash liteのセッション。
ホントはもう一つ予約してたんだけど、体調悪くて途中で帰っちゃいました。やっぱ人の多い所はストレスもかかるし、自由に身体が動かないのはけっこう辛い。
なんと言っても、会場に座れるスペースがほとんどなかったんだよね・・・。その他、入り口の導線や誘導など、ファシリティとオペレーションはこの手のイベントではかなり悪かったと思われる。まだ幕張メッセか国際展示場、あるいは国際フォーラムなら公共スペースに逃げ場があるんだが、、、。


以下、雑感。

週の初めから仕事関連のオフラインイベントに2つ出席させてもらいました。

まずは月曜夜、Mushupedia様主催のマッシュアップ・カフェ

上司が元R社ということでその伝手で参加させてもらったんですが、とても面白かったです。「位置情報」というテーマで地図情報とマッシュアップする話がメインでしたが、どのプレゼンも感心することばかり。。すごいなぁ。

携帯電話ってGPSが搭載されているから、位置情報とのマッシュアップは親和性高いはずだよなぁ。あとは携帯を持っていて「こういうのがあったら(こういう地図が今見れたら)便利なのに」という切羽詰まった需要があればいいんだよね。
Ezナビウォークでなんでもこなせちゃうからなぁ。。不満が無いというか、要求レベルが低いというか・・。

なかのひとが自宅サーバーで運用されているってのが一番驚きだった気がする(笑

別にどうってこともないサイトなんですが。
面白かったので。

大勢のギャルに応援してもらった気分になるサイト。
http://www.olaaa.com.br/

26人用意してあるだけだろ、とか言わない。

3Dホッケー。まぁ、Flashゲームでよくあるヤツ。

これをマウスではなく、こいつで遊んでみる。

題して「人差し指一本でどこまで行けるか?」ちなみに本日はレベル7まで到達。マウスでやってもあんまり変わらないなぁ。

明日は
こっちで挑戦してみたいと思います。


えー、ヒマですとも。(言われないうちに言っておこう)

このアーカイブについて

このページには、過去に書かれた記事のうちAdobe Flashカテゴリに属しているものが含まれています。

次のカテゴリはAdobe Flexです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 6.1.2