cocos2dでiPhoneアプリ(ゲーム)を作っている

まだ4章までしか読んでいないけど、丁寧に解説してあってわかりやすい。メモリ管理はARCなので今風なのかな。

ProductName Learn Cocos2d 2: Game Development for Ios
Steffen Itterheim
Apress / 3302円 ( 2012-09-19 )


kobold2dはcocos2dの足りないところを追加したライブラリのようだ。

kobold

4章では落ちてくる蜘蛛をよけるゲームをつくる。音の扱い方もこの章で学ぶ。

cocos2d

deprecatedになっていたメソッドがいくつかあった。

//self.isAccelerometerEnabled = YES;
[self setAccelerometerEnabled:YES];

ブロックオブジェクトの使い方もちょっと分かったような。

CCCallBlock* callDidDrop = [CCCallBlock actionWithBlock:^void(){
    // move the droppedSpider back up outside the top of the screen
    CGPoint pos = spider.position;
    pos.y = screenSize.height + spider.texture.contentSize.height;
    spider.position = pos;
}];

CCSequence* sequence = [CCSequence actions:easeHang, easeEnd, callDidDrop, nil];

pythonでiPhoneアプリを作るまで

Shizuoka.pyでpythonでiPhoneアプリを作る紹介をしたけど、さらっと流しただけで環境構築には触れなかったのでメモっておく。

iPhoneアプリ開発者登録をする

Titanium MobileでもObj-Cでもそうですが実機転送するためには開発者ライセンスがいるのでよろしく設定しておいてください。お金かかります。

Kivyのインストール

プラットフォームに応じたバイナリをダウンロードしてきてインストール。OSXの場合はアプリケーションフォルダにドラッグドロップして、make-symlinksをクリックしてシンボリックリンクを張る。

Kivy

これでkivyコマンドが使えるようになってmac上でアプリ開発ができる。

iOS用の設定

注) 1.6.0では安定版ではないのでそのつもりで。

KIvy for iOSに書いてある手順で。

  1. brewで必要なライブラリを入れる
  2. build_all.shでビルド
  3. create-xcode-project.shでテンプレートを用意して開発
  4. xcodeで開いてrunすると実機転送

という仕組み

Titanium Studioでドハマリ中 -> XCodeを使って一部解決

最近Alloy+Emacsで快適に開発していたのだが、ちょっと実機転送したいアプリがあったので久々にTitanium Studioを起動したら思いっきりハマっている。

run iOS deviceすると次の画面が出てきて何を直したらいいのかさっぱり分からん。

titanium studio

そもそも、App IDとプロビジョニングプロファイルをきちんと理解していないからなぁ。ドキュメントをきちんと読んでおかないとダメだな。

あと、そのうち東京のもくもく会にも行ってみたいなぁ。

追記121128

KitchenSinkでも同じようなことになった。

初回インポートしてApp IDを変更して実機転送したところ初回は

一般設定して

general

次にcertificatesの設定して

certificate

最後にプロビジョニングプロファイルを登録

provisioning

これで実機転送できる。

しかし二度目の実機転送を行おうとするとPlease add a provisioning profileという画面が出て先に進まなくなる。

TitaniumのQAで似たようなのを見つけた

Xcodeのコマンドラインツールを再インストールしたら直ったというコメントがあったので、ついでに4.4.1から4.5.2にあげてみたけど変わらず。他のヒトが試したようにTitanium Studioを再インストールしたり、titanium, alloyを最新版にあげてみたけどダメ。

あとは、コメントにあったとおりにpreview version入れてみるくらいだけど、時間切れなので帰ってきたらやる

121128追記

RC(3.0.0.201211271925)とNightlyBuild(3.1.0.201211271945)入れてみたけど変わらず。

ところで、

titanium build -p iphone -T device -P XXXXXX -V "XXX XXXX"

とやってみたけどシミュレータが立ち上がってしまうのはなんでなんだろ?オプションでなにか足りないものがあるのかなぁ、、、

XCodeを使ったらちょっと前進 (追記2012.11.30)

XCodeを使ってみることにした

titanium build -b -f -p iphone -T device -F iphone -P [UUID] -V [NAME]

