書き物

技術とか作った物の話とか愚痴文句感想など

「個人的に目指せアルバトロスゴルフ」を発表しました

個人的に目指せアルバトロスゴルフ

久々の新作です。 「あほげー」という 24 時間で"あほ"なゲームを作るイベントへの参加作品です。テーマは「アルバトロス」。今回は早めにネタが決まったので、普通に寝ても締切り 3 時間ぐらい前には思ってたものが出来ました。テーマで連想して適当に「ゴルフ」で調べてたら、「サンテレビ|原田伸郎のめざせパーゴルフⅢ」を見つけたので、デザイン的なコンセプトをパクマネさせて頂いた形です。

技術的な部分では以下のとおりつらつら。 あほなこと考える傍ら、以前書いた「Flex SDK で作った外部 swf の中で定義されているクラスを取り出す方法」を試してみました。 やり方としては、使う予定の素材をFlashでガリガリ描画。MovieClip シンボルとしてリンケージに名前を設定。Flash 上では特に何も配置せずにそのままパブリッシュ。ゲームの本開発ではいつも通り FlashDevelop × FlexSDK でやりました。 やってみた感覚としては、「超楽」という感じです。今まで作ってきたやり方の中では一番楽でした。特に素材管理が。最近では Bitmap オンリーでよくゲームを作るのですが、「Bitmap(キリッ」と言っても、Flash でキャラのアニメーションを作って、PNG で書き出しってやってて、ガサッとローディング・・・という感じで実装していましたが、書き出しもローディングもいちいち一手間です。素材の修正をする度に PNG 書き出ししなきゃならなかったし・・・。というか、そもそもそんな作り方はオススメされるものじゃなかったですね・・・。今回のやり方だと、Flash の MovieClip の良いところもまるまる引き継げます(アニメーションは Flash に任せられる等)し、ロードも MovieClip の複製も簡単。当たり判定領域等をアルファ 0 にして Flash で定義するかとかは今後色々考えていきたいと思います。

あほげーは、また 9 月とかに開催されるかも?とのことで、また参加したいです。

FlashDevelop 4.0.0 Beta で MXML を使った Android アプリ開発環境を作る

FlashDevelop 3 では、Air for Android 用テンプレートを自分で取り込む必要がありましたが、FlashDevelop 4.0.0 Beta では標準でテンプレートが用意されていました。アプリのパッケージングやらインストールやらデバッグやらを実行するバッチファイルも整理されていて、結構使いやすくなってます。しかし、このテンプレートって、普通にビルドすると、MXMLでモバイルコンポーネントを使うことが出来ないようです・・・。ということを念頭に置いて、FlashDevelop 4.0.0 Beta で MXML を使った Android アプリ開発環境を作ってみます。 もちろん無料だよ!!!!!!!!!

前書いたやつも整理して書きなおしてみます。

  1. Flex SDK 4.5 インストー 以下サイトから「Adobe Flex SDK」をダウンロード、任意の場所に展開しておきます。 Download Flex 4.5 - Flex SDK - Adobe Open Source
  2. Android SDK インストー 以下サイトから「android-sdk_r11-windows.zip」をダウンロード、任意の場所に展開しておきます。 Android SDK | Android Developers 展開したフォルダ内の「SDK Manager.exe」を実行して、なんかしらアップデートっぽい何かをインストールします。よく分からないので全部インストール。
  3. FlashDevelop 4.0.0 Beta のインストー FlashDevelop 4.0.0 Beta をインストールします。 FlashDevelop 4.0.0 Beta については以下エントリーがとても参考になります。 馬鹿全 - FlashDevelop4.0.0 βテスト インストール後、言語を日本語に、Flex SDK 4.5 のパス登録をしておきます。
  4. Android 端末準備 USB ドライバを入れて Android 端末を開発機と繋ぎます。 機種によっては
    • 一般の USB ドライバ
    • 開発者向けの ADB 用 USB ドライバ
    があるみたいなので注意。 Android SDK のインストールフォルダ内の「tools\ddms.bat」を実行して立ち上がるウインドウに、自端末が表示されれば OK です。
  5. プロジェクトの作成、設定
    1. FlashDevelop にて「AS3 Android App」プロジェクトを作成します。
    2. 「bat/SetupSDK.bat」設定
      対象行設定内容
      3行目 「set FLEX_SDK=」に Flex SDK 4.5 のインストールパスを設定します。 ※FlashDevelop に Flex SDK の登録をしている場合、自動的に設定されてるかも。
      6行目 「set ANDROID_SDK=」に Android SDK のインストールパスを設定します。
    3. 「bat/SetupApplication.bat」設定 必要あらば設定を変更します。変えるとしても「set CERT_PASS=fd」の値を変えるぐらいかと。
    4. MXML のモバイルコンポーネントを使えるようにする 「プロジェクト」パネルから「プロジェクト設定」を開きます。 「コンパイラー設定」パネルの「Advanced | 高度な設定 > Additional Compiler Options」を選択。 右に出てくる「...」ボタンを押下し、出てきたウインドウに「+configname=airmobile」を設定。 この設定によって、コンパイル時に「airmobile-config.xml」が参照されるようになり、MXML のモバイルコンポーネントを利用出来るようになります。
  6. コンパイル 適当にプロジェクト内に mxml ファイルを追加し、ドキュメントクラスとして設定しておきます。 アプリケーションとして記述する mxml タグには ViewNavigatorApplication や TabbedViewNavigatorApplication を使用します。 (くわしくはこちら) 「F8」を押下してコンパイルします。
  7. 証明書作成 「bat/CreateCertificate.bat」を実行します。 「<プロジェクト名>.p12」というファイルが作成されれば成功です。
  8. Android アプリとしてパッケージング、Android 端末で実行 プロジェクトフォルダ直下の「PackageInstallApp.bat」を実行します。 Android 端末にてアプリがプレビューされれば成功です。

これで後はガリガリ作っていくだけです。 FlashDevelop 4.0.0 Beta のテンプレートは、大分色々用意してくれていてとても便利です。さらに「application.xml」の設定も GUI で提供してくれているし、乗り換えるしか無いですね!!!!!!!!!!!!!!!!

分からないこと

  • Flex のモバイルコンポーネントを使えるようになりましたが、コード補完対象にならない。よく分からん!
  • 「DebugDevice.bat」を実行すると、デバッグが出来るような気がするのですが、開発機の IP アドレス云々・・・っていわれてうまくいきません。よく分からん!
  • 開発機から Android 端末上のアプリをアンインストールする方法が分かりません。アプリに設定する ID を指定して「adt uninstall <アプリID>」でアンインストール出来ると思ってたのに・・・。よく分からん!

手探りでAir for Android開発環境を作った

開発環境にお金を掛けたくない人向けに、とりあえずAirアプリをAndroidアプリで書き出し、Androidの端末へインストールする所までメモ。Androidの実機は用意しておいてね!!!!!

FlexSDK、AirSDK、FlashDevelop 以下サイトがステキにまとめてくださっています。 AIR for AndroidのためのFlashDevelop設定

AndroidSDK こちらからAndroidSDKをダウンロードします。 Android SDK | Android Developers 僕はとりあえず「android-sdk_r11-windows.zip」をダウンロード。 解凍したら、「SDK Manager.exe」を実行。いろいろアップデートっぽいものが出てくるので、とりあえず全部インストールしました。 (結構時間かかる)

Android端末の準備 開発機とAndroid端末を繋ぎます。 繋ぐに当たっては、各メーカーのUSBドライバをインストールする必要がある模様。 メーカーによっては、一般のUSBドライバ+開発者向けのADB用USBドライバとかもあるみたい。 (うちのIS03はそうだった。) AndroidSDKのフォルダの「tools\ddms.bat」を実行して立ち上がるウインドウに、自端末が表示されればOKらしいです。

FlashDevelopのプロジェクト設定 FlashDevelopで「AIR AS3 Projecter for Android」プロジェクトを作成する。 「CreateCertificate.bat」編集 9行目の「PATH」にFlexSDKのbinフォルダパスを設定する。 「APK_PackagerApplication.bat」編集 8、10行目の「PATH」にFlexSDKのbinフォルダパス、AndroidSDKのplatform-toolsフォルダパスを設定。 12行目の「AIR_INSTALLER」に「FlexSDK配下runtimes\air\android\emulator\Runtime.apk」のパスを設定。 「adb -e install -r %AIR_INSTALLER%」とか「adb -e install -r %APK_FILE%」とかコマンドがありますが、これで実行すると「デバイスが見つからない」みたいなエラーが出てアプリのAndroid端末へのイン ストールがうまくいきませんでした。よく分からん。 とりあえず「adb install %AIR_INSTALLER%」、「adb install %APK_FILE%」に変更。

コンパイル、アプリのAndroid端末インストー コンパイル F8を押してコンパイル

CreateCertificate.bat実行 うまくいけば「SelfSigned.p12」ってのが出来ます。

APK_PackagerApplication.bat実行 パスワードは変更してなければ「fd」。 都度キーを押して進めていく。 Airランタイムのインストールは、Android端末にAirがインストールされてたら、「既にインストール済み」となる。 次にプロジェクトで作ったパッケージが端末にインストールされる。 うまくいったら、端末にプロジェクト名のアプリがインストールされてるはず。

自作アプリアンインストール用に「adb uninstall %APK_FILE%」というコマンドを用意しておくのもヨサゲ。

あとは好きに作っていくだけ!!!!!!!

手探りすぎて、よく吟味しないで作業しました。ここを起点に色々ためしてみようと思います。

Flex SDK で作った外部 swf の中で定義されているクラスを取り出す方法

Flash で外部ファイルを扱う場合、swf へ埋め込む方法と、直接画像ファイル等をロードする方法があります。swf へ埋め込むとコンパイルに時間がかかったり、埋め込んだ swf 自体のサイズが大きくなったりします。外部ファイルをロードする場合、素材自体が丸見えになる他、数が多くなると、サーバーの負荷が上がったりなど。外部ファイルを自作アーカイブ化して、バイナリデータとして読み込んだ場合、音声データの復元に苦労したりします。

外部データをまとめておく方法の 1 つとして、素材用 swf にデータを埋め込んでおき、その swf をロード、swf 内の素材を取得・・・という方法がありますので、方法を書きます。

続きを読む

スクロールするマップチップのマップを表示する

この記事は「ActionScript Game Utility Library ‘ヤスメ’」v0.61 を対象にしています。

Yasumeにはマップチップによるマップ描画と、マップに対するオブジェクトの当たり判定を行う機能があります。 サンプルソース) サンプルでは、マウスカーソルをカメラが追従する形でマップスクロールします。マップ上には、2つの●が跳ね回っています。マップ上には4つの部屋があるように見えますが、マップデータとしては1部屋分のデータだけを定義しており、マップをループ描画することによって同じ部屋が4つ並んだように見えています。

