现在各大平台的游戏都在搞底层化,而说到这,自然要参考下游戏机上的设计
首先,我们来看看游戏机和PC/MP(我把手机平板等移动平台缩写为MP,Mobile Platform)的运行环境有什么不同。
在PC/MP上游戏和app统一在操作系统下运行,由操作系统统一管理软硬件,而在游戏主机上有很大区别。
早期游戏机并没有操作系统概念,比如FC到PS时代,只包含一个BIOS ROM,储存最基本的函数库,而图形库,驱动,UI等都集成在游戏内,由游戏本身提供,可以看成游戏就是操作系统。
接下来主要介绍全面进入3D时代之后主机,挑一些代表性的平台说。
世嘉的DC是第一个在游戏机上引入操作系统的平台(严格来说并不是第一,不过我们现在不纠结这个)。引入的是微软的Windows CE系统,包含一个基于DirectX 6.0的接口,为此微软还提供了完整的开发工具和环境,不过DC上用微软环境开发的游戏并没有几个。但是奇葩的是,DC还包含一个世嘉的更底层的native OS,大部分游戏都是基于native OS,native OS提供的library性能远比微软的接口强。

然后到大名鼎鼎的PS2,不同于DC,PS2没有什么复杂的操作系统环境,只在BIOS里集成了EE内核,OSD界面和IOP模块,一共加起来就4MB,后来推出的HDD Linux和游戏并没有关系。那么,PS2的API或者图形库是什么呢,然而实际情况是PS2压根没图形库,图形库得由开发商自己开发并集成到游戏中,以前硬件还没那么复杂没图形库就算了,到了PS2怪异又复杂的架构居然还没图形库,开发环境那叫一个不友好,为此出现了一个第三方的图形库GSKit。不过在全面了解PS2架构后,完全匹配化后的图形库确实可以最大限度的挖掘机能,所以我们可以看到PS2游戏的画面也是越来越好。

终于,老任在这方面发了一次力了,在NGC中加入了一个图形API,这个API不仅提供强大的性能,面对开发者又非常友好,因为非常类似于OpenGL,这个接口也一直被老任之后的各大主机所采用,就是老任自家的GX。游戏则依然是直接运行于硬件之上,开发商需要自己开发驱动。

微软并没有帮助世嘉打开多少市场,而微软本身对于和世嘉的合作似乎也不满意,终于打造了自己的游戏主机平台XBOX。先简单说下,XBOX的操作系统基于Windows 2000,包含Win32 API和DirectX 8.0,关于XBOX我会开贴详细说,这里就不多介绍了。
再到PS3/XBOX 360,操作系统开始变得复杂起来,两个平台都采用了Hypervisor的系统架构,这种架构把操作系统和游戏运行环境分割开来,所以我们在界面是感到用户界面很直观很好用,而在游戏过程当中也不会被系统干扰影响性能或者出现运行问题。
在PS3中,主要包含UI,Core OS和Game OS,UI(XMB)建立在Core OS之上,Core OS基于FreeBSD内核,PS3的CPU核心,PPE和其中一个SPE主要用于运行操作系统,而剩下的SPE则由游戏独占。当运行游戏的之后,Hypervisor切换到Game OS,此时硬件专注于游戏的运行,而系统则会保存在固定的内存空间中。PS3的API分为两部分,用于GPU的libGCM,和用于SPE的libSPE。SPE在PS3硬件中占据非常重要的地位,可以实现类似GPGPU的操作,在开发模式上,开发者可以回到以前的无library时代,自己开发定制的library,以此全面挖掘PS3的性能。不过这种架构也给开发者带来了不便所以出现早期画面简陋的情况。
XBOX360同样是Hypervisor架构,同样分离操作系统和游戏运行环境。XBOX360的操作系统基于Windows NT5.0内核,接口采用定制的DirectX,基于9.0和10.0之间。这个接口为CPU的矢量单元VMX做了优化,使VMX支持DirectX数据类型。XBOX360的环境比PS3友好的多,GPU还支持GPGPU,所以很多跨平台游戏画面都略好于PS3版。