でapp/build/[application].xcodeprojができているので、それをXCodeで開いて実機を選択してrunすればいい。

これで、KitchenSinkは実機に転送できた。

Alloyで作ったアプリも転送できるんだが、

couldn't find app.js

というエラーが出る。

「iPhoneアプリ設計の極意」を読んだ

コードは出てこない。デザインの指針が満載なので、iPhoneアプリを作る人にとっては非常に参考になる本なのではないでしょうか?

1353808014

  • iPhoneアプリは消費財
  • 構想は大きく、実装は小さく
  • アイコンとそのサイズに関して
  • 起動画面の設計
  • iPhoneの設計が先で、その後にWebの設計を考える

特に起動画面の設計で、スプラッシュスクリーンをどうするかっていう話は、ラーメン屋の行列心理(外で待っていると待っている意識になるんだけど注文を取ってから待っている場合には待たされている感覚になってイライラしやすいとかそんな話)に似ているなぁと。

ProductName iPhoneアプリ設計の極意 ―思わずタップしたくなるアプリのデザイン
Josh Clark
オライリージャパン / 3570円 ( 2011-06-18 )


pdfの余白が邪魔

オライリーは電子書籍を買うようにしていて、大抵epubで入手している。今回はpdfしか用意されてなかったので、pdfを購入してみたのだが余白のせいで字が小さくなってしまうためNexus7のような7インチタブレットでは非常に読みにくかった。今後はepubかmobiじゃないと買わないと思う。

電子書籍は付箋が貼れないのがちょっと困る。

AldikoもKindleもBookmarkできるようになっているんだけど、範囲が大雑把すぎるのでこまっている。行単位でブックマークできると嬉しいんだが。

1353808013

Alloyでつくる簡易RSSリーダー

Titanium Mobile iPhone/Androidアプリ開発入門の簡易RSSリーダーをAlloyで書きなおしてみた

alloy rssreader

CoffeeScrptで開発する方法については、ここを参照のこと。

軽くハマったのはviewかな。

views/index.xml

最初TabGroupにidを設定したら、$.index.openでエラーがでた。

結局$.indexってなんじゃろか?とドキュメントを読んだら解決した。

要するにViewのトップレベルには

  • Ti.UI.Window
  • Ti.UI.TabGroup
  • Ti.UI.iPad.SplitWindow

のいずれかが必要で、idが明示的に指定されてない場合には、そのファイル名がidとして利用される。

規約に従うことにしたらxmlはシンプルになった。

<Alloy>
    <TabGroup>
    </TabGroup>
</Alloy>

controllers/index.coffee

コントローラーは本の通りに。スタイルとかも全部コントローラーに書いちゃったのでindex.tssはいじってない。

createApplicationTabGroup =  ->
  tab1 = createRSSTab 'Developer Blog', 'http://developer.appcelerator.com/blog/feed'
  tab2 = createRSSTab 'Q&A', 'http://developer.appcelerator.com/questions/feed/newest'
  $.index.addTab tab1
  $.index.addTab tab2
  return

createRSSTab = (title, url) ->
  win = Ti.UI.createWindow
    title: title

  tab = Ti.UI.createTab
    title: title
    icon: 'KS_nav_views.png'
    window: win

  tableView = Ti.UI.createTableView {data:[]}
  win.add(tableView)

  win.addEventListener 'open', ->
    query = String.format "select * from rss where url = '%s'", url
    Ti.Yahoo.yql query, (res) -> 
      if res.success is false
        alert("Yahoo YQL error.")
        return
      res.data.item.forEach (item) ->
        tableView.appendRow
          title: item.title
          color: '#000'
          link: item.link
          hasChild: true
    return

  tableView.addEventListener 'click', (event) ->
    detailWin = Ti.UI.createWindow {title: event.rowData.title, backgroundColor: '#fff'}
    webView = Ti.UI.createWebView {url: event.rowData.link}
    detailWin.add(webView)
    tab.open(detailWin)
    return

  return tab

createApplicationTabGroup()

$.index.open()

ProductName Titanium Mobile iPhone/Androidアプリ開発入門―JavaScriptだけで作る
小澤 栄一
秀和システム / 2520円 ( 2012-02 )


