読者です 読者をやめる 読者になる 読者になる

Cocos2D GameEngine

Learning Cocos2D: A Hands-On Guide to Building iOS Games with Cocos2D, Box2D, and Chipmunk

Learning Cocos2D: A Hands-On Guide to Building iOS Games with Cocos2D, Box2D, and Chipmunk

Chap1 Hello,Cocos2D
Cocos2Dのソースコードをダウンロードします。CCが用意しているテンプレートがXcodeを起動させたときに選択できるようにインストールします。
http://cocos2d-central.com/files/file/6-installer-for-cocos2d-cocos3d-for-ios-mac-os-x/
本書ではTerminalを使ったインストールが紹介されているが、
なかなかうまくいかないのでInstallerを使います。
HelloWorldのプロジェクトを立ち上げて、実際にRunをさせます。(Simulator)CCのテンプレートに書かれているコードの
解説が入っています。HelloWorldの画面に本書付属のSprite
(宇宙船)を中央に描画させるデモもします。
最後に、HelloWorldを、実機インストールする方法が書かれています。(388文字)

Chap2 Hello Space Viking
欧州中世期のバイキングが、地球外のとある惑星に迷い込み、エイリアンと戦う羽目になるという2Dアクションゲームを作り上げていく。Director、Scene Layerとは何かという説明から始まり、ゲームのステージをつくる。DirectorはSceneの切り替え方が記述されたソースコード
Sceneには、LayerとLayerの関係が記述されたソースコードであると。Layerを重ねることで、背景画面や、ゲームキャラが動き回る画面などをわけて、プログラムを記述していく。主人公のバイキングを、端末の画面の左右両端に表示するジョイスティックと押しボタンで「操作」可能にする。具体的には、左右の移動。しゃがみ込み。右側の上下のボタンで、ジャンプと攻撃ができるようにする。(そのためにCocos2D外部のソースコードを使用する。)このゲームのプロジェクトフォルダに格納されている画像ファイルを、iOS端末画面に表示させるときに、端末への負担を減少させるため、アニメーションなどに必要なイラストを一枚の画像ファイルに一括して掲載するというテクニックを学習する。(475文字)

Chap3 Introduction To Cocos2D Animation and Actions
主人公のバイキングを左右に移動させるときは、上下の手足を交互に振っている動きを表示させる。ジョイスティックの下方向を押すと、バイキングがしゃがみ込む動きをするようにコードを書く。同様にして、素手での攻撃、武器(木槌)を携帯した状態での攻撃、ダメージを受けるときの動きなどなどが、ゲームプレイヤーの端末からの入力に応じて、開始するようにするためのコード記述の仕方を学習する。(そのためにObjectiveC言語の記述手法を利用している。Dictionary,Property,Synthesize、Key Value Coding)ここは、読解が容易ではなかった。
つまり、バイキングの状況に応じた動きの「見せかけ」をつくるために、「動き」の種類に
応じて、複数枚の「イラスト」(パラパラ漫画の原理でバイキングに動きがあるように見せかける。)を、高速でいれかえていくために、どうやって、その「イラスト」をコンピュータに管理させるのかということを学習します。(ここまで423文字)(ということが書かれているのだと思う。萩原本を読んでも、どうもしっくりこない。しかし、第20章KeyValue Codingでは、この章で扱っているような場面を想定しているのか、SampleCodeは思いっきりGameです。)

Chap4 Simple Collision Detection and the First Enemy
いよいよバイキングの敵となって登場するキャラ第一号を扱う。バイキングの敵機への攻撃が
敵機へのダメージになるというゲームの仕組み(バイキングが、敵機へ一定の距離近づいたとき、バイキングが特定の行為をしたら、敵機の生命ポイントが減少するというプログラム。いわゆる「衝突判定」)をどうやって記述するのかを学習。登場する敵機は、バイキングの存在を察知して、ロボットを呼び出すレーダーマシン。動かないし、攻撃もしないという単純なキャラクター。敵機が、ステージの状況や、バイキングとの距離など、限定的ではあるが、外部からの情報を受け取って、特定のOutput,行動を起こすようにするプログラムの記述の仕方も学びます(いわゆるAI)。以上のように、このゲームにおいて、バイキングやレーダーマシンが周囲の状況や外部からの入力によってどのように振る舞うのかということを、あらかじめ、プログラムとして記述するためにClassという手法を学習する。さらに、コードの中で、一部類似していたり、
一部相違があるような記述部分を、効率的に記述するためのテクニックなども学習する。
(474文字)

