现代世界里的经典游戏 新浪魔兽数据库


现代世界里的经典游戏 新浪魔兽数据库

文章插图

以下内容转自 新浪游戏
饱受期待的《魔兽世界》经典怀旧服体验一直是玩家群体关注的话题 , 但为了真正实现打造暴雪品质体验的承诺 , 软件工程师Brian Birmingham和Omar Gonzalez , 以及游戏总监Ion Hazzikostas走向幕前 , 与大家分享他们的见解 。
寻找碎片
为简化打造游戏的基础要求 , Omar将其归结为三个主要因素:数据库数据、美术资源和源代码 。
数据库数据包括生物的生命值、物品的耐久度、世界各地的刷新位置 , 以及上百万的其他数据点 。
美术资源包括暗夜精灵在影遁时的外观、炎爆术的声效、以兽人挥舞斧子时的动作等所有一切 。
源代码是如何显示游戏、处理输入以及与玩家互动的指令 。
首先 , 我们必须确定我们的源代码可以追溯到什么时候 。结果发现我们的代码库最早起源于1997年 , 远超《魔兽世界》开始开发的时间点 。
这是一个良好的开端 , 但问题在于以前游戏开发如何处理数据库数据的更新 。与我们为游戏设置了多个可加工的分支 , 并且可以作为单独部分开发的代码不同 , 我们最早的数据库数据已经被各个相应的更新所覆盖 。幸好我们在上线之后很快便修复了这个问题 , 并且在研究的时候 , 我们发现数据可以追溯到1.12 , 甚至更早的版本 。
最后 , 我们在古旧的备份中找到了美术资源 , 并且与我们保存的所有数据库数据相匹配 。
将这三个要素结合在一起之后 , 我们就能够进行测试、登录游戏、创建新角色、杀死野猪 , 并完成某些任务 。
现代世界里的经典游戏
虽然已经创建了可以运行的游戏版本 , 但还有很多挑战等着我们去克服 。自从游戏首次发行以来 , 支持该游戏的技术已经取得了长足的进步 , 包括:云支持、战网应用程序集成、客服功能 , 以及许多之前修复的错误和漏洞 。
为克服这些困难 , 我们针对手头的资源 , 确定了我们喜欢什么(美术和数据)和不喜欢什么(代码) 。我们想试试能否在现代的代码中运用经典的美术资源和数据 , 让新与旧和谐相处 。一开始进展并不顺利 , 但经过一些测试和错误之后 , 我们成功得到了融会贯通以及可玩性概念的证明 。这让我们相信自己一定可以在现代化的平台上提供暴雪品质的体验 。
从原型到试玩
我们的三大要素——数据库数据、源代码和美术资源彼此交互 , 从而实现面向玩家的功能 , 例如地形、游戏玩法、动画和光照 。不同的功能需要各个要素以多种方式相互关联 。
为充分理解这种相互作用 , 我们以地形为例 。其中包括丘陵和山谷、树木、建筑物等等的放置 。将旧地形数据文件与现代新游戏系统挂钩时 , 我们意识到系统看待数据形状的方式是不同的 。这导致新系统无法与经典数据对齐 , 因而出现了水下的科卡尔营火 , 或者《大地的裂变》时代的烧焦树木 。

现代世界里的经典游戏 新浪魔兽数据库

文章插图

