Weitere ähnliche Inhalte
Ähnlich wie まめフラスコで遊ぼう (20)
Kürzlich hochgeladen (11)
まめフラスコで遊ぼう
- 3. やってみるのに必要なもの
つくるため
環境 素材
PC
Java 画像 台本 Flashファイル
うごかすため
PC
携帯
Flash Player
まれによくある誤解への回答:
つくるためにはJava VMが必要ですが、動かすためには要りません。
つまり「Javaアプリが動く携帯」である必要はありません。
- 8. 台本ファイルについて
ただのテキストファイルです。
さくらスクリプト+華和梨0.42相当(らしい。さとーさん曰く)
台本
入力例:
sentence: 0s[0]今晩は${food}を食べよう1s[10]そうだねそうしよう
sentence: 0s[4] ネタ尽きた…1s[11]はえーなおい
food: うどん, そば, いぬ, さる, きじ
・ 1回のトークの内容は sentence のどれか(今回はどちらか)がランダムで選ばれる
・ 話主、表情を指定して話す内容を書く
・ ${food} は food のなかからどれか1つがランダムで選ばれる
出力例:
- 9. 技術的な話(1)
プログラムとしては
プログラムとしては
まめフラスコはなにをしているか ○をつけた2つがメインです
○をつけた2つがメインです
まめフラスコ内包のベースFlash
ダミー画像
置換 入
力
埋込 受
付
台本
スクリプト解釈&トーク制御用
Flashプログラム Flashファイルの解釈・
分解・再構築
出力
台本
- 10. 技術的な話(2)
これについて。
主にFlashファイルのバイナリいじり担当
・ ベースFlashのパース、ヘッダやタグの内容変更や新規生成
- 指定された画像ファイルのFlash内部形式への変換と置換
- 台本ファイルのパースと整形、トーク内容代入文のバイナリの生成
- キャンバスサイズ変更、ファイルサイズ整合などのためのヘッダ変換
・ GUIまわり
Flashのバイナリは1つのヘッダと複数のタグがなります。仕様は公開されています。
一番最後はファイル
ヘッダ タグ タグ タグ タグ タグタグ 終端を示すタグ。
タグの内容はさまざま。テキスト、プログラム、画像(ベクタ・ラスタ)、音楽、etc.
バージョン情報やファイルサイズなどFlash全体に関する内容
Flashファイルの生成について
専用GUIアプリで作るもの: Adobe Flash CS5(本家)や他社製簡易版 など
プログラムで作るもの: ming, swfmill, flex
まめフラスコではAdobe Flashで作ったベースファイルを、
独自ライブラリを使ったプログラムでいじるという
ハイブリッドな方法をとっています。
- 11. 技術的な話(3)
ひきつづき、これについて。
まめフラスコはJava VM上で動きますが、
Jythonで実装しています。
Jythonってなに?
Javaによるプログラミング言語Pythonの実装。Javaのライブラリも使える
Pythonってなに?
オブジェクト指向プログラミング言語 Perl, Ruby, PHPあたりに近い
いろんなアプリケーションのスクリプト言語として採用(Maya, Shade, Blender, Metasequoia...)
ninix(-aya): 伺かのUNIX(というかX Window System)での実装もPythonでされている
なんでそうしてるの?
Jythonで実装(.py)⇒jythoncでJavaVM用アーカイブ(.jar)⇒jsmoothでラップ(.exe) すると
・ exeファイルで撒けるので(最も数的に多いであろう)Windowsユーザに優しい
・ jarファイルも同梱すればマルチプラットフォームで動作可能
・ (JavaVMは別途用意してもらえれば)配布サイズが1MB程度と小さくてすむ
・ Javaの画像関連ライブラリが使える
- 12. 技術的な話(4)
これについて。
なにをしてるか
Flashファイル実行時のスクリプト解釈とトーク制御
・会話や辞書データからランダムに拾い出したり
・スクリプトの指定する画像にキャラクターの表情を変えたり
・吹き出しとその中の文字を表示させたり
どんなものか
FlashLite1.1(Flash4相当)はスクリプト環境として非常に貧弱です!
・オブジェクト指向?なにそれ
・関数がない。サブルーチン呼び出しっぽいことはできるが変数はグローバル
・配列がない。eval関数を用いてもどきっぽいことはできるけど重い
ので、例えば food: うどん, そば, いぬ, さる, きじ は、
food_name=”うどんそばいぬさるきじ”
何番目の要素を得るにはどこからどこまで
food_length=”001004006008010012” 切り出せば良いかの情報
のようなかたちで文字列で埋め込んでおいて、必要に応じて切り出している。
(実際には上の代入文をFlashPlayerが理解できるバイナリにして埋め込み)
・ 8ビットマイコン時代のBasicプログラミング経験が生きる…かも
・ あんまり複雑なことはしんどいです。⇒巷の携帯Flashでワンキーゲームが多い理由
- 13. できないこと・できてないことについて
というかランダムトークするだけしかできていない。
制限の主要因:
・ Flash Liteのファイルサイズ制限(100KB)
・ ActionScript1.0では複雑なことは難しい
・ 細かいところで機種・キャリア依存性がある
■ ユーザからのアクション・入力
⇒待受画面ではボタン・方向キー受け取れない
⇒データフォルダからでも受け取れる入力に機種・キャリア依存性あり
[2][4][6][8]でマウスカーソルもどきを移動させて触り反応、とか、したい?
⇒ユーザからの入力(例:名前や好感度)を次回再生時まで覚えてられない
FlashLite2.0以降なら不可能ではないが機種・キャリア依存性あり
ことあるごとにネットワークつないでデータ送信、反応パラメタ埋め込んだ
Flashファイルを動的に再生成、とかできなくはないけど…
↑の応用でネットワーク更新もどきもできなくはないけど…
■ .narファイルの読み込み
⇒100KBサイズ制限のせいでShellデータ入りきりません
勝手に自動縮小・低画質化してしまうのも…
⇒各栞への対応は無理
ninix-ayaがちょうどPythonで書かれているけどどう活かせば…
- 14. ふゅ~ちゃ~☆わ~く
■ 生成UIとかユーザフレンドリーに
全体的に使いやすくできるところの修正
台本ファイルの仕様・説明をちゃんとする
座標を数字で入力させるだけでなくプレビューつけるとか
設定SAVE/LOADまわり
■ こまかな(内部的な)修正
埋め込んでいるキャラクタ画像をjpgベースからLosslessBitmapへの変更
吹き出しのとんがり位置のカスタマイズとか
もうちょっとだけまともなSakuraScript対応(waitとか)
■ Flash Liteの機能の活用
日にち、曜日、時刻、電波状態、電池残量等取得できるので
トーク内容に反映させられるように
■ GoogleAppEngineの活用
せっかくPythonなので。
キャラクターなんとか機的な機能も取り込んで一通りブラウザ上でやれるよに
生成物はQRコードを表示させてケータイに取り込ませるとか
■ (オーサリングツールとしての)Adobe Flashからの脱却
内包するFlashファイルをつくるのを全部プログラミングでやりたい