无论是复杂精妙的 BOSS 战,还是丰富多样的任务系统,《魔兽世界》都让当时的玩家大开眼界,但《魔兽世界》里有不少新颖的游戏机制,都建立在一个出人意料的东西上面——那就是兔子。还是看不见、点不了的隐形兔子。

我们可以先从 BOSS 战聊起。

尽管不少玩家误以为“熔火之心”是《魔兽世界》的首个 40 人团队副本,但老资历的玩家都知道,“奥妮克希亚的巢穴”才是第一个正儿八经的团队副本,此后加入的成就“上痛!上诅咒!上钉刺!”和“最少扣你 50 DKP”都得梗于此。作为全游戏的第一个团本 BOSS,技能自然要高端大气上档次。

其中最让玩家印象深刻的技能莫过于:“奥妮克希亚深深地吸了一口气……”

在战斗的第二阶段,奥妮克希亚会飞到场地边缘,随后沿着对角线,喷吐出覆盖大半个场地的火焰,只有躲到对角线两侧的边缘区域才能免受伤害。由于该技能随机出现、位置飘忽、伤害高、范围广(现版本已缩小范围),如果没有火抗药剂或者自保技能,下场就是减员乃至团灭。

可《魔兽世界》当时的引擎,压根不支持 BOSS 对某个区域凭空施展 AOE 技能,BOSS 必须要指定一个目标后才能施放技能。那么,要怎么实现这个狂霸酷拽强、自顾自美丽的技能呢?

方法简单粗暴:在攻击路径上生成一大堆隐形的兔子,然后奥妮克希亚飞过去把兔子都喷死。换而言之,尽管你和你的 39 名队友都自认为是独挂龙头的高玩,但空中的奥妮克希亚高贵冷艳,如同冰山女神一般,根本就不屑于看地上的宅男一眼,她的目标只有那些可爱的小兔子。而没有躲掉技能被团长骂得狗血喷头的你,只是不巧被她雨露均沾了……

隐形兔子最广泛的运用之处,则是任务系统。

《魔兽世界》一开始并没有把任务作为贯穿始终的核心玩法,在设计之初也只考虑到了两种最原始的网文套路任务:杀人和夺宝。因此系统追踪任务进度的时候,只看两个参数:

1、是否杀死任务怪物(如:杀死狗头人)

2、背包里是否有任务道具(如:背包里是否有狗头人的头……不,徽记)

结果到了测试的时候,玩家表示任务好顶赞,无任务不魔兽,大伙儿这才乱了手脚,急忙把原计划里的 600 个任务,扩展到了上线时的 2400 个,任务种类也大幅提升。

这就引出了一个问题,杀人夺宝以外的任务类型要怎么追踪呢?比如最常见的任务类型之一“和某人谈一谈”就记录不下来。没任务记录,就意味着系统不知道这个任务完成与否,没法给出后续任务,任务链也就无从谈起。可要全是杀人夺宝也忒单调了,那还叙哪门子的事呐!

那么谁能拯救《魔兽世界》的任务系统呢?(卡德加:“我可以试一试!”众人:“滚!”)

面对废社危机,勇(tǎng)于(zhe)献(zhòng)身(qiāng)的兔子又一次登场了。

大家想出了一个绝妙的主意:当你点击 NPC 聊天时,游戏就会生成一只隐形兔子,然后把它干掉。这样一来,你的任务进度就以“杀死怪物”的形式记录下来了,真是卡德加般的天才创想!

其他类型的任务也全都仰仗隐形兔子:

如场景互动任务,就是你点击场景里的物件,系统生成一只兔子,然后把它干掉。

如护送任务,就是跟着 NPC 抵达指定地点,系统生成一只兔子,然后把它干掉。

如探索任务,就是你自己抵达指定地点,系统生成一只兔子,然后把它干掉。

如技能使用任务,就是你对 NPC 使用技能,系统生成一只兔子,然后把它干掉。

如物品使用任务,就是你在某地使用道具,系统生成一只兔子,然后把它干掉。

在 2005 年看起来无比高端的任务系统,就在兔子的尸体上被简单暴力地被搭建了起来。一直到 2011 年的“大地的裂变”资料片,《魔兽世界》才从程序层面改变了这一模式(其实还部分存在),顺便还引入了在右侧任务栏直接点击完成任务等新系统,从此挽救了无数兔子的生命。

回顾早年《魔兽世界》的任务史,这场对兔子的大屠杀依旧让人心有余悸。

请大家默哀三秒,一同缅怀为《魔兽世界》而牺牲的兔子们吧!

转载于:https://www.cnblogs.com/alan-W/p/5950616.html