More Enemies and More Fun
Chap5 More Actions, Effects, and Cocos2D Scheduler
宇宙船が適宜ステージに出現して、バイキングの体力が回復するサンドイッチと、攻撃力を強化する「木槌」を落としていく仕掛けをつくる。
前章で登場した探索レーダーが、ステージに送り込んでくるEnemyRobot(雑魚)の動きを
記述していく。雑魚がステージに登場するときは、テレポーテーションを暗示する渦巻きから出現させる。敵役にあたるバイキングが、一定の距離にいなかったらランダムに周囲を動き回る。しかし、一度、バイキングが一定の距離内に存在すると(雑魚の「視界」に入ったと解釈して)レーザー光線銃を構えて攻撃をする。それに伴い、光線が発射されて、バイキングに命中したときのアニメーションが作動するコードも記述する。バイキングからの拳による攻撃と、木槌(Malllet)による攻撃によって、胸部に打撃を受けるアニメーションと、頭部に打撃をうけるアニメーションが表示されるようにする。さらに雑魚キャラが、一定のスケジュールに沿って、出現するようにプログラムを書く技法も学ぶ。(432文字)

Chap6 Text, Fonts, and the Written Word
従前の章で作り上げてきたゲームを開始したとき、「Game Start」というメッセージが
画面中央からどんどん拡大して登場して、かつFadeOutしていくという仕掛けをつくる。
さらに、開発者が好みのフォントをゲームの中で扱えるようにする開発用ソフトウェアも
紹介する。(Glyph DesingnerとHiero)
Glyph Designer - A Bitmap Font Generator for Mac · 71Squared Ltd
Learn & Master Cocos2D Game Development › Log In
開発しているゲームのコードが正常に機能していない場合、問題の原因部分を探し出すための
方法の一つを学習する。雑魚キャラの「状態」の判定や、位置の座標が、ゲーム中のキャラの
頭上に表示されるようにコードを修正する。こうすることで、iPadのような端末が、
開発中のコードを動かしているとき、必要な情報を適切に読み取っているかどうかがわかる。
(465文字)
 
Part3
From Level To Game
Chap7 Main Menu, Level Completed, and Credits Scenes"
iPhoneiPadからSpaceVikingを起動すると、メニューシーンに移行する。バイキングOleの
画像がぐるぐると回転しながらクローズアップされ、画面の前後を行ったり来たりする。
画面の右側から”Play””Buy the Book" "Options”と書かれたボタンが横滑りで出現する。
”Play”ボタンを押すと、5つのミニゲームから、プレイヤーの好きなゲームを選択できる
5つのテキストボタンが、右から横滑りしてくる。そのどれかを押すとゲームがスタートする。
従前の章で作り上げたゲームの名前は”Ole The Viking”です。このタイトルボタンを押すと、
このゲームのストーリーが紙芝居的に説明されるシーンに移行。この紙芝居が終わると
本格的にゲームが開始される。”Buy The Book”ボタンを押す(タップ)と、本書の出版社の
ウェブサイトにいく。(Game終了。Safari起動)ゲームの目標を達成してゲームクリアした時と
目標達成ならずに、バイキングが死亡した場合で、異なる「ゲームクリア画面」に移行する
ようにする。”CreditScene”からは、表示されているスタッフが運営するウェブサイトに
移行できる。”Option”ボタンを押すと、ランキング、BGMや音響のOn/Off,CreditSceneの立ち上げ、などができる画面に移行する。(572文字)

Chap8 Pump Up The Volume
ゲームプログラムを形成するコード群の中で、音声の再生機能に関連するコードの使い方、
Cocos2Dにおいて、CocosDenshionといわれているコードの使い方を、実際にOle The Vikingに組み込みながら、学習する。Chap3ではゲームキャラクターの様々な動きを表現するアニメーションの実現に必要な多量の画像ファイルをプログラムが煩雑にならないようにすることを考慮にいれて、管理する技法を学んだ。この章では、画像ファイル群の代わりに、ゲーム中の様々な効果音を実現している音声ファイルが、少なからず存在する場合に、そのファイル群をどうやって効率よくプログラムによってコントロールするのかという学習をする。
BGMの再生をはじめとして、バイキングが攻撃をしたり、死亡したり、ジャンプしたり、ため息をつく場合に、乱数を用いることで、ランダムに数種類の効果音が聞こえるようにすることでゲームをプレイする人に飽きがこないようにする。Chap5でプログラム中に登場する雑魚キャラも、攻撃を受けたときや、光線銃を撃った時や、テレポートで登場するときに、効果音が聞こえるようにプログラムを付加していきます。本書の最初の敵キャラであるレーダーも、攻撃されて、破壊されたときの効果音が鳴るように、コードが付加されます。(544文字)

