《星际争霸2》技术:单位脚本提取成功 大众化修改让游戏未来无限可能


《星际争霸2》技术:单位脚本提取成功 大众化修改让游戏未来无限可能


近期喜闻SC2终于BETA测试,作为一名星际争霸的老爱好者,我便兴致勃勃地研究了一下星际争霸2beta的内部文件 。
惊喜地发现星际争霸2没有大量的加密措施,整个游戏的设定都是开放式的,但是目前本人还没有获得BetaKey,所以只能在以下文件中找到一些蛛丝马迹 。
脚本语言&风格概述:
不能说星际争霸2完全放弃了魔兽3的c语言编译模式,毕竟暴雪还保留了一些类似java的语言 。
也许是因为现任星际争霸2首席设计师Dustin早年参与开发过EA旗下的命令与征服:红色警戒2以及命令与征服:将军,还有魔戒中土大战系列 。即使Dustin口称没有把一点点西木和EA的风格带入星际争霸的,但是无论从星际争霸2的模型、理念以及地图设计,乃至代码的语言及编写风格都和Sage引擎游戏颇为相似(Sage,Strategy Action Game Engine,战略动作游戏引擎,为西木开发,现为EA使用) 。
xml语言以及单位代码集成在一个文件里的编写习惯使编写过将军mod和红色警戒3mod的modder们不免感到一丝亲切 。
接下来让我们从代码粗略地了解一下星际争霸2的游戏架构:
1.单位代码段
所有的单位代码都集中在Unit.xml中,每段单位代码都有严谨的排列 。
我们举最熟悉的单位马林(陆战队)来一睹星际2代码的风采 。(代码略)
评价:
也许普通玩家看到之后会不寒而栗,但是我想职业的modder们一定认为这不算什么 。
与命令与征服3的单位代码相比较,暴雪将逻辑性的代码集中在一起,包括建造时间,生命值,人口等,而将单位模型、动作集中到另一个xml中(待会会解析) 。与C&C3的将逻辑和单位技能以及单位模型绘制代码集成到一个文件中的繁琐度相比,暴雪的代码也许更加人性化,然而还有一个缺点,不如将每一个单位以独立的文件存在,而不是统统在一个文件里 。
分析:
这里是指"初始生命值"?
这里是指"最大生命值"?
这里定义了陆战队的装甲 。
这里定义了速度......
然而最令人兴奋的是,星际2可能还有魔兽争霸中经验值升级的功能:
可能意味着在某张正式版的地图中,杀死一个陆战队你将获得10点经验值!
2.武器&装甲以及升级&技能
武器定义在WeaponData.xml文件中,其他可以以此类推
我们可以列举一段SCV的焊人武器

可以看到,SC2的武器定义还是很简单的,也就是说,还有很大的扩展空间,我们可以试着在正式版中进行修改,创建自己的武器 。
3.模型绘制代码&特效
我们知道,为了使星际2成为一款大众化的竞技游戏,暴雪不惜牺牲了这款游戏的画质,我们究竟是要理解暴雪还是谩骂暴雪跳票半年出品的居然是这么一款画质平平的游戏?
我想我们应该给予理解 。
模型代码都集中在Model.xml中,特效都集中在Effectdata.xml中
我们还是来看看陆战队的绘制部分吧 。(代码略)
首先映入眼帘的并不是马林的主要绘图部分,而是马林的全部四种死亡动画,分别为普通死亡,腐蚀死亡,爆炸死亡以及燃烧死亡,由此可见暴雪在死亡动画上做的还是比较细致的,作为同类游戏的C&C3以及Ra3的步兵死亡动画仅仅是以骨骼动画的扭动来完成 。而在SC2中,我们相比已经看到血腥真实的死亡动画(光电会不会河蟹呢?)

推荐阅读