0
cocos2d-x 3.0で始める
ゲーム開発超入門
Sapporo C++ #5 @giginet
自己紹介
•

Twitter/Github @giginet

•

北海道大学情報科学研究科 M1

•

はてなインターン・クックパッドインターン

•

札幌ゲーム製作者コミュニティKawaz

•

Objective-C/Pytho...
Kawaz
•

札幌ゲーム製作者コミュニティKawazをやってます
•

プログラマ、音屋、グラフィッカー、シナリオライター、プロ
アマ含め100名ぐらいでゲーム作ってます

•

http://www.kawaz.org/
今日話すこと
•

C++で記述できるiPhone/Android向けゲームフレームワーク
「cocos2d-x」の紹介

•

cocos2d-x ここがすごい

•

cocos2d-x ここがひどい

•

cocos2d-x 3.0 +...
今日話すこと
•

タイトルが「cocos2d-x 3.0で始める ゲーム超入門」だけど
入門向けの内容は少なめです
•

全てを語るには時間が足りない
今日話すこと
•

C++でiPhone/Androidゲームを作ろう!

•

cocos2d-xの紹介を軽めに

•

実装とC++の言語機能寄りの話を厚めにしました

•

cocos2d-xの資料自体は無数にあるので、簡単に紹介した後、...
cocos2d-xとは
•

cocos2d-x スマートフォン開発向けのゲームフレームワーク
•

iPhone/Androidを初めとする多くのプラットフォーム対応

•

オープンソース、無料

•

OpenGL ES2.0互換の高速な...
http://www.cocos2d-x.org/
cocos2d-xとは
•

cocos2d-x スマートフォン開発向けのゲームフレームワーク

•

元々cocos2d-iphoneというObjective-C製のゲームフレーム
ワークがあった

•

とても良かったが、iPhoneでしか...
cocos2d-xとは
•

cocos2d-iphoneをクロスプラットフォームでC++にかけるよ
うにしよう!

•

→cocos2dのC++ Porting、cocos2d-xの誕生
VOXCHRONICLE
•

音と行動が同期する奥スクロールRPG

•

12人の音屋、700以上のアセットによる音楽の自動生成

•

東京ゲームショウ2013 Sense of Wonder Night 審査通過
VOXCHRONICLE

http://www.youtube.com/watch?v=xdRyo4RzWsU
発表者の活動
•

@giginetのcocos2d関係の活動
•

過去の発表(資料古い)
•

cocos2d入門 http://www.slideshare.net/giginet/
cocos2d-8420196

•

cocos2で...
発表者の活動
•

@giginetのcocos2d関係の活動
•

ブログ記事
•

JenkinsでLuaのSyntaxチェックを自動化してみた http://
giginet.hateblo.jp/entry/2013/05/03/175...
発表者の活動
•

@giginetのcocos2d関係の活動
•

本家にPull Request
•

cocos2d-xのバグを直したらmergeされた話 http://
giginet.hateblo.jp/entry/2013/03/...
cocos2d-xのここがすごい
クロスプラットフォーム
•

高い移植性
•

1ソースでどこでも動く

•

iPhone/Android/Windows/Mac/Linux/Windows Phone/
Windows Metro/ Blackberry/ Tizen e...
豊富な機能
•

やたらと機能が豊富で、サンプルコードも多い

•

ざっとREADME参照のこと
豊富な機能
豊富な機能
豊富な採用実績
•

ソーシャルゲームの開発事例がちらほら挙がりだした
•

日本だと『ブレイブフロンティア』が有名
優れたツール
•

互換のあるGUIツールが非常に充実している
•

マップエディタ、インターフェイスビルダー、IDE、スプライ
ト作成ツールetc…
Cocos Builder
Level Helper
zwoptex
Tiled Map Editor
様々なPorting
•

cocos2d-xと同じAPIを持つライブラリが豊富
•
•

cocos2d-html5(JavaScript)

•
•

cocos2d-iphone(Objective-C これが元)

cocos2d-XN...
秀逸なScript-Binding
•