Chap9 When the world Gets Bigger, Adding Scrolling
2Dゲームの画面に一画面以上大きい左右の広がりをスクロール画面を実現することで仕掛ける。奥行きを与える方法の紹介。トレーシング・ペーパーを何枚も重ねて、プレイヤーからみて奥に配置している紙ほど、ゆっくり左右に動かし、最前面部の紙を一番はやく動かす。
山や満月の空を描いた層。
サハラ砂漠の荒れ地にありそうな岩が点在している層。
バイキングや雑魚キャラ、レーダーが動き回ってゲーム展開の中心をなす層。
この順番で速度をずらして左右に平行移動。こうすることで、画面に奥行きが出てくる。
この技法の表現効果を実感するために、別のSceneを用意。バイキングが「浮遊する板」に
立っていて、背景画面では、雲が様々な速度で、左右を動いている。バイキングは
一歩も動かないようにプログラムされているが、背景の雲が動くので「動いているように見える」。
最後に、外形画面、ゲームステージをなるべく端末の「メモリ」を使わないようにして描画する手法の紹介。TileMapというソフトウェアをダウンロードして、そのソフトウェアに画像ファイルを登録。「地面」「岩」といった正方形の画像を、画面に貼り付けていくような手法を使う。
(470文字)

Part 4 Physics Engines
Chap10 Basic Game Physics Adding Realism withBox2D
(訳者注)Box2DのUserManualは下記リンクです。
http://www.box2d.org/manual.html#_Toc258082974

"Mad Dreams Of the Dead"というミニ・ゲームを0から完成までもっていく過程で
物理エンジン」といわれているコードの使い方を学習する。Cocos2Dのコード群の中に、
Box2Dというコードのかたまりをあらたに組み込む。Box2Dによって、ゲーム内のキャラクターや物体が、重力の法則や、摩擦係数、反射係数を計算にいれた動きをするプログラムの記述が容易になる。このコードの特色を活用して、シーソーにのっている氷漬けのバイキングを、太陽の当たる場所まで、シーソーを駆使して運ぶというゲームを作ってみる。そのためBody,Fixture,Density,Restitution,Friction
という概念を学ぶ。物理計算の公式に従って振る舞うBodyを記述して、さらにそのBodyに
今までに学習したことを使ってSprite(イラスト)を貼り付ける。そのようにして作った
岩や、氷漬けのバイキング、頭蓋骨といったBodyを、画面へのTapでお望みの場所に移動させる
ことができるようにする。最後に、氷漬けのバイキングが、太陽の当たる場所まで運ばれると
ゲームが終了するようにプログラムを記述して完成。
とある 物理屋 の仕事について - book-loverの日記
隠れて物理を勉強する - hiroyukikojimaの日記

翌週、物理の講義の前の休み時間に、ぼくらが廊下で語り合っているとき、見慣れない若者が壁に寄っかかってタバコを吸っているのを目撃した。ジーンズにシャツといういでたちで、見慣れない顔だったので、「今頃になって出てきた多浪生」だろうとひそひそ噂していた。駿台の一学期の講義は、毎年同じテキストなので、多浪生は出てこないものだったからだ。そしてその風貌がまた、いかにも多浪生だったのだ。ところが講義が始まってみると、その「多浪生」が、突然壇上にあがって講義を始めたのでぶっとんだ、それが山本先生の我がクラスでのデビューであった。

Chap11 Intermediate Game Physics:
    Modeling, Racing, and Leaping
