注册 | 登录

游侠NETSHOW论坛





游侠NETSHOW论坛 游侠NETSHOW论坛 星际公民 《星际公民》本周ATV Austin Studio Update
查看: 1232|回复: 0
打印 上一主题 下一主题

[分享] 《星际公民》本周ATV Austin Studio Update [复制链接]

帖子
261
精华
0
积分
151
金钱
1153
荣誉
2
人气
0
评议
0
跳转到指定楼层
楼主
发表于 2018-1-12 22:59:28 |只看该作者 |倒序浏览


时间来到了新的2018年,ATV也改格式啦,现在的ATV改为了每集重点关注一项内容。
每个月,ATV的格式会以:一期工作室报告或者一项关于星际公民PU游戏的更新、一期关于42中队的最新内容、以及一期关于船只模型的更新。同时,我们在新的一年还增加了一些新的节目,例如一个专注于QA的视频,以及一期RTV(又回来了!reversetheverse)这是一个在线直播的栏目以让开发组点评ATV和一些最新的关于公民的新闻为内容来进行。(就在明天中午PST,Erin Roberts会做客这个栏目作为第一期嘉宾)
并且,这两个月的订阅者礼物会是虚拟的机库手办。一月份的手办是豌豆的,并且,高端的订阅者(20刀一月的那个)会获得一个另外的变体。

而这一期的内容,则是德州的奥斯顿工作室的实况,让我们来看一看吧。

Q:在2017年年底紧赶慢赶终于把3.0正式发布了,但这一次的发布背后又发生了什么呢?

A:首先3.0的发布可以说与我们的预期相差极大。我们工作室本来打算的是把3.0做好的话还有几个月的时间才会到2017年底,这样我们就有充足的时间来对3.0进行修饰啊之类的优化工作。但显然事情并不符合我们的预期。
并且在是否要将计划中部分要在3.0发布的内容砍掉并推迟到3.1版本,我们也产生了极大的分歧。
但最终我们为了保证游戏在3.0能够获得那种,次世代的那种感觉,我们决定还是把那些东西丢到3.X里面去吧,先把3.0弄出来。
尽管发布的时间很晚,似乎我们是十分着急地发布了一个不完整的版本,只为达成一个在2017发布3.0的成就,但3.0的主要的系统其实也已经有了,星球以及物价变化这两个十分重要的关键的系统已经装载成功。并且,通过这两项系统,实际上接下来3.X的版本,我们会更新什么,已经十分清晰了。
而至于那些公布的日期。我们实际上跟你们一样十分期待着这个游戏尽快完成,因此我们在例如制定目标之类的事情的时候就比较激进,这一激进也就显示在了我们公布的完成日期上。
并且,在新的一年,我们也改变了之前的游戏发布方式。不再因为我们的新的下一个目标没有做好我们就完全不更新游戏,而是在既定的时间为游戏加载所有我们已经做好的内容。一旦出现了例如我们预计的更新时间的重要内容没有做好,你们会获得一些新的其他的内容,而那个跳票了的重要内容应该会在几个月后与你们见面。
那实际上对于一个游戏开发者来说,拥有众多的未完成的事项也是一件令人头痛的事情。3.0对于整个游戏来说是一个十分重要的转折点,也因此有了不同。3.0对于整个游戏来说是一个基础、是一个框架。没有基础和框架,那么很多的系统是完全不可能出现的。例如没有3.0中的物价波动系统,那么整个游戏的经济模型是完全无法构造的。
这样,一旦3.0中的某个系统出现了问题,那么并不只是那一个或者几个系统出现问题,而是一大堆,数量众多的系统都停滞了下来。但当然,这种情况出现在3.X版本中的可能性会大大减少。

Q:那么,在你们制作3.0的途中,有没有什么十分重大的情况或者困难出现呢?

