mynavi · 1-3 時代はcocos2d-xだ! 7 日本cocos2d-x ユーザー会について 8 chapter 2...
TRANSCRIPT
ii
本書のサポートサイト本書の補足情報、訂正情報、サンプルファイルなどを掲載してあります。適宜ご参照ください。
http://book.mynavi.jp/support/pc/5204/
●本書の解説は、Cocos2d-x v3.2/v3.3にて行っています。
●本書は2015年1月段階での情報に基づいて執筆されています。本書に登場するソフトウェア、Webサイト、サービスなど画面イメージやバージョン、サービスの内容、URL、製品のスペックなどの情報は、すべてその原稿執筆時点でのものです。執筆以降に変更されている可能性がありますので、ご了承ください。
●本書に記載された内容は、情報の提供のみを目的としております。したがって、本書を用いての運用はすべてお客様自身の責任と判断において行ってください。
●本書の制作にあたっては正確な記述につとめましたが、著者や出版社のいずれも、本書の内容に関してなんらかの保証をするものではなく、内容に関するいかなる運用結果についてもいっさいの責任を負いません。あらかじめご了承ください。
●本書中の会社名や商品名は、該当する各社の商標または登録商標です。
●本書中では™および®マークは省略させていただいております。
iii
まえがき
国内外で爆発的に普及しているスマートフォンおよびスマートフォンアプリ。アプリの中で
も、金額ベースで世界的に約80%のシェアを占めるカテゴリが、ゲームアプリです。
いわゆる「スマホゲーム」と呼ばれるこの領域で、世界中で高いシェアと圧倒的な実積を誇
るゲーム開発ツール「Cocos2d-x」は、日本国内においても2012年以降、急速に浸透して
きています。
Cocos2d-xによるゲームプロジェクトの増加に伴い、ゲーム開発者にとっても、
Cocos2d-xの学習・習得はもはや業界の必修科目といえるところまできています。その一方で、
Cocos2d-xに関する入門書が増えてきた中で、現場で役立つ実践的な情報はまだまだ足りな
い印象があります。
そのため、私が代表を務める「日本Cocos2d-xユーザ会」のコミュニティを通じて、有志
をつのり目的引きの形のガイドブックを制作することにしました。
本書執筆も大詰めを迎えた頃、v3.3がリリースされました。本書は、v3.2をベースにして
執筆してきましたが、v3.3のリリースを受けて、v3.3での内容確認と、新機能のフォローを
行っています。
矢継ぎ早なバージョンアップを繰り返すCocos2d-xはまだまだ進化の過程といえますが、
本書は、現時点でゲーム開発に役立つテーマを一通り盛り込めたと考えています。学習や開発
の現場で、ぜひご活用ください。
また、Cocos2d-xは勉強会やコミュニティ活動も活発です。興味のある方は、ぜひ積極的
にそちらにもご参加をいただけたら、最新の情報や、Cocos2d-x開発元企業との日本語によ
るコンタクト、FAQなどが行えるかと思います(ユーザ会情報は、P.008にあります)。
2015年1月
八反田 智和
はじめに iii
Chapter 1 Cocos2d-x の概要 1
1-1 Cocos2d-x とは 2複数の開発言語をサポート 2/オープンソース 2/クロスプラットフォーム 2軽量&高速な動作と豊富な機能 3
1-2 Cocos2d-x の実績 4めちゃギントン 4/ハローキティコイン2-あつめたコインでかわいい庭づくり- 5
1-3 時代はCocos2d-x だ! 7日本 cocos2d-xユーザー会について 8
Chapter 2 環境構築 9
2-1 Cocos2d-x のダウンロード 10Cocos2d-xのダウンロード 10/各プラットフォームの開発環境について 11Cocos2d-xのフォルダ構成 11
2-2 Xcodeを利用した iOSとAndroid の開発環境(Mac) 12Xcodeのインストール 12/ Javaのインストール 12/ Cocos2d-xのダウンロード 13Android SDKのダウンロード 13/ Android NDKのダウンロード 13/ setup.pyの実行 13Cocos2d-xのマルチプラットフォーム対応プロジェクトの作成 14/ cocosコマンドでのビルドと実行 15Xcodeでプロジェクトファイルを開く 15
2-3 Eclipse を利用したAndroid 向けの開発環境 (Mac、Windows) 16Cocos2d-xのダウンロード 16/ Eclipse のダウンロード 16/ Android SDKと ADTプラグインのダウンロード 16Android NDKのダウンロード 17/ Pythonのインストール(Windows環境のみ) 17JDKのインストール 19/ Eclipseの設定 19/ setup.py の実行 19Cocos2d-xのマルチプラットフォーム対応 プロジェクトの作成 20cocosコマンドでのビルドと実行 21/ Eclipse 上でのプロジェクトの読み込み 21
2-4 Cocos2d-x の v2.2.5 と v3.2 の違い 23基本的な構成 23/ C++11への移行 23/命名規則の変更 24/レンダラーの変更 24/その他の変更 24
2-5 Cocos2d-x の v3.2 と v3.3 の違い 25新しい AudioEngineクラス 25/WebView 25/ Application::openURL 25ClippingRectangleNode 25/その他の追加機能 26
目次
iv
Chapter 3 基本的な使い方 27
3-1 cocos2d-x の基本構文と基本構造 28C++11の代表的な特徴 28/ cocos2d-x v3.3の基本的な構造 33
3-2 シーンを作成する 36基本的なシーンの作成方法 36
3-3 シーンを遷移する 38表示しているシーンを破棄して遷移する方法 38/今のシーンを保存して遷移する方法 38
3-4 レイヤーを作成する 39基本的なレイヤーの作成方法 39
3-5 背景色を変える 41LayerColor 41/ LayerGradient 42
3-6 スプライトを生成する 43
3-7 図形や線を描く 44点の描画 44/線の描画 44/多角形の描画 45
3-8 タッチを実装する 46シングルタッチの実装方法 46/マルチタッチの実装方法 48
3-9 タイマーの処理 50定期的に実行するタイマー 50/一度だけ実行するタイマー 51
3-10 アイコンを設定する 52iOSでの設定方法 52/ Androidでの設定方法 54
3-11 デバッグ情報の表示、非表示 55デバッグ情報を非表示にする 55/デバッグ情報の読み方 56
3-12 実機を使って動作確認をする(iOS) 57アカウントを追加する 57/実機の UDIDを登録 58/チームの選択と実行 58
3-13 実機を使って動作確認をする(Android) 59端末での設定 59/コマンドラインから実行する 60
3-14 アプリリリースの流れ(iOS) 61App IDを作成する 61/リリース用の証明書を作成する 62/配布用のプロビジョニングプロファイルを作成する 63iTunesConnectにアプリ情報を登録する 63/ビルドの提出 64
3-15 アプリリリースの流れ(Android) 65Google Play Developerに登録する 65/ apkファイルを作成する 65/アプリ情報を登録する 67
v
Chapter 4 画像とアニメーション 69
4-1 シーン入れ替え時に動きをつける 70Transitionを実装する 70/ Transitionの解説 72
4-2 モーダルレイヤーを作成する 74モーダルレイヤーを実装する 74/モーダルレイヤー上のイベントをキャッチする 77
4-3 スプライトの画像を入れ替える 78スプライトの画像を入れ替える 78/テクスチャキャッシュに画像を追加する 80
4-4 テクスチャアトラスを利用して画像を表示する 81テクスチャアトラスの中身 81/テクスチャアトラスを読み込む 83テクスチャアトラス利用時の注意点 84
4-5 複数画像を使ってアニメーションを作る 85複数の画像とアクションを使ってアニメーションを作る 85テクスチャアトラスと plistファイルを使ってアニメーションを作る 90
4-6 3Dのキャラクターを表示する 95モデルデータの準備 95/ Sprite3Dの実装 96
4-7 3Dのキャラクターを動かす 98モデルデータの準備 98/ Animation3Dの実装 98/ 3Dキャラクターを移動させる 100
4-8 たくさんのスプライトを高速に表示する 102スプライトバッチノードの実装 102/ SpriteBatchNodeの作成 103
4-9 画像の一部だけを引き伸ばして使用する 104Scale9Spriteの実装 104/ scale9Spriteの作成 106
4-10 画像を非同期に読み込む 107addImageAsyncの実装 107/ addImageAsyncの実行 109
4-11 ParallaxNodeを使った多重スクロール 110多重スクロールとは 110/多重スクロールを作る 110
4-12 ClippingRectangleNodeでマスク処理(v3.3) 114
Chapter 5 アクション 115
5-1 基本的なアクションの種類と使い方 116アクションの基本的な使い方 116/アクションの種類 117/MoveTo/MoveBy 118ScaleTo/ScaleBy 119/ JumpTo/JumpBy 120/ RotateTo/RotateBy 121/ Blink 122FadeTo/FadeIn/FadeOut 123/ SkewTo/SkewBy 124/ TintTo/TintBy 125/ BezierTo/BezierBy 127
vi
5-2 アクションに緩急をつける 129イージングの基本 129/イージングの種類 130/ EaseIn/EaseOut/EaseInOut 130EaseElasticIn/EaseElasticOut/EaseElasticInOut 132 / EaseBounceIn/EaseBounceOut/EaseBounceInOut 133 EaseBackIn/EaseBackOut/EaseBackInOut 134
5-3 アクションの実行タイミングを制御する 135アクションの実行タイミングを制御する 135/ Sequenceを使ってアクションを順番に実行する 135Spawnを使ってアクションを同時に実行する 138Repeat/RepeatForeverを使ってアクションを繰り返し実行する 140
5-4 アクション中に処理を実行する 143CallFuncを使ってメソッドを呼び出す 143/ CallFuncNを使ってターゲットを引数にメソッドを呼び出す 145
5-5 ActionCamera を使用する 146オブジェクトの視点を変える 146/オブジェクトの視点を変えてみよう 147
Chapter 6 文字とフォント 149
6-1 文字を表示する 150
6-2 文字を更新する 151
6-3 フォントを指定する 153TTFフォントを使って文字を表示 153/ビットマップフォントを使って文字を表示 155
6-4 新しいフォントを追加する 156
Chapter 7 UI の作成 157
7-1 ボタンを作成する 158Buttonクラスを利用するための準備 158/ Buttonクラスの表示 158/ Buttonクラスのタップイベント 159ボタンに Scale9Spriteクラスの画像を用いる 161/ボタンに文字を表示する 161
7-2 チェックボックスを作成する 162CheckBoxクラスを利用するための準備 162/ CheckBoxクラスの表示 162CheckBoxクラスのタップイベント 164
7-3 スライダーを作成する 165Sliderクラスを利用するための準備 165/ Sliderクラスの表示 165/ Sliderクラスの値変更イベント 166プログレスバーに Scale9Spriteクラスの画像を用いる 167
7-4 イメージビューを作成する 168ImageViewクラスを利用するための準備 168/ ImageViewクラスの表示 168イメージビューに Scale9Spriteクラスの画像を用いる 169
vii
7-5 ローディングバーを作成する 170LoadingBarクラスを利用するための準備 170/ LoadingBarクラスの表示 170LoadingBarクラスの値の変更 171/ローディングバーに Scale9Spriteクラスの画像を用いる 172
7-6 テキストフィールドを作成する 173TextFieldクラスを利用するための準備 173/ TextFieldクラスの表示 173テキストフィールドのイベント取得 175/入力文字数制限 176/パスワード文字 176
7-7 スクロールビューを作成する 177ScrollViewクラスを利用するための準備 177/ ScrollViewクラスの表示 177
7-8 ページビューを作成する 179PageViewクラスを利用するための準備 179/ PageViewクラスの表示 179PageViewクラスのページ遷移イベントを取得 181
7-9 リストビューを作成する 182ListViewクラスを利用するための準備 182/ ListViewクラスの表示 182ListViewクラスのページ遷移イベントを取得 184
Chapter 8 サウンド 185
8-1 音声ファイルのフォーマット 186SimpleAudioEngineの仕組み 186/使用できるフォーマット 187
8-2 効果音の再生方法 188ヘッダーファイルのインクルード 188/プラットフォームごとに再生フォーマットを分ける 188効果音を再生する 188/停止や一時停止などのメソッド 190
8-3 BGMの再生方法 191プラットフォームごとに再生フォーマットを分ける 191/ BGMを再生する 191再生の停止や一時停止などのメソッド 192
8-4 AudioEngine クラスによるサウンドの再生(v3.3) 193音楽ファイルを再生・停止する 193
Chapter 9 通信 195
9-1 サーバと通信する 196通信するための準備をする 196/サーバと通信する 196/サーバからのレスポンスを受け取る 197
9-2 ファイルをダウンロードする 199ファイルを保存するパスを取得する 199/ファイルをダウンロードして保存する 199
viii
9-3 通信エラー対策 203エラーの要因 203/タイムアウトの設定 203/データ量の最適化 204
9-4 ダウンロード時のデータ分割とサイズ 205データ分割とそのサイズ 205/分割ダウンロードとマルチセッションによる高速化 206
Chapter 10 データの読み込みと保存 209
10-1 値を永続化して保存する 210値を書き込む 210/値を読み込む 211
10-2 ファイルの読み書きを行う 213テキストファイルを読み込む 213/文字列を書き込む 214
10-3 PLISTファイルの読み込み 215PLISTファイルの作成 215/ PLISTファイルの読み込み 216
10-4 XMLファイルの読み込み 217TinyXML-2を使う準備 217/ XMLをパースする 217
10-5 JSONファイルの読み込み 220RapidJSONを使う準備 220/パースする 220
10-6 SQLite を使う 222SQLiteのソースコードをダウンロードする 222/ SQLiteのソースコードをプロジェクトに追加する 222SQLiteの機能を使う 223
Chapter 11 OSに依存した処理 227
11-1 OSに依存する処理を使う 228共通処理のクラスの作成 228/ヘッダーファイルの実装 229/ iOS用の実装 229/ Android用の実装 229
11-2 OSによって処理を分ける 232マクロで処理を分ける 232/ Applicationクラスを使用して処理を分ける 233
11-3 プッシュ通知サービスを利用する 234iOSでのプッシュ通知の利用 234/ Androidでのプッシュ通知の利用 236
ix
Chapter 12 外部ツールとの連携 237
12-1 Cocos Studio を使う 238Cocos Studioとは何か 238/それぞれのエディタについて 239/ UIエディタでダイアログを作る 241UIエディタで作ったダイアログを表示する 244
12-2 CocosBuilder を使う 246CocosBuilderをインストールする 247/ CocosBuilderでプロジェクトを作成する 247Cocos2d-xから CocosBuilderで作成したビューを表示する 248CocosBuilderで作成したノードと Cocos2d-xを連携する 250
12-3 Cocos Code IDEを使う 255Cocos Code IDEとは 255/ Cocos Code IDEでプロジェクトを作る 256Cocos Code IDEを使う 257
12-4 Tiled Map Editor でマップを作る 259Tiled Map Editorでマップを描く 259/作成したマップを Cocos2d-xで読み込む 262マップの中にオブジェクトを置く 264
12-5 TexturePacker でテクスチャアトラスを作る 270TexturePackerとは 270/テクスチャアトラスを作る(Essential版) 271Cocos2d-xで画像を表示する 273/ TexturePackerの設定値について 275
12-6 PhysicsEditor で物理演算 278Cocos2d-x v3.xへの対応をする 279/当たり判定を設定する 281/ Cocos2d-xから呼び出す 282
12-7 Particle Designer でパーティクルを作る 287パーティクルの設定を変更する 287/パーティクルを表示する 288
12-8 Glyph Designer でビットマップフォントを作る 291Glyph Designerとは 291/Glyph Designerを使う 292/ビットマップフォントを表示する 292
12-9 Cubism 2.0 を使ってイラストを動かす 294Cubism 2.0とは 294/ Cubism Editor 295/ Live2Dモデルを Cocos2d-xで表示する 296実装(iOS編) 296/実装(Android編) 303
12-10 CRIWAREを使う 305CRIWAREとは 305/ CRIWAREのスマートフォン向けのミドルウェア 306ADX2 LE のスマートフォン向けのミドルウェアの組み込み 308
12-11 OPTPiX SpriteStudio で 2Dアニメーションを作る 313OPTPiX SpriteStudioとは 313/OPTPiX SpriteStudioを使う 314Cocos2d-x用の SSPlayerを使って、2Dアニメーションを表示する 315
x
Chapter 13 外部サービスとの連携 317
13-1 AdMobを使って広告を出す 318ユーザ登録 318/広告ユニットの作成と設定 319/広告の表示(iOS) 319/広告の表示(Android) 322
13-2 appC cloud で CPI 広告を実装する 325appC cloudとは 325/開発のための準備 326/ CPI広告を使ってアプリに広告を出す 337
13-3 nendを使ってアプリに広告を出す 345nendとは 345/ユーザ登録とアプリの登録 345/実装(iOS) 347/実装(Android) 348
13-4 Parse を使ってクラウド上にデータを格納する 352Parseとは 352/ Parseを使う 353
13-5 AppWarp を使ってリアルタイム通信アプリを作る 360AppWarpとは 360/ AppWarp SDKの導入 361/リアルタイムチャットを作る 363
13-6 Everyplay を使う 373Everyplayのフレームワークをダウンロードする 373/ Everyplayのフレームワークを追加する 373Everyplayを呼び出す 375
13-7 Lobi REC SDK を使う 377Lobi REC SDK の導入方法 378
Chapter 14 実践テクニック 379
14-1 テクスチャの解放と再ロード 380Androidの pause処理 380/ Androidの resume処理 381
14-2 OpenGL利用時の留意点 382Android端末におけるレジューム処理 382/ Android端末における描画タイミング 382テクスチャサイズ 383/メモリ管理 383
14-3 pthreadとMutexを利用してマルチスレッド処理を行う 384スレッドの作成と起動 384
14-4 Eclipse でソースレベルデバッグを行う 387デバッグビルドの作成 387/デバッガの起動 388
14-5 ゲームの一時停止処理の方法 389シーンをプッシュして停止させる 389/特定のレイヤのみ止める 389/端末の割り込みによる一時停止処理 390
14-6 ムービーを再生する 392ムービー再生の準備をする(Android) 392/ムービー再生の準備をする(iOS) 392ムービー再生のコードを記述する 393/ムービー再生の問題点 394
xi
14-7 物理演算を使う 395物理演算を使えるようにする 395
14-8 テクスチャを暗号化する 399TexturePacker を使用して暗号化する 399/暗号化したテクスチャを使用する 400アプリで共通の暗号化キーを使用する 400/テクスチャが暗号化されているか確認する 401
14-9 パスワード設定した zip ファイルを解凍する 402暗号化された zipファイルを解凍する準備 402/暗号化された zipファイルを解凍する 403
14-10 複数の解像度に対応する 405デザイン解像度とは 405/ ContentScaleFactorとは 405/複数の解像度に対応する 405
14-11 Webページを表示する(v3.3) 410WebViewでできること 410/表示する HTMLを用意する 410/WebView表示のコードを記述する 411
14-12 ブラウザを開く(v3.3) 413
14-13 App Store - StoreKit を利用した課金処理実装 414課金処理実装の準備 414/課金処理の呼び出し 416
14-14 Google Play - InAppBillingService と IabHelper を 利用した課金処理実装 425課金処理実装の準備 425/起動時の処理を追加する 426/課金処理の呼び出し 432
14-15 課金処理におけるエラー時の対応 437In-App Purchaseのエラー対策 437/ In-app Billingのエラー対策 439
索引 442
著者紹介 446
xii
Cocos2d-x の概要
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
Chapter1
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
2
Chapter1 Cocos2d-x の概要
Cocos2d-x とは
1-1
text:西田 寛輔
Cocos2d-x は、2Dのゲーム開発に特化したオープンソースのフレームワークです。複数のOS
に対応しており、特にスマートフォンのアプリ開発で注目されています。
複数の開発言語をサポート
C++の他、Lua や JavaScript での開発も可能です。基本的にはC++を用いて開発する事例が
多く、本書のサンプルコードもC++で解説しています。C++11を採用しているため、型推論やラ
ムダ式の記述などを用いて効率的に開発を行うことができます。
オープンソース
MIT ライセンスのため、商用の場合でも無料で利用できます。そのため、実際の導入事例も多く、
日本でも多くのCocos2d-x 製のアプリがストアに並んでいます。
クロスプラットフォーム
ひとつのソースで複数のOS向けのアプリが作成できるのが、Cocos2d-x の最大の魅力です。
iPhone と Android のアプリを同時に開発できます! 課金処理など端末やOSに依存する部分以
外は、共通のソースで管理できるので、移植のコストが不要です。
iOS、Android、Windows Phone などのスマートフォン向けのアプリのほか、Mac OS、
Windows などデスクトップ用のアプリも開発できます。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
3
1-1 Cocos2d-x とは
軽量&高速な動作と豊富な機能
クロスプラットフォームで動作する他のゲームエンジンと比較しても、Cocos2d-x は、最高レベ
ルの速度を持っています。OpenGL を使用しているため描画は高速ですし、スプライトの描画はも
ちろん、シーン遷移やアクションとよばれるアニメーション処理や物理演算、タイルマップのサポー
トなど、豊富な機能を利用できます。
▲http://jp.cocos2d-x.org
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
4
Chapter1 Cocos2d-x の概要
Cocos2d-x の実績
1-2
text:西田 寛輔
Cocos2d-x で作られたアプリはたくさんあり、中国や韓国ではApp Store のゲームカテゴリの
TOP10に入る半数以上のアプリで採用されているとまでいわれています。
実際、公式ホームページの Showcase にはたくさんのアプリが登録されており、本書執筆時で
2000本をこえるアプリが登録されています。残念ながらCocos2d-x を採用しているすべてのアプ
リが、ここに登録されるわけではないのですが、多くの実績があることを実感できると思います。
●Showcase ¦ Cocos2d-x
http://jp.cocos2d-x.org/showcase/
実際にアクセスして一覧をみていただくと分かりますが、「BADLAND」や「LINE PLAY」、「LINE
Rangers」といった有名タイトルも多数混在しています。これらのタイトルをプレイするだけでも、
Cocos2d-x の実力が体感できるのではないでしょうか。
それでは、日本で発売されているアプリの中から最近の事例を実績としてみていきましょう。開発
期間や体制、開発の際に苦労した点や工夫した点なども紹介します。
めちゃギントン
フジテレビの人気番組「めちゃ 2イケてるッ!」の人気コーナー「めちゃギントン」をアプリ化。
2014年夏に開催されたお台場合衆国ではめちゃギントンブースが開設され、その中で8台の iPad
でめちゃギントンアプリを楽しむことができました。1日中連続してプレイされるため、絶対にアプ
リがクラッシュすることは許されず、アプリの耐久性に細心の注意をしてテストを行いました。
その後パワーアップして2014年 11月に一般公開されます。
開発期間は 3ヶ月、プログラムはクライアント 1名、サーバサイド 1名での制作で、番組連動の
仕組みやいかに番組の面白さをアプリで再現するかに試行錯誤しました。
このアプリはリズムにのって軽快なテンポでゲームが進行することにより面白さが増すので、音楽
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
5
1-2 Cocos2d-x の実績
系の一種といえます。いかに一定のリズムを刻み、電車を走らせキャラをリズムに乗せて動かすかに
苦心しました。
●ダウンロードURL
App store: https://itunes.apple.com/jp/app/id918420886?mt=8
Google Play: http://play.google.com/store/apps/details?id=jp.co.fujitv.
mechaggington&hl=ja
●著作権情報
©SmartEducation Co., Ltd. All Rights Reserved.
©Fuji Television Network, inc. , SmartEducation Co., Ltd. All rights reserved.
ハローキティコイン2-あつめたコインでかわいい庭づくり-
ハローキティと一緒にコイン遊びをしたり、自分専用のお庭づくりを楽しむことができるゲームで
す。前作「HELLO KITTY COIN」の続編として、2014年秋にリリースされました。
開発期間は 1年、エンジニア 4名、デザイナー 3名、プランナー 2名で、前作の運営をしつつ、
開発を行ってきました。UI 製作に関してはCocosBuilder を最大限に生かして製作工数をおさえつ
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
6
Chapter1 Cocos2d-x の概要
つ、コインゲーム部分は独自3Dエンジンを組み込んで他のコインゲームにはないスムーズな動きを
演出しています。iOS 版と Android 版とをほぼ平行して開発しリリースできたのは、Cocos2d-x
ならではだと思います。
●ダウンロードURL
App store:https://itunes.apple.com/jp/app/harokitikoin2-atsumetakoinde
kawaii/id896606614?l=ja&ls=1&mt=8
Google Play:https://play.google.com/store/apps/details?id=jp.co.sanriowa
ve.android.rforce.hkc
●著作権情報
Ⓒ 1976,2014 SANRIO CO., LTD. Ⓔ APPROVAL NO.E-520926-1
いかがでしたか? 実際に日本で発売されているアプリにCocos2d-x が採用されているとなる
と、心強いですし、夢が広がりますよね! 自分のアプリの開発に入る前に、ぜひこれらのアプリを
実際にプレイしてみてください。あなたの作品がCocos2d-x のショーケースに入るのを期待してい
ます!
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
7
1-3 時代はCocos2d-x だ!
時代はCocos2d-x だ!
1-3
text:西田 寛輔
Cocos2d-x について簡単に紹介してきましたが、みなさんはどう感じましたか?
クロスプラットフォーム対応、実行速度が速いなど、魅力的なアプリを作るのにピッタリな開発環
境だとは思いませんか?
実際に、多くのアプリで採用実績があり、魅力的なアプリが次々とリリースされています。多くの
開発者が注目しており、Facebook の日本語のコミニュティには、本書執筆時点で2,000 人を超え
る登録があります(※1)。質問や意見交換なども活発に行われているので、ぜひ登録してみてはどうで
しょうか。
本書では、そんな魅力的なCocos2d-x の開発のテクニックや疑問を「逆引き」で、皆様にご紹介
します。また、後半ではCocos2d-x でのアプリ開発に対応している便利なツールや、Cocos2d-x
に対応したサービスも紹介しています。サンプルコードも豊富ですので、実際に試してみたり簡単に
導入できると思います。
スマートフォンアプリが注目されている現代において、App Store、google play、Amazon ア
プリストアに対応したアプリがリリースできるCocos2d-x は間違いなく、理想の開発環境の 1つ
だと思います。本書を参考に、すばらしい魅力的なアプリが皆様の手から世界にリリースされるのを
楽しみにしています。時代はCocos2d-x だ!
※1:2015年 1月19日現在2,064名 cocos2d-x.jp(日本Cocos2d-x ユーザ会)
https://www.facebook.com/groups/cocos2dxjp/
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
8
Chapter1 Cocos2d-x の概要
日本Cocos2d-x ユーザー会について
日本Cocos2d-x ユーザー会は、任意の個人および法人が集まるユーザーコミュニティとして、
2013 年 3月 1日に設立されました。本家 Cocos2d-x が公認するユーザー会であり、株式会社
HatchUpのサポートの元、運営されています。
主な活動としては、
・ハンズオン
・ 出版執筆
・ コミュニティ形成
があります。
ハンズオンは従来の定期開催のほか、初心者向けにも定期的に開催しており、すそ野を広げる取組
を行っています。
出版執筆に関しては、本書をはじめ、Cocos2d-x 関連書籍の充実を目指しています。
コミュニティ形成は、Facebook では cocos2d-x.jp community として多くのユーザーとの交
流を図っています。
Facebook グループには、Cocos2d-x に興味があるだけの方から上級者まで、幅広い層がいます。
また自由な発言ができる場なので、初心者向けの質問から難易度の高いもの、飲み会のお誘いなどさ
まざまな会話が飛び交っています。
cocos2d-x.jp community は誰でも参加できるので、上記コミュニティの「グループへ参加」ボ
タンを押してみてください。
▲https://www.facebook.com/groups/152840204871454/
環境構築
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
chapter3
chapter4
chapter5
chapter6
chapter7
Chapter2
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
10
Chapter2 環境構築
Cocos2d-x のダウンロード
2-1
text:小林 伸隆
Cocos2d-x の開発に必要な環境を構築しましょう。
Cocos2d-x のダウンロード
Cocos2d-x の公式サイトのダウンロードページ(http://jp.cocos2d-x.org/download)から
Cocos2d-x をダウンロードして任意のフォルダに展開します。本書では v3.3 にしたがって解説し
ています。
すでに新しいバージョンが出てしまって v3.3 が見当たらない場合は、図の下にある「older
version」をクリックします。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
11
2-1 Cocos2d-x のダウンロード
Cocos2d-x の古いバージョンが表示されるので v3.3 をクリックしてダウンロードします。ダウ
ンロードが終了したら任意のフォルダに展開します。
各プラットフォームの開発環境について
iOS のアプリを作成するにはMacが必要です。
Android のアプリは、MacとWindows のどちらでも作成できます。
各個別の詳細な環境構築方法については以降の節を参照してください。Chapter2-2 ではMac
環境で Xcode を利用した iOS と Android のアプリを作成する開発環境構築方法を説明します。
Chapter2-3 ではMac、Windows の両環境で Eclipse を利用したAndroid アプリの作成方法を説
明します。
Cocos2d-x のフォルダ構成
Cocos2d-x のフォルダ構成について説明します。
Classes フォルダにはソースコードが置かれます。
proj.* フォルダには各プラットフォームごとに必要なソースコード、プロジェクトファイル、設定
ファイル、リソースが置かれます。
Resources フォルダにはリソースが置かれます。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
12
Chapter2 環境構築
Xcodeを利用した iOSとAndroid の開発環境(Mac)
2-2
text:小林 伸隆
Mac環境でXcode を利用した iOSと Android のアプリを作成する開発環境の構築方法を説明し
ます。デバッグとコードの編集にXcode を使い、Android は cocos コマンドの run で作成します。
Android の開発は Eclipse で行うことも可能なので、その場合はChapter2-3 も参照してください。
また、Mac環境であれば iOSは Xcode を使わず、cocos コマンドの run だけで作成することが可
能です。
Xcodeのインストール
Mac の App Store から最新の Xcode をダウンロードしてインストールします(この記事は
2014 年 12月時点の最新バージョンである v6.1.1 にて検証しています)。インストールが終わっ
たら一度起動してActivate しておきます。
Javaのインストール
Finder でアプリケーション→ユーティリティの中にある、ターミナルを起動します。ターミナル
のコマンドラインに java-version と打ち込み実行します。Java がインストールされている場合は
バージョンが表示されます。インストールされていなければインストールするか聞いてきます。もし
もエラーになる場合は、下記のページより Java をダウンロードしてインストールします。ターミ
ナルは起動したままにしておきます。
●http://www.oracle.com/technetwork/java/javase/downloads/index.html
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
13
2-2 Xcodeを利用した iOSとAndroid の開発環境(Mac)
Cocos2d-x のダウンロード
Chapter2-1 の記述通りにCocos2d-x をダウンロードして任意の場所に展開します。
Android SDKのダウンロード
Android の SDKを下記の場所からダウンロードして任意のフォルダに展開します。
●https://developer.android.com/sdk/index.html
Android NDKのダウンロード
Android NDKを下記の場所からダウンロードして任意のフォルダにダウンロードします(この記
事は android NDK r10d のMac OS X 64-bit で検証しています)。
●http://developer.android.com/tools/sdk/ndk/index.html
ターミナルを開き、ダウンロードしたフォルダに移動し下記のコマンドを打ち込みます。下記の例
では ̃/Downloads に android NDK r10d のMac OS X 64-bit を、ダウンロードしたと仮定して
います。
コード2-2-01 ターミナル$ cd ~/Downloads
$ chmod a+x android-ndk-r10d-darwin-x86_64.bin
$ ./android-ndk-r10d-darwin-x86_64.bin
setup.py の実行
ターミナルでCocos2d-x を展開したフォルダに移動し、setup.py を実行します。コード 2-2-
02 は Cocos2d-x v3.3 の場合です。
コード2-2-02 ターミナル$ cd cocos2d-x-v3.3
$ ./setup.py
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
14
Chapter2 環境構築
setup.py を実行すると次の環境変数が設定されます。
環境変数 意味COCOS_CONSOLE_ROOT 自動設定ANDROID_SDK_ROOT Android SDK を展開した場所を指定するNDK_ROOT Android NDK を展開した場所を指定するANT_ROOT 入力不要
setup.py を実行すると ̃/.bash_profile に必要な環境変数を追加してくれます。追加された環境
変数を反映させるために、.bash_profile に source コマンドを実行します。
コード2-2-03 ターミナル$ source ~/.bash_profile
これで cocos コマンドが使用できるようになります。
Cocos2d-x のマルチプラットフォーム対応プロジェクトの作成
ターミナルでCocos2d-x を展開したフォルダに移動し、cocos コマンドを使用してマルチプラッ
トフォーム対応プロジェクトを作成します。この説明では ̃/Documents に作成していますが、実
際に作成する際には、̃/Documents を作成したい任意のフォルダに変更してください。
コード2-2-04 ターミナル$ cocos new MyGame -p jp.mynavi.MyGame -l cpp -d ~/Documents
引数はそれぞれ次のようになっています。
引数 意味new プロジェクト名(この例ではMyGame)-p Android のパッケージ名-l 言語を指定。cpp、lua、js を指定可能-d プロジェクトを作成するフォルダーのパス
次のようにターミナルに打ち込むとヘルプが表示されます。
コード2-2-05 ターミナル$ cocos new --help
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
15
2-2 Xcodeを利用した iOSとAndroid の開発環境(Mac)
cocos コマンドでのビルドと実行
ターミナルで、cocos コマンドに下記のようなオプションを指定することで、プラットフォーム
を指定したビルドと実行ができます。このコマンドでXcode を使わずに iOS もビルドできます。
Android は Eclipse を使用して作成することができるので、Eclipse を使いたい場合はこの節の後
にChapter2-3 を読んでください。̃/Documents の部分は、プロジェクトを作成した任意のフォ
ルダに変更してください。
コード2-2-06 ターミナル$ cocos run -s ~/Documents/MyGame -p ios
$ cocos run -s ~/Documents/MyGame -p android
引数はそれぞれ下記のようになっています。
引数 働き-s プロジェクトのベースフォルダー-p ビルドするプラットフォーム、ios、android、mac、web、win32、linux-m ビルドするモード(デフォルトは debug)、debug、release
cocos コマンドは new、run 以外にも compile や deploy コマンドがあります。
詳しい使い方はそれぞれのコマンドに ‒help を指定すればヘルプを見ることができます。
Xcodeでプロジェクトファイルを開く
Finder で、作成したプロジェクトのフォルダを見ると、フォルダの中に proj.ios_mac フォルダ
があります。その中にMyGame.xcodeproj があるので、それをダブルクリックしてプロジェクト
をXcode で立ち上げてください。スキーマがMyGame iOS になっているか確認して、シミュレー
ターを使うのなら指定した機種を選び、実機を使うなら実機を選びます。すべて大丈夫であれば左上
の右向き三角ボタンをクリックして、ちゃんとビルドと実行ができることを確認してください。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
16
Chapter2 環境構築
Eclipse を利用したAndroid 向けの開発環境(Mac、Windows)
2-3
text:小林 伸隆
MacとWindows環境でEclipse を利用したAndroid のアプリを作成する開発環境構築方法を説
明します。ただし簡単な紹介なので、Eclipse の環境構築については、適宜ほかの情報も参照してく
ださい。また、Google が Eclipse のサポートを将来的には終了することを表明しているので、ここ
に書いたのは原稿執筆時(2015年 1月)に可能な方法という点をご了承ください。
Cocos2d-x のダウンロード
Chapter2-1 の記述通りにCocos2d-x をダウンロードして任意のフォルダに展開します。
Eclipse のダウンロード
Eclipse をダウンロードし、インストールします。多数のパッケージが配布されていますが、
JDT(Java Developement Tools)プラグインが導入されている「Eclipse IDE for Java
Developers」を選ぶとよいでしょう。
●https://www.eclipse.org/downloads/
Android SDKとADTプラグインのダウンロード
Android SDKと ADTプラグインをダウンロードします。
●http://developer.android.com/sdk/index.html
左のメニューの「Download」下にある「Installing the SDK」を選び、「stand-alone SDK
Tools」を選ぶと、Android SDKの単体をダウンロードできます。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
17
2-3 Eclipse を利用したAndroid 向けの開発環境(Mac、Windows)
同じ左のメニューから「Eclipse with ADT」を選び、「Installing the Eclipse Plugin」を選ぶと、
ADTプラグインをダウンロードできます。
EclipseにAndroid SDKとADTプラグインを追加する方法も、上記サイトに記載されているので、
参考にしてください。
▲Android SDK のダウンロード
Android NDKのダウンロード
Mac の場合は Chapter2-2 を参照してください。ここではWindows 環境の説明をします。
Android NDKを下記の場所から任意のフォルダにダウンロードします。ダウンロードが終了しまし
たら、ダウンロードしたフォルダにあるandroid-ndk-r10d-Windows-x86_64.exeをダブルクリッ
クして実行します。
※この記事は android NDK r10d の Windows 64-bit で検証しています。
http://developer.android.com/tools/sdk/ndk/index.html
Pythonのインストール(Windows環境のみ)
Windows 環境の場合はPython 2.x を下記よりダウンロードし、インストーラーを起動してイン
ストールします。
●https://www.python.org/download/
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
18
Chapter2 環境構築
左下のスタートボタンを右クリックして「システム」を選び、左側のパネルにあるシステム詳細設
定を選びます。
▲左下のスタートボタンを右クリックしてシステムを選ぶ
「環境変数」ボタンをクリックし、ユーザー環境変数の「Path」を選んで「編集」ボタンをクリッ
クします。
▲システム詳細設定プロパティ
変数値の末尾に ; を追加し、その後にPython をインストールしたフォルダを追加してOKボタン
をクリックします。c:¥Python27 にインストールした時は、;c:¥Python27 を変数値の末尾に追
加します。
▲変数値の末尾に追加
OKボタンをクリックして、開いているウィンドウを閉じます。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
19
2-3 Eclipse を利用したAndroid 向けの開発環境(Mac、Windows)
JDKのインストール
Windows 環境の場合は JDKを下記よりダウンロードし、インストーラーを起動してインストー
ルします。
http://www.oracle.com/technetwork/java/javase/downloads/
Mac 環境の場合は Eclipse を起動して、メッセージが表示されたら、それに従ってインストール
します。何もメッセージが表示されない場合はインストール済みです。
Eclipse の設定
Eclipse を起動し、Eclipse の Preferences(環境設定)を表示します。C/C++ → Build →
Environment と選択し、NameにNDK_ROOT、Value に Android NDKのパスを入力します。
▲Environment の設定
setup.py の実行
Mac 環境での setup.py の実行については、Chapter 2-2 を参照してください。ここでは
Windows 環境での setup.py の実行を解説します。コマンドプロンプトを開いてCocos2d-x を展
開したフォルダに行き、setup.py を実行します。
コード2-3-01 コマンドプロンプト¥ cd cocos2d-x-3.3
¥ setup.py
setup.py を実行すると次の環境変数が設定されます。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
20
Chapter2 環境構築
環境変数 意味COCOS_CONSOLE_ROOT 自動設定ANDROID_SDK_ROOT Android SDK を展開した場所を指定するNDK_ROOT Android NDK を展開した場所を指定するANT_ROOT 入力不要
setup.py を実行すると必要な環境変数を追加してくれます。追加された環境変数を反映させるた
めに、コマンドプロンプトを一回閉じて開き直します。これで cocos コマンドが使用できるように
なります。
Cocos2d-x のマルチプラットフォーム対応 プロジェクトの作成
Mac 環境での Cocos2d-x のマルチプラットフォーム対応プロジェクトの作成については、
Chapter2-2 を参照してください。ここではWindows 環境でのプロジェクトの作成を解説します。
コマンドプロンプトを開いてCocos2d-x を展開したフォルダに行き、cocos コマンドを使用し
てマルチプラットフォーム対応プロジェクトを作成します。
※この説明では c:¥prj に作成していますが、実際に作成する際には、c:¥prj を作成したい任意の
フォルダに変更してください。
コード2-3-02 コマンドプロンプト¥ cocos new MyGame -p jp.mynavi.MyGame -l cpp -d c:¥prj
引数はそれぞれ下記になります。
引数 意味new プロジェクト名(この場合はMyGame)-p Android のパッケージ名-l 言語の指定。cpp、lua、js を指定可能-d プロジェクトを作成すフォルダのパス
下記のコマンドでヘルプを表示できます。
コード2-3-03 コマンドプロンプト¥ cocos new --help
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
21
2-3 Eclipse を利用したAndroid 向けの開発環境(Mac、Windows)
cocos コマンドでのビルドと実行
Mac 環境ではターミナル、Windows 環境ではコマンドプロンプトで、下記のコマンドでプラッ
トフォームを指定してビルドと実行ができます。あらかじめAndroid の実機が認識された状態になっ
ている必要があります。̃/Documents および c:¥prj の部分は、プロジェクトを作成した任意のフォ
ルダに変更してください。
コード2-3-04 ターミナル(Mac環境)$ cocos run -s ~/Documents/MyGame -p android
コード2-3-05 コマンドプロンプト (Windows環境 )¥ cocos run -s c:¥prj¥MyGame -p android
引数はそれぞれ下記になります。
引数 意味-s プロジェクトのベースフォルダ-p ビルドするプラットフォーム。ios、android、
mac、web、win32、linux-m ビルドするモード。debug、release(デフォルト
は debug)
cocos コマンドは new、run 以外にも compile や deploy コマンドがあります。詳しい使い方は
それぞれのコマンドに ‒help を指定すればヘルプが表示されます。
Eclipse 上でのプロジェクトの読み込み
Eclipse に Cocos2d-x のライブラリとプロジェクトファイルを読み込みます。最初にライブラ
リを読み込みます。[File]→[New]→[Project...]から[Android]→[Android Project
from Existing Code]を選びます。
先ほど作成したプロジェクトフォルダの中にある cocos2d/cocos/platform/android/java を
Root Directory に指定し、Finish ボタンをクリックします。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
22
Chapter2 環境構築
▲Android Project from Existing Code を選ぶ ▲自分で作成したプロジェクトのライブラリを読み込む
次にプロジェクトファイルを読み込みます。[File]→[New]
→[ Project...] か ら[Android] →[Android Project from
Existing Code]を選び、プロジェクトフォルダの中にある proj.
android を Root Directory に指定し、Finish ボタンをクリック
します。
Build が開始されるので 5~ 10分ほど待ちます。下図の状態
になったら環境構築は完了です。
▲正常に Build が終了した状態
▲自分で作成したプロジェクトを読み込む
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
23
2-4 Cocos2d-x の v2.2.5 と v3.2 の違い
Cocos2d-x の v2.2.5 とv3.2 の違い
2-4
text:小林 伸隆
Cocos2d-x のバージョンによる違いについて説明します。現在のCocos2d-x には大きくわけて
2.x 系と 3.x 系が存在しています。この節では v2.2.5 と v3.2 の違いを説明します。
基本的な構成
Cocos2d-x は元々、iPhone アプリ用のCocos2d for iPhone というObjective-C で書かれた
フレームワークを、C++に移植してクロスプラットフォーム用としたものです。そのために2.x 系
ではCocos2d for iPhoneで使われていたObjective-Cとの互換性のある構成になっています。3.x
系ではObjective-C との互換性を取ることをやめ、Objective-C を移植した部分すべてをC++11
で置き換えることでパフォーマンスの向上を計り、2.x 系よりC++らしく書けるようになっていま
す。この変更によって、廃止されたクラスや統合されたクラスがあります。
C++11への移行
2.x 系では C++03 が使われていましたが、3.x 系では C++11 に移行されています。C++11
ベースのスレッドAPI への内部実装やインターフェースのリファクタリングにより、パフォーマン
スの向上がなされています。例えばC++11に対応したことによりコールバック処理の時の関数ポ
インタに std::function とラムダ式が使え、簡単な処理のためにいちいち関数を用意する必要が無く
なりました。その他にも pthread の代わりに std::thread が使えるようになったり、auto、enum,
override keyword, スマートポインタなどが使えるようになっています。またCocos2d-x のクラ
ス群もそれらを用いてリファクタリングされています。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
24
Chapter2 環境構築
命名規則の変更
3.x 系では C++11 への移行に伴い、2.x 系の Cocos2d for iPhone や Objective-C に合わせ
ていた命名規則も変更されました。大きいところでは 2.x 系のクラスでついていた、'CC' というベ
ンダープレフィックスがなくなりました。
●2.x 系 CCDirector、CCNode、CCLayer
●3.x 系 Director、Node、Layer
また、ハンガリアン記法の削除や関数名の命名規則の変更により、クラスのプロパティも変更され
ています。例えばフィールドのプレフィックスが、'm_' から '_' に変更されていたり、シングルトン
呼び出し関数名が get*() から getInstance() に変更されています。
定数の命名規則も ccGREENからColor3B::GREENのように変更されています。
レンダラーの変更
2.x 系では各Node のツリーごとに都度描画をしていましたが、3.x 系では描画コマンドを一旦
キューに溜め込んで、最終的にまとめて描画処理をするように変更されました。そのため 2.x 系で
はバッチ処理を行うのに別途CCSpriteBatchNode を自前で用意して子ノードを登録しないといけ
なかったのですが、3.x 系では同じマテリアル、同じZ値であれば自動的にバッチ処理されます。ま
た画面内に存在しないNode だった場合はキューに積まれない仕組みになっています。これらの要
素により2.x 系と比べて描画パフォーマンスが上がっています。
その他の変更
その他の変更としては、ラベルの改善やUI パーツ、ウィジェット、コマンドラインツールの追加、
3D対応などがあります。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
25
2-5 Cocos2d-x の v3.2 と v3.3 の違い
Cocos2d-x の v3.2 と v3.3 の違い
2-5
text:加藤 直人
2014 年 12 月に Cocos2d-x の v3.3 がリリースされました。v3.2 と比べて大きな変更はない
ものの、パフォーマンスが向上したのに加えて、いくつか便利な機能が追加されています。また、
Android NDKが ndk-r10c に対応するようになり、r9cでは使えていなかったC++の一部機能が
使えるようになりました。ここでは、v3.3 で追加された機能のうち、いくつかを紹介します。
新しいAudioEngine クラス
いままでSEや BGMを扱うのにSimpleAudioEngine クラスを使用していましたが、機能を強化
した新しいAudioEngine クラスが追加されました(Chapter8-4 参照)。
WebView
iOS と Android のみですが、WebViewが使えるようになりました(Chapter14-11 参照)。
Application::openURL
Application クラスに openURLメソッドが新しく追加されました(Chapter14-12 参照)。
ClippingRectangleNode
ClippingNode クラスを利用すると画像にマスク処理をかけることができますが、v3.3 から簡易
バージョンとしてClippingRectangleNode クラスが追加されました(Chapter4-12 参照)。
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter2
26
Chapter2 環境構築
その他の追加機能
他にも以下に挙げるような変更点があります。
●ライブラリが整理されて数が減りました。
●3Dまわりが強化され、光源クラスやBillboard クラスなどが追加されました。
●AssetsManagerクラスを強化したAssetsManagerExクラスが追加され、より便利にリソー
スのオートアップデートが利用できるようになりました。
●FileUtils クラスが強化されました。
●RenderTexture クラスの saveToFile にコールバックが追加されました。
●schedule 関数にラムダを渡せるようになりました。
きりがないのですべての変更点を紹介することはできませんが、そのほとんどが機能の強化・追加
なので、v3.2 から v3.3 へはさほど問題なく移行できでしょう。
v3.3 について詳しい情報を知りたい人は、下記のリリースノートを読んでみてください。
https://github.com/cocos2d/cocos2d-x/blob/v3-master/docs/RELEASE_NOTES.md
Chapter3基本的な使い方
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter1
chapter2
chapter4
chapter5
chapter6
chapter7
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter3
Cocos2d-xの基本構文と基本構造
3-1
text:小林 伸隆
Cocos2d-x 3.x 系の C++プロジェクトでは、Cocos2d-x 2.x 系で使われていたC++03に代
わってC++11が採用されており、基本構文はC++11に準拠しています。ここでは、Cocos2d-x
3.x 系で良く使われるC++11の特徴、Cocos2d-x の基本的な構造を説明します。なお、C++11
は 2011年時点で最新の規格である「C++の ISO標準 ISO/IEC 14882:2011」の略称です。
C++11の代表的な特徴
C++03 から C++11 に代わったことにより、いろいろと便利になりました。ここでは、
Cocos2d-x 3.x 系でよく使われるC++11の特徴を挙げていきます。
型推論
C++03や Cでは、変数の型は明示的に指定しないといけませんでしたが、C++11では auto キー
ワードを利用することにより型名を省略できるようになりました。初期化子によって型が自動的に決
まるので便利です。
コード3-1-01 c++03型サンプルint num = 10;
float per = 0.34f;
std::string str = "Hello";
Sprite* sprite = Sprite::create("HelloWorld.png");
コード3-1-02 c++11型サンプルauto num = 10;
auto per = 0.34f;
auto str = "Hello";
auto sprite = Sprite::create("HelloWorld.png");
28
Chapter3 基本的な使い方
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter3
nullptr
C++03でヌルポインタとして用いられていたNULL は 0に過ぎず、C++11ではあらゆるポイ
ンタ型と比較代入でき、整数型に暗黙変換されないヌルポインタを表す、nullptr というキーワード
が追加されました。
コード3-1-03 nullptrint* p = nullptr;
初期化リスト
C++03 では {} を使った初期化リストは、int 型や double 型などの組み込み型、または Plain
Old Data (POD) 型と認識された構造体・クラス(メンバ変数がPOD型しか持たない構造体やクラ
スもPOD型です)にしか適用できませんでした。
C++11では標準ライブラリに initializer_list クラスの入った<initializer_list>ヘッダが加わり、
初期化リストの考え方がテンプレートと結び付けられ、コンストラクタなどの関数は初期化リストを
引数として扱えるようになりました。これにより、ユーザー定義の非POD型も {} を使った初期化
子リスト構文による初期化が可能になり、標準コンテナも initializer_list を引数に取るコンストラク
タを持つようになったので、{} を使って初期化できるようになりました。
コード3-1-04 initializer_list を引数に取るコンストラクタを持ったユーザー型のクラス#include <initializer_list>
#include <vector>
template <class T>
class Vector {
std::vector<T> vec_;
public:
Vector(std::initializer_list<T> init)
: vec_(init.begin(), init.end()) {}
};
int main()
{
const Vector<int> v = {1, 2, 3}; // 初期化子リストによる初期化}
コード3-1-05 C++11での標準コンテナクラスの初期化リストを使った初期化std::vector<int> data{1, 2, 3};
29
3-1 Cocos2d-x の基本構文と基本構造
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter3
統一的な初期化構文
C++03では型の初期化に複数の方法があり、お互いを取り替えたときに同じ結果になるとは限り
ませんでした。そのため、C++11では、どんなオブジェクトでも {} を使って初期化することがで
きる統一的な初期化構文が導入されました。これは前述の初期化リスト構文の拡張にあたります。
コード3-1-06 統一的な初期化構文class Point{
std ::pair <int , int > point_;
public:
Point(int x, int y) : point_{x, y} {}
// ……略……
};
int main()
{
Point p1 = Point {1, 2};
Point p2 = {1, 2};
Point p3{1, 2};
Point* p = new Point {1, 2};
}
範囲に基づく for ループ(Range-based for loop)
C++03では配列やコンテナのすべての要素に順次アクセスする場合、下記のコードのように配
列やコンテナの長さを措定してループする必要があります。std::cout を使用する際は、#include
<iostream>の一文を追加しておく必要があります。
コード3-1-07 C++03で配列を for loop するint my_array[5] = {1, 2, 3, 4, 5};
int array_size = 5;
for (int i = 0; i < array_size; ++i) {
std::cout << my_array[i] << std::endl;
}
コード3-1-08 C++03でコンテナを for loop するstd::vector<int> my_array(1, 2, 3, 4, 5);
for (std::vector<int>::iterator it = my_array.begin(); it != my_array.end(): ++it) {
std::cout << *it << std::endl;
30
Chapter3 基本的な使い方
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter3
}
C++11ではRange-based for loop を利用すると、簡単に記述することができて便利です。
コード3-1-09 コード3-1-07を C++11のRange-based for loop を使用する形にint my_array[5] = {1, 2, 3, 4, 5};
for (auto number : my_array) {
std::cout << number << std::endl;
}
コード3-1-10 コード3-1-08を C++11のRange-based for loop を使用する形にstd::vector<int> my_array = {1, 2, 3, 4, 5};
for (auto number : my_array) {
std::cout << number << std::endl;
}
参照も可能です。
コード3-1-11 コード3-1-09を参照した場合auto my_array = {1, 2, 3, 4, 5};
for (auto& number : my_array) {
number *= 2;
}
コード3-1-12 コード3-1-10を参照した場合std::vector<int> my_array = {1, 2, 3, 4, 5};
for (auto& number : my_array) {
number *= 2;
}
decltype
decltype(expression) を利用して、その式の型と同じ型を得ることができます。これを利用する
と、auto で定義した変数の型で別の変数を定義したり、テンプレートに渡すことができます。この
後に説明するラムダ式でも、return 文で返された型を得るのに使用されたりします。
ラムダ式
C++11からラムダと呼ばれる、匿名関数に関連するプログラミング手法が導入されました。これ
により、関数オブジェクトや関数ポインタを渡すために、クラスや関数をあらかじめ定義する必要が
なくなり、記述がシンプルになります。ラムダ式とは、匿名関数オブジェクトを生成するための式です。
31
3-1 Cocos2d-x の基本構文と基本構造
chapter1
chapter2
chapter3
chapter4
chapter5
chapter6
chapter7
chapter3
コード3-1-13 タッチにラムダ式を使用したサンプルauto listener = cocos2d::EventListenerTouchOneByOne::create();
listener->setSwallowTouches(true);
listener->onTouchBegan = [](cocos2d::Touch* touch, cocos2d::Event* event){ return true; };
C++11のラムダ式は [キャプチャ ](仮引数リスト )->戻り値の型 {ラムダ関数 }の文法で示され、
[]、()、{}という3つのブロックで構成されています。基本的なコードを下記に記述します。下記のコー
ドは、int 型の引数を 2つとり int 型の値を返すラムダ式です。() の中にラムダ式に渡したい引数を
設定するので、このコードの場合は int 型の xと yになります。
コード3-1-14 int 型の引数を2つとり、int 型の値を返すラムダ式[](int x, int y)->int{return x + y;}
関数の内容は {} の中に記述されます。関数の内容が "return 式 " の形式である場合は戻り値の型
を省略でき、その際の戻り値の型は decltype( 式 ) になります。
コード3-1-15 int 型の引数を2つとり、int 型の値を返すラムダ式の戻り値を省略[](int x, int y){return x + y;}
コード3-1-15 のラムダ式は、以下のラムダ式と同じ意味になります。
コード3-1-16 コード3-1-15のラムダ式の戻り型を省略しない場合[](int x, int y)->decltype(x + y){return x + y;}
return 文を書かない場合、戻り値の型は void になります。std::cout を使用する際は、#include
<iostream>の一文を追加しておく必要があります。
コード3-1-17 return 文を書かない場合、戻り値の型はvoid になる[](int x){std::cout << x << std::endl;}
ラムダ式には、変数のキャプチャという機能があり、[] の中にラムダ式外で宣言された参照したい
オブジェクトとそのオブジェクトの渡し方を設定できます。&「&」演算子や「=」演算子なども使
えます。下記にキャプチャパターンの一例を記述します。
コード3-1-18 キャプチャパターンの一例[] // ラムダ関数外のどの変数も使うことができません。ただし定数やグローバル変数、静的変
数などは呼ぶことができます。[&x] // xは参照渡しされます。[x] // xはコピーされます。[x, &y] // xはコピーされます。yは参照渡しされます。
32
Chapter3 基本的な使い方
試し読みはお楽しみいただけましたか?
ここからはManateeおすすめの商品をご紹介します。
「開発技法」
2017
3.15
1 2UE4におけるゲーム制作で必須の知識と経験が身につく!
『Unreal Engine 4で極めるゲーム開発』は、Unreal Engine 4(UE4)の機能を単に紹介するだけでなく、一本のサンプルゲーム開発に順序よく盛り付けていく構成になっており、機能の組み合わせ方や、実践的な使い方をラーニングできます。3Dゲーム開発の一般的なワークフローやプロセスも解説し、章の構成も実際の開発プロセスに近づけました。今使っている人にも、これから始める人にも、すべてのUE4ユーザーにオススメの一冊!
Unreal Engine 4で極めるゲーム開発
ボーンデジタル湊和久(著者)592ページ価格:4,860 円(PDF)
開発ツール
推奨職種を併記。アーティストやレベルデザイナなど専門ごとに読むべき章がわかる
副業? 独立? それとも?ITエンジニアの人生設計の決定版!組織を束ねるマネジャーになるか、現場のスペシャリストであり続けるか。自分の技術を活かして独立するか、副業を考えるか……。意外に悩ましいITエンジニアの人生設計。会社に依存しない、転職や独立も射程に入れた「マインドセット」の持ち方から、お金、営業戦略、顧客対応術、ビジネスモデルの構築といった「ビジネスロジック」まで。求人情報ポータルサイト「@SOHO」の開発者が、自身の知見と経験から得たノウハウを教えます。
ITエンジニアのための「人生戦略」の教科書技術を武器に、充実した人生を送るための「ビジネス」と「マインドセット」
マイナビ出版平城寿(著者) 256 ページ価格:2,462 円(PDF・EPUB)
開発系読み物
ITエンジニアがどのように
人生を描き切り開いていけるか、
著者の実体験をもとに解説
トピックスごとにオンラインの公式サイトで質問コーナーを用意。疑問に答えてくれる
プログラムやスクリプトの
勉強をしたことがない人でも
読み進められる
Dockerが利用される現場のノウハウが凝縮 !開発ツール
チーム改善に活かすITIL悩めるリーダーにオススメ開発系読み物
ワークフローを疑似体験 !GitHubが初歩からわかる
開発ツール
インフラエンジニアの必須知識をていねいに解説
エミュレータ制作を通してコンピュータの中身を理解開発系読み物
プロトタイピングによって初期段階での可能性を探る
開発系読み物
Docker 実践ガイドDocker が利用される環境や背景をはじめ、導入前 のシステム 設 計、基 本 的な 利 用 方 法、Dockerfile による自動化の手法、プロセッサ、ネットワーク、ストレージなどの資源管理、管理・監視ツールについて解説します。
インプレス古賀政純(著者)
328 ページ 価格:3,240 円(PDF)
新米主任 ITIL使ってチーム改善します !化粧品メーカーで主任に昇格した友原京子。異動先は問題だらけのハチャメチャ部署だった…。『新人ガール ITIL 使って業務プロセス改善します !』の第 2 弾。英国生まれの IT 運用ノウハウ「ITIL」をチーム改善に活かします。
シーアンドアール研究所沢渡あまね(著者)
304 ページ 価格:1,750 円(PDF)
Web 制作者のためのGitHub の教科書チームの効率を最大化する
共同開発ツールWeb 制作における「GitHub」の使い方が、実際のワークフローをイメージしながら理解できます。「そもそもどんなサービスなの ?」「どういうときにどの機能を使えばいいの ?」といった初歩の疑問から解説します。
インプレス塩谷啓・紫竹佑騎・原一成・平木聡(著者)
224 ページ 価格:2,052 円(PDF)
インフラエンジニアの教科書2スキルアップに効く技術と知識
数年間インフラエンジニアの経験を積んでいても「自分は詳しく知らないし、他の人に説明できない」といったことがあります。本書は実務経験を積んだインフラエンジニアを対象に、必須知識をわかりやすく解説します。
シーアンドアール研究所佐野裕(著者) 価格:2,070 円(PDF・EPUB)
自作エミュレータで学ぶx86アーキテクチャ
コンピュータが動く仕組みを徹底理解!
機械語やアセンブリ言語が CPU でどう実行されるか意識することはめったにありません。本書ではエミュレータの制作を通して x86 CPU の仕組み、メモリ・キーボード・ディスプレイといった部品とCPUの関わりを学びます。
マイナビ出版 内田公太・上川大介(著者) 196 ページ価格:2,324 円(PDF)
プロトタイピング実践ガイドスマホアプリの効率的なデザイン手法本書で解説するプロトタイピングは、紙などを使った「低精度プロトタイピング」を中心とした手法です。設計フェーズの早期段階から作成し、検証と改善によって、機能要件や UI 設計、デザインを具現化していけます。
インプレス深津貴之・荻野博章(著者)
240 ページ 価格:2,592 円(PDF)
2017
3.15「開発技法」
& &
&&
3 4 5
6 7 8
開発系読み物