为XNA制做安装程序(一)综述
如果客户机上安装了所需要的组件是最好不过的了,最简单的方法就是在Release模式下将bin目录中成生的文件打包,这样还可以做到绿色版本。
也可以使用visual studio自带的“发布”功能,或制做一个“安装和部署”的项目,再或者使用Wix做一个安装程序,虽然XNA游戏可以在Xbox和Zune中运行,但本文着重阐述XNA游戏在Windows平台下安装运行的情况。同时也为制做其它类型的安装程序做为参考。
XNA在国内还算是新兴的东西,而且运行条件也十分苛刻,要考虑操作系统、.net版本、XNA版本、DirectX版本、显卡配置等,现在我们想办法支持最多的情况。
XNA游戏的运行需要XP SP2以上的操作系统,且不支持服务器系统,需要至少.NET2.0的支持(而且要先安装.NET Framework才能安装XNA运行组件),DirectX9.0c以上的版本,显卡需要至少支持Shader Model 1.1(推荐支持Shader Model 2.0以上的显卡)。
操作系统支持情况(均为内置情况):
操作系统 | .NET版本 | XNA版本 | DirectX版本 | Shader Model(主要取决于显卡) |
Server 2000 | 不内置 | 不支持 | 7.0 | 不支持 |
XP | 不内置 | 不支持 | 8.1 | 1.1 |
XP SP1 | 不内置 | 不支持 | 9.0 | 2.0 |
XP SP2 | 不内置 | 不内置(支持) | 9.0c | 3.0 |
XP SP3 | 不内置 | 不内置(支持) | 9.0c | 3.0 |
Server 2003 | 1.1 | 不支持 | 8.1 | 1.1 |
Server 2003 SP1(R2) | 1.1 | 不支持 | 9.0c | 3.0 |
Vista | 2.0 | 不内置(支持) | 10 | 4.0 |
Vista SP1 | 2.0 | 不内置(支持) | 10 | 4.0 |
Vista SP2 | 2.0 | 不内置(支持) | 11 | 支持 |
Windows 7 | 3.5 | 不内置(支持) | 11 | 支持 |
XNA不能运行在服务器版本,所以玩家使用的操作系统主要集中在XP(SP2,SP3),Vista和Win7。一般来说,能启动Aero的显卡就已经可以跑得起XNA做的视频游戏。
因为手上没有Windows 2008的任何版本做实验,所以这里没有列出来。
.NET主要版本(简体中文):
.NET版本 | 向下兼容情况 | 可再发行组件包大小(简体中文x86) | XNA |
1.1 | - | 23.2M | 不支持 |
2.0 | 不兼容1.1 | 22.4M(语言包加其它总计约28M) | 支持 |
3.0 | 兼容2.0 | 50.3M | 支持 |
3.5 | 兼容2.0,3.0 | 218M | 支持 |
3.5 SP1 | 兼容2.0,3.0 | 231.5M(完整安装包) | 支持 |
4.0 | 兼容2.0,3.0,3.5 | 未发布正式版 | 未知 |
1.1不被后面的版本兼容,2.0做为后续版本的基础被完全兼容,而且XNA安装的最低要求是2.0,所以最好以2.0为基础进行开发,3.5的可再发行组件包太大也是一个不推荐选用的原因,可以等到Windows7完全普及再做考虑。总的来说.NET2.0和XNA的内置函数功能已经够用。
XNA主要版本(英文):
XNA版本 | 向下兼容情况 | 可再发行组件包大小 | 发布时间 | 开发平台 |
Express | - | - | 2006年12月11日 | Visual Studio 2005 |
Express 1.0 | - | 1.9M | 2007年4月24日 | Visual Studio 2005 |
2.0 | 不兼容1.0 | 2.1M | 2007年12月13日 | Visual Studio 2005 |
3.0 | 不兼容2.0 | 7.6M | 2008年8月30日 | Visual Studio 2008 |
3.1 | 兼容3.0 | 7.3M | 2009年3月24日 | Visual Studio 2008 |
如果您是从现在才开始开发XNA程序,那就从最新的3.1开始吧。1.0已经成为历史,2.0的游戏虽然可以在编写项目时基本无损的升级到3.0或3.1 ,但是由于兼容性不好的问题,安装了3.0的玩家还需要再安装2.0才能玩由2.0开发的游戏,对用户来说相当的不便。
3.1可以兼容3.0的功能并有很多有用的扩充,可再发行组件包也小了300K,推荐使用。然后就是希望所有XNA2.0的游戏作者都将自己的作品升级到3.1。
下面简单计算一下各种情况下用户所需要的组件及附加安装包大小。
XNA游戏 | 附加安装包容量 |
XNA2.0+.NET2.0 | 2.1+28=约30M |
XNA3.0+.NET2.0 | 7.6+28=约36M |
XNA3.0+.NET3.5 | 7.6+231.5=约240M |
XNA3.1+.NET2.0 | 7.3+28=约36M |
XNA3.1+.NET3.5 | 7.3+231.5=约240M |
综上所述笔者推荐游戏开发时使用XNA3.1+.NET2.0的架构,XNA框架是所有平台用户必须装的,就选用较新又较小的XNA3.1版本,对于.NET Framework,为照顾XP用户,使用较小容量的.NET2.0版本。所以附加安装包大约为36M,再考虑一下游戏自身的大小,精品游戏在100M以内,附加包占用3分之1的容量基本是可以忍受的。相反如果100M的游戏,附加安装包就有240M,用户也许会无法忍受。
关于显卡,一般来说DirectX 8.0以上都可以运行XNA游戏,但某些老显卡因为配置太低无法开启Shader功能,也不能运行XNA游戏或开发。虽然 ATI 7xxx 系列和 NVIDIA Geforce2/Geforce4 MX 系列显卡也有一定的像素管线,但是它们不够灵活,不能运行Shader 1.0。Shader Model 1.1是游戏开发(渲染)的第一个标准,在DirectX8.0首次被支持。以下部分显卡支持型号仅供参考:
显卡型号与支持情况:
Pixel Shader 版本 | DirectX版本 | ATI | Intel | NVIDIA | S3 Graphics | XGI | |||
1.0/1.1 | 8.0 | - | - | - | - | GeForce 3 series | - | Xabre-Series | - |
1.2 | 8.0a | Wildcat VP | - | - | - | - | - | - | - |
1.3 | 8.0a | - | - | - | Parhelia series | GeForce 4 Ti/Go series | - | Mirage 2 | - |
1.4 | 8.1 | - | - | - | - | - | - | Volari V3 series(except V3XT) | |
2.0 | 9.0 | Wildcat Realizm | Radeon R300 (9500-9800, X300-X600) | Intel GMA 900, 950, 3000, 3100 | - | - | DeltaChrome,GammaChrome,Chrome S2x series | Mirage 3, Mirage 3+ | Volari V3XT, Volari V5 series, Volari V8 series, Volari 8300, Volari XP10 |
2.0a | 9.0a | - | - | - | - | GeForce FX series | - | - | - |
2.0b | 9.0b | - | Radeon R420 (X700-X850) | - | - | - | - | - | - |
3.0 | 9.0c | - | Radeon R520 (X1300-X1950) | Intel GMA | - | GeForce 6 series,GeForce 7 series | - | - | - |
4.0 | 10 | - | Radeon R600 (HD 2400-HD 2900) | Intel GMA X3100, X3500 | - | GeForce 8 series,GeForce 9 Series,GeForce 200 Series,Quadro FX 1700 | - | Mirage 4 | - |
4.1 | 10.1 | - | Radeon R600 (HD 3xxx), Radeon R700 (HD 4xxx) | Intel GMA 500 | - | - | Chrome 400 Series | - | - |
显卡不支持无论对于XNA玩家还是开发者来说都是一个悲剧。
最理想的状态应该是用户已经安装了.NET3.5和XNA3.1,这样就可以发布绿色版本。
如果你建立的项目是.NET3.5的架构,需要首先在项目属性里设置应用程序的目标Framework的版本为2.0,某些项目可能不能正常转换,可能要修改一些代码。查看项目引用中的Microsoft.Xna.Framework文件版本就知道是XNA3.0还是3.1,如果是3.0的,项目的右键菜单里会有一个Upgrade Solution选项,点击升级即可:
然后将Visual Studio的解决方案配置修改为“Release”,这样可以以发布状态进行编译而不是调试状态:
在解决方案管理器中,右键单击项目根目录的名称,点击“生成”或是在此项目中按F6:
当左下角的状态栏或是输出窗口(Ctrl+W,O)中显示生成成功。上图中有人会注意有一项:Package as XNA Creators Club Game,这的确也是XNA游戏发布的一个打包方式,点击后VS08会将你的项目文件生成一个单一的文件*.ccgame,这种文件格式并不被windows系统默认支持,装了XNA可再发行组件包也不能使用,必须要安装XNA Game Studio才能打开,其中也不包含.NET和XNA可再发行组件包。可以把它看做是一种官方的压缩格式,可以被Xbox和Zune识别,也可以上传到官方网站发布游戏。但在这里不使用这种方法。
打开项目所在目录:项目目录\bin\x86\Release下,将其中的.exe文件和Content目录复制出来打包就可以发布了,这里具体需要使用的文件和目录会因你的项目不同而有所出入,.application,.exe.config,.manifest是供发布使用的文件,稍后我们会遇到,.pdb文件是供调试使用的,都不用发布出去。
当然这只是种临时的解决方法,我们在调试的时候不必每次都要安装卸载,下一篇将以一个宝石游戏的发布为例,开始讨论如何做一个包含.NET和XNA可再发行组件包的安装程序的步骤。
希望本文能对您有所帮助。
未完待续
参考:
ccgame格式:http://msdn.microsoft.com/zh-cn/library/bb464158(en-us).aspx