作為遊戲開發者,同時也是Linux的使用者,我們會在自己的專案中儘可能地支援更多平臺。因為看到許多開發者在reddit和Twitter上鼓推這一主題,所以我們決定在此分享我們所掌握的知識。
“跨平臺開發是很昂貴的”
這是遊戲開發中一種常見的誤解,我們也希望能夠清楚地告訴你們如何在避免花費過多成本的前提下支援跨平臺(桌上型電腦,手機和主機)開發。
在後半部分內容中我們會提供自己的測試建議並推薦一些較便宜的硬體。
移植很危險
大多數開發者都是面向一個系統開發遊戲,並在近乎完成的時候開始“移植”遊戲。這將會在遊戲開發末尾引致一些全新要求。來自軟體工程師和專案管理者都知道,這種事後要求有可能摧毀整個專案。
有許多遊戲在公開linux發行後便掉進了這種陷阱中。像《Gauntlet》,《Divinity:Original Sin》和《Contagion》便是最近的一些典例,它們都因為各種原因而不能完成其linux版本遊戲。雖然這些遊戲工作室已經有好幾年的Windows開發經驗,但對於他們來說跨平臺卻是一個全新領域。
我們希望能夠幫助你們避開這些陷阱並開啟成功的跨平臺之旅。
跨平臺的心態
當你在計劃開發一款跨平臺遊戲時,你應該使用能夠交叉編譯你的目標平臺的遊戲引擎。此外你還需要專注於一些要點:
- 縱橫比—-你可能會遇到需要將4:3的內容變成21:9的比例
- 螢幕大小—-包括智慧手機,平板電腦和桌上型電腦。其範圍可能是從4英寸到40英寸以上不等。
- 通過仿效不同的螢幕大小你便能夠輕鬆應對這兩個要點。
- 音訊和視訊解碼器—-不同平臺支援不同的解碼器。
- 平臺特定的設計功能—-不同平臺擁有不同的介面和功能。
桌上型電腦
多虧了Valves SteamPlay,面向三個常見的桌面平臺發行遊戲變得更普遍。毫無疑問,Windows擁有最大的市場份額,但是OSX和Linux的使用者更樂意購買相關平臺的遊戲以支援平臺開發。
三個平臺的輸入方法幾乎都是一樣的。但是你必須留意第三方外掛和框架的相容性。除此之外,你還需要測試一些重要的差異:
不同平臺的檔案系統是不同的。甚至連路徑語法也是不同的。
- Windows—-不區分大小寫,主目錄:C:UsersDude
- OS X—-不區分大小寫,主目錄:/Users/Dude/
- Ubuntu/SteamOS—-區分大小寫,主目錄:/home/Dude/
- 顯示卡驅動程式—-Intel,AMD和nVidia驅動程式在不同平臺是不同的。你必須儘早測試它們的功能(注:如色器模型版本)和相容性。
你的遊戲是否有效整合到平臺的管理器中了?
手機
在手機平臺上你將看到其它輸入方法,即你必須將其與桌上型電腦輸入方法結合在一起。這型別平臺擁有最多樣化的顯示方式。以下是手機平臺間存在的一些特殊區別:
與Windows Phone相比較,Android和iOS上的檔案系統是區分大小寫的。
不同平臺間的檔案系統訪問許可權是不同的。
Windows Phone 8.1只支援shader model 2。
受歡迎的Unity的“Spine”工具並不支援Windows Phone。開發者知道該問題及其解決方法,並且他們好像不打算解決它。你必須為了平臺相容性而不斷檢查相關資產。
在Unity,如果你面向的是Windows Phone,那我們推薦使用Mono編譯器而不是微軟具有最大相容性的編譯器。
主機
免責宣告:幾乎所有關於主機開發包的東西都是基於保密協議。因此我們不能告訴你我們是否擁有任何主機開發包。我們能夠提供的資訊都是一些面向公眾的資訊。
當前的主機擁有與桌上型電腦相似的硬體以及與手機相似的應用生態系統。我們將討論測試環節中的開發包。
主機平臺擁有以下的區別:
主機支援不同的著色語言:
- Xbox One:HLSL(Direct X 11)
- PlayStation 4:PlayStation Shader Language(GNM,GNMX)
- Wii U:??? (GX2)
- Unity:GLSL著色器不能交叉編譯
遊戲通常是執行於沙盒中,這將限制你的檔案系統的訪問許可權
不要遺漏一些特殊的外圍工具,如Wii控制器
跨平臺遊戲測試
裝置是非常昂貴的。特別是對於獨立開發者來說,當你剛起步時你是不可能購買所有可行的系統。然而如果你遵循我在上述所提供的建議,你在一開始便只需要一個較小的測試環境。
如果你開發的並不是原生跨平臺多人遊戲,你便只需要確保你的遊戲是從所有的系統起步便可。
如果你使用了Unity,Java或其它跨平臺環境,你便可以假設交叉編譯器/虛擬機器能夠確保你的遊戲在所支援的所有裝置上保持邏輯的一致性。
隨機選擇一個系統去測試一個新功能是一種好方法,因為對於遊戲邏輯測試來說平臺並不是很重要。
在發行任何版本的遊戲前,你應該明確地在每個目標平臺上測試遊戲。如果你忘記任何微小的重屬性,這可能會導致非常尷尬的情況。
最小的測試環境
免責宣告:我們的總部在德國,所以所有價格都是基於德國的零售價(更新於2015年10月)。
讓我們假設我們正在使用Unity 5開發一款遊戲,即我們需要謹慎對待所有跨平臺問題(遊戲邦注:如不同的紋理格式)。
我們的潛在目標平臺是:
- 桌上型電腦—-Windows,OS X,Ubuntu/SteamOS(Linux)
- 手機—-iOS,Android,Windows Phone 8.1
- 主機—-Xbox One,PlayStation 4,Wii U
我們想要減少我們需要購買的裝置數量,但卻仍希望能夠有效地測試我們的遊戲。通過使用上述建議,我們建議你在最初測試環境中的預算不要超過200歐元。
桌上型電腦
這些平臺都比較相似。如果你遵循我們在上面的建議,你便能夠使用你的開發機器先測試遊戲了。你可以在你的Windows(或OS X)計算機上安裝linux並基於區分大小寫與不區分大小寫的系統去測試你的遊戲。你應該確保你的遊戲能夠有效執行於Windows(或OS X)以及Ubuntu WIndow Managers上(最小,全屏)。
這些平臺提供了相似的外圍裝置,支援鍵盤/滑鼠以及控制器輸入內容。我們建議你最好購買一臺Xbox 360控制器,因為“plug’n play”相容性支援Windows和Linux系統。對於Mac,你還需要一個驅動程式。
推薦的“初始”桌面設定(30歐元):
你的開發計算機(如果它是基於較低解析度的影像而執行,這也足夠了)
Xbox 360控制器(30歐元,全新的)
手機
儘管手機裝置擁有相同的觸屏外圍裝置和感測器,但是它們的OS卻具有很大的區別:iOS,Android和Windows Phone的檔案系統訪問也是不同的,所以你應該在遊戲發行前去測試所有的檔案操作。
我們建議你能夠購買擁有高通四核CPU和1GB記憶體的最便宜的觸屏裝置。
推薦的“初始”手機設定(70至150歐元):
Windows Phone—-微軟Lumia 532(我們花了70歐元買了一臺全新的)
可選擇的:最便宜的Android平板電腦是Amazon Fire(75歐元)
主機
當你在面向主機開發一款遊戲時,你應該協調好計算機和控制器(Xbox 360控制器能夠作用於Windows和Ubuntu/SteamOS)。
這裡常出現的一個話題便是主機開發包的價格。索尼和任天堂對於PlayStation 4的開發包的價格還保持著沉默,而微軟則表示如果他們認同你的遊戲理念便能夠免費提供給你Xbox One開發包。
我們建議你能夠先使用免費的Xbox One開發包,然後再選擇其它開發包(遊戲邦注:因為開發包通常都不便宜)。
主機制造商都會要求你簽訂一份帶有保密協議的合同。你應該仔細閱讀這兩份檔案。檔案可能會包含你可以使用開發包多長時間以及有關你的遊戲發行等重要資訊!
完成測試環境
在面向所有平臺發行你的遊戲前,我們必須在真正的硬體上測試它。以下設定將花費大概2350歐元,包括蘋果的OS X和iOS。當然了你可以暫時使用朋友的系統去節約成本。
比較起來,只有Windows版本的我們完整的桌面設定只省下關於Mac Mini的500歐元。
- 推薦的“完整的”桌面硬體(1630歐元左右):
- 帶有具有整合GPU和雙重引導的AMD A10 CPU:Windows 10和Ubuntu 14.04(400歐元左右,全新的)
- 帶有Intel CPU+整合GPU+具有雙重引導的專用的nVidia GPU:Windows 10和Ubuntu 14.04(500歐元左右,全新的)
- 如果你很有錢的話,你可以買一臺帶有nVidia GPU的MAC(在ebay上是1500歐元左右)以及帶有AMD GPU的Mac(2000歐元全新的)
- “Hackintoshes”是非法的。所以我們不需要在這裡討論它。
- Xbox 360控制器(大概30歐元左右,全新的)
- PC的兩個Windows 10授權(200歐元左右)
Windows 7和Windows 8.1將繼續擁有不錯的市場份額,所以你應該確保你的遊戲能夠開始並執行於這些較早的OS上。
推薦的“完整的”手機硬體(695歐元左右):
- Windows Phone:微軟Lumia 532(我們花了70歐元買了一臺全新的)
- Android:Motorola Moto G第一代(150歐元全新的)
- Windows:你可以購買一臺擁有更好的驅動程式的Nexus 5(320歐元左右)
- 最便宜的Android平板電腦是Amazon Fire(75歐元)
- iOS:iPad mini 4(400歐元左右)
通過購買Lumia 532,Moto G,Kindle Fire和iPad mini 4,你便能夠測試最重要的縱橫比以及螢幕大小,同時還能涵蓋所有主要的手機OS。你必須記住大多數工作流程都需要一臺Mac去配置iOS。
結論
當我最初開始開發跨平臺軟體和遊戲時,我們非常驚訝於程式碼庫所呈現出的諸多好處,因為跨平臺程式碼不需要對根本作業系統做出過多假設。基於如Unity 5等現代引擎,跨平臺開發變得更加簡單了。