michinoko blog

Information

date: 2013/02/22
category: flash, seminar.

Adobe Game Developer Tools 国内初セミナー

だいぶ前になってしまったので、うろ覚えやけどセミナーメモアップしてなかったのでアップ。
一番の収穫はCitrusかな。

———-
Adobe GAMING 国内初セミナー
スマートフォン向けAIRアプリ開発の裏側をお話します
http://atnd.org/events/36076

■アドビ AIRの概要説明
———-アンディ ホール
・三大ゲームツール
scout
gaming SDK
Flash C++
・いろいろなフレームワークの集まり
citrusとかも。Cベース?
http://citrusengine.com/

■各ソーシャルゲームプラットフォームのAIR対応状況
>国内対応状況
・ANE:ハイスコア、課金、友達リスト、チャットなどを受け取る
GREE:ANEをカバーしている。使い方もサポートしている。Developerアカウント必要。
DeNA:正式なものは無し
>海外
・Facebookゲーム:Flashベース。ほとんどこれが儲かっている。
→ただし国内では課金できない。
・ファンデルFandelというゲームは、実際の農業ワーカーの80倍。w
ArmorGames
KONGREACATE
NEWGROUNDS
NOTDOPPLER
mochigames
→すべてブラウザ内の話。
海外では、モバイルアプリはソーシャルゲームはしない。
ジンガーのゲームくらい?
→そしゃげーの収入
6割:課金
2割:報告
2割:リードじぇねれしょん
~5割はゲームをするためにログインしている

■AIRソーシャルゲームアプリケーション制作事例:もやしもん
フレームレート24fps
———ミサワさん
・リアルタイム
機能はUrlloaderとPHPで。GameServer部分:レスポンスに注意
ANEでネイティブSDKにアクセス

———-マエダさん
ANE開発
ソーシャル機能とアプリ内課金を利用したい
プラットフォーム開発会社のSDKがネイティブでしか使えない
AIRとはjsonで受け渡し
トリガー(スタブ)はASを書いて、ネイティブを呼び出してサーバーとやりとりする

>ANEの作成
Android
Java→ANE
iOS
C→C++,Objective-C→C++→ANE
共通
AS→SWF,SWC→ANE
pingなどの画像ファイルも同梱する

DeNAさんのオリジナルを拡張(カスタム)して使用。
ソーシャル、アプリ内課金などのiPhone用のSDKを使用可能。

ANEファイルは、unzip -lで中身を見ることができる。winでは拡張子を変えるだけで大丈夫っぽい
rakeツールを使っている(Ruby)
http://rake.rubyforge.org/

———-
更新があれば新たにダウンロードして、内部のMCを使う
objects.swf:音楽、更新性の高いアイテム、運用上の追加アイテムなど。

更新性を保つ:
外部SWFにてアイテムを管理

PC→SP
UIに合わせた変更

・対処した内容
並列で動いていたタイマーイベントを一本化
各種処理・読み込みタイミングの分割/再配置
やれる限りでリファクタリング

>Adobe様にヘルプ!
・Adobe Scout:パフォーマンスツールを導入
→DOMEで導入予定
・GPU対応する
→DOMEで対応予定、消費電力に難があるっぽい。
・とにかくビットマップにする。レイヤー構造を使わないものは一枚絵にする。

パフォーマンスを上げるには
・とにかく重い、GPUを使おう
・リクエストを減らす、ブロードバンドではない
・ハードウェア機能はANEから。

ゲームの表示部分だけをstage3Dにして、コントロール部分だけ通常のstageで。

