2009年7月25日 星期六

good 最新iPhone移植

目前已把最新版本的good移植上iPhone。因為繪圖的部份已更換為OpenGL版本的gx,所以效能上比較沒什麼問題了。除了color這個範例因為一次產生2000個物件,每一個物件都以scirpt作控制,在效能上不很理想外,其它都OK。

下圖畫執行的程式就是上次介紹過的範例,可以選擇8個範例中的其中一個以PlayPackage方式個別執行。

上面的抓圖裡,可以看到畫面最下方黃色區塊畫了一個虛擬的搖桿,這是作了一個簡單的輸入裝置模擬,不是很精確,會再另外找時間加強。

2009年7月20日 星期一

Complied Lua code support.

在載入Lua script的部份稍微作了點修改,以luaL_loadstring取代luaL_loadbuffer,現在除了可以支援原來的文字格式程式碼外,也能夠支援使用luac事先編譯好的Lua程式碼。

C/C++呼叫ObjectiveC程式

前面的一篇文章裡提到如何在ObjectiveC程式裡呼叫C/C++程式的方法,現在反過來要在C/C++程式裡呼叫ObjectiveC的程式,要如何作?方法也同樣也很簡單,關鍵點就在於二者之間的程式介面必需是C的介面,也就是說在ObjectiveC這邊可以寫個C函式讓C/C++的程式直接呼叫。

舉一個簡單的例子,現在要用ObjectiveC寫個函式,這個函式可以讓C/C++碼呼叫取得目前app的完整路徑字串。
// 取得app路徑字串,複製字串至一buffer
// pBuff buffer
// szBuff buffer的大小,字元數
// 回傳實際複製的字元數
int objcGetAppPath(char* pBuf, int szBuff)
{
char* ppath = [[[NSBundle mainBundle] bundlePath] UTF8String];
...
}
在C/C++裡面就可以直接呼叫使用這個函式了。

這裡有一點要特別提出來,在C++中使用objcGetAppPath時有個地方要注意一下,就是宣告時需要使用extern "C"修飾,這樣才不會被當作是C++的函式而最後發生連結錯誤。
extern "C" {
int objcGetAppPath(char* pBuf, int szBuff);
}

2009年7月16日 星期四

OpenGL gx 取代 SDL gx

將編輯器內建的Player用的gx換成OpenGL版本取代原來SDL的版本,執行起來比SDL的版本順暢的多,按鍵的處理也更單純一點,等有空時再弄到iPhone上看看效能如何。



這裡面發現個新的小問題。從抓圖裡可以看到原本有使用KeyColor的物件不正常了,沒有正確鏤空把顏色去掉。

其實這個問題可以忽略,因為原本使用2D SDL render,鏤空的方法是用傳統的作法,現在改成OpenGL的作法,只要載入的貼圖本身帶alpha,再把alpha test打開,就能作到自動鏤空,所以不是問題。所以以後只需要稍微注意一下,用的是那一個版本的gx就行了,當然最理想的處理是使用者完全不必管這種問題,底下自動處理掉。

2009年7月13日 星期一

good sample list

在一邊開發good編輯器及核心功能的時候,也同時會製作使用到對應功能的小專案來作測試。目前總共有8個範例,有的是很小的測試程式,也有的是具體而微的小遊戲,下面作個整理及簡單介紹。

weeder 鋤草機

這是最早作的範例,因為鋤草機這個小遊戲感覺起來最單純,所以就拿它作為一個標的,以把它用good實作出來為目標來開發good相關功能。一開始只編輯了一個關卡,後來花了點時間,將原作裡12個關卡全部編輯出來,作成完整版。

zelda 薩爾達

這是最早開發good的起因,為了重製薩爾達作為練習。一開始重點放在地圖編輯器上,也花了不少時間編輯世界地圖。整合了Lua後,再加上一小段程式碼,讓林克可以在地圖上走動。不過和最終的目標還相差太遠,只能在地圖上走走路,作些簡單的碰撞,只好等有機會再繼續未完成的工作。

mmc 魔法寶石方塊

為了驗證good也能製作出這種類型的遊戲,花了幾天時間編輯實作這個小遊戲的雛型出來,效果還不錯。

texture 貼圖物件

加上這個功能後,才能以更簡單的方法製作拼圖遊戲。沒有這個功能,也能作出拼圖這樣的遊戲,只不過是需要使用較曲折麻煩的方法作到。

color 色塊物件

有了色塊物件後,就不必以填貼圖的方式來填色,省圖又方便。

stge 粒子系統

很早就規劃打算要整合stge模組。雖然stge本來是專門設計來製作彈幕射擊遊戲,但因為它本身的設計就是一個以粒子為核心的系統,所以不一定只能被用來製作射擊遊戲,也能夠作為一般用途的粒子系統。目前還不算100%整合完成,但已經可以拿來作應用。等到更完整的整合完成後,就能用good來重製25940p

puzzle 拼圖

在貼圖物件功能加入後,就能很簡單的製作出這類型的應用。

mario 瑪莉歐

這是拿來作gameplay練習的小品,實際上寫的不是很好,細節部份還有許多加強的空間。

2009年7月5日 星期日

iPhone程式的多點觸控(Multiple Touch)

自己開發的程式中,預設情況下多點觸控的檢查是Disable的,也就是說無論在畫面上同時按下幾隻手指頭,都只能得到一個點觸控的通知。要把多點觸控打開有二種方法。

1.
透過UIView類別的setMultipleTouchEnabled打開多點判定。
[[Director sharedDirector] window] setMultipleTouchEnabled:YES];

2.
覆寫(override)isMultipleTouchEnable方法,並回傳YES。
-(BOOL) isMultipleTouchEnabled {return YES; }
Related Posts Plugin for WordPress, Blogger...