A:首先就是最开始我说的那个动态变化的物价系统了,这个系统可以说就在3.0发布的前不久才刚刚完成。并且我们也为了整个游戏在平安夜甚至是圣诞节加了很多的班。并且最值得敬佩的是这些程序员都是主动要求加班的。他们想让社区内的玩家,这些玩家都不觉得他们各自的系统有问题。
要知道CIG作为一个企业,游戏的制作也是有阶段的,这使得我们必须亲自去找一个个组的程序员,告诉他们,你们现在必须下班了,不然你们要是再修改,说不定后面的小组就来不及检查这一个版本就要发布了。到时候出现兼容问题就是很严重的事故了。
这样,在更新包制作的过程中,所有的程序员也都需要思考一个问题:现在检测出来的这个BUG,是否值得修复。因为如果要修复的话,这中间会花费很多的时间。
同时,我们的3.1的更新计划,最重要的就是想要提高帧数,让玩家获得一个更好的游戏体验。
【之后就很神奇了,这个人从提高帧数跑题到星球,之后从星球跑题到地面交火,并且声明如果你拥有更好的战术以及执行能力,玩家可以以弱胜强,之后又从战术以及执行能力跑题到这一点也可以对采矿这一系统造成影响,接下来还没说怎么影响呢,就又跑题到采矿的收入实际上是于你采矿地点周围的收购该矿物的价格息息相关的。这里跑题就被强行停止了,看样子他对面的那个人实在是受不了】

之前在圣诞节以及之后的元旦的时间,游戏经过了好几次更新,这段时间显然是CIG你们放假的时间,同时,有一些更新我们是需要下载新的更新包的,有些更新反而不用,这是为什么呢?
那么实际上一个玩家可以从显示器上看到公民的画面经历了广义的三步。首先是玩家的电脑,负责处理关于图形的显示,接下来是玩家连接到的星际公民服务器。这个服务器中有玩家的数据,以及一些其他数据。而这个服务器还连接着无数的其他背后的数据服务器。
例如玩家要去一个商店买东西。玩家的电脑负责加载商店里的东西,玩家链接的服务器负责知道这个玩家在商店,然后调用数据服务器中的商店的数据来告诉玩家这个商店中有什么,怎么卖。如果玩家在这个商店中进行了购买的操作,服务器则会将玩家的购买数据,或者说商品数量减少的数据回传给数据服务器。这样做的话,星际公民就并没有一个所谓的“全知全能”的服务器,而是一个个分散的服务器。
例如在不遥远的未来(大约是3.2及以后)我们会拥有例如:飞控管理系统的服务器、信号发生器的服务器、商店的服务器、以及所有的,星际公民世界中存在的那些数据的专属服务器。这样也就使得我们的数据更新可以只在这些幕后的数据服务器上进行。
而我们现在有的,在一个星系中,我们有数百个服务器,有些服务器的数据就是专门描述一个星球的。这样,如果玩家在这个星球上,也就是在这个服务器中,这样我们可以为玩家提供更好的游戏支持。但这也有一个问题:如果一个玩家在一颗星球上,他要规划一条从这个星球到星系另一边的路线。这个服务器上的数据由于绝大多数都是关于这颗星球的,而对于星系的其他内容只有类似哪里有颗恒星的那种数据,这就使得这种路线的规划是不可进行的。这就说明我们需要一个更高层的,高于这些分散的平级服务器的一个服务器,来为玩家的这种操作提供支持。

Q:在之前我们的谈话中你多次提到了一个叫做可能性体积(Probability volume)的东西,那么这个东西究竟是什么呢?