Descent Into Hades「黄泉の国を駆け下る」(?)というミニゲームを開発する講座の前半部分になります。本書の前半部分で開発したような横スクロール画面で、バイキングが原始的な「トロッコ」のような乗り物を操縦して、ある時は吊り橋を渡り、またある時は障害物を飛び越えながらボスキャラをやっつけるというもの。
「トロッコ」の作り方、「トロッコ」が加速していくようにプログラムする技法iPhoneを傾けた時、iPhoneにかかる重力を表すベクトルの座標を取得して、その数値によって左右に加速したりするようにする。)、「トロッコ」に付属している前後の車輪が、「トロッコ」の籠本体とは別に、「回転」する仕組みの技法、「力積」(力×時間)というパラメータを導入して、画面をタップすると「トロッコ」がジャンプをする仕組みをBox2Dのコードで実現する。
TiledMapという画面作りのソフトウェアに続いて、VertexHelperという開発ツールの使い方も指導。「トロッコ」のような複雑な多角形の頂点座標の配列を、簡単に作成してくれる機能を使用する。このソフトウェアで作った「座標の配列」を表すコードを、容易に、読者がCoCos2Dで開発しているゲームプログラムに組み込むことができる。
真っ平らなステージを、空っぽの「トロッコ」が走り抜け、ジャンプできるようになるまで
作り込みます。(587文字)
How to Use Box2D for Just Collision Detection with Cocos2D

Chap12 Advanced Game Physics:Even Better Than the Real Thing
前章に引き続いて、「トロッコ」ゲームの制作開発の講座になっている。この章で完結。
空だった「トロッコ」に乗り込むバイキングのキャラクターを作成する。物理計算に従って
位置座標が変化する「トロッコ」にあわせて、バイキングも「籠」から跳んだりはねたりするような仕掛けをプログラムしていく。ヘルメット、胴体、腕、足のスプライトを貼り付けるBox2D用のBodyを設定(このBodyを記述するとき、これが物理計算に従う。)して、腕Body,足Body,ヘルメットBodyをJoint(関節)でトロッコと接続する。手足や頭部が、自然な動きをするために、Jointの回転角度に制限を設けたり、PrismaticJointという新たなJointを導入して、バイキングの足がトロッコの籠の底を突き抜けないようにする。平坦なゲームステージに変化をつけるために、トロッコが接触するとバイキングがダメージをうける障害物の設定を行う。さらに、
「自然」にたわんでみえる吊り橋などもステージに配置していく。
続いて、ステージの最後に対戦できる「Boss」キャラ「Digger」というドリルロボットの制作開発も行う。
ゲームを盛り上げるために、ボスキャラとの対戦が始まる前に、演出要素の強い仕掛けも準備する。ボス対戦が近い位置にまで来ると、一度、ゲームが一時停止する。ボスが待機する場所から退却するためのただ一つの吊り橋が焼き切れ、さらにボスキャラの背後にも谷底が控えている
ことがわかるように横スクロールがおこる。(間接的にボスの倒し方「谷に突き落とす」をプレイヤーに教示する。)(671文字)

Chap13 The Chipmunk Physics Engine (No Alvine Required)
本書のミニゲームの最後になる「脱出ゲーム」の開発講座。Chipmunkという物理計算プログラムのひな形を使用する。Box2Dを使用した開発と、Chipmunkを使用した開発でどういった相違があるのかといった概観を知ることができる。
この「脱出ゲーム」の仕掛けをコードにしていくためのレッスンがひたすら続く。
主人公のバイキングが、踏み板をジャンプしながら、制限時間以内に目標の脱出口にまで
上り詰めていくという上下スクロールのゲーム。
まず、制限時間が画面右上に表示されるようにする。
様々な種類の踏み板を準備する。(固定されているだけのもの。グルグルと回転するもの。バネが仕掛けられているようなもの。)
この踏み板を作り上げていく過程で、Box2Dにいう「Joint」にあたる「Constraint」を駆使する。作った踏み板をステージのスタートからゴールにまで、配置する。
バイキングは、画面をTapする時間の長短によって、ジャンプの高さを調節できるようにする。
一定の高さに到達したらゴール。時間内にたどり着かなかったら「GameOver」という画面切り替えをする。(477文字)
訳者による追加

ChipmunkPhysicsのコードを使用したサンプル群
Chipmunk Physics Videos - YouTube
ChipMunkPhysicsコードの開発者のウェブサイト
Index of /chipmunk
追記
OpenFeintジェイソン・シトロンCEOに独占インタビュー|【Tech総研】

Chap14 Particle Systems Creating Fire, Snow, Ice and More
ゲームシーンに雪が降っているような演出をする。飛行するロケットの後ろの部分から
火花や煙のようなものがたなびくようにみせかける。といった効果をParticleという技法
よって実現する方法を学ぶ。花火のような演出をするためのプログラミングにあたる。
火花の大きさや、火の粉の数、火の粉が生成してから消えるまでの時間、火の粉にかかる
重力の値、そういった定型的なパラメーターに色々な数値を代入して、様々なParticleを
生み出す。そのための専門的なソフトでParticleDesingerというものがある。
この章ではこのソフトウェアを使用して、Particle効果を簡単に自作するゲームの中に
埋め込めるようにする。(304文字)
ParticleDesingerの開発者によるガイダンスは下記のリンクへ。
Particle Designer - A Particle Simulation Editor For Mac · 71Squared Ltd