■Adobe Game Developer Toolsについて
http://www.adobe.com/go/gaming_jp
新しいゲームを作るとき
・citrusというゲームエンジン(http://citrusengine.com/
→正式サポートすべき。。
→starling + away3d + box2d or NAPE or AwayPhysicsのどれか
エンジンを選んでダウンロードする。
→基本stage3D、ただし非対応マシンもGPUサポートしている。

・ライブパフォーマンス
ActionScriptプロジェクト作成
ビルドパスにswc追加。sitrusのswc。サイト真ん中ダウンロードからゲット。citrusをダウンロード。CEV3-3-3.swcとか。
ドキュメントクラスは、spriteでなくStarlingCitrusEngineを継承extendsする。
コンストラクタに、

setUpStarling(true);画面サイズにあわせたセットアップなどしてくれる
state = new MyGameClass();     カスタムクラス。StarlingStateを継承。スターリンを使う場合に使用。レベルみたいなもの。
MyGameClassのドキュメントクラスでは、super();する
initializeをoverrideする
super.initialize();
var physics:Box2D = new Box2D("box2d");
physics.visible=true;     グラフィクスなどなくても表示してくれる?
add(physics);
//プリセットのプラットフォーム
var floor:Platform=new Platform("floor", {x:500,y:600,height:20, widht:700});
add(floor);
//HeroもBOX2Dのクラス:主人公。
var hero:Hero = new Hero("hero",{x:100,y:444,height:333,width:999});
hero.view=     //画像などに表示を変えれる
hero.jumpHeight=ほげほげ;     などそれっぽいパラメータでなんとなく出てくる
add(hero);

flaファイルでデザインを入れるときは、
loader=new Loader();
loader.load(new URLReuest("Level.swf");     //絵だけのパブリッシュ。下記のやつ。
loader.contentLoaderInfo.addEventListenear(Event.COMPLETE, onLoaded);

//swfにHEROが入っていても、AS側に入っていないのと、エラーになる。
var classedUsed:Array=[Hero, Platform];     //たぶんflaのライブラリに入れておけば大丈夫っぽい。

function onLoaded(e:Event){
     objectMaker2D.FromMoviClip(e.target.loader.content);

     //flaのときは、インスタンス名から。
     var hero:Hero = getObjectByName("hero") as Hero;
     //カメラという概念がある
     view.camera.target  = hero;とかにする。flaで指定しているときは、インスタンス名でも大丈夫。
     view.camera.offset=ほげほげでx,yのオフセットがつけれたりする。直感的にやろう。
}

物理エンジンにオブジェクトを登録する
ステートの更新を画面に表示
など面倒な部分をライブラリがやってくれる

デザイン部分は、FlashProfessionalでデザインを作成して、
citrusのダウンロードの中にコンポーネントflaが入っている。
そのライブラリをflaファイルにコピーする。
CitrusSprite
「Box2d objects」
Hero:主人公:viewパラメータで画像を入れて見た目を変えれる。クラスも渡せる。
Coin:マリオのコイン
Enemy:落ちた場所に主人公を探しながら、さまよう。クリボー?敵。
Platform:地面 onewayにすると上からは止まるけど下からは通れる。

ObjectMaker:2Dと3Dがある。FromMovieCipというオプションで、結び付けれる。

■オートクチュールの説明
・名刺メルアドに何かしら送らせていただきます。とのこと。

■開発技術者募集説明

■QA
・ANEのiOSで難儀だったところ
ObjectiveCとC++とCで、混在していた
C++マニアックな書き方。C言語のマクロも使える
すべての関数のパラメータはjsonで受け渡す。
picojsonをまねらざるをえない。

・scout
 stage3Dとstageのブレンドが重い。エッジのブレンドのクオリティ調整できるパラメータはある?対応は?
→ボタンなどもstage3Dにする?
ブレンドをなるべく外す。stageモバイル的ではない。stageだけでもエッジなどのブレンドは重くなっている;
fethers、YMXMLなどモバイル向けのものを使ったほうがいい。
YMXML:読み込んで直接スターリングに読み込むことができるっぽい?要調査。
・stage3Dのレイヤー構成
一枚絵に素材はしていく
・PC AIRゲーム制作。外部SWFの再生のしくみ。どのように取り込んでいる?
→通常のURLローダーで。モバイル版で。オブジェクトだけ読み込む。スクリプトは動かない。
→イベントスクリプトは、GotoAndStopくらいしか使えない。
→スクリプト無しで入れて、見えないところにテキストフィールドを入れて何かするとかは裏技で。
でかいテキストフィールドにxmlを入れてほげほげするとかもあり。
→外部swfを更新する運用
→本体アプリはロジック変更など。
・1.5ヶ月の制作期間の感触は?
→3人で20日。寝れない。。。Android版のANEだけ提供あり。iOS版は自社開発。
→もう1ヶ月は欲しかった。

→scout無しではありえなかった。完成は出来なかった。
→scoutをどう使いこなすかが、今後のスタンダードとなる。