Suche senden
Hochladen
0621 ndk game
•
2 gefällt mir
•
2,269 views
cat kaotaro
Folgen
Technologie
Bildung
Melden
Teilen
Melden
Teilen
1 von 29
Empfohlen
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
【Unity道場 2017】PlayMakerによる初めてのUnityプログラミング
Unity Technologies Japan K.K.
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
目指せ脱UE4初心者!?知ってると開発が楽になる便利機能を紹介 - DataAsset, Subsystem, GameplayAbility編 -
historia_Inc
Android カスタムROMの作り方
Android カスタムROMの作り方
Masahiro Hidaka
知って得するUnity エディタ拡張編
知って得するUnity エディタ拡張編
Shota Baba
人狼知能プログラミング演習資料2015
人狼知能プログラミング演習資料2015
Kosuke Shinoda
12.06.16 日本橋勉強会資料 公開用
12.06.16 日本橋勉強会資料 公開用
Miwa Iwatsuki
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
DADA246
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
alwei
Weitere ähnliche Inhalte
Was ist angesagt?
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
nico0927
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_ja
Takedaatsushi
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
エピック・ゲームズ・ジャパン Epic Games Japan
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
エピック・ゲームズ・ジャパン Epic Games Japan
㉔cocos2dでゲームを作ろう!その2
㉔cocos2dでゲームを作ろう!その2
Nishida Kansuke
Ja sst'14東北 いまさら聞けないJenkins
Ja sst'14東北 いまさら聞けないJenkins
勝信 今井
Editor スクリプティング 入門
Editor スクリプティング 入門
Keigo Ando
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4
pafuhana 1213
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
まべ☆てっく運営
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
Nishida Kansuke
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
エピック・ゲームズ・ジャパン Epic Games Japan
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
Daisaku Mochizuki
App widgetでテザリング
App widgetでテザリング
Eiichi Tsuru
人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624
Kosuke Shinoda
Extending the Unity Editor Extended
Extending the Unity Editor Extended
Masamitsu Ishikawa
Aiwolfseminar2020
Aiwolfseminar2020
Takedaatsushi
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
Hiroki Tamiya
UE4モバイルブートキャンプ
UE4モバイルブートキャンプ
エピック・ゲームズ・ジャパン Epic Games Japan
Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明
furusin
Unity エディタ拡張
Unity エディタ拡張
Shota Baba
Was ist angesagt?
(20)
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
Aiwolf seminar 2019_ja
Aiwolf seminar 2019_ja
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
UE4 Performance and Profiling | Unreal Dev Day Montreal 2017 (日本語訳)
㉔cocos2dでゲームを作ろう!その2
㉔cocos2dでゲームを作ろう!その2
Ja sst'14東北 いまさら聞けないJenkins
Ja sst'14東北 いまさら聞けないJenkins
Editor スクリプティング 入門
Editor スクリプティング 入門
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
㉒初期プロジェクトを改造!
㉒初期プロジェクトを改造!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
ゲームサーバ開発現場の考え方
ゲームサーバ開発現場の考え方
App widgetでテザリング
App widgetでテザリング
人狼知能セミナー資料案20170624
人狼知能セミナー資料案20170624
Extending the Unity Editor Extended
Extending the Unity Editor Extended
Aiwolfseminar2020
Aiwolfseminar2020
ゲームインフラコンテナ実践導入
ゲームインフラコンテナ実践導入
UE4モバイルブートキャンプ
UE4モバイルブートキャンプ
Paging Libraryの利用をやめたいお気持ち表明
Paging Libraryの利用をやめたいお気持ち表明
Unity エディタ拡張
Unity エディタ拡張
Andere mochten auch
Android Hacks - Hack47
Android Hacks - Hack47
Masanori Ohkawara
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
Masaki Otsuki
Androidのフレームワークをデバッグするために検出ツールを作ってた話
Androidのフレームワークをデバッグするために検出ツールを作ってた話
nhnmomonga
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介
khisano
Android Hacks - Hack57
Android Hacks - Hack57
Masanori Ohkawara
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
徹 上野山
Andere mochten auch
(6)
Android Hacks - Hack47
Android Hacks - Hack47
OpenCV4Androidで画像処理アプリのススメ
OpenCV4Androidで画像処理アプリのススメ
Androidのフレームワークをデバッグするために検出ツールを作ってた話
Androidのフレームワークをデバッグするために検出ツールを作ってた話
Javaにおけるネイティブコード連携の各種手法の紹介
Javaにおけるネイティブコード連携の各種手法の紹介
Android Hacks - Hack57
Android Hacks - Hack57
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
Ähnlich wie 0621 ndk game
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
Katsutoshi Makino
つぶLT20121215
つぶLT20121215
遼一 杉浦
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
Yuki Higuchi
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
Kazuhiro Hara
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
Google Product
Google Product
Daisuke Sugai
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
Tanaka Yuichi
Android gameprogramming
Android gameprogramming
Masahiro Hidaka
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
leverages_event
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
Takashi EGAWA
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
leverages_event
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
Toru Takahashi
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Developers Summit
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Kazuhiro Hara
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用
Lumin Hacker
Android4.2徹底解剖!
Android4.2徹底解剖!
leverages_event
20120405 setsunaセミナー
20120405 setsunaセミナー
Takahiro Iwase
Ähnlich wie 0621 ndk game
(20)
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
Unity * スマートフォン開発で学んだこと
Unity * スマートフォン開発で学んだこと
つぶLT20121215
つぶLT20121215
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Google Product
Google Product
Gruntでjava script前作業の自動化!
Gruntでjava script前作業の自動化!
Android gameprogramming
Android gameprogramming
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
アプリリリース後に後悔しないための20のこと
アプリリリース後に後悔しないための20のこと
Tokyo GTUG Bootcamp2010
Tokyo GTUG Bootcamp2010
GruntでJavaScript 前作業の自動化!
GruntでJavaScript 前作業の自動化!
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
デブサミ2013【15-E-2】Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
Androidアプリ解析の基礎 公開用
Androidアプリ解析の基礎 公開用
Android4.2徹底解剖!
Android4.2徹底解剖!
20120405 setsunaセミナー
20120405 setsunaセミナー
Kürzlich hochgeladen
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
arts yokohama
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
Ayachika Kitazaki
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
Tetsuya Nihonmatsu
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
arts yokohama
2024 03 CTEA
2024 03 CTEA
arts yokohama
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
ssuser370dd7
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
Matsushita Laboratory
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
ssuser539845
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
Shumpei Kishi
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
Sadao Tokuyama
2024 04 minnanoito
2024 04 minnanoito
arts yokohama
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
Kürzlich hochgeladen
(12)
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
2024 02 Nihon-Tanken ~Towards a More Inclusive Japan~
20240326_IoTLT_vol109_kitazaki_v1___.pdf
20240326_IoTLT_vol109_kitazaki_v1___.pdf
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
「今からでも間に合う」GPTsによる 活用LT会 - 人とAIが協調するHumani-in-the-Loopへ
2024 01 Virtual_Counselor
2024 01 Virtual_Counselor
2024 03 CTEA
2024 03 CTEA
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
情報処理学会86回全国大会_Generic OAMをDeep Learning技術によって実現するための課題と解決方法
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
TaketoFujikawa_台本中の動作表現に基づくアニメーション原画システムの提案_SIGEC71.pdf
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
IFIP IP3での資格制度を対象とする国際認定(IPSJ86全国大会シンポジウム)
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
持続可能なDrupal Meetupのコツ - Drupal Meetup Tokyoの知見
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
ARスタートアップOnePlanetの Apple Vision Proへの情熱と挑戦
2024 04 minnanoito
2024 04 minnanoito
What is the world where you can make your own semiconductors?
What is the world where you can make your own semiconductors?
0621 ndk game
1.
Gingerbread以降のNDK ゲーム開発のTipsなど Google
IO 報告会 発表資料 @cat_kaotaro
2.
自己紹介 • @cat_kaotaro こと
はしづめかおり と申します • 2009年の秋くらいからAndroidのおっかけしています • 「Okusama」というアプリつくってます • 会社ではAndroid技術者養成のための研修講師やお助け マンやってます • ACE(Androidアプリケーション技術者認定試験)の対策本 の執筆 – ベーシック対策実践問題集 (日経BP)2010年11月発売 – 徹底攻略ACE問題集(インプレスジャパン)2011年6月発売予定
3.
Bringing C and
C++ Games to Android Dan Galpin 氏 Ian Ni-Lewis 氏
4.
冒頭でJavaの駄目だし •
ほとんどの人がJava以外の言語がすきなんじゃないか • Javaはすべてにおいて万能ではない • ゲームはハイパフォーマンスが求められる • C/C++の開発はNDKでやろう – 既存のネイティブライブラリの再利用 – サブルーチンの高速化 – VFP (Vector Floating Point 浮動小数点演算機能)、NEONアクセス – かといって絶対速くなるわけではないんだからね • NDK? – ツールチェイン(標準的なgccのクロスコンパイラ) – Android 用のプラットフォームビルドシステム – ヘッダとライブラリ(C,C++のランタイムなど) • Stable ABI(Application Binary interface) - armeabi – 移植したいライブラリがAndroidプラットフォームが持つシステムライブラ リでは使用できないかも
5.
最近のNDKのトピック • FroyoではJNI Graphicsがサポート
(libjnigraphics) • Gingerbreadではゲーム開発用に以下のライ ブラリが追加された – EGL(libEGL) – OpenSL ES(libOpenSLES) – Native framework/Native Activity(libandroid)
6.
NDKのセットアップ・開発手順 • 現在-r5b • Android
DevelopersとかNDK内のドキュメン トに詳しく書いてある • Application.mkに APP_STL:=gnustl_static を指定するとC++例外処理ができる * gnustl_static -> Use GNU libstdc++ as a static library.
7.
JNIのお作法1
• JNIのインタフェース実装(Java側) – native 修飾子を使ってインタフェース名を定義 – javahコマンドかeclipseからJNIのヘッダファイルが作成 できる • JNI接続部分(ネイティブ側) – ファンクションテーブルを使ってJNIメソッドを管理 – シグネチャはjavapコマンドでわかるよ – JNIメソッドをシステムに登録する static JNINativeMethod gMethods[] = { JNIEnv* env; {“init”, “(II)V”, (void*)nativeGameInit}. env -> FindClass {“step”, “()V”, (void*)nativeStep} env ->RegisterNatives(jclass, ファンクション }; テーブル,登録するメソッドの個数)
8.
JNIのお作法2 • JNI接続部分(ネイティブ側)続き –
ネイティブ→Javaのコールバックのやり方 env->GetObjectClass // クラスの取得 env->GetMethodId // JavaメソッドのメソッドIDを取得 env->CallVoidMethod // 呼び出し
9.
NDK ビルド/デプロイ/デバッグ • ビルド・デプロイ >[bash]ndk-build
[NDK_DEBUG=1] //Cのライブラリのビルド(.so) >ant debug(or ant release) //Javaのビルド(class,apk) >ant install • デバッグ gdb >[bash]ndk-gdb 端末とHostマシン間はgdb-rsp(RSP(リモートシリアルプロトコル ) HostマシンのgdbとEclipse/VSはgdb-MI((Machine Interface) ) Gingerbreadでgdbデバッグのいろんなところが改善されて 快適になったからみんなドシドシつかってね!! メインスレッド以外のスレッドでもブレイクポイントが張れたりデバッグ機能 が強化したよ
10.
NativeActivityのバージョン互換 • 世の中にはまだまだFroyoとかEclairの端末がいっ
ぱい • Gingerbreadなんてまだまだ少ないよ • ゲームエンジンを自分のアプリに移植したとき Gingerbread以上でも、それ以外のバージョンでも 動くようにする
11.
–
res/values-v9/bools.xml //動作するプラットフォームがGingerbreadの場合 <resources> <bool name=“atLeastGingerbread”>true</bool> <bool name=“notGingerbread”>false</bool> </resources> – res/values/bools.xml //動作するプラットフォームがGingerbreadでない場合 <resources> <bool name=“atLeastGingerbread”>false</bool> <bool name=“notGingerbread”>true</bool> </resources> – AndroidManifest.xml <activity android:name=“.SANativeActivity” android:enabled=“@bool/atLeastGingerbread”> <!--動作するプラットフォームがGingerbreadの場合--> <meta-data android:name=“android.app.lib_name” android:value=“sanative”> <intent-filter> <action android:name=“android.intent.action.MAIN”/> <action android:category=“android.intent.category.LAUNCHER”/> </intent-filter> </activity> <activity android:name=“.DemoActivity” <!--動作するプラットフォームがGingerbreadでない場合--> android:enabled=“@bool/notGingerbread”> <intent-filter> <action android:name=“android.intent.action.MAIN”/> <action android:category=“android.intent.category.LAUNCHER”/> </intent-filter> </activity>
12.
プロジェクトのファイル構成(jniディレクトリ以下) /jni/libsajni/
←Gingerbread以外の時にロードするスタブライブラリ ∟Android.mk ∟app-android.c /jni/libsanangels/ ←ゲームのエンジンの本体を格納(シェアする) /jni/libsanative/ ←NativeActivityのメタデータのライブラリに指定 ∟ Android.mk ∟ app-android-native.c ∟ glutils.c ∟ glutils.h : /src/com/example/sanangeles/DemoActivity.java ←通常のActivityをextends System.loadLibrary(“sanangeles”) System.loadLibrary(“sajni”) /src/com/example/sanangeles/SANativeActivity.java ←NativeActivityをextends System.loadLibrary(“sanangeles”)
13.
ゲームアプリを作るうえで大切なこと •
Lifecycle – backキーが押されたときやfinish()でクローズされるまでアプリのプロセスは 維持せよ • 特にフォアグランドのアクティビティのプロセスは超重要 • killする(される)のは最後の手段 – visibleなアクティビティは高優先度で。 • バックグランドのアクティビティはさほど重要でない。アクティブでないアクティビ ティを持つプロセスが最初にkillされるように – アプリのイニシャライズ処理などをstatic関数にしたときは気をつけて • プロセスがアクティブである間ライブラリはunloadされずにいつまでも残る。 • アクティビティのonCreate処理が終了後ならstatic な初期化を実行してもよい。 – スレッド注意! • スレッドはアクティビティでなくプロセスに紐付けられている。アクティビティが生き 続けてる限りスレッドはrunし続ける。 • すべてのネイティブコードはonDestroyでcleanするべし
14.
ゲームアプリを作るうえで大切なこと • Input
– キー入力のハンドリング • onKeyDown/onKeyUp • dispatchKeyEventのオーバーライドは避けて • onKeyMultiple/onKeyLongPressも使えるよ – タッチとマルチタッチのハンドリング • onTouchEvent – 内蔵のジェスチャープロセスが使えるよ – ScaleGestureDetectorとかGestureDetectorとか使ってみて。 • ほとんどの端末が今マルチタッチをサポートしてる – 端末が異なるポイントを追跡できるかがわかるのはこれ。 – hasSystemFeature(FEATURE_TOUCHSCREEN_MULTITOUCH_DIST INCT) • Androidらしいゲームとはハードボタンをうまく使うこと – Back・・・ダイアログのdissmiss、メニュー終了、ゲームのポーズ – Menu・・・ポーズ、オプションダイアログ起動 – Home・・・ポーズ(ゲームを終わらせてはいけない!!!) – ボリュームボタン・・・ setVolumeControlStream(AudioManager.STREAM_MUSIC) – onPauseやonStopを駆使して可能な限りゲームの状態を保存しよう
15.
ゲームアプリを作るうえで大切なこと • Graphics(OpenGL)
– GLSurfaceView • Context(Dalvikとネイティブコードの間でシェアされる) • レンダリングをするスレッドを作る • onPauseの間、コンテキストをリリースしてくれる • OpenGLでのマルチタスクはもっとも効率的ではないが、いくつか のドライバが問題を回避する – Contextがlostしたら • リソースをリロードする (Textures,Buffer object, Shaders(シェーダ)) • 名前は保持されない
16.
ゲームアプリを作るうえで大切なこと • Texture Formats
– チップセットベンダはいくつかのさまざまなテクスチャの独 自の圧縮フォーマットを使っている – Open GL ESはマルチ圧縮フォーマットをサポートしてい る(必須ではない) – 非圧縮テクスチャ – ETC1使用(フォトグラフィックデータを最適化、Alpha値は ない) – Multi-APK(coming soon) – asset サーバにテクスチャをおく • runtimeでの検出サポート • それぞれの端末でダウンロード
17.
ゲームアプリを作るうえで大切なこと •
描画性能 – 描画のオーダーは大切 • 早めの切り離し – VBOを使う(不必要な状態変化を回避) – テクスチャ • 2倍のサイズのテクスチャの電力を使う – とっても遅い – いくつかのチップセットで動かない • 互換性のあるシェーダを書く • Queryの確認(属性の数、構文など) – 端末間でさまざま – 気をつけないとクラッシュするよ – supported は”performs well”とは意味が違う • Conditions – できるだけ使用を避ける。どしても使いたかったらシェーダの最後におく – 同じ結果を生成するためにmix(),clamp()などを使う • discard() – 回避して。使うなら最後に。
18.
ゲームアプリを作るうえで大切なこと • Sound
– フル演奏ならMediaPlayer • コーデックはマルチプルフォーマットサポート • ファイルシステムやネットワークから再生可能 • すばやいサウンドエフェクトのために、待ち時間、メモリ、CPU使用率な ど大きくなる – サウンド効果やクリップならSoundPool • コーデックはマルチプルフォーマットサポート • あらかじめ音源ファイルをプールにロードするので待ち時間は少ない – アプリで音を作るならAudioTrack(PCM音源) – OpenSL/ES • MediaPlayerとAudioTrackの便利な機能をあわせもつ • NDKでのみ使用できる • Android2.3以上
19.
ゲームアプリを作るうえで大切なこと • assets(資産)
– JNI • APKファイル名の取得 – context.getApplicationInfo.sourceDir • AssetFileDescriptorのインスタンスを取得 – afd = context.getAssets.openFd(“Hoge.png”); • AssetFileDescriptorからオフセットや長さがわかる – long offset = afd.getStartOffset()] – long length = afd.getDeclaredLength() – afd.close() – オフセットを指定してAPKファイルを開き長さを指定してよ む(オーバヘッドの測定?) – Zip Utility – nativeでAssetManagerを使え(Gingerbread以降)
20.
トラブルシューティング1
問題 アプリが不思議とクラッシュする
21.
トラブルシューティング1
解決方法 スレッドを確認してみて!! JNIの複数のcontextがひとつのスレッドになってない? ひとつのJNIのcontextにつきスレッドは一本
22.
トラブルシューティング2
問題 パフォーマンスが悪い
23.
トラブルシューティング2
解決方法 ハードが古いんじゃないの?確認して! ARM5 CPUはOpenGL2サポートしてない ハードが古くてもクラッシュさせずに動作させたい場合 16bitのテクスチャを使え BitmapFactory.Options.inPreferredConfig = Bitmap.Config.ARGB_4444 小さい描画ターゲットを使って拡大する SurficeHolder.setFixedSize() 特にタブレットは高ピクセル。 何をどうやってもクラッシュしてしまう場合は マーケットでフィルタをかける 命令セット(ARMv5/ARMv7) GL Version Platform を古いのに戻す 有効なデバイスを使う
24.
Tips •
小さくスタート • Androidのbackup/restoreを使ってクラウドに保存 – 端末を他に切り替えたときゲームの進捗を保持できる • 人によって使うコントローラは違うのでどのコントロールデバイスにも対応させる – トラックボール、D-pad、ジョイスティック • SDカードへのインストールをサポート – これをしないとマーケットのユーザ評価が落ちます • プロファイリング – 端末ごとに最適な設定を選ぶためにプロファイリングをしよう • ソーシャル – OpenIDを使用したソーシャルネットワークを使ってみたら? • Live Wallpaperにしてみようよ? – ゲームのアバターと状態をホームスクリーンでもみれるといいよ • アプリ追跡 – ゲームのマーケティングにいいよ • アプリ内課金 – 新しい収益の手法を身に付けよう
25.
はまったときのデバッグ支援ツール •
開発ツール – NVIDIA Debug Manager(Eclipse用) • シンプルな設定で済むEclipse上でのネイティブデバッカ – WinGDB • NDKアプリのデバッグにVisual Studio を使う – www.wingdb.com – vs-android • Android ツールチェイン用のネイティブのMSBuild ファイル – vs-android.googlecode.com • 性能評価ツール – NVIDIA PerfHUD ES • developer.nvidia.com/tegra/perfhud-es – Adreno Profiler • developer.qualcomm.com/showcase/adreno-profier – POWERVR Insider Utilities • PVRTraceやPVRTuneを含む – www.imgtec.com/powervr/insider/powervr-utiliyies.asp
26.
もらっちゃいました!
29.
開発用サンプルとか • sonyericsson.com/developer http://developer.sonyericsson.com/wportal/devworld/techno
logy/android/xperiaplay/overview?cc=gb&lc=en