Lua/JavaScriptエンジン搭載
•
•

その気になればC++のコードを一切書かなくても良い
JavaScriptはcocos2d-html5と完全な互換性

•

レベルデザインとロジックの...
VOXCHRONICLEのレベルデザイン(Lua)
活発なコミュニティ
•

日本のユーザー会cocos2d-x.jp

•

東京の方では頻繁に勉強会が開かれているらしい
活発なコミュニティ
•

本家のフォーラムも盛況

•

アップデートも早い
豊富な参考書籍
•

日本語の書籍もぼちぼち出始めた(2 3冊)
•

今後増えそう
まとめ
•

cocos2d-xすごい

•

スマートフォンのゲームを作るにはUnityと並んでデファクトに
なりつつある
cocos2d-xのここがひどい
ここがひどい
•

前述の通り、非常に秀逸なゲームフレームワーク

•

大作を1本作ってみると、イケてないところが山のようにある
ここがひどい1
•

Objective-C由来の独特な命名規則
•

cocos2d-xは前述の通りcocos2dのPortingなので、命名規
則がObjective-C由来で慣れていないと気持ち悪い
Vender Prefixのついたクラス名
getを付けないgetter
kから始まる定数
ここがひどい2
•

メモリ管理が辛い
•

Objective-Cでは、全てのオブジェクトが持つ参照カウンタ
でメモリ管理をしなくてはならない

•