A:这个可能性体积指的是某一个大小的空间,而你有几率在其中看到的东西。例如你是否会在这段路上遇到很多的海盗,你在这里会不会见到很多货船,这些货船是要到哪里去的?这些前往不同地区的货船上是否有不同数量不同种类的货物?这些都是由这个叫做可能性体积的东西给出的。
而这些东西起始于一个策划在这里放了一个叫做“随机环境任务触发点”的一个东西。当然这个东西对于玩家来说可能不是他们认为的所谓任务:你没有到什么地方去接受它,也没有一个明确指明的奖励。这个东西的主要用处就是让玩家感受到,在他游戏的过程中,这个世界也是在运转的。
而放了这个触发点,我们会制作触发的内容,并且附上触发条件,然后把他们放到某个特定的区域里去。
而接下来就是一个叫做触发几率的东西。当你满足了触发这个“任务”的条件,这时还会有一个几率出现,你会有一定的几率来触发这种事件的发生。同时,一个区域内的事件有部分是被我们有机结合在一起的。
例如一个区域我们设定有海盗、也是一个小的交通要道有一些货船经过。当然,宇宙很大,你在飞行的时候遇到一些海盗跟货船打起来那可以说你可以去买彩票了。但我们把这些几率放大了,毕竟单独遇到海盗或者单独遇到货船没有遇到两者一起更好玩不是么?
因此,在这种区域中,你更有可能碰到两边打起来而不是只有一方或者两边都打完了你才出现的情况,因为这种情况没有意思。这也不是说你不会遇到,只是几率更低了而已。而你若是反复碰到比如船只沉没的残骸,那么极有可能这就是我们为这块区域设定的属性了:十分危险,不然不会有这么多残骸不是么?(当然,也意味着这种地方能让拾荒者发一笔大财,在本期并不会讨论)
但这一系统还有一个非常重要的环节没有解决。现在,哪些事件会在这个区域中发生,这些事件发生的概率又会是多少,这些全部是由我们的工程师手动输入到程序编码中的。但是在8到9个月以后,我们有希望做成一个系统,一个类似于经济系统的庞大系统,可以根据当前区域的属性,来自行划分设定这些事件的发生概率。

Q:那么,为什么我们要做这么一个情景触发系统呢?

A:首先这是我们对游戏的一种体验的优化。对于大多数的游戏来说,游戏内时间的流逝基本上没有任何用处,除了告诉你他又过了多久。但是加入了这一系统以后,例如一个当前海盗事件多发的区域,那么自然该区域的安保价格也会水涨船高。如果玩家对于这种状态没有反应的话,游戏内的NPC也会对这种事件进行反应。
而这种反应又如何能反映到游戏内呢?那么我们的这个系统能够提供给我们的幕后把控人员一个简单的UI接口——一个滑条。我们可以轻松的操控这些情景触发的概率来调节一个区域的各种状况。毕竟公民是一个超大型的拥有极多变量的一个模拟游戏。这样做,可以尽量避免过于复杂的编码调整而将其转化为一个纯数学的模型。
那么这样的话,我们就可以营造出一个仿佛拥有亿万民众的未来世界,而不需要真正有那么多的NPC来让电脑进行运算,只需要对玩家周围的情景进行模拟计算就可以了。就如同LOD技术但是是在游戏领域一样。

Q:那么最后一个问题,还是在这个可能性体积上的,那么这项技术之后会怎样发展呢?

A:那么首先就是我之前说过的,把这个系统连接到那个超大的模型上去,让玩家体验到一个随时间改变的情景,而不是一个固定死的几率。
当然我说到这个巨大的模型,实际上这个东西我们现在也可以少量的体验到一些,也就是物价系统了。当然现在的物价波动方式还很简单,仅仅是跟物品储量有关。但在之后我们会将很多的原因联系到一起。
例如某个地区的钛价格很低,因为市场需求很少,那么就算这个地区的钛存储不够也是没有关系的。或者这个地区突然有很多玩家在打架,那么打架就意味着玩家需要修船,修船就需要用到铜钛合金,而因此铜钛的价格就会上升,无论这两种物质的储量如何。


