找回密码
 点一下
查看: 1333|回复: 10

简单说说星际2编辑器到底是如何运作的

[复制链接]
发表于 2014-12-30 00:08:59 | 显示全部楼层 |阅读模式
本帖最后由 ff1407 于 2015-1-3 19:45 编辑

上段时间就曾经想把自己学到的分享下,结果没时间。今天刚好有时间,详细介绍做不了,就概括性的说说演算体和游戏数据逻辑的关系吧。感觉这东西对新手比较重要。

星际2的编辑器在使用时可以大概分为两部分。

1. 运行时的数据逻辑部分。这里包换数据编辑器里的非演算体部分和触发器里的各种逻辑。这里的所有数据和效果都仅仅是数据层面上的东西,他们本身不会真的产生图像和声音(触发器里强制调用函数播放动画或声音的除外)。

2. 监听数据逻辑事件来播放媒体效果。详细一点说,就是演算体(actor)通过监听数据逻辑部分所出发点各种事件来确定各种效果的播放开始时间。
(演算体,在星际2引擎里负责播放各种3D动画和声音,并且包含播放相关的参数设置。)

于是乎,各种东西的制作也分为两部分,数据逻辑部分和演算体部分。
举个例子:
一个导弹从一个单位射出,飞行一段时间后打中目标爆炸并造成伤害。
这里的数据逻辑可以为武器的效果里先关联一个持续一段时间的效果,然后在持续效果里关联一个结束时刻的立即伤害效果。这里两个效果都是数据逻辑效果,不会有任何图像声音各等东西。但这些已经足够为游戏运行核心提供足够的数据支持。于是乎,完成这部分后可以对目标单位造成实实在在的伤害数据。
接着就是演算体。缺少演算体游戏依然可以运行,但除了看到数值改变外,玩家不会有任何视觉和听觉反馈。还是用会上面的例子,我们会用演算体监听武器开始攻击的时刻,在那时候创建一个导弹模型,在把攻击单位和被攻击单位分别作为导弹飞行的出发点和目标点,设置上一个飞行时间或速度,于是导弹就会飞啦。接着创建演算体来监听那个伤害效果,在效果发生时在效果所在单位的点播放一个爆炸动画和声音。这样玩家就能看到数据改变又看到攻击图像和声音啦。

当大家学习技能时会时常看到一些在数据逻辑上完全无用的效果构造,这些东西一般都是为挂载演算体服务。如果大家对演算体的运作有兴趣,可以去了解坦克的变形技能,我们除了需要在技能数据里指定新单位类型,还得在演算体里设置技能完成时摧毁旧坦克模型演算体和换上新坦克模型演算体。

============经提醒后,我对以下内容修改过修改(下划线部分为修改该后的)==================
在联网时,我们可以认为,服务器同步着游戏运行的各种基础逻辑数据。其中包括玩家的控制指令和其它一些必须要的数据。客户端接受到数据后再根据这些数据运算出具体并且一致的游戏逻辑结果,然后演算体会再根据这些结果被触发,显示出各种图像和声音。所以数据部分是所有联网电脑共享的,而演算体仅在本地上运作。于是我们可以在同样的游戏过程里设置不同的图像声音特效(游戏设置里)。


或许某天我写得更详细,今天暂时这样。


点评

总结的基本不错呢。  发表于 2015-1-4 06:59
发表于 2014-12-30 19:21:35 | 显示全部楼层
理解基本正确,要是再整理的有条理一些就更好了。

点评

我也想,可惜没时间。感觉要再细致点就剩下做各个模块的详细说明了。一方面是写需要非常多时间,测试验证结论需要则更多。另一方面是我没还没消化出比较好的条理来,这样想说也说不清。  详情 回复 发表于 2014-12-30 21:06
回复

使用道具 举报

 楼主| 发表于 2014-12-30 21:06:45 | 显示全部楼层
yxxiaobin 发表于 2014-12-30 19:21
理解基本正确,要是再整理的有条理一些就更好了。