复杂问题的简单抽象:魔兽世界中的兔子们相关推荐

  1. 让AI帮你玩游戏(一) 基于目标检测用几个样本帮你实现在魔兽世界中钓鱼(群已满)

    让AI帮你玩游戏 让AI帮你玩游戏(一) 基于目标检测用几个样本实现在魔兽世界中钓鱼 前言 思路 环境 获取图像(几个样本即可) 标记图片 从标记文件中获取Boxes坐标 搭建目标检测模型 准备训练数 ...

  2. python函数分几种_简单了解Python中的几种函数

    python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数: filter.map.reduce.lambda.yield lambda lambda函数的使用方法:在lam ...

  3. php总是报错,php - 简单工厂模式中的问题,总是报错

    php - 简单工厂模式中的问题,总是报错 PHPzhong2017-04-11 09:53:49 0 3 101 //接口 interface calc{ public function g ...

  4. html js脚本限制 正则,简单谈谈JS中的正则表达式

    1.正则表达式包括两部分 ①定义正则表达式的规则: ②正则表达式的模式(i/g/m): 2.声明正则表达式 ① 字面量声明: var reg = /表达式规则/表达式模式: eg:var reg = ...

  5. 简单介绍Java中Comparable和Comparator

    转载自 简单介绍Java中Comparable和Comparator Comparable 和 Comparator是Java核心API提供的两个接口,从它们的名字中,我们大致可以猜到它们用来做对象之 ...

  6. mysql int()_简单谈谈MySQL中的int(m)

    我们在设计表的时候,如果碰到需要设置int(整型)的时候,通常会按照惯例(大家都这样写)设置成int(11).那么这里为什么是11呢?代表的又是什么呢? 以前我一直以为这里是在限制int显示的宽度,后 ...

  7. java 静态块初始化_简单了解java中静态初始化块的执行顺序

    这篇文章主要介绍了简单了解java中静态初始化块的执行顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在java中,其应该是先于所有的方法执行. ...

  8. python中len用法_简单介绍Python中的len()函数的使用

    简单介绍Python中的len()函数的使用 函数:len() 1:作用:返回字符串.列表.字典.元组等长度 2:语法:len(str) 3:参数:str:要计算的字符串.列表.字典.元组等 4:返回 ...

  9. Atitit保证架构超前性 前瞻性 目录 第一章 简单抽象原则 道和术的区别 1 第一节 原则 kiss 1 第二节 提升到层次哲学层次 1 第三节 命名也要通用抽象 隐藏细节 1 第二章 通用性原

    Atitit保证架构超前性 前瞻性 目录 第一章 简单抽象原则 道和术的区别 第一节 原则 kiss 第二节 提升到层次哲学层次 第三节 命名也要通用抽象 隐藏细节 第二章 通用性原则  扩展性 第一 ...

最新文章

  1. JetBrains大力推广Kotlin为哪般?
  2. 区块链技术开发三个优势
  3. Webhooks上的一个简单方法:恐吓现在停止
  4. 原创 | 专家对话:大数据助力健康管理面临的机遇与挑战
  5. 如何删除chrome地址栏里面曾经输错的地址
  6. matlab verilog 接口,使用SystemVerilog简化FPGA中的接口
  7. DSP学习 -- Visual Studio 操作
  8. Java JDK代理、CGLIB、AspectJ代理分析比较
  9. 家乡的楼房正在往高层发展
  10. mysql中函数大全_MySql 函数大全(一)
  11. lucene简单实例
  12. 数据库(第一范式,第二范式,第三范式)
  13. Maven错误:“No goals have been specified for this build...”问题解决
  14. 实验1-4 输出三角形 (5 分)
  15. linux 查看ftp连接用户
  16. excel连接mysql_使用Excel 通过 ODBC 连接到 MySQL 数据库
  17. 使用BottomSheetDialogFragment实现购买出商品,底部弹出商品属性的效果
  18. 蚂蚁区块链第2课 如何申请获得100万创新大赛参赛资格?
  19. 微型计算机系统中存储容量最大的部件,微型计算机中存储容量最大的部件是什么?...
  20. 比你优秀的人比你更努力

热门文章

  1. PHP企业级应用之常见缓存技术篇二
  2. 智能电视使用什么操作系统?
  3. Android 修改host文件的3种方法
  4. 设置电脑开机后自动启动软件程序
  5. 基于VoiceOver的移动web站无障碍访问实战
  6. 学习linux编程(一)
  7. 安防视频越来越拉风 网有救了
  8. 帆软 substitute_用SUBSTITUTE计数单元格中的项目
  9. VF01/VF11 创建和冲销开票凭证
  10. 跨国企业适合选择哪个国际邮箱?