サンプルの作り方は以下です。

続きを読む

Flexで動作毎にアニメーションさせる

この記事は「ActionScript Game Utility Library ‘ヤスメ'」v0.61 を対象にしています。

FlexFlash のようにタイムラインが存在しないため、アニメーションをさせるための機構を自分で作る必要があります。「ActionScript Game Utility Library ‘ヤスメ'」には、動作単位でアニメーションを管理し、Flash のタイムラインっぽく操作するための機能があります。

続きを読む

ActionScript Game Utility Library 'ヤスメ' v0.61 をリリースしました。

ActionScript Game Utility Library ‘ヤスメ’ v0.61 をリリースしました。成果物はSpark projectをご参照下さい。 ActionScript Game Utility Library ‘ヤスメ’

v0.60からの主な変更点

  • シーン管理機能追加
  • RTMFPのNetStreamクラスによる複数人相互通信確立機能追加
  • マップオブジェクトの当たり判定機能追加(アクションゲームで言うリフトとかが作れます。)
  • サンプル作成。
    • 攻撃当たり判定 - AttackSample
    • マップオブジェクトの当たり判定 - HitObjectSample
    • マップオブジェクトの有効無効コントロール - MapObjectSample
    • マップチップによるマップ描画、当たり判定 - MapSample
    • RTMFPのNetStreamクラスによる複数人相互通信確立 - NetStreamChat
    • シーン管理、オブジェクトの状態遷移 - SceneTaskSample
    • 動作毎のアニメーションを管理 - TimelineSample
  • 他バグを修正

課題

  • 外部ファイルの構造を見直す。世間一般的には、外部ファイルは出来るだけ少ない数のswfに固めてリリースするらしい。ということで、開発時の外部ファイルはバラバラ、リリース時はswfに固めた物を、というスイッチングを簡単に出来る構造で外部ファイルの構成を見直す必要がある。
  • 未実装機能の実装。(攻撃の属性補正とか)
  • 多々残ったバグの修正。