我也想,可惜没时间。感觉要再细致点就剩下做各个模块的详细说明了。一方面是写需要非常多时间,测试验证结论需要则更多。另一方面是我没还没消化出比较好的条理来,这样想说也说不清。

点评

谢谢提醒。不过经过思考后我认为除了指令,星际2服务器还会同步运算和传输一些其它数据。例如一些随机函数生成的数据,它们被游戏逻辑依赖但又不由玩家输入。或许还有一些其它数据,暂时也不考究太深。  详情 回复 发表于 2015-1-3 19:48
事实上,数据运算并非由服务器承担,而是每台计算机分别独立完成,也就是说这部分运算是重复的,只不过,他们的运算源数据是同步的,所以结果也必然一直。演算体部分的运算不同步,可以分别处理。  发表于 2014-12-31 11:21
回复

使用道具 举报

 楼主| 发表于 2015-1-3 19:48:39 | 显示全部楼层
ff1407 发表于 2014-12-30 21:06
我也想,可惜没时间。感觉要再细致点就剩下做各个模块的详细说明了。一方面是写需要非常多时间,测试验证 ...

谢谢提醒。不过经过思考后我认为除了指令,星际2服务器还会同步运算和传输一些其它数据。例如一些随机函数生成的数据,它们被游戏逻辑依赖但又不由玩家输入。或许还有一些其它数据,暂时也不考究太深。
回复

使用道具 举报

发表于 2015-1-3 23:17:02 | 显示全部楼层
这个难道不是《星际争霸2》游戏的“对用户输出”工作原理么……
跟编辑器的工作原理有什么关系?

点评

在现在感觉起来,我这堆东西或许叫做游戏引擎的加载和运行地图的工作原理更合适点。而编辑器本身作为一个图形化界面,应该说不上工作原理。其实我也没太深究,只想把自己对编辑器使用的认识概括性说说。 这些东西对  详情 回复 发表于 2015-1-4 21:20
回复

使用道具 举报

 楼主| 发表于 2015-1-4 21:20:57 | 显示全部楼层
四夕水草肃 发表于 2015-1-3 23:17
这个难道不是《星际争霸2》游戏的“对用户输出”工作原理么……
跟编辑器的工作原理有什么关系?

在现在感觉起来,我这堆东西或许叫做游戏引擎的加载和运行地图的工作原理更合适点。而编辑器本身作为一个图形化界面,应该说不上工作原理。其实我也没太深究,只想把自己对编辑器使用的认识概括性说说。
这些东西对新人作用比较大点,知道和不知道工具运作的模型,学起来效率差距很大。
回复

使用道具 举报

发表于 2015-1-5 18:15:57 | 显示全部楼层
嘛……其实只要学一些关于“软件的数据运算和对用户输出”的相关知识(大概算是软件相关专业的偏基础知识),这些东西就能很容易理解了啊。

点评

这个的确整体来说编辑器不复杂。不过作为一个搞软件研发的,我认为这些东西要搞清楚是很麻烦的啦。毕竟软件开发可以用的经典模式实在太多,而且绝大部分软件都是经典模式的混合体。在缺乏说明文档的前提下弄懂软件架  详情 回复 发表于 2015-1-5 21:46
回复

使用道具 举报

 楼主| 发表于 2015-1-5 21:46:22 | 显示全部楼层
四夕水草肃 发表于 2015-1-5 18:15
嘛……其实只要学一些关于“软件的数据运算和对用户输出”的相关知识(大概算是软件相关专业的偏基础知识) ...

这个的确整体来说编辑器不复杂。不过作为一个搞软件研发的,我认为这些东西要搞清楚是很麻烦的啦。毕竟软件开发可以用的经典模式实在太多,而且绝大部分软件都是经典模式的混合体。在缺乏说明文档的前提下弄懂软件架构(像星际2编辑器这样规模的),即使是老手也得全职搞几个星期,新手就更难。
研究时最耗时间的不是哪些模式和编辑器有关,而是哪些模式和编辑器无关。当时我搞得很吐血
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-26 08:43 , Processed in 0.188124 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表