「Learn Cocos2d 2」を購入

cocos2d for iPhoneレッスンノートで一通りやり方を覚えたので、もうちょっと内容の濃いのを読んで見ることにした。

ProductName Learn Cocos2d 2: Game Development for Ios
Steffen Itterheim
Apress / 3302円 ( 2012-09-19 )


これの電子版を買ってNexus7に入れた。

「cocos2d for iPhoneレッスンノート」を読んだ

ちょっとゲームが作りたくなったので読んで写経してみたけど、プログラミング初心者向けの本ではなかった。

本書の目的はゲームアプリをつくることで、Objective-Cの言語解説ではありませんし、cocos2dの機能リファレンスでもありません。あくまでもcocos2dをツールとしてつかいこなすためのチュートリアルブックです

ProductName cocos2d for iPhoneレッスンノート
加藤寛人
ラトルズ / 2499円 ( 2011-09-22 )


写経の記録

Objective-Cの本は一冊もっておく必要があるな。

ProductName 詳解 Objective-C 2.0 第3版
荻原 剛志
ソフトバンククリエイティブ / 3990円 ( 2011-12-28 )


それからTitanium Mobileにもゲームエンジンがあるらしいので、簡単なゲーム開発だったらそっちのほうがやりやすいのかなぁ。そっちも期待。

Cocos2dでつくるシューティングゲーム

4章の写経

いきなりテスト用のパーティクルが動かなくてはまったが、fire.pngを用意したら動くようになった。あとは誤植とか、説明をとばしている部分がいくつかあったので、理解度を試されていると捉えてうまくデバッグしていく必要があった。

  • Cocos2Dでの座標の扱い方
  • パーティクルの扱い方
  • サウンドの扱い方

Asteroids

ProductName cocos2d for iPhoneレッスンノート
加藤寛人
ラトルズ / 2499円 ( 2011-09-22 )


誤植とか

  • 早い段階でcannonを動かしたかったらどこかでstartメソッドを呼ぶ
  • p.201 @property (nonatomic, retain)EnemyController *enemyController;
  • p.208 EnemyController.hに定義を書いておく

クライアントサイドMVCのノリでiPhoneアプリをつくる。それがalloy

@k0sukeyに教えてもらったalloyっていうTitanium Mobile用のMVCフレームワークがなかなか面白げなので触ってみた。

backbone.jsを土台にしているそうなので、そこら辺を知っていれば分かりやすいかなと思う。

Quick Startを写経したら10分程度でここまで出来た、すごいラクチンかもしれない!

alloy

注意点(Titanium StudioとNode.js使っている前提で)

  • nodebrewとか使っている場合はplugins/ti.alloy/plugin.pyのguessPathsにパスを追加しておく
  • これみてプラグインを入れておく

静岡 Titanium Mobile もくもく会 #01

というわけで、こういったあたりの内容でもくもく会をやります。

基本はもくもく会(無線LAN完備)なのですが、プロジェクタも用意してあるので、@k0sukeyがalloyのさわりをレクチャーしてくれるかもしれないし、僕(CoffeeScript派)がSpine.jsの布教活動をしているかもしれません。緩い流れで進行していくと思います。

  • Titanium Mobile
  • Alloy
  • Backbone.js(or Spine.js)
  • jQuery Mobile
  • (Cocos2D)

なんかに興味がある方は参加するとハッピーになれるはず。

それから会場の吉原にはB級グルメのつけナポリタンがあるので、変わったつけ麺が食べてみたいという動機でもいいかもしれないですね。

Cocos2dでつくるノベルゲーム

3章を写経してみた。

ProductName cocos2d for iPhoneレッスンノート
加藤寛人
ラトルズ / 2499円 ( 2011-09-22 )


  • NSClassFromStringという便利メソッドがある
  • itemFromNormalImageは廃止されていてitemWithNormalImageになっている
  • CCNodeの初期化処理のやりかた
  • CCSceneは画面表示のルートになれるが、CCLayerはなれない
  • CCSceneは「ゲームの状態」CCLayerは「シーン内の意味のあるまとまり」

次章はボリューム大きめのシューティングゲーム