將cocos2d x遊戲移植到win8 wp8上

2021-06-27 00:40:54 字數 1738 閱讀 8278

1、cocos2d-x已經有win8的非官方移植版本,同樣有wp8的。但是win8的版本使用的是非常古老的cocos2d-x**,而wp8雖然有for 2.0的較新的**,但是各種bug。所以還是自己動手豐衣足食。不過基礎知識還是來自github上面的版本。理論上等cocos2d-x 3.0版本穩定之後再移植會輕鬆很多,但是有些迫不及待了》_<

2、此文章為小記,非教程,可能有較多錯漏,畢竟作為嘗試乙個新的系統,各種知識都在摸索之中

3、**暫不開源,因為剛剛開始移植,問題很多,並且不知道會不會半途而廢。等穩定了再說(說不定那時候都有官方版本了)

4、移植進行中,文章暫未完成,會不定時補完,並且不會特別標註修改內容。

一、關於系統環境的一些基礎知識

1、windows8和windows phone8並不一樣,我們的遊戲需要兩個工程檔案,雖然平台相關的**有很多是通用的。如果之前沒有安裝windows phone 8 sdk的話,建立第乙個wp8demo的時候會提示進行安裝(敢不敢給個完整安裝包!!) 後面使用win8代表桌面應用商店版本(如果連應用商店支援都不考慮的話,那就是原始win32應用。這個在windows8下基本上都可以正常執行,但是無法加入應用商店以及開始磁貼裡),wp8代表移動版本(手機或平板)

2、如果沒有安裝 windows develop kit (注意不是wp 的sdk)則預設的demo**建立dx11的device會失敗,因為預設debug版本開啟了d3d11_create_device_debug,這個需要開發環境支援。

3、wp8可以在模擬器上面除錯,也可以真機除錯。 我在真機除錯時出現乙個問題"can not write file to folderid_shareddata.....",後來重啟了下手機就好了。

4、vs2012不裝sp3的話,模擬器與windows8.1不相容。裝了之後就好了。(吐槽下微軟偉大的工程師,與自家作業系統都可以不相容)

5、win8 for應用商店的程式,建立的靜態庫預設不開啟「使用windows執行時擴充套件」,導致__cpluscplus_winrt未定義,在"c/c++"----"常規"選項中開啟後正常.(/zw)選項。這個也要稍微注意下,這個選項跟是否使用預編譯一樣,雖然可以對工程進行設定,但是本質上是對每乙個資料夾的控制。所以可以自由控制某乙個檔案不開啟(比如c語言**)

二、引擎和遊戲的移植

1、win8不支援opengl,所以渲染api都要全部替換。

win8不支援winsock2,所以socket**要全部重寫。這個暫時來看是除渲染外最大的修改。

所有動態庫和靜態庫要使用win8的模板來建立,否則有可能不支援。就算能執行也可能上不了應用商店。注意,這個說的是可能,我可沒有試過。

視窗建立**要使用win8自帶的,不能使用mfc win32api等等。這個相對好說,因為遊戲基本不會接觸到原生介面。

執行緒不能使用win32 api了,雖然部分函式依然可用,但是不要給自己找麻煩。直接使用std::thread,c++標準總沒有問題。

字串轉碼multibytetowidechar/widechartomultibyte仍然可以使用。

仍然可以使用c標準庫/c++標準庫,fopen/fread/stl::map/std::vector/strcpy/sprintf等基本函式保持不變。

這裡要說下fopen,如果可以的話,最好還是不要使用這個函式,而是使用win8提供的非同步檔案讀取介面。但是你知道的,對於大量的遊戲**而言,所有的功能都要相容非同步不是一件容易的事。所以暫時還是使用fopen。這個就是同步檔案讀取的介面了。

2、遊戲資源

有兩個目錄先要說明下

將cocos2d x專案移植到android

1.準備ndk 最好用ndk 8,ndk 9可能報如下圖的錯 cygwin 2.編輯cocos2d x目錄 cocos2d x的安裝目錄 下的 3.建立android工程 1 執行cocos2d x目錄下的create android project.bat 2 然後首先輸入包名和專案名 3 輸入支...

cocos2dx移植android問題

cocos2dx移植android問題很多,網上資料很少,希望以後的同學碰到下面問題可以很快解決 1 所有 include 修改為 include 所有 include 修改為 include 所有 include裡不能只是檔名,還有相對路經 所有 include檔名大小寫要和檔案的大小寫一樣 資源...

cocos2dx 移植winphone相關整理一

獲取winphone作業系統版本號 system.environment.osversion 其中osversion 為operatingsystem物件,包含platformid指示作業系統平台 和version 指示作業系統的版本 system.platformid列舉值及其含義 win32s ...