顯示具有 iPhone 標籤的文章。 顯示所有文章
顯示具有 iPhone 標籤的文章。 顯示所有文章

2011年7月6日 星期三

cocos2d-x iphone + android設定

based on cocos2d-0.99.5-x-0.8.5 with xcode4


1. 用xcode建立cocos2d-x的ios project
2. 建立android用的cocos2d-x project
3. 把android project中的"Resource"跟"android"兩個目錄搬到xcode專案的目錄下 (跟Classes同一層)
4. 修改android目錄中的build_native.sh, 將GAME_ROOT改成../
5. 在build_native.sh最後一行
$ANDROID_NDK_ROOT/ndk-build -C $GAME_ANDROID_ROOT $* 之後加上"COCOS2DX_ROOT=$COCOS2DX_ROOT"
6. 修改jni/Android.mk, 將subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \
           cocos2dx \
           CocosDenshion/android \
        ))
中的"$(LOCAL_PATH)/../../.." 改為$(COCOS2DX_ROOT) (最後一個/不要去掉!)
7. 修改jni/Helloworld/Android.mk, 將
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../../../cocos2dx \
                   $(LOCAL_PATH)/../../../../cocos2dx/platform \
                   $(LOCAL_PATH)/../../../../cocos2dx/include \
                   $(LOCAL_PATH)/../../../../CocosDenshion/include \

紅色的部份都改成$(COCOS2DX_ROOT) (最後一個/不要去掉!)

以及

LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/../../libs/armeabi) \
               -lcocos2d -llog -lcocosdenshion \
               -L$(call host-path, $(LOCAL_PATH)/../../../../cocos2dx/platform/third_party/android/libraries) -lcurl


橘色部份改成$(COCOS2DX_ROOT)(最後一個/不要去掉!)


這樣應該compile應該就沒問題了, android專案也不會被cocos2d-x專案位置綁住 (若有修改則修改build_native.sh即可)


Resource的部份, 因為build_native.sh會把Resource/中的所有資料複製到asset中, 所以resource必須要放在這裡, 用ln -s 跟Resources (ios用)中的目錄作連結便可以很方便地同步資料

2011年2月26日 星期六

iOS OpenGL Programming

這邊推薦一下個人覺得不錯的iOS OpenGL Programming的教學網站

http://iphone-3d-programming.labs.oreilly.com/

個人覺得寫得不錯
若不習慣看網頁的話 它也有出實體書 (天瓏有在賣)

2011年2月1日 星期二

iOS dev / My 2D game engine dev筆記 #1

iOS Application的生命週期說明
The core application design
其實大多iOS dev的書都不去提這個東西,但個人覺得瞭解這些東西會對iOS dev很有幫助。

瞭解iOS Application的生命週期後,就可以開始規劃整個engine的運作流程。

基本上大致概念就是engine產生一GLView,將此View加入為某一window的subview,然後讓此window makeKeyAndVisable,此GLView就能被顯示在螢幕上。

另外透過NSThread撰寫一GameLoop物件並且在GLView正式被顯示在畫面上後啟動此gameloop物件,遊戲就能開始運作。至於遊戲相關的流程控制及運作都在gameloop內控制好即可。
外部只須視目前系統呼叫的methods來作對應gameloop的暫停或啟動等動作。

想法是各個遊戲可以implement自己的gameloop物件,但engine也有提供一範本供開發人員使用。

Engine內部大致分為幾個部份:
GLView, GraphManager, RenderManager, AudioManager, AnimationManager, InputManager
1.GLView主要功能就是初始化opengl相關的設定,建立framebuffer與相關renderbuffer,並能提供GLSharegroup給gameloop thread使用。
2.GraphManager主要功能就是載入外部圖檔成為texture讓RenderManager內的各method能夠利用
3.RenderManager主要就是提供各種繪圖method,如DrawPixel, DrawLine, DrawRectangle, DrawGraph等等。畫面更新部份則交由GLView去更新。
4.AudioManager主要就是放音與錄音。目前是用OpenAL實作。
5.AnimationManager播放由Graph所組成的動畫,會自成一個thread來更新目前frame。
6.InputManager接收使用者的輸入,如按鍵或觸控螢幕。

Engine本體使用Singleton來撰寫。

Objective-C的Singleton撰寫方式可以看此連結的討論或是Apple官方Creating a Singleton Instance的說明

2010年2月26日 星期五

iPhone App Info->Identifier

from iPhone Dev Center

Example App ID: A1B2C3D4E5.com.domainname.applicationname
Identifier to enter in Xcode: com.domainname.applicationname

Example App ID: A1B2C3D4E5.com.domainname.*
Identifier to enter in Xcode: com.domainname.${PRODUCT_NAME}

Example App ID: A1B2C3D4E5.*
Identifier to enter in Xcode: ${PRODUCT_NAME:rfc1034identifier}

iPhone Dev

今天真的差一點就要抓狂了XDD

iPhone的codesign一直有問題,每次程式傳上去iPhone之後,
GDB就說沒辦法跟iPhone連線orz
網路上有很多解法,像是重作Provisioning Profile、重開機、改plist都沒用

最後怒了,把Xcode整個刪掉重新裝一次。
就好了 囧囧囧囧囧囧.......

我覺得應該是我之前在試bypass sign check的時候改了Xcode的設定
結果試完之後沒有改回來

總之,終於可以實機debug了。
果然實機跑起來比較知道程式操作起來的感覺。

開始來寫一些測試的程式

2010年2月23日 星期二

iPhone Developer Program

看來我也得打客服電話了...apple的人都不會回報這個問題給美國那邊嗎??
在台灣買IPHONE DEVELOPER PROGRAM的人應該都會遇到這個鳥問題吧