Chap15 Achievements and Leaderboards with Game Center
ゲームで遊ぶ人が、ある特定の条件、たとえば一定の得点を獲得するとか、指定回数を超えて
ゲームオーバーになるといったものを満足すると、その人に対して、「ご褒美」を提供するとい
う仕掛けを、比較的に容易にゲームに組み込めるようにする。(Achievement)
ゲームスコアが高い人から低い人の順番で、ランキングの表を作り、それをゲームの画面に
表示できるようにする。(Leaderboard)
このような仕掛けを、自作でゲームに組み込もうとすると、プログラミングの手間が煩雑になるが、GameCenterAPIを使うと、こういったプログラミングも簡単に行える。この章のプログラミングを進めるためには、自作したゲームをiTuneConnectにアップロードする必要がある。
またAppleDevelopperProgramに加入するための資金も必要。(367文字)

GameKit Programming Guide(Japanese)
http://developer.apple.com/jp/devcenter/ios/library/documentation/GameKit_Guide.pdf

Chap16 Performance Optimization
コンピュータの資源を無駄なく使用するゲーム開発を実行するための「コツ」の伝授。
本書の前半部分で開発方法を解説したOle The Vikingという横スクロールアクションの
ゲームを一部改良したパフォーマンス・調整専用のテストゲームで学習を進める。
ゲームの画面いっぱいに、ネジやハンマーのようなガラクタのアイテムが数百個落下する
という意図的にコンピュータに負担を与えるゲームシーンを動かす。
従来からの解説にあるように、テクスチャを複数あるものをまとめて1枚にするという手法も
有効。それに加えて、頭上から落下するアイテムを、画面から「消す」という命令を
プログラムに記述するかわりに、「頭上に戻す」という命令をプログラムにすることで資源の
有効活用をする。COCOS2Dにあらかじめ付属しているファイルを組み込むことで、
ゲームプログラムに記述されている関数やメソッドが実行にどれくらい時間をとっているか
などを計測するやり方も学ぶ。さらにAppleSDKにあらかじめ付属しているInstrumentsや
Sherkといったツールの使い方も学ぶ。(466文字)
Mac Developer Library
Mac Developer Library

Chap17 Conclusion
本書の「総括」にあたる部分です。1章から16章までの学習内容が網羅できるようになっている。
ではCocos2Dの使い方を応用して3Dのゲームの開発をしたい場合はどういうルートが
あるのかといった話。
方法1
Cocos3D « The Brenwill Workshop
Cocos3DというCocos2Dの拡張されたゲームエンジンがありますという話。

方法2
OpenGLという描画のためのプログラムライブラリの使い方をマスターしましょう。
そのためのおすすめ参考文献

Learning iOS Game Programming: A Hands-On Guide to Building Your First iPhone Game

Learning iOS Game Programming: A Hands-On Guide to Building Your First iPhone Game

これは私読みました。ゲームエンジン使わないでObjectiveCだけで2Dゲームを開発する
本です。このエントリーで取り上げた本は4つのゲームを1冊で作り上げているので
ゲーム一本一本がどうしても貧弱になりますが、こちらは1本のゲームを作り込んでいるので
かなり気合いのはいったものができあがります。

方法3
このブログでも紹介してきたUnityというゲームエンジンを使いましょうということ。

COCOS2DでAndroidで動くゲームは開発できるのか?
cocos2d-android-1 - The latest cocos2d-android project ported from cocos2d-iphone - Google Project Hosting
C++で開発がしたい!
Cocos2d-x - World's #1 Open-Source Game Development Platform
JavaScriptで開発がしたい!
cocos2d-javascript.org
ブラウザで動くゲームも開発できると書いてある。

追記 その2
ベンチャー経営者奮闘伝-第02回「トーセ」 齋藤茂社長- ベンチャー企業家のための情報サイト サクセスファイター

追記 その3
ゲームとアカデミーの素敵なカンケイ(第2回):大学からゲームメーカーへ――AI研究で広がるステキなゲームの世界とは?(後編) (3/3) - ITmedia Gamez