幸运的是 , 我们的现代编辑器能够执行其中一部分数据转换 , 并且对于地形数据 , 我们可以使用《争霸艾泽拉斯》的编辑器进行转换 。现代编辑器知道如何加载旧的地形格式 , 以及如何将其转换为新的地形格式 , 并将其导出到我们的现代引擎 。这就修复了营火位置和树木外观等问题 。
我们克服的另一个障碍 , 是如何存储和合并数据 。《魔兽世界》的开发过程中存在许多补丁 , 因为每个补丁都位于不同的开发阶段 。如果我们将一件美术资源或地形文件添加到一个补丁中 , 那么我们希望它能自动显示在以后的补丁中 。在游戏十四年的发展中 , 这个操作向来依照固定的线性时间表完成 。如果我们只是将新的经典怀旧服补丁插入当前的开发中 , 那就会导致洛克莫丹目前的大坝等元素被以前的还原版所覆盖 。这将给《争霸艾泽拉斯》版本带来问题 。
为避免这种情况 , 我们教会了工具一些新的技巧 , 从而在不影响当前版本游戏的情况下为经典怀旧服打补丁 。我们将1.12版本的数据复制到一个新的项目中 , 并命令我们的工具将其区分开来 。现在 , 当我们进行补丁时 , 所有更改都会保留在经典怀旧服的范围内 , 而不会与主线补丁互相影响 。听起来虽然简单——就像复制通讯录一样——但最棘手的部分是如何教会我们所有的工具去理解这种操作 , 以便自动进行编辑 。内部工具的运用助益良多 , 并且我们希望确保经典怀旧服可以访问我们所有的基础架构和数据 。
经典模型和动画
我们还花时间完全还原了模型的经典外观 , 但在还原的过程中 , 我们发现一些模型已经损坏 。有时我们会缺少纹理 , 因而不得不做一些调查 , 以确定这些物品的正确外观 , 并在系统内进行修复 。
原版的动画也已经还原 , 但我们的动画系统与游戏代码关联密切 。我们必须同时对数据和代码进行修改 , 才能使动画还原为1.12版本的样子 。在这个过程中 , 我们遇到了一些错误 , 比如那些应该倾斜的模型显示为垂直 , 反之亦然 。但我们通过一些修复解决了这些错误 。
还原职业系统
在将数据转换成代码方面 , 我们取得了长足的进展 , 但有些系统并没有现代的替代品 。受其影响最大的职业可能就是猎人 。宠物的快乐值和忠诚度系统 , 以及宠物训练、使用远程武器和近战武器的技能都被移除了 。在这种情况下 , 将旧数据转换为新系统并不可行 , 因为它们没有新的系统 。此时 , 我们就必须沿用旧代码——我们也确实这么做了 。好在还原工作很顺利 , 尽管购买箭矢或喂养宠物的需求令一部分人颇感意外 。
这个问题并不仅限于猎人 。潜行者的连击点也必须修改代码 , 因为我们的现代资源系统知道如何获取和使用连击点 , 但不知道如何在变更目标时丢失点数 。并且还要考虑到旧的战斗公式 。在这种情况下 , 我们沿用了以前的战斗公式的代码 , 包括爆击和碾压 。触发几率也依据防御者的防御值和攻击者的武器技能之间的差异进行了修正 。没错 , 武器技能回来了 。我们手上有数据 , 但必须还原代码 , 才能在你使用技能的时候提高数值 , 并使你的技能等级影响到命中或造成爆击的几率 。
用户界面与光照
角色界面是代表性的用户界面范例 。我们显然必须予以还原 , 并努力重现当时的感觉 , 甚至细微到界面特效和角色背后的光线 。虽然我们不想承诺完美 , 但我们可以保证 , 我们正在并列比较 , 并尽力打造原汁原味的体验 。
再举一个光照的例子——艾尔文森林 。在《魔兽世界》的历史中 , 我们曾改变过所有的光照公式 。因此 , 我们的环境美术师不得不回顾所有地区 , 以改善光照和实装新的公式 。为重现原版体验 , 我们不得不回滚这些更改 。我们做的第一件事 , 就是还原旧的光照数据 。这让我们可以更加接近原始光照 , 并通过对距离公式、雾公式和阴影的变更 , 使事物更接近原始光照 。你们完成了吗?
经过上述说明 , 我们相信你肯定想知道我们到底有没有完成 , 还是我们其实只需要更新标准客户端即可 。
经历过去一年的项目投入 , 以及克服各种错误和挑战的努力后 , 我们所拥有的和我们所想要的之间 , 依然存在显而易见的差距 。在如今的《魔兽世界》中 , 我们可以清楚地看到它和经典怀旧服之间的区别 。如果我们尝试更新标准客户端 , 就必须追踪许多无形的变化 , 比如可能被利用的漏洞 , 或者只有数百万玩家在线时才会出现的崩溃等等 。所以我们选择通过一种能让我们的工作更加清晰明了 , 而非困难和隐晦的方式去解决问题 。
我们还没有完成 , 我们还有很多主城的功能需要处理 , 比如银行和拍卖行 。我们需要测试地下城和副本 , 以确保首领们的技能正常运作 , 并且我们还需要核验所有的PvP系统 。
理念与未来计划
通过还原《魔兽世界》经典怀旧服 , 我们希望能够提供原汁原味的体验 , 即使玩家在游戏刚发行后不久便离开 , 也依然能够无缝重拾当年的感觉 。程序的运行也许会更流畅 , 并且硬件环境早已今非昔比 , 但游戏本身应该保留你在2006年玩《魔兽世界》时的原汁原味 。其中很大一部分不仅涉及到战斗公式和技能 , 还包括社交和与他人的协作 , 例如组队的难度 , 以及在地下城或其他战斗中对团队的依赖 。我们还想确保自己无需改变1.12版本的数据 , 以及由此产生的游戏体验 。。
我们做出的许多决定都是相当明确的 。比如地下城查找器就是绝对的“否” 。我们也明确不会添加跨服组队系统、成就系统、通用拍卖行 , 还有——没错——不会加入飞行系统 。
而另一些决定则没有那么一刀切 。曾经有一段时间 , 减益效果的上限为8个 。这个限制后来提高到16 , 而如今则没有减益效果数量限制 。这种变化从根本上改变了职业的平衡 , 以及玩家在使用这些减益效果来克服障碍时的策略 。为了避免破坏1.12版本的数据 , 我们决定在经典怀旧服中采取16的上限 。
公会成员之间的邮件现在是即时送达的 , 但过去则有一个小时的延迟 , 与陌生人之间的邮件往来一样 。即时邮件的改变加强了便利性 , 但抹杀了想要快速交易时 , 必须与某人见面的社交互动 。因此 , 我们重新加入了这个延迟 。而自动填写姓名或快速清理邮箱等便利措施则予以保留 。这个决定看起来很简单 , 因为玩家只需要编写插件即可产生同样的效果 , 而且我们觉得删除这些功能并没有什么意义 。
在以前的战利品交易中 , 如果有人无意中拾取了不需要的东西 , 那么通常会需要客服的支持 。在更现代的系统中 , 玩家在一段时间内可以将战利品交易给其他人 。我们认为这项便利措施值得保留在经典怀旧服中 , 以免出现大量根本无需存在的客服表单 。(抱歉了 , 黑装备爱好者!)
对于那些依赖能量恢复的职业 , 比如潜行者来说 , 经典版之后的游戏也发生了巨大的变化 。在过去 , 由于服务器的“心跳” , 能量恢复并非以单点计算 。因此 , 20点能量的恢复需要整整两秒 。而现在 , 由于系统更加流畅 , 所以每十分之一秒就能恢复1点能量 。这种差异改变了某些技能的施展时机 。如今看来微不足道的改善实际上改变了经典玩法中的整个技能循环和爆发 。为了原汁原味的体验 , 我们认为这一点必须还原 。
这些年来 , 插件的功能不断提升 , 并且随着编写者们的经验和阅历日渐丰富 , 其复杂程度也与日俱增 。针对这件事对经典怀旧服的影响 , 我们目前尚未得出100%的定论 , 但有一点我们可以确定 , 那就是不会还原1.12版本的插件API 。这样将为几乎完全自动化的战斗决策制定打开方便之门 , 滋生所谓的“脚本”行为 , 与WOW的核心游戏体验背道而驰 。我们肯定不愿意看到这样的情况 。从另一方面来说 , 现代API为额外的社交功能提供了机会 , 同时也破坏了原汁原味的经典体验 。我们依然在研究细节 , 尽量采取折中的办法 。我们将密切关注来自社区和插件作者们的反馈 , 以便确定如何设定界线 。
内容发布计划
虽然首发版本为1.12 , 但我们也希望能够提供玩家们所期望的旅程 。关于这段旅程的路线图 , 我们划分了四个额外的阶段 , 并计划逐渐整合到体验之中 。
第1阶段:熔火之心、奥妮克希亚的巢穴、厄运之槌、卡扎克、艾索雷苟斯
第2阶段:黑翼之巢、战场和PvP奖励、祖尔格拉布
第3阶段:安其拉(包括开门事件)、T0.5套装、希利苏斯内容、绿龙
第4阶段:纳克斯拉玛斯团队副本、天灾入侵
【现代世界里的经典游戏 新浪魔兽数据库】这些计划可能会发生变化 , 但我们希望能够提供一定的前瞻 。我们期待继续倾听你们的想法 , 并且明白我们还有很多工作要做 。