2010年7月5日 星期一

Unity與iOS 4.0 更新(三)


親愛的用戶,首先我要感謝各位耐心等待,我們很感謝大家彼此的投入,這樣讓大家都知道交換資訊的價值。

就像每位對手機程式開發一樣興奮,特別是在iPhone上面開發Unity遊戲。我們跟iOS 4.0有很緊密的研發交流,正當我們認為Unity採用C# 與 JavaScript是可行的,Apple公司卻沒有確認這方面的資訊,新的資訊也還沒更新!

不過 Apple最近在App Store卻展示了幾個很棒的Unity遊戲,而我們還是持續地開發利用Unity 3.0新功能的遊戲。但是隨著新合約的來臨,我們也開啟了新的應變計劃,避免Apple終止以Unity為基礎的遊戲,因此我把這個計畫叫做『B計畫』。

你可能知道,Unity大部分是利用最佳化的C++ 結合物件導向的C wrappers 所寫成的,遊戲邏輯是由遊戲開發者撰寫,利用C# 與 JavaScript 兩者都是在.NET之上執行,這種規劃的好處是我們能夠避開舊有的scripting-versus-native的問題。 因為.NET提供暸很快速的開發模式 (幾乎是及時的編譯),而同時又產生極為最佳化的code,在iPhone上。事實上我們還超前了將.NET編譯到完全的static machine code,這樣可以增加效能,並且與舊的iOS使用規範能夠相容,而且,在iPhone上很容易把Objective-C code丟進去,來存取fresh APIs 就像Game Center, Core Motion那樣的作法。這是一個很棒融合兩個世界的方法。

自從Unity的.NET可能會與新的使用規範發生衝突,我們正想一個解決方案,讓開發遊戲可以完全用不到.NET code。為了要達到這個目標,所有的scripting APIs都會暴露到或是由C++來控制,這當然不是最好的辦法,因為有很多編碼 snippets,與extensions 都不能用到你新的專案,而你不能再使用.NET,且C++會比JavaScript 甚至 C#還複雜!

但老實說,狀況可能也沒那麼糟,各位還是能夠受益於資產管理流程、shader語言、還有遊戲引擎提供的大量工具。我們還是很努力要維持這個JavaScript 與 C#的優雅流程,scripts還是能夠被及時地編輯,變數還是能夠在inspector顯示,還有其他很多功能並不需要C++做研發。基本上我們創造了以.NET為基礎的C++ compiler,讓我們能夠寫出在網頁平台上純然地C++ code 在iOS上。C++ code可以用Apple’s Xcode tools來編譯。

這的確會是很強大的組合,在Unity編輯器。你具有很快速的編譯,還有完全的測試環境,在機器上你有native C++效能,低的記憶體損耗,這組合了scripting languages與C++ code兩個關鍵優勢!

當你把以上串在一起你會發現直觀的遊戲邏輯,C++真的不複雜。期望到最後你不會看到往不好的方向發展,舉以下例子來說明:

以下例子顯示JavaScript函數要把一個物件沿著世界起點旋轉


就你所見在這簡單例子,你會發現code跟C++相比, 沒有什麼差異:

如果是更複雜的呢?

以上是JavaScript 用來最為加速器顯示,當使用者觸摸輸入時,使用者可以控制飛行器,並在遊戲中發射飛彈。
再次,以上編碼並沒有變的更複雜,拿C++ 與 JavaScript相比的話。如果跟C#相比差異會更小!

我們還是會持續期待iPhone、iPod touch 與 iPad 會是Unity遊戲開發者個目標平台,而我們不認為C++會是寫遊戲的最佳語言。使用C++作為scripting language具有記憶體與效能的優勢,在低階的硬體上。這對那些想要利用遊戲最佳效能表現的開發者是很好的功能。

我們還是不太相信Apple會強迫開發者去選擇特定的語言來開發遊戲,之前提到的 Apple還是會認可每個Unity設計的遊戲,當狀況改變時,我們就會走『B計畫』了!

我們還是會持續與各位分享相關消息,請密切注意奇銳科技為您帶的最新3DCG資訊!

沒有留言: