軟件設計最底層是什麼?固然是硬件平臺了。書裏其實有點迷惑,說硬件呢,爲啥要說Microsoft Windows, Linux and MacOS-based PCs這種系統呢?其實目前的PC,應該能夠安裝各類系統吧。我想這一層是硬件設備。包括桌面計算機(PC,固然也包括筆記本吧),手持設備包括各類的phone,pad,主機遊戲設備XBOX,PS,WII等。這一層能考慮什麼呢,首先手持設備的特性,尤爲像wii之類特殊的,還有屏幕分辨率等都是要考慮的,另外設備升級,好比增長了方向盤,或者頭盔顯示器,或者能監測身體機能的躺椅,還有如今高大上的虛擬現實的OC等等。從我的經驗來講,務必要關注這些硬件平臺的發展,好比吧,天龍八部,首先07年在PC上火了,而後呢,14年在手機上火了。英雄戰魂在12年就火了,忘仙09年就在手機上火了,這些硬件平臺的發展,會讓你倔到第一桶金,說不定下一個平臺是OC,下一個重度網遊領域會在OC上,那麼咱們就要不斷關注它,積極去準備。雖然如今大體就是MMOARPG方向,可是也不要侷限本身的思想,當前看到的資料即便用不上,那也要想一想怎麼能應用到其餘遊戲類型。linux
而後是驅動層。驅動層首先是個軟件,這就說是程序代碼組織起來的。由操做系統或者硬件提供,這一層你要考慮什麼呢,驅動版本的異常會致使底層不少問題,相信玩PC遊戲的時候都會有這樣的經歷,你的顯卡驅動不是最新的,會致使沒法運行遊戲,聲卡不是最新的,會致使不會播放音樂等。若是玩家報說玩不了遊戲,卻是可讓他檢查下各類驅動版本,好在如今有工具。android
操做系統層。三大PC平臺:windows,linux,Mac。這裏windows天然不說了,國內大多數仍是用這個。Mac算是小衆吧,通常大做會發這個平臺,屌絲們用的少。linux就更專業了,就不是大衆玩家玩的懂的玩意兒。主機平臺:XBOX,PlayStation,任天堂的DS,GameCube,WII等,好吧,哥比較土,更加屌絲,沒買過,也不是遊戲的熱衷分子,每天忙着coding了。移動平臺:IOS,ANDROID,黑莓,塞班等,記得07年的時候塞班系統相關的招聘還很火,當時還考慮要不要搞搞,真是昨日黃花了。在這一層裏,軟件開發關注的是什麼呢?API,即系統給了我哪些API能夠調用。萬一有的平臺能夠用這個,有的只能用那個,那你就要作跨平臺的封裝了。至少涉及平臺相關的要沉澱下去,作成插件機制。回過頭來,對於Unity呢,它的很大的優點就在於快速開發跨平臺產品的能力。屬於它的很大的一個優點。平臺層的問題有什麼呢?最明顯的例子就是IOS系統和android系統的不一樣,一個是AOT,一個是JIT,那麼當你去設計時,這兩大平臺的要求你就得考慮了。好比DLL動態更新代碼,在Android上能夠實施,但ios上就沒戲,但你又想作熱更新怎麼辦,這時候問題就來了。不一樣的平臺,你在開發的時候是否是要注意什麼呢,好比Unity在打包的時候,能在windows上作ios的安裝包嗎,固然如今能夠了,可是以前Unity要求你只能在mac機上作。對於平臺,你針對的操做系統版本最低是什麼,哪些版本不支持,這些要考慮清楚,你在提交到渠道的時候都須要寫清楚。想起來,有一次咱們製做人在玩遊戲,發現遊戲忽然變的不正常了,渲染什麼的都亂了,查了半天,發現是當天微軟發佈了一個補丁,而後製做人就默認安裝了,裝完後沒有重啓,遊戲就各類不正常了。這一層能夠考慮的問題不少,之後有機會再加吧。ios
再往上,是第三方SDK,我想做者應該是假設這些和你開發的遊戲引擎無關,,基本上都是些你想改也改不了的中間件,所以放到這一層了。卻是能夠想一想我如今搭的架構,是否也能夠拆分出這一層來。windows
接下來,平臺無關層,這一層其實實現的就是不一樣系統跨平臺的抽象與實現。例如,不一樣的OS提供有不一樣的文件系統訪問接口,網絡通訊接口,線程庫,圖形接口,物理碰撞等等。這些都將抽象成一層跨平臺的實現。提及來就一句話,想一想真心複雜。網絡
核心系統。以下圖所示:架構
這一層看起來是底層技術的集合,包括斷言,單元測試,內存處理,數學工具庫,字符串,調試和打印工具,本地化,視頻播放,配置文件解析器,性能監測工具,隨機數生成器,文件IO,內存卡IO等等。這一層不少方面都由Unity實現了。工具
資源管理器。性能
對於資源管理器,雖然有不少經歷可說,但如今靜不下心來,真愁死了。單元測試