假設你是一家大公司,並製作一部巨大的,大片的標題,將瞄準PC,Mac,Xbox和PS3。假設您選擇了C++,因爲大多數工作室都傾向於這樣做。你寫的哪部分是可移植的代碼?是否可以真正寫一個便攜式遊戲?如果你去一個新的平臺,你是否必須重寫渲染引擎和用戶界面?在現代遊戲設計中,遊戲的哪些部分被編寫爲便攜式?
4
A
回答
2
一個有教養的猜測是,除硬件相關的代碼之外的所有東西都被寫成可移植的。即遊戲邏輯,矢量圖形,聲音(?)是(相當)便攜式,圖形輸出,內存管理,時間不是(總是)。
有了很好的庫選擇,人們可以最大化便攜式代碼的數量。
1
你當然不能要求你的PC玩家使用360控制器。
渲染和用戶界面必須至少從頭開始重新完成。此外,另外,其他操作系統相關的功能(如聯網)也可能需要重新進行改造。畢竟,boost::asio
可能無法在PS3上運行。一些其他處理器特定的東西,如矢量化
但是,理想情況下,遊戲將盡可能多地使用便攜式代碼。
1
通常,我會假設是否有物理引擎,這將是便攜式。玩家系統,如健康,庫存,NPC行爲等也將是平臺獨立的。你將不得不重寫渲染引擎,這很可能取決於遊戲的控制檯。由於必須與不同的控制器進行交互,用戶交互可能會有一些重寫,而這些控制器很可能在每個控制檯中以不同方式訪問。
一般情況下,如果代碼與控制檯的API交互,渲染,矢量化,用戶界面,輸入等將不得不重寫。像物理學,基本行爲,Ai和健康庫存管理等基本代碼並不需要重寫。
所以最後:如果它依賴於硬件,它將不得不被重寫或重構。
1
堅持DRY原則還導致更便攜的代碼,因爲任何非可移植的代碼都是本地化的。
例如,避免在代碼中多次執行此操作:
#if defined(PC)
// create a network connection PC-style
#elif defined(XBOX)
// create a network connection XBox-style
#elif defined(MAC)
// create a network connection Mac-style
#elif defined(PS3)
// create a network connection PS3-style
#endif
,而是,做一次,創建一個功能
createNetworkConnection();
您在多個地方使用。
相關問題
- 1. 遊戲循環中游戲對象的設計模式
- 2. 爲RTS遊戲實現多人遊戲
- 3. 將遊戲實現爲快速遊戲
- 4. Spritekit遊戲設計
- 5. 遊戲編程中的課堂設計
- 6. 讓遊戲出現在遊戲列表
- 7. 處理PGN(便攜式遊戲符號)文件中的變體
- 8. 哪個遊戲編程API?
- 9. 你應該在遊戲中首先執行哪些部分?
- 10. 爲FPS遊戲編寫XNA遊戲服務器的最佳方式是什麼?
- 11. 遊戲設計的協程?
- 12. 遊戲設計的編碼錯誤
- 13. 編寫蛇遊戲演示
- 14. 2D遊戲的代碼設計
- 15. openGL的遊戲設計方式的OSX
- 16. 遊戲編程實現塊
- 17. Android棋盤遊戲實現設計
- 18. iphone多人遊戲設計
- 19. 設置遊戲計時器
- 20. 紙牌遊戲設計
- 21. Java遊戲對象設計
- 22. C++/OOP遊戲設計
- 23. Libgdx資產遊戲設計
- 24. 遊戲結構設計
- 25. C++遊戲設計原則
- 26. MVC遊戲設計Java
- 27. 紙牌遊戲設計
- 28. 遊戲界面設計
- 29. 貪吃蛇遊戲設計
- 30. Cocos2D遊戲元素設計
我儘可能合理地假設。 – someguy 2012-07-29 15:19:47