那么实际上,全球所有的研发部门以及BUG修复还有其他的所有关于代码的内容最终都会在我们这里汇总并打包变成游戏版本。之后这个游戏版本会被发到QA小组那里,最终发布。
在临近3.0的时候,我们的QA小组也在加班加点的工作。他们既需要检查游戏版本中的BUG,还需要在众多的游戏版本中选出最稳定的那个成为最终发布的版本。
而我们其实也是很想把3.0早早放出的。但是每次拿到3.0的版本,我们总是在想,再让我完善一下,再修复一下就好,之后就拖到了最后。但是很好的就是我们的所有工作人员实际上在那段时间都是很开心的,都很富有动力,充满能量。
但我们这样的完善与逼迫服务器的运转也导致了不良的后果。就在最后时刻,我们的一个服务器的几个硬盘过热烧坏了,而且还坏了一个闪存阵列。而这件事情发生的时间就是3.0要正式发布LIVE的时候。当时我们还在担心圣诞节之前究竟能不能成功发布。
我觉得他简直就是一个神人!一个人就是一个军队!(应该是问了一个他们工作室的一个服务器大佬)在游戏正式发布的当天,我们兴奋的看到人们纷纷下载我们的最新登录器并开始下载游戏。但我们的兴奋并没有维持多久,当人们下载完成开始进入服务器的时候,我们慌了。
我们虽然已经尽可能的预估了人们对3.0版本的热情,但是相对于我们的服务器来说人还是太多了。但终究是放假了,我们每个人都对对方说了祝福,最终整个工作室只有他一个人留了下来。而进入游戏的玩家数量一直在涨,就没有停过。他就这样在办公室度过了圣诞节。我觉得这也是我们能送他最好的礼物,因为他似乎真的是为此乐在其中。
而现在我们也对服务器进行了改进,例如我们现在拥有的幕后存放数据的服务器,涉及到其内内容的修改,我们甚至不需要发布新的更新包就可以对游戏进行更新。
这种更新的不停服的,很多的主播甚至就在游戏的进行中发现了游戏的更新,因为游戏的表现更好了。


对于3.0这种巨大的更新,尤其是面向了世界各地的玩家,做好服务器供应商之间的协调工作也十分重要。我们要保证在更新的时候这些服务器的带宽足够。同时,就在3.0发布前夕,AWS服务器供应商表示他们上新了一部分新款服务器,而我们也立刻与他们签了协议使用这些服务器。我们一直希望保证我们的游戏能够运行在最新的所有硬件上。
同时,我们也在不断跟除了AWS的服务器供应商商谈将我们的服务器升级为当前最新款的服务器。
3.0的更新可以说是CIG最关注的一次游戏更新了。我是从游戏1.2版本开始就开始作为游戏更新发布的主要管理人员之一,而3.0的这次更新绝对是最受人关注也是最受到我们关注的一次更新放送。
同时我们的每次更新也是十分小心翼翼并做出了极大努力的。这样我们的更新就不会需要将所有玩家踢出服务器进行停服更新。


同时就在3.0刚发布的时候还出现过一个大面积的掉线情况,服务器会不知什么原因陷入死锁状态踢出所有玩家。而检测这种原因也十分困难,每30秒都会有7千多份数据产生,而我的工作就是在这些数据中找到原因。最终的原因则是玩家做的任务中的一环不知为什么与物理系统冲突了,导致系统死锁。要知道,那时候可是12月27日,大家回家没有事做就要玩游戏啊!
不过幸运的是,我拥有一个庞大的后援团,他们极快的修复了问题。但这也只是我们进行的第一个修复。由于3.0的系统采用的新架构,将绝大多数数据存储在了幕后的数据服务器上,使得我们可以轻易的修改这些服务器的数据达到游戏BUG修复这一操作。


在我来看最大的挑战应该是刚发布那会吧。我们基本上每天都需要进行一个游戏更新,但是在更新的同时我们还需要做测试以及其他的很多东西。



如果我们发现了某个地方出现问题,我们就会写一份书面的报告,并且在我们使用的软件JIRA上填写,并Email上级。如果这个BUG是在正式发布的版本中找到的,经过我们的讨论我们有可能会立即叫停版本的发布,如果不是,那么我们会集合一起来功关这个BUG。
同时,由于3.0这一版本十分重要,我们根本无法承受改版本的不稳定状况,因此可以说这样显著加剧了我们QA小组的工作量。