最近のObjective-CはARC(Automatic Reference Counti...
// メンバにオブジェクトを格納
_memberNode = new CCNode(); // 参照カウンタ1

!

_memberNode->release(); // 参照カウンタ0
_memberNode = NULL;

!

// ...
// localスコープでオブジェクトを格納
CCNode *node = new CCNode(); // 参照カウンタ1
node->autorelease(); // autorelease

!

// コンテナにオブジェクトを格納
C...
ここがひどい3
•

関数ポインタの扱いが最悪
•

Objective-Cのセレクター構文を持ってきているため、関数
ポインタを謎のマクロでwrapしなくてはいけない
!

CCMenuItem *item = [CCMenuItemImage itemFromNormalImage:@"button.png"
selectedImage:@"button_selected.png"
target:self
...
ここがひどい4
•

演算子オーバーロードがない
•

Objective-Cには演算子オーバーロードがないため、簡単な
操作が関数化されている

CCPoint point = ccp(100, 20); // 原点を定義
CCPoint v...
ここがひどい5
•

Objective-Cの便利機能がことごとく使えない
•

プロパティ、Blocks(Closure)、GCD、カテゴリといった、
パワフルな言語機能が全て使えない

•

かといって、C++の言語機能が使えるわけでもない
ここがひどい5
•

propertyがなくて地獄っぽい
•
•

例えばごく普通のsetter
Objective-Cではこう書けばいいところが

@property (nonatomic, strong) NSObject *object;...
ここがひどい5
•

propertyがなくて地獄っぽい
•

cocos2d-xだとこう
using namespace cocos2d;!
private CCObject *Class::_object;!

!

void Class:...
ここがひどい5
•

Blocks(closure)もない
•

C++(03)にはclosureに相当する機能がないため、Blocksを
使ったインターフェイスは全て削除されている

id button = [CCMenuItemImage ...
VOXCHRONICLEでは
•

boostを利用することで負担を軽減させていた
•

boost::shared_ptr便利
!
!
!
!

using namespace cocos2d;!
private boost::shared_...
ここがひどい6
•

クロスプラットフォーム対応が辛い
•

各種サンプルプロジェクトは付属しているが、手作業でのソー
スの移動やプロジェクトの設定が必須

•

特にAndroidで動かすのが大変
まとめ
•

cocos2d-x 2.xはObjective-Cの良い機能と、C++の良い機能
を両方取っ払った劣悪な開発環境だった
•
•

•

Objective-C、Cocoaの知識がないと取っつきづらい
Objective-C/C++...
これからのcocos2d-x
cocos2d-x 3.0
•

今年9月、cocos2d 3.0のα版がリリース

•

コンセプトの刷新!

•

Remove all the Objective-C patterns.
•

•

Objective-C版cocos2d...
Vender Prefixがなくなった!
クラス名が平和になった
propertyの命名が変わった
定数の命名も変わった
演算子オーバーロードがつかえるようになった

CCPoint point = ccp(100, 20);
CCPoint vector = ccp(30, 40);
CCPoint point2 = ccpAdd(point, ccpMult(...
C++11に対応
•

C++11に対応

•

内部実装が刷新されてるほか、インターフェイスの多くがC++11
対応に!
•

std::function, std::thread, enum, override keyword,
smart...
lambda
!

void MainScene::addButton() {
CCMenuItemImage* button = CCMenuItemImage::create("button.png",
"button_selected.p...
lambda
auto button = MenuItemImage::create("button.png",
"button_selected.png",
[&](Object *sender) {
// ボタンを押したときの処理
}
);...
lambda
id button = [CCMenuItemImage itemFromNormalImage:@"button.png"
selectedImage:@"button_selected.png"
block:^(id send...
smart pointer
using namespace cocos2d;!
private CCObject *Class::_object;!

!

void Class::setObject(CCObject *object) {!
...
smart pointer
using namespace cocos2d;!
private std::shared_ptr<Object> Class::_object;!

!

void Class::setObject(Object ...
scoped enum
CCLabelTTF *label = CCLabelTTF::create("Hello",
"Helvetica",
16,
CCSizeMake(200, 40),
kCCTextAlignmentLeft
);
...
クロス対応が楽に
•

今まで、クロスプラットフォームを謳っていた割に対応が非常
に大変だった

•

cocos2d-x 3.0から便利スクリプトが付属して楽になりました
クロス対応が楽に
•

create-multi-platform-projects.pyというその名の通りのスク
リプトが付属
クロス対応が楽に
•

複数のプラットフォーム向けのプロジェクトが瞬時に生成
その他の新機能
•

統一的なEventDispatcher

•

pthreadからstd::threadへの置き換え

•

Rendererの刷新

•

Labelの向上

•

http://www.cocos2d-x.org/wi...
互換性の問題
•

現段階(2013/12/7)ではまだα版

•

現時点ではバグ報告も結構上がってきてて危ないかも・・・・・・?

•

2.xのAPIのほとんどがdeprecatedになってしまっているため、
今から作り出すゲームはどちら...
まとめ
•

今までのcocos2d-xはObjective-Cの文化を知らないと扱うの
は難しかった

•

これからはC++の言語機能をフル活用してゲームが開発できる

•

すごく良いからみんな使おう

•

C++11の便利tips教え...
cocos2d-x in 札幌
•

東京では結構コミュニティが活発化している

•

札幌では使っている人がほぼいなくて情報共有がほぼできない

•

話せるネタが無限にあるので、興味がある人が多かったら
cocos2d-x勉強会したい
Global Game Jam
•

48時間でゲーム開発するイベント

•

世界63ヶ国で16000人以上のゲー
ム製作者が3141のゲームを制作

•

2014/1/24(土)∼1/26(日)札幌で
も開催!

•

http://ka...
cocos2d-x in GGJ!
•

Global Game Jamにcocos2d-xチームを作ろう!

•

例年Kobold2D(Objective-C)で参加していたが、cocos2d-x
チームを作りたい気運の高まり

•

打倒...
ご清聴
ありがとうございました
Upcoming SlideShare
Loading in...5
×

cocos2d-x 3.0 + C++11で始めるゲーム開発超入門

36,807

Published on

cocos2d-xの簡単な紹介と、cocos2d-x 3.0のalpha版でどのように変わったかを紹介します。

Published in: Entertainment & Humor
0 Comments
70 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
36,807
On Slideshare
0
From Embeds
0
Number of Embeds
16
Actions
Shares
0
Downloads
85
Comments
0
Likes
70
Embeds 0
No embeds

No notes for slide

Transcript of "cocos2d-x 3.0 + C++11で始めるゲーム開発超入門"

  1. 1. cocos2d-x 3.0で始める ゲーム開発超入門 Sapporo C++ #5 @giginet
  2. 2. 自己紹介 • Twitter/Github @giginet • 北海道大学情報科学研究科 M1 • はてなインターン・クックパッドインターン • 札幌ゲーム製作者コミュニティKawaz • Objective-C/Python/JavaScript etc… • ゲームプログラミングとかしてます
  3. 3. Kawaz • 札幌ゲーム製作者コミュニティKawazをやってます • プログラマ、音屋、グラフィッカー、シナリオライター、プロ アマ含め100名ぐらいでゲーム作ってます • http://www.kawaz.org/
  4. 4. 今日話すこと • C++で記述できるiPhone/Android向けゲームフレームワーク 「cocos2d-x」の紹介 • cocos2d-x ここがすごい • cocos2d-x ここがひどい • cocos2d-x 3.0 + C++11とこれからのcocos2d-x http://www.cocos2d-x.org/
  5. 5. 今日話すこと • タイトルが「cocos2d-x 3.0で始める ゲーム超入門」だけど 入門向けの内容は少なめです • 全てを語るには時間が足りない
  6. 6. 今日話すこと • C++でiPhone/Androidゲームを作ろう! • cocos2d-xの紹介を軽めに • 実装とC++の言語機能寄りの話を厚めにしました • cocos2d-xの資料自体は無数にあるので、簡単に紹介した後、 最新版の3.0はここが凄いという話をしていきます • Objective-Cの話もあるよ! • cocos2d-xの布教とKawaz、GGJの勧誘
  7. 7. cocos2d-xとは • cocos2d-x スマートフォン開発向けのゲームフレームワーク • iPhone/Androidを初めとする多くのプラットフォーム対応 • オープンソース、無料 • OpenGL ES2.0互換の高速な動作 • 豊富な機能と拡張、サードパーティーツール
  8. 8. http://www.cocos2d-x.org/
  9. 9. cocos2d-xとは • cocos2d-x スマートフォン開発向けのゲームフレームワーク • 元々cocos2d-iphoneというObjective-C製のゲームフレーム ワークがあった • とても良かったが、iPhoneでしか動かない、Objective-Cでしか 書けないと宗教上の理由で不満
  10. 10. cocos2d-xとは • cocos2d-iphoneをクロスプラットフォームでC++にかけるよ うにしよう! • →cocos2dのC++ Porting、cocos2d-xの誕生
  11. 11. VOXCHRONICLE • 音と行動が同期する奥スクロールRPG • 12人の音屋、700以上のアセットによる音楽の自動生成 • 東京ゲームショウ2013 Sense of Wonder Night 審査通過
  12. 12. VOXCHRONICLE http://www.youtube.com/watch?v=xdRyo4RzWsU
  13. 13. 発表者の活動 • @giginetのcocos2d関係の活動 • 過去の発表(資料古い) • cocos2d入門 http://www.slideshare.net/giginet/ cocos2d-8420196 • cocos2で始める iPhoneゲーム開発入門 http:// www.slideshare.net/giginet/cocos2-iphone • Kobold2Dで始めるゲーム開発 http:// www.slideshare.net/giginet/devsap
  14. 14. 発表者の活動 • @giginetのcocos2d関係の活動 • ブログ記事 • JenkinsでLuaのSyntaxチェックを自動化してみた http:// giginet.hateblo.jp/entry/2013/05/03/175830 • iPhoneゲーム開発に役立つツール13選まとめ http:// giginet.hateblo.jp/entry/2013/02/23/130310 • OUYA+cocos2d-xで始めるゲーム開発入門 http:// giginet.hateblo.jp/entry/2013/07/06/231629
  15. 15. 発表者の活動 • @giginetのcocos2d関係の活動 • 本家にPull Request • cocos2d-xのバグを直したらmergeされた話 http:// giginet.hateblo.jp/entry/2013/03/04/194604
  16. 16. cocos2d-xのここがすごい
  17. 17. クロスプラットフォーム • 高い移植性 • 1ソースでどこでも動く • iPhone/Android/Windows/Mac/Linux/Windows Phone/ Windows Metro/ Blackberry/ Tizen etc…
  18. 18. 豊富な機能 • やたらと機能が豊富で、サンプルコードも多い • ざっとREADME参照のこと
  19. 19. 豊富な機能
  20. 20. 豊富な機能
  21. 21. 豊富な採用実績 • ソーシャルゲームの開発事例がちらほら挙がりだした • 日本だと『ブレイブフロンティア』が有名
  22. 22. 優れたツール • 互換のあるGUIツールが非常に充実している • マップエディタ、インターフェイスビルダー、IDE、スプライ ト作成ツールetc…
  23. 23. Cocos Builder
  24. 24. Level Helper
  25. 25. zwoptex
  26. 26. Tiled Map Editor
  27. 27. 様々なPorting • cocos2d-xと同じAPIを持つライブラリが豊富 • • cocos2d-html5(JavaScript) • • cocos2d-iphone(Objective-C これが元) cocos2d-XNA(C# MonoGame/XNA) cocos2dの思想を受け継ぐフレームワークも多い • PS Mobile GameEngine2D (C# SCE) • SpriteKit (Objective-C Apple)
  28. 28. 秀逸なScript-Binding • Lua/JavaScriptエンジン搭載 • • その気になればC++のコードを一切書かなくても良い JavaScriptはcocos2d-html5と完全な互換性 • レベルデザインとロジックの分離が容易 • 簡単コード生成
  29. 29. VOXCHRONICLEのレベルデザイン(Lua)
  30. 30. 活発なコミュニティ • 日本のユーザー会cocos2d-x.jp • 東京の方では頻繁に勉強会が開かれているらしい
  31. 31. 活発なコミュニティ • 本家のフォーラムも盛況 • アップデートも早い
  32. 32. 豊富な参考書籍 • 日本語の書籍もぼちぼち出始めた(2 3冊) • 今後増えそう
  33. 33. まとめ • cocos2d-xすごい • スマートフォンのゲームを作るにはUnityと並んでデファクトに なりつつある
  34. 34. cocos2d-xのここがひどい
  35. 35. ここがひどい • 前述の通り、非常に秀逸なゲームフレームワーク • 大作を1本作ってみると、イケてないところが山のようにある
  36. 36. ここがひどい1 • Objective-C由来の独特な命名規則 • cocos2d-xは前述の通りcocos2dのPortingなので、命名規 則がObjective-C由来で慣れていないと気持ち悪い
  37. 37. Vender Prefixのついたクラス名
  38. 38. getを付けないgetter
  39. 39. kから始まる定数
  40. 40. ここがひどい2 • メモリ管理が辛い • Objective-Cでは、全てのオブジェクトが持つ参照カウンタ でメモリ管理をしなくてはならない • 最近のObjective-CはARC(Automatic Reference Counting) という仕組みで操作が不要になっているが、cocos2d-xでは 自分での操作が必要である
  41. 41. // メンバにオブジェクトを格納 _memberNode = new CCNode(); // 参照カウンタ1 ! _memberNode->release(); // 参照カウンタ0 _memberNode = NULL; ! // メンバにオブジェクトを格納(autorelease) _memberNode = CCNode::create(); // 参照カウンタ1(autorelease) _memberNode->retain(); // 参照カウンタ2 ! // 略 _memberNode->release(); // 参照カウンタ0 _memberNode = NULL; 地獄っぽい
  42. 42. // localスコープでオブジェクトを格納 CCNode *node = new CCNode(); // 参照カウンタ1 node->autorelease(); // autorelease ! // コンテナにオブジェクトを格納 CCNode *node = CCNode::create(); // 参照カウンタ1(autorelease) CCArray *array = CCArray::create(); array->addObject(node); // 参照カウンタ2 地獄っぽい
  43. 43. ここがひどい3 • 関数ポインタの扱いが最悪 • Objective-Cのセレクター構文を持ってきているため、関数 ポインタを謎のマクロでwrapしなくてはいけない
  44. 44. ! CCMenuItem *item = [CCMenuItemImage itemFromNormalImage:@"button.png" selectedImage:@"button_selected.png" target:self selector:@selector(onButtonPressed:)]; cocos2d(Objective-C) ! CCMenuItemImage* button = CCMenuItemImage::create("button.png", "button_selected.png", this, menu_selector(MainScene::onButtonPressed) ); cocos2d-x(C++)
  45. 45. ここがひどい4 • 演算子オーバーロードがない • Objective-Cには演算子オーバーロードがないため、簡単な 操作が関数化されている CCPoint point = ccp(100, 20); // 原点を定義 CCPoint vector = ccp(30, 40); // ベクトルを定義 CCPoint point2 = ccpAdd(point, ccpMult(vector, 5)); // ベクトルの四則演算
  46. 46. ここがひどい5 • Objective-Cの便利機能がことごとく使えない • プロパティ、Blocks(Closure)、GCD、カテゴリといった、 パワフルな言語機能が全て使えない • かといって、C++の言語機能が使えるわけでもない
  47. 47. ここがひどい5 • propertyがなくて地獄っぽい • • 例えばごく普通のsetter Objective-Cではこう書けばいいところが @property (nonatomic, strong) NSObject *object;! cocos2d(Objective-C)
  48. 48. ここがひどい5 • propertyがなくて地獄っぽい • cocos2d-xだとこう using namespace cocos2d;! private CCObject *Class::_object;! ! void Class::setObject(CCObject *object) {! if (_object) {! _object->release();! }! _object = object;! if (object) {! object->retain();! }! }! cocos2d-x(C++)
  49. 49. ここがひどい5 • Blocks(closure)もない • C++(03)にはclosureに相当する機能がないため、Blocksを 使ったインターフェイスは全て削除されている id button = [CCMenuItemImage itemFromNormalImage:@"button.png" selectedImage:@"button_selected.png" block:^(id sender) { // ボタンを押したときの処理 }]; cocos2d(Objective-C)
  50. 50. VOXCHRONICLEでは • boostを利用することで負担を軽減させていた • boost::shared_ptr便利 ! ! ! ! using namespace cocos2d;! private boost::shared_ptr<CCObject> Class::_object;! ! void Class::setObject(CCObject *object) {! _object = boost::shared_ptr<CCObject>(object);! }! cocos2d-x + boost(C++) ! • boost::lambdaはさすがに使いませんでした
  51. 51. ここがひどい6 • クロスプラットフォーム対応が辛い • 各種サンプルプロジェクトは付属しているが、手作業でのソー スの移動やプロジェクトの設定が必須 • 特にAndroidで動かすのが大変
  52. 52. まとめ • cocos2d-x 2.xはObjective-Cの良い機能と、C++の良い機能 を両方取っ払った劣悪な開発環境だった • • • Objective-C、Cocoaの知識がないと取っつきづらい Objective-C/C++どちらに慣れている技術者にとっても冗長 で書きづらい クロスプラットフォーム対応を謳っているが、実際にクロス化す るのは手作業が多く大変
  53. 53. これからのcocos2d-x
  54. 54. cocos2d-x 3.0 • 今年9月、cocos2d 3.0のα版がリリース • コンセプトの刷新! • Remove all the Objective-C patterns. • • Objective-C版cocos2dとの互換性を取ることをやめる方向 にシフトした よりC++っぽい書き方ができるように!!!!
  55. 55. Vender Prefixがなくなった!
  56. 56. クラス名が平和になった
  57. 57. propertyの命名が変わった
  58. 58. 定数の命名も変わった
  59. 59. 演算子オーバーロードがつかえるようになった CCPoint point = ccp(100, 20); CCPoint vector = ccp(30, 40); CCPoint point2 = ccpAdd(point, ccpMult(vector, 5)); cocos2d-x 2.x auto point = Point(100, 20); auto vector = Point(30, 40); auto point2 = point + point2 * 5; cocos2d-x 3.0
  60. 60. C++11に対応 • C++11に対応 • 内部実装が刷新されてるほか、インターフェイスの多くがC++11 対応に! • std::function, std::thread, enum, override keyword, smart pointer etc…
  61. 61. lambda ! void MainScene::addButton() { CCMenuItemImage* button = CCMenuItemImage::create("button.png", "button_selected.png", this, menu_selector(MainScene::onButtonPressed) ); } ! void MainScene::onButtonPressed(cocos2d::CCObject *sender) { // ボタンを押したときの処理 } cocos2d-x 2.x
  62. 62. lambda auto button = MenuItemImage::create("button.png", "button_selected.png", [&](Object *sender) { // ボタンを押したときの処理 } ); cocos2d-x 3.0
  63. 63. lambda id button = [CCMenuItemImage itemFromNormalImage:@"button.png" selectedImage:@"button_selected.png" block:^(id sender) { // ボタンを押したときの処理 }]; cocos2d(Objective-C)
  64. 64. smart pointer using namespace cocos2d;! private CCObject *Class::_object;! ! void Class::setObject(CCObject *object) {! if (_object) {! _object->release();! }! _object = object;! if (object) {! object->retain();! }! }! cocos2d-x 2.0
  65. 65. smart pointer using namespace cocos2d;! private std::shared_ptr<Object> Class::_object;! ! void Class::setObject(Object *object) {! _object = std::shared_ptr<Object>(object);! }! cocos2d-x 3.0
  66. 66. scoped enum CCLabelTTF *label = CCLabelTTF::create("Hello", "Helvetica", 16, CCSizeMake(200, 40), kCCTextAlignmentLeft ); cocos2d-x 2.x auto label = LabelTTF::create("Hello", ! "Helvetica", ! 16, ! Size(200, 40), ! TextHAlignment::LEFT! ); cocos2d-x 3.0
  67. 67. クロス対応が楽に • 今まで、クロスプラットフォームを謳っていた割に対応が非常 に大変だった • cocos2d-x 3.0から便利スクリプトが付属して楽になりました
  68. 68. クロス対応が楽に • create-multi-platform-projects.pyというその名の通りのスク リプトが付属
  69. 69. クロス対応が楽に • 複数のプラットフォーム向けのプロジェクトが瞬時に生成
  70. 70. その他の新機能 • 統一的なEventDispatcher • pthreadからstd::threadへの置き換え • Rendererの刷新 • Labelの向上 • http://www.cocos2d-x.org/wiki/ Release_Notes_for_Cocos2d-x_v300
  71. 71. 互換性の問題 • 現段階(2013/12/7)ではまだα版 • 現時点ではバグ報告も結構上がってきてて危ないかも・・・・・・? • 2.xのAPIのほとんどがdeprecatedになってしまっているため、 今から作り出すゲームはどちらを採用すべきか悩みどころ
  72. 72. まとめ • 今までのcocos2d-xはObjective-Cの文化を知らないと扱うの は難しかった • これからはC++の言語機能をフル活用してゲームが開発できる • すごく良いからみんな使おう • C++11の便利tips教えてください
  73. 73. cocos2d-x in 札幌 • 東京では結構コミュニティが活発化している • 札幌では使っている人がほぼいなくて情報共有がほぼできない • 話せるネタが無限にあるので、興味がある人が多かったら cocos2d-x勉強会したい
  74. 74. Global Game Jam • 48時間でゲーム開発するイベント • 世界63ヶ国で16000人以上のゲー ム製作者が3141のゲームを制作 • 2014/1/24(土)∼1/26(日)札幌で も開催! • http://kawaz.doorkeeper.jp/ events/7291
  75. 75. cocos2d-x in GGJ! • Global Game Jamにcocos2d-xチームを作ろう! • 例年Kobold2D(Objective-C)で参加していたが、cocos2d-x チームを作りたい気運の高まり • 打倒Unity • 世界中で作られたゲーム3000本のうち、1000本以上がUnity 製だった(GGJ2013)
  76. 76. ご清聴 ありがとうございました
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×