软件设计最底层是什么?当然是硬件平台了。书里其实有点迷惑,说硬件呢,为啥要说Microsoft Windows, Linux and MacOS-based PCs这种系统呢?其实目前的PC,应该可以安装各种系统吧。我想这一层是硬件设备。包括桌面计算机(PC,当然也包括笔记本吧),手持设备包括各种的phone,pad,主机游戏设备XBOX,PS,WII等。这一层能考虑什么呢,首先手持设备的特性,尤其像wii之类特殊的,还有屏幕分辨率等都是要考虑的,另外设备升级,比如增加了方向盘,或者头盔显示器,或者能监测身体机能的躺椅,还有现在高大上的虚拟现实的OC等等。从个人经验来说,务必要关注这些硬件平台的发展,比如吧,天龙八部,首先07年在PC上火了,然后呢,14年在手机上火了。英雄战魂在12年就火了,忘仙09年就在手机上火了,这些硬件平台的发展,会让你倔到第一桶金,说不定下一个平台是OC,下一个重度网游领域会在OC上,那么我们就要不断关注它,积极去准备。
然后是驱动层。驱动层首先是个软件,这就说是程序代码组织起来的。由操作系统或者硬件提供,这一层你要考虑什么呢,驱动版本的异常会导致底层很多问题,相信玩PC游戏的时候都会有这样的经历,你的显卡驱动不是最新的,会导致无法运行游戏,声卡不是最新的,会导致不会播放音乐等。如果玩家报说玩不了游戏,倒是可以让他检查下各种驱动版本,好在现在有工具。
操作系统层。三大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机上做。对于平台,你针对的操作系统版本最低是什么,哪些版本不支持,这些要考虑清楚,你在提交到渠道的时候都需要写清楚。想起来,有一次我们制作人在玩游戏,发现游戏突然变的不正常了,渲染什么的都乱了,查了半天,发现是当天微软发布了一个补丁,然后制作人就默认安装了,装完后没有重启,游戏就各种不正常了。这一层可以考虑的问题很多,以后有机会再加吧。
再往上,是第三方SDK,我想作者应该是假设这些和你开发的游戏引擎无关,因此放到这一层了。