我们现在在做的是什么呢?实际上,我们现在已经有了一个监控的系统,这个系统可以监控每个玩家在游戏中的表现情况。如果玩家在游戏中的表现出现问题,我们就会知道,并且让这个服务器进行一个“下沉”操作。这种操作方法也被我们用作服务器热升级操作。这样的话,我们可以在不踢出玩家的情况下,停止改服务器的进人操作,并在每个玩家登出的时候将其他们的数据转移到另一个服务器,最终使得整个服务器没有人。等到服务器更新完成,他们会再次“上浮”,从而重新接受新的玩家。

这样修复显然比直接踢人要好的很多,毕竟现在玩家可以做任务链的,踢人显然对玩家的游戏体验很不友好。事实上,在我们的假期中,绝大多数的热修复都是这样完成的。

事实上玩家对这个游戏很友好。所有做网络的公司都知道,他们的服务对象,玩家,对于延迟、掉线的容忍度是很低的。如果玩家长时间无法登入游戏,那么他们很可能流失,就直接去做其他事情了。
而我们这边,如果一次服务器崩溃导致400个玩家被踢出去,那么等服务器回复重连以后,我们可能会有600个人。玩家知道这是一个游戏,但也很明确的知道他们现在玩就是给官方找BUG来了。

我每天工作的时候除了监视服务器以外,我还会抽空上上论坛,看着玩家们讨论。而很多信息也就在这不经意间就可以获得。因为玩家知道这款游戏并不只是让他们玩的,他们与我们都在一起构筑这款游戏,找到了BUG,出现了问题,他们也会直接告诉我们。
实际上我感觉十分神奇。如果我是一个网站的服务器管理员,网站的数亿用户根本不会知道我,我也不会认识任何一个人。但是在这里,我能感受到那些玩家,那些玩家每天花费数个小时来玩这款游戏,来帮助我们完善它,真的很神奇。


现在,我们的员工会在部分确切的时间唤醒一些服务器,以保证游戏的负载,而又在一些时间关掉他们,以保证我们不花那么多钱。


鳄梨测试是我们第一次将3.0放出与玩家见面,为了保证该测试的正常运行,我们打了一个长达6小时的Skype,毕竟这个新版登录器以及新的幕后数据服务器也都是我们没有接触过的。
之后的鳄梨测试,由于我们拥有新的下载更新方式,使得我们的更新变的更为简单。

至于到之后的PTU测试,我们需要进行检查的项也是越来越少了。
最终到了需要LIVE的时候,我们的工程量瞬间大了许多。不仅是我们要检查的项变多了,而且我们还需要对很多以前的版本进行检查,要知道我们之前几乎是每天更新,说不定会有一些漏洞或者问题没有发现。


圣诞节那天实际上挺令人印象深刻的。本来什么事情都没有,但是突然我们就有需要工作起来了。也幸好我们当时都在Skype的聊天中。我们工作到很晚,等到凌晨三点钟有人才想起来他们还需要给家里的圣诞树下放礼物。
我们可以通过玩家操作的一些表现来预测他们进行其他操作会造成BUG的可能性,并对这种BUG进行提前的修复。补丁制作出来以后我们只需要把它放入服务器,服务器就会在没有玩家的时候自动重启加装补丁,而玩家根本不会注意到这些事情。

我们目前的服务器架构令人满意,我们可以进行很多热修复,但是部分时刻我们的数据服务器之间的交互会出现问题,导致玩家在那段时间的操作无法记录,最终导致数据冲突,也就是玩家反映中的任务消失,货物消失之类的问题。

接下来是一个绝大多数人都不知道的事情。在PTU的测试中,看似没过几天或者几周会有一个新的版本,但实际上新版本在CIG内部是每天更新的,但每一次更新以后,都必须获得QA小组的承认才能正式发布。如果没有通过,那么就只能打回重做了。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

手机版|Archiver|游侠NETSHOW论坛 ( 苏ICP备2023007791号 )

GMT+8, 2024-4-26 10:17 , Processed in 0.348479 second(s), 11 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

分享到