Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Cocos2dx(Ver2)が闇な話
Search
ぽんこつ
June 28, 2014
Technology
0
200
Cocos2dx(Ver2)が闇な話
Cocos2dx(Ver2)が如何に闇かCCArrayというCocos2dx(Ver2)の闇の凝縮体の解説を元に暴く
ぽんこつ
June 28, 2014
Tweet
Share
More Decks by ぽんこつ
See All by ぽんこつ
艦これHacking
ponkotuy
0
3.8k
Other Decks in Technology
See All in Technology
プロンプトエンジニアリングでがんばらない-Agentic Workflow へ-近藤憲児
kenjikondobai
6
1.2k
IPUT App Dev. Co. -Overview 2024/4
iputapp
0
120
Tellus の衛星データを見てみよう #mf_fukuoka
kongmingstrap
0
270
いいたいことちゃんという
tkengo
0
230
コードファーストの考え方。 Amplify Gen2から学ぶAWS次世代のWeb開発体験
yoshiitaka
2
330
LangSmith入門―トレース/評価/プロンプト管理などを担うLLMアプリ開発プラットフォーム
os1ma
5
700
Android Target SDK 35 (Android 15) 対応の概要
akkie76
0
150
開発パフォーマンスを最大化するための開発体制
ham0215
7
1.1k
M5stackで使用できるpHセンサの開発
shinrinakamura
0
120
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
880
Além do else! Categorizando Pokemóns com Pattern Matching no JavaScript
wmsbill
0
700
ゼロから始めるVue.jsコミュニティ貢献 / first-vuejs-community-contribution-link-and-motivation
lmi
1
150
Featured
See All Featured
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
22
1.6k
Code Review Best Practice
trishagee
56
15k
Rails Girls Zürich Keynote
gr2m
91
13k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
How GitHub (no longer) Works
holman
305
140k
Designing Experiences People Love
moore
136
23k
What’s in a name? Adding method to the madness
productmarketing
PRO
17
2.7k
BBQ
matthewcrist
80
8.8k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Building a Scalable Design System with Sketch
lauravandoore
457
32k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
Transcript
͡Ίʹ Cocos2dx ͱ CCArray ݁ Cocos2dx(Ver2) ͕ҋͳ ΆΜͭ͜ 2014
06 ݄ 28 ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ࣗݾհ ΆΜͭ͜Ͱ͢ (@ponkotuy) ܳऀ౦ژΤϯλʔςΠϝϯτͰήʔϜ࡞ͬͯ·͢ C++͡Όͳͯ͘
Scala ͷਓͰ͢ ΏͱΓϓϩάϥϚʹ C++ͱϝϞϦཧແཧա͗ͨ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ͢༰ Cocos2dx(Ver2) ͕ਏ͍Λ͠·͢ C++03 Ҏલͷ
No Constexpr, No Template ·ͱͳ C++ͷΛظ͍ͯ͠Δํٳܜ࣌ؒͰ͢ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ιγϟή։ൃͷݱ Wanted ϦονͳεϚʔτϑΥϯΞϓϦ (ωΠςΟϒ) Required
ϚϧνϓϥοτϑΥʔϜ (ಛʹ iOS + Android) Must σβΠφʔͱͷ࿈ܞ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ Cocos2dx ͳΒͰ͖ΔΑʂ ϚϧνϓϥοτϑΥʔϜͳωΠςΟϒΞϓϦ͕࡞Մೳ CocosBuilder Λͬͯը໘ɾΞχϝʔγϣϯ࡞
C++Ͱ Obj-C ΑΓϦονͳϓϩάϥϛϯάڥ ຊʹ Obj-C ΑΓϦον͔ʁ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ Cocos2dx ͷݱ࣮ Cocos2dx Objective-C
൛ Cocos2d ͷ C++Ҡ২ ݁ͱͯ͠։ൃऀ͕ C++͔ͬͯͳ͍ ࣮ମྼԽ Objective-C ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ Cocos2dx(Ver2) ͷCCArray Cocos2dx ͷ CCArray
class Objective-C Ͱ NSArray ΑΓߴͱͯ͠༻Λਪ زΒ͔ͷඪ४ͷϝιου͕ CCArray Λฦͯ͘͠Δ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ CCArray ͷAPI Create static CCArray*
create(); Insert void addObject(CCObject* object); CCObject ͱ͔͍͏Կ͔͓ͧ·͍͠ͷ͕ ཁૉ CCObject ͷܧঝ͕Ϛετ CCObject Java ͷશͯͷجఈΫϥε Object Έ͍ͨͳ Cocos2dx ͷΫϥεຆͲશͯ CCObject Λܧঝ͍ͯ͠Δ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ CCArray ͷAPI ͦͷ2 ϧʔϓͷճ͠ํ CCARRAY_FOREACH(ccArray,
obj) { CCNode* node = static_cast<CCNode*>(obj); ... } CCARRAY_FOREACH ͱ͍͏ಾϚΫϩ Ұ୴ CCObject ʹม͞ΕΔͷͰϒνյ͞ΕΔܕใ ͪͳΈʹ iterator ࣮͞Εͯͳ͍ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ CCArray ͱstd::vector ͷൺֱ std::vector ͱҎԼͷૢ࡞Ͱൺֱ͢Δ
oat ܕͰ 0 ͔Β n ·ͰίϯςφʹಥͬࠐΉ ˢΛͯ͠߹ܭΛग़͢ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ std::vectorʢC++03ʣͷ߹ float stdVectorSum(float count) {
std::vector<float> vec; for(float f = 0.0f; f < count; ++f) vec.push_back(f); return std::accumulate( vec.begin(), vec.end(), 0.0f); } ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ CCArray ͷ߹ float ccArraySum(float count)
{ CCArray* array = CCArray::create(); for(float f = 0.0f; f < count; ++f) array->addObject(new CCFloat(f)); float sum = 0.0f; CCObject* elem = NULL; CCARRAY_FOREACH(array, elem) { CCFloat* f = static_cast<CCFloat*>(elem); sum += f->getValue(); } return sum; } ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ CCArray ͷͭΒ͍ͱ͜Ζ CCFloat ͱ͍͏ CCObject
Λܧঝͨ͠ class ͕ඞཁ STL ͷΞϧΰϦζϜ͕͑ͳ͍ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ൺֱ CPU Core i5-4570S 2.90GHz
OS Ubuntu 14.04 CXX g++4.8.2 CXXFLAGS -O3 Ͱ 10000000 ສཁૉɺઌఔͷίʔυΛճͨ݁͠Ռ͕ CCArray 0.569s std::vector<oat> 0.057s std::vector<CCFloat> 0.397s ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ݁ CCArray 0.569s std::vector<oat> 0.057s
std::vector<CCFloat> 0.397s CCArray ͷ͍ͷ CCFloat ͷ boxingɺunboxing ͕ݪҼ ͨͩ͠ std::vector<CCFloat>Ͱ CCArray ͷํ͕͍ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ͪͳΈʹ array->addObject(new CCFloat(f)); ͜ΕϦʔΫͯ͠·ͤΜɻ CCObject
ࢀরΧϯτํࣜͷࣗಈղ์Λ࣋ͭ addObject Ͱ retain Λൃߦ (ࢀরΧϯτ͕+1 removeObject Ͱ release Λൃߦ (ࢀরΧϯτ͕-1 ͞ΕΔҝͰ͢ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ݁ ॳظͷεϚϗήʔϜ։ൃͰڧྗͩͬͨ Cocos2dx Cocos2dx(Ver2) ͷશମతʹ
CCArray Ϩϕϧͷ೦ઃܭ boxingɺunboxing ͜Θ͍ɺ͍ ·ͣͪΌΜͱ STL ͓͏ Unity(C#) ͔ Cocos2dx(Ver3) ͍͍ͨ ΆΜͭ͜ Cocos2dx(Ver2) ͕ҋͳ
͡Ίʹ Cocos2dx ͱ CCArray ݁ ͦͷଞ ܭଌʹͬͨίʔυ https://github.com/ponkotuy/CocosSample ΆΜͭ͜ Cocos2dx(Ver2)
͕ҋͳ