また、ゲーム業界で仕事をしたい方たちには、デジタルゲームAIという分野は一つのチャンスになると思います。「僕はデジタルゲームAIの知識を持ってます、これくらいの教科書をマスターしてきました。こういった技術を使うことができます」、これが強みになる。他の国では常識となりつつあるけれども、日本では知られていない技術、これはすごい武器になります。CGやプログラミングなどの分野にはとっつきやすい教科書や参考資料がそろっているために競合する人がたくさんいます。AIはまだそういったレベルに到達していない、つまりなかなか勉強しにくいところがあります。逆にそこを自分で勉強すれば、どんな学部に行っても……プログラミングさえできれば文学部でも、経済学部でもデジタルゲームAIの勉強はできるんです。

 IGDA JAPAN(国際ゲーム開発者協会 日本支部)のダウンロードサイトにも自分が作った日本語の資料はまとまっていますし、いろいろな教科書でデジタルゲームAIを学習すれば、先輩やベテランを追い越すチャンスがあります。ITの時代には特にそういった、前の世代では学ばなかったことが学ぶことができるようになる、という知識の断層のタイミングがときに訪れます。デジタルゲームAIもそういった分野での一つです。デジタルゲームAIは新しい分野ですから、自学自習さえすれば、もの凄く大きな武器になります。また、IGDAの連続セミナーを通して培って来たデジタルゲームAIのコミュニティーがmixi上とメイリングリストの上に形成されていますので、そういったコミュニティに入って情報を交換しながら、勉強を進めて行けば継続した刺激を受けながら勉強することができると思います。

 ただ、自学自習のためには現段階では英語力が必要になります。それは単に英語の文献を読むだけじゃない。例えば、英文の資料が全部翻訳されれば日本語でOKなのかというと決してそうではなくて、こういったテキストにも参考文献が一杯あります。要するに技術情報というのはネットワーク上になっていて、1個ポイントを抑えればいいというわけではない。そのすべてを理解するためには、ネットワーク状になった文献を文献から文献へとたどって、なるべく多くの知識を押さえておく必要があります。そして、そういった知識をどうデジタルゲームへ向けて生かすかを考えて、ようやく一つのサイクルとなります。

 英語能力は、今後のゲーム開発に限らず様々なシーンで有用ですから、ぜひとも身につけるべきスキルの一つです。デジタルゲームAIを使いこなすには、現段階では「英語」「人工知能」「ゲーム開発」の3つのスキルが必要です。難易度は高いですが、一般に流布するためには、次第にこの障壁を緩和して行く必要があります。そのためにも、先進的にこの分野を踏破して切り拓いて行く人材が必要です。道は険しいですが、誰も登ったことのない山には道はありませんし、そういった道を行くのが好きな方には、もってこいの分野だと思います。

Life is beautiful: $100PCならぬ$80スマフォがケニアでバカ売れ

中国のHuaweiが作った「80ドルスマートフォン」がケニアでバカ売れだそうである。搭載するメモリもカメラの解像度も最低限ものに抑え、徹底的に低コスト化したスマートフォン開発途上国に売るという戦略である。
この価格帯にはAppleMicrosoftのOEM先も入って来ないことは確実。今まではSeries40を開発途上国で売りまくっていたNokiaも足元がかなり揺らいでいるので、今がチャンスというわけだ。
戦後の高度成長期には、こういうチャンスにがむしゃらに飛び込んで行くのは日本のメーカーだったわけだが、その役目はすっかり中国や台湾に奪われてしまったようだ。

追記
本書で紹介されているおすすめの文献

Cocoa Programming for Mac OS X

Cocoa Programming for Mac OS X

Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers

Learning Objective-C 2.0: A Hands-On Guide to Objective-C for Mac and iOS Developers

Programming in Objective-C (4th Edition) (Developer's Library)

Programming in Objective-C (4th Edition) (Developer's Library)

Cocoa Design Patterns (Developer's Library)

Cocoa Design Patterns (Developer's Library)

iPhone Developer's Cookbook, The: Building Applications with the iPhone 3.0 SDK (Developer's Library)

iPhone Developer's Cookbook, The: Building Applications with the iPhone 3.0 SDK (Developer's Library)

Core Animation: Simplified Animation Techniques for Mac and iPhone Development (Core Frameworks)

Core Animation: Simplified Animation Techniques for Mac and iPhone Development (Core Frameworks)

iPhone Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)

iPhone Programming: The Big Nerd Ranch Guide (Big Nerd Ranch Guides)