至于本世代的PS4,XBOX ONE,以后也会开贴做更多说明的,这里先不做过多介绍了。主要说虽然在硬件架构上很接近PC,但软件架构上还是有这明显的差异化,这点不会改变。
本来掌机也要写在一起的,结果发现太长了,还是分开单独说好。
首先,我们来看看游戏机和PC/MP(我把手机平板等移动平台缩写为MP,Mobile Platform)的运行环境有什么不同。
在PC/MP上游戏和app统一在操作系统下运行,由操作系统统一管理软硬件,而在游戏主机上有很大区别。
早期游戏机并没有操作系统概念,比如FC到PS时代,只包含一个BIOS ROM,储存最基本的函数库,而图形库,驱动,UI等都集成在游戏内,由游戏本身提供,可以看成游戏就是操作系统。
接下来主要介绍全面进入3D时代之后主机,挑一些代表性的平台说。
世嘉的DC是第一个在游戏机上引入操作系统的平台(严格来说并不是第一,不过我们现在不纠结这个)。引入的是微软的Windows CE系统,包含一个基于DirectX 6.0的接口,为此微软还提供了完整的开发工具和环境,不过DC上用微软环境开发的游戏并没有几个。但是奇葩的是,DC还包含一个世嘉的更底层的native OS,大部分游戏都是基于native OS,native OS提供的library性能远比微软的接口强。

然后到大名鼎鼎的PS2,不同于DC,PS2没有什么复杂的操作系统环境,只在BIOS里集成了EE内核,OSD界面和IOP模块,一共加起来就4MB,后来推出的HDD Linux和游戏并没有关系。那么,PS2的API或者图形库是什么呢,然而实际情况是PS2压根没图形库,图形库得由开发商自己开发并集成到游戏中,以前硬件还没那么复杂没图形库就算了,到了PS2怪异又复杂的架构居然还没图形库,开发环境那叫一个不友好,为此出现了一个第三方的图形库GSKit。不过在全面了解PS2架构后,完全匹配化后的图形库确实可以最大限度的挖掘机能,所以我们可以看到PS2游戏的画面也是越来越好。

终于,老任在这方面发了一次力了,在NGC中加入了一个图形API,这个API不仅提供强大的性能,面对开发者又非常友好,因为非常类似于OpenGL,这个接口也一直被老任之后的各大主机所采用,就是老任自家的GX。游戏则依然是直接运行于硬件之上,开发商需要自己开发驱动。

微软并没有帮助世嘉打开多少市场,而微软本身对于和世嘉的合作似乎也不满意,终于打造了自己的游戏主机平台XBOX。先简单说下,XBOX的操作系统基于Windows 2000,包含Win32 API和DirectX 8.0,关于XBOX我会开贴详细说,这里就不多介绍了。
再到PS3/XBOX 360,操作系统开始变得复杂起来,两个平台都采用了Hypervisor的系统架构,这种架构把操作系统和游戏运行环境分割开来,所以我们在界面是感到用户界面很直观很好用,而在游戏过程当中也不会被系统干扰影响性能或者出现运行问题。
在PS3中,主要包含UI,Core OS和Game OS,UI(XMB)建立在Core OS之上,Core OS基于FreeBSD内核,PS3的CPU核心,PPE和其中一个SPE主要用于运行操作系统,而剩下的SPE则由游戏独占。当运行游戏的之后,Hypervisor切换到Game OS,此时硬件专注于游戏的运行,而系统则会保存在固定的内存空间中。PS3的API分为两部分,用于GPU的libGCM,和用于SPE的libSPE。SPE在PS3硬件中占据非常重要的地位,可以实现类似GPGPU的操作,在开发模式上,开发者可以回到以前的无library时代,自己开发定制的library,以此全面挖掘PS3的性能。不过这种架构也给开发者带来了不便所以出现早期画面简陋的情况。
XBOX360同样是Hypervisor架构,同样分离操作系统和游戏运行环境。XBOX360的操作系统基于Windows NT5.0内核,接口采用定制的DirectX,基于9.0和10.0之间。这个接口为CPU的矢量单元VMX做了优化,使VMX支持DirectX数据类型。XBOX360的环境比PS3友好的多,GPU还支持GPGPU,所以很多跨平台游戏画面都略好于PS3版。

至于本世代的PS4,XBOX ONE,以后也会开贴做更多说明的,这里先不做过多介绍了。主要说虽然在硬件架构上很接近PC,但软件架构上还是有这明显的差异化,这点不会改变。
本来掌机也要写在一起的,结果发现太长了,还是分开单独说好。
