想问问这是个什么东西,是不是什么游戏boss标识的标识啊

&p&说一个独立开发不常见的技巧,但是做游戏的配置非常方便。做好了可以省很多时间&/p&&p&我们开发游戏的时候经常喜欢挂脚本放在物体上,像这样。&/p&&p&&br&&/p&&img src=&/v2-38b38cbf0f20_b.png& data-rawwidth=&409& data-rawheight=&457& class=&content_image& width=&409&&&p&&br&&/p&&p&但是如果到了后期,你要实现很多功能的时候,一个设计不好就会放很多脚本上去,像这样&/p&&p&&br&&/p&&img src=&/v2-37a8ae5f14add9adb9b94_b.png& data-rawwidth=&422& data-rawheight=&451& class=&origin_image zh-lightbox-thumb& width=&422& data-original=&/v2-37a8ae5f14add9adb9b94_r.png&&&p&&br&&/p&&p&如果你开始做第二个外观不同的模型的时候,但是功能相同的时候就要全部再挂一遍,数据复制过来一次。你可以说我可以直接复制预制体然后改变里面的网格就好了,但是这样经常会失去引用,比如你移动挂载了模型的某个挂点,这样一替换挂点就消失了。&/p&&p&一些有经验的程序员会选择动态挂载脚本(其实项目开发中基本都是动态挂载脚本到物体上)&/p&&p&&br&&/p&&img src=&/v2-ca21ca7cd566f7c994615c_b.png& data-rawwidth=&554& data-rawheight=&111& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/v2-ca21ca7cd566f7c994615c_r.png&&&p&&br&&/p&&p&然后数据要么通过读表,要么是和美术商定一个规则,动态赋值数据读取给对应脚本。&/p&&p&说真的,这样处理不好维护,而且需要策划配置表来控制数据,等到实际看到效果中间的流程太冗长了。&/p&&p&有没有办法能直接保存Unity放在面板上的数据呢?&/p&&p&&br&&/p&&img src=&/v2-caa43a47b159bede9dcd18_b.png& data-rawwidth=&419& data-rawheight=&176& class=&content_image& width=&419&&&p&&br&&/p&&p&有一个叫做ScriptableObject的类,这个类可以序列化存储数据,用的时候可以通过实例化来得到数据。&/p&&p&比如我们做一个这样的类,简单记录高度和宽度数据。用来存储数据&/p&&p&&br&&/p&&img src=&/v2-f2fa332f13c92eb5f5f3836_b.png& data-rawwidth=&518& data-rawheight=&322& class=&origin_image zh-lightbox-thumb& width=&518& data-original=&/v2-f2fa332f13c92eb5f5f3836_r.png&&&p&&br&&/p&&p&创建一个mono的类用来挂载在物体上显示数据&/p&&p&&br&&/p&&img src=&/v2-5b0e432c3dee5227bbff95e_b.png& data-rawwidth=&345& data-rawheight=&158& class=&content_image& width=&345&&&p&&br&&/p&&p&创建一个Editor脚本来做一些简单的显示控制&/p&&p&&br&&/p&&img src=&/v2-c39a69ced6d70c22e75b4ec431f1695f_b.png& data-rawwidth=&525& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&525& data-original=&/v2-c39a69ced6d70c22e75b4ec431f1695f_r.png&&&p&&br&&/p&&p&外界就看到简单的一个数据,双击它&/p&&p&&br&&/p&&img src=&/v2-34bec89d8dd7bbee47ddf50_b.png& data-rawwidth=&358& data-rawheight=&102& class=&content_image& width=&358&&&p&&br&&/p&&p&就出现可以编辑数据的界面&/p&&p&&br&&/p&&img src=&/v2-17bb4a344ee8ff48bab2b3e3ab94ba97_b.png& data-rawwidth=&361& data-rawheight=&273& class=&content_image& width=&361&&&p&&br&&/p&&p&然后在Editor脚本中加入导入和保存的数据的功能:&/p&&p&&br&&/p&&img src=&/v2-ddf3b69a828be257bfdf46c9ddddb877_b.png& data-rawwidth=&554& data-rawheight=&553& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/v2-ddf3b69a828be257bfdf46c9ddddb877_r.png&&&p&&br&&/p&&p&导出就可以看到脚本数据被保存到Resources目录了&/p&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-aa124b680b0fb5aac472f088d490a37f_b.png& data-rawwidth=&554& data-rawheight=&380& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&/v2-aa124b680b0fb5aac472f088d490a37f_r.png&&&p&&br&&/p&&p&以上就是用ScriptableObject这个类保存数据的流程,这个类的有点在于我们保存的数据可以动态的修改,而且是在游戏里面可视化的修改。如果程序和美术的数据用这个做存储,美术直接修改配置我们的程序用的时候就可以直接用这个数据了。而不用去做Json或者其他格式的存储数据来转换读取数据。&/p&&p&而缺陷在于这个类是会依赖你的脚本,如果要做热更新功能,必须脚本变量和存储的变量数据是统一的。&/p&&p&&br&&/p&&p&如果你对unity 的Editor功能熟悉,可以做它来做一个很棒的插件脚本,比如这个之前给美术处理角色信息的工具,程序只用给工具加轮子,美术只要用工具配置,就可以直接看到效果&/p&&img src=&/v2-7da6a1b522_b.png& data-rawwidth=&350& data-rawheight=&180& class=&content_image& width=&350&&&p&&br&&/p&&img src=&/v2-b626b4cd3ca437d1f522eee4357cda5b_b.png& data-rawwidth=&393& data-rawheight=&600& class=&content_image& width=&393&&&p&&/p&&p&&/p&&p&&/p&
说一个独立开发不常见的技巧,但是做游戏的配置非常方便。做好了可以省很多时间我们开发游戏的时候经常喜欢挂脚本放在物体上,像这样。 但是如果到了后期,你要实现很多功能的时候,一个设计不好就会放很多脚本上去,像这样 如果你开始做第二个外观不同的模…
这竟然是13年1月的一个问题。可见当时知乎上游戏从业者是多么稀少……&br&&br&所谓世无英雄,遂使竖子成名,既然无人回答,老衲又无意中看见了,来一个马后炮的回答吧。事先声明:非游戏从业人士,回答不科学之处,请谅解。&br&&br&首先,题主提到拐角、格子个数、障碍物位置等,问的其实是关卡设计,不是地图设计。有关卡设计的游戏很多,塔防、战棋、经营、网游的战场等等,这些有的我经历过,有的我参与过,有的我观摩过,但大部分资料都在那个坏掉的硬盘里了,摊手~~所以只能提供一些比较现成的资料供参考了。&br&&br&先说塔防,在三国塔防那款古老的单机手游中,设计细则是这么做的——&br&&br&&p&&b&1.美观合理&/b&&br&&/p&&br&&p&1.1“河”、“沟”&/p&&p&一般情况下,大城前有(护城)“河”,小城前有“沟”,沟可以和“水”相连&/p&&p&1.2“墙”、“楼”&/p&&p&“墙”指城墙,一般不要相邻放两排。城墙上可以放兵的地方称为“楼”,“楼”与“楼”之间不会相连。&/p&&p&1.3“沼”&/p&&p&“沼”靠近路的部分区域可以放兵。美术需要根据设计进行处理。&/p&&p&1.4“营”&/p&&p&“营”作为装饰,不能放兵。“营”与“营”不能紧挨在一起,且“营”都占4格。 &/p&&p&1.5“山”、“水”&/p&&p&“山”与“水”一般都比较大片,不允许凭空出现“山”与“水”,且出现时不得少于16格(边缘除外)。&/p&&p&1.6“树”、“石”&/p&&p&“树”与“石”一般用来处理单独的不能放兵得情况。大片的“树”为森林,“石”不能超过4格。&/p&&p&1.7“路”&/p&&p&“路”一般不要相邻放两排,&/p&&p&不可以出现两条路中间只能方一排兵的情况。&/p&
1.8“鼓”&p&“鼓”一般是放在营地或者城中的战场装饰物,战鼓装饰物在摆放时需要注意其用途和特性,战鼓的摆放应相对整齐美观,且一般不会随意摆放在野外。&/p&
1.9“战车”&p&“战车”一般是在战场野外放置的装饰物,不适合摆放在营或者城中。&/p&&p&1.10“武器架”&br&&/p&&p&“武器架”一般是在城中放置的装饰物,一般会紧贴墙壁或者建筑物放置。&/p&
1.11“旗帜/灯笼”&p&“旗帜/灯笼”一般为出现在城池和营地中的装饰物,位置一般会靠近大门或者出入口。&/p&
1.12“拒马”&p&“拒马”一般摆放在城池外或者营地外,紧贴兵营和城墙摆放,野外战场也可以设计拒马阵。&/p&
1.13“尸骨”&p&“尸骨”一般会零星的分布在野外战场较荒凉的区域,比如沙漠、沼泽这类危险偏僻的地形中,可以加入尸骨。&/p&
1.14“火把”&p&“火把”一般为营地里中的装饰物,紧挨着营地的出入口。&/p&
1.15“石灯”&p&“石灯”一般为城内装饰物,紧挨着城池的墙壁和大门。&/p&
1.16“训练靶”&p&“训练靶”一般为营地的装饰物,在营地范围内摆放。&/p&&br&&p&&b&2. &/b&&b&难度掌控&/b&&/p&&br&&p&&b&2.1.&/b&&b&进攻路线&/b&&/p&&p&进攻路线越少,关卡越简单;&/p&&p&进攻路线越长,关卡越简单;&/p&&p&进攻路线越曲折,关卡越简单;&/p&&p&不同进攻路线合二为一,关卡更简单,进攻路线一分为二,关卡更难。&/p&&br&&p&&b&2.2.&/b&&b&攻击点&/b&&/p&&p&攻击点越多,关卡越简单;&/p&&p&攻击点分布越均衡,关卡越简单;&/p&&p&攻击点重复利用次数多,关卡越简单。&/p&&br&&p&&b&2.3.&/b&&b&第三方武将与事件触发点&/b&&/p&&p&第三方武将越多,覆盖可攻击区域越大,关卡越简单。&/p&&p&事件触发点越多,关卡越简单。&/p&&br&&p&&b&3. &/b&&b&设计思路&/b&&/p&&br&&p&1、偷袭设计:有一条接近“阵”的小路,进攻路线短,进攻批次少。&/p&&p&2、需要为新兵种的出现,在关卡设计上给与优势。比如长枪兵第一次可用的关卡,就要大量设计可以一次攻击到一条直线的攻击点。&/p&&p&3、关卡设计需要和关卡故事配合,比如火烧博望,就要少水多树。&/p&&p&4、做分叉的路,分叉两边到“阵”的格数一定要一样长。&/p&&p&5、一个攻击点最多覆盖3条路。&/p&&p&6、在地图最四周在外圈不可编辑元素。&/p&&br&&p&在这个原则之下,策划用excel填了很多很多个关卡……&/p&&img src=&/256c3bc185bf4bd207fdbd_b.jpg& data-rawwidth=&1302& data-rawheight=&549& class=&origin_image zh-lightbox-thumb& width=&1302& data-original=&/256c3bc185bf4bd207fdbd_r.jpg&&&br&&p&然后用关卡编辑器做成程序可以识别的配置文件……&/p&&img src=&/d9be54bcbf7cd9fe937f_b.jpg& data-rawwidth=&1303& data-rawheight=&850& class=&origin_image zh-lightbox-thumb& width=&1303& data-original=&/d9be54bcbf7cd9fe937f_r.jpg&&&br&&p&关于战棋游戏,曾经设计过一款大话题材的,不过没有上市……&/p&&img src=&/cc9eeba77fd6e23aa5614_b.jpg& data-rawwidth=&581& data-rawheight=&720& class=&origin_image zh-lightbox-thumb& width=&581& data-original=&/cc9eeba77fd6e23aa5614_r.jpg&&&img src=&/a57dd47e2b_b.jpg& data-rawwidth=&587& data-rawheight=&445& class=&origin_image zh-lightbox-thumb& width=&587& data-original=&/a57dd47e2b_r.jpg&&&p&当时提的需求方案——&/p&&br&&p&需要在一张由15X13个格子构成的800×600的地图,各角色在其中可跑可攻击。玩家大小占1个格子。每行走一步是半个格子,也就是说,玩家从地图的最左边走到最右边按照单次点击的话,需要按30次键盘。&/p&&br&&p&地图采用图素材拼接的方式构成,每块地图元素大小和主角所占位置的大小一致,并且每块地图元素均具备属性,为可调状态。并且每块地图元素之间的属性也是为可拼接状态。&br&&/p&&br&&p&策划需求:&/p&&br&&p&1、不同的地表属性,对角色的状态有影响。&/p&&p&正常型:分为不可行走的“障碍型”和“空地”2种。&br&&/p&&p&附加状态型:该类型附加的状态,和玩家所有良好及不良状态重叠。并且该类型数据内容有附加状态开始设置、消失设置、恢复时间设置。或者有规律出现及消除所具备的状态。&/p&&p&赋予效果型:该地图元素类型并不为玩家带来附加效果,而只有玩家站在该图素上。数据内容有干扰出现效果数据、效果持续时间、干扰效果三种数据。所产生的效果中,可能会对游戏中玩家属性的一切参数中的一个或多个造成影响。&/p&&p&传送型:玩家从地图A处进入,出现在地图B处。这个过程有,传送触发位置,触发时间,被传送位置,随机被传送位置这几个参数。&/p&&p&切换型:玩家进入后会切换到另外一个地图。&/p&&p&2、地面有地势的起伏(落差不一定很大)
&/p&&p&3、如果有分块的地面,可以产生相对移动(由多块地面组成的地图,每块地面可以运动,或者翻转)&/p&&p&4、可以放置怪物、建筑物、NPC等&/p&&p&5、可以定义模型属性,来决定角色是不是可以站在上面&/p&&p&6、可以放置可运动的模型,并且也可以根据需要设置角色是否可以站在上面&/p&&br&&p&美术需求:&/p&&p&1、需要对地编中的图素能够一目了然(预览并选择的功能),能够很方便的选取所需要的图素,&/p&&p&2、图素需要分类存放&/p&&p&3、Undo功能&/p&&p&4、导入导出图片功能&/p&&p&5、缩略图功能(类似于photoshop中的导航器的功能)&/p&&p&6、窗口尽量做成可移动的&/p&&br&&p&项目都没真正进入开发,自然这个关卡编辑器也是没做出来……&/p&&br&&br&&p&接下来是同事做的富甲西游的关卡设计格式,截个图随便看看——&/p&&img src=&/477c384c2e9d0d6c1183ce_b.jpg& data-rawwidth=&1799& data-rawheight=&959& class=&origin_image zh-lightbox-thumb& width=&1799& data-original=&/477c384c2e9d0d6c1183ce_r.jpg&&&img src=&/efafb0f9c5262f_b.jpg& data-rawwidth=&1776& data-rawheight=&939& class=&origin_image zh-lightbox-thumb& width=&1776& data-original=&/efafb0f9c5262f_r.jpg&&&br&&br&&br&&p&前面都是开胃甜点,下面介绍一下我经历最多的——在网游中设计关卡的注意点。这可是一个大话题,展开就是厚厚一本,看看纲要就好了。下面是做页游时候的参考纲要。&/p&&br&&b&1. 目标&/b&&p&1、给玩家清晰的关卡体验,并且有过关闯关,冒险等概念的阐述。&/p&&p&2、关卡之间,关卡内部应该有一脉相承以及衔接上的识别机制以及共性和惊喜。&/p&&p&3、各种不同锁机制的运用,并针对不同的游戏关卡体验。&/p&&p&4、关卡之间和关卡内部的节奏感要有明确而清晰的表现思路。&/p&&p&5、玩家体验节奏上要有特点,并且容易被玩家所掌握。&/p&&br&&b&2. 锁机制&/b&&p&1、游戏是一个过关的游戏,每一个大的关又分为很多个小关。&/p&&p&2、过关,闯关的概念由锁机制来整体呈现给玩家。&/p&&p&3、锁可以有多样的表现方式,由简到难,由单一到复杂。&/p&&br&2.1 小关(锁)&p&小关定义为玩家打完一个关卡所要经历的路程,玩家在这个路程中应该是挑战,提升,积累,并且面对最终挑战的过程。以下是锁列举。&/p&&ul&&li&清理光所有的小怪可以进入下一个房间。&br&&/li&&li&清理光所有的物件对象,比如砸烂所有的箱子。&br&&/li&&li&获取到某样特殊的物品,一般为概率掉落。&br&&/li&&/ul&2.2 大关(锁)&ul&&li&打死某个BOSS。&br&&/li&&li&在限定时间内打死某个BOSS。&br&&/li&&li&在限定时间内杀死多少怪物。&br&&/li&&li&搜集获取多少个物品。&br&&/li&&/ul&&br&&b&3. 大小分类&/b&&br&&br&&p&1、环境感知是关卡的第一要素,除开视觉效果以外玩家对游戏进程的第一感知。&/p&&p&2、关卡的大小会牵扯到难度,时间,怪物数量,解锁的运用。&/p&&p&3、不同大小的关卡应该在整体游戏上传达统一的游戏体验和认知。&/p&&p&4、针对性的运用玩家对关卡大小的认知,可以传达游戏中最主要的体验。&/p&&p&5、对这种认知的合理变化可以让游戏的关卡更为有趣,主要为锁、怪等。&/p&&br&3.1 小关&ul&&li&让玩家有一定的探索感,有未知的多的怪不可见。&br&&/li&&li&常规性的内容体验,战斗体验。&br&&/li&&li&常规性的剧情任务体验。&br&&/li&&li&一般的怪物和解锁过程。&br&&/li&&/ul&&br&&p&3.2 特殊关&br&&/p&&ul&&li&关卡结构中的特殊场景关卡,&br&&/li&&li&常规剧情中的特殊事件&br&&/li&&li&常规场景中的特殊场景,特定场景&br&&/li&&li&不同寻常的怪物分布,在整个游戏中可以贯穿的,而非当前关卡的特色&br&&/li&&li&特殊表现怪,或者特殊的剧情,或者支线,或者其他解锁方式。&br&&/li&&li&每个常规的关卡中出现1到2个。&/li&&/ul&3.3 BOSS关&ul&&li&每个关卡的最后节点&br&&/li&&li&每个关卡的主线剧情节点,玩家的最后一次挑战&br&&/li&&/ul&&br&&p&&b&4.
怪物分类&br&&/b&&/p&&br&4.1 常规怪物&ul&&li&依据当前关卡的特色,根据关卡安排。&br&&/li&&li&每个关卡的普通小房间都是这类型的怪&br&&/li&&li&以体现关卡风格和特点&br&&/li&&/ul&4.2 特殊怪物&ul&&li&特定出现的怪物,代表了游戏的整体感觉&br&&/li&&li&在常规的关卡每个一定的阶段出现一次&br&&/li&&li&通常用来承担游戏的重要节奏和特殊剧情的出现&br&&/li&&li&同时加深玩家对游戏整体剧情的理解和认知&br&&/li&&li&如第二个关卡出现了一堆天使,第四个关卡这堆天使又出现,他们不是当前关卡的特色怪物,但是代表着剧情的延伸。&br&&/li&&li&或者是支线的剧情,或者是特殊掉落的摆设。&br&&/li&&/ul&4.3 普通BOSS&ul&&li&常规关卡中的小BOSS&br&&/li&&li&代表了这一阶段怪物的最强&br&&/li&&li&在阶段性的剧情里代表最后的终结节点。&br&&/li&&/ul&4.4 特殊BOSS&ul&&li&也可以归结为前面的特殊怪一类&br&&/li&&li&例如某种稀有的BOSS,出现在特殊的关卡&br&&/li&&li&也可以使前期的一些关卡BOSS,重新出现在了后期的特殊关卡或者普通小关卡,以加深玩家对游戏统一的认知&br&&/li&&li&同时也是对节奏的进一步调整。&br&&/li&&/ul&&br&&b&5. 怪物分布&/b&&br&&br&5.1 心情曲线&ul&&li&面对同样的怪物玩家很容易对战斗进行评估和判断。&br&&/li&&li&对同样组合的怪物玩家的战斗策略以及操作难度玩家战斗感认知都是一样的。&br&&/li&&li&所以在怪物分布下需要阶段性的调整玩家的心理曲线;以一种我们所希望看到的方式来配合我们的技能展开,战斗节奏。&br&&/li&&/ul&&br&5.2 量的提升&ul&&li&这是针对同类同属性,同攻击方式的怪物。&br&&/li&&li&提升难度的方式为提升通常战斗出现的量。&br&&/li&&li&这样的提升通常提升的难度不大,对游戏乐趣的提升较小,除了可以满足消灭更多怪物的快感。&br&&/li&&/ul&&br&5.3 类型变化&ul&&li&针对同强度不同类型的怪物,不同攻击方式的怪物。&br&&/li&&li&这样的难度提升方式通常提升的是战斗技巧。&br&&/li&&li&这样的提升方式对玩家而言通常难度较高,对游戏技巧的提升是一个关键性的表现。&br&&/li&&/ul&&br&5.4 强度和量&ul&&li&同时提高怪物的强度和量,但依然是同类型的怪&br&&/li&&li&这样的提升可能主要突出的是强度感受。&br&&/li&&li&这种提升方式对玩家而言通常是提高属性的提升,巩固所掌握的战斗技巧。&/li&&/ul&例如:3个小哥布林,和3个大哥布林。&br&&br&5.5 强度类型&ul&&li&同时出现更多的类型和伴随强度的提升&br&&/li&&li&这样的混合型的怪物组合提升,同时需要战斗技巧和属性提升&br&&/li&&li&这通常是面对一个比较大的阶段性的门槛,玩家需要花较大的努力才能过去的门槛。&br&&/li&&/ul&&br&5.6 特殊强度类型&ul&&li&在怪物群体中出现某种特殊强度类型的怪物。&br&&/li&&li&面对这样的组合,会让原本平淡的提升方式变的更有挑战性。&br&&/li&&li&通常是在BOSS的方式,或者特殊关卡中。&br&&/li&&/ul&&br&&b&6. 环境变化&/b&&br&&br&6.1 疲劳感受&ul&&li&单人关卡闯关下的模式,很容易让玩家沉闷和疲劳&br&&/li&&li&玩家对打完一个冗长的关卡,产生的不再是兴趣和期待,而是疲惫。&br&&/li&&li&会有很多方面的原因,其中一个为视觉疲劳。&br&&/li&&li&例:一个以洞穴为基调的关卡,玩家所经历的所有小型关卡都在洞穴里。长时间的关注和战斗,玩家的视觉疲劳会相当严重。玩家会恨不得逃离这个地方。&br&&/li&&/ul&&br&6.2 同关卡细节变换&ul&&li&通过环境的转换可以消除一部分疲劳感受。&br&&/li&&li&这取决于环境上微妙差异,一些细节的突出和改变。&br&&/li&&li&在不同的关卡中加入的一些特殊的动态的东西,例如:背景中的NPC或者,传达特有信息的一些东西。&br&&/li&&li&所有的东西都需要的是给玩家表达出一些可以阅读的信息,通过画面感知到的一些信息,以达到疲劳转换。&br&&/li&&/ul&&br&6.3 同关卡环境转换&ul&&li&就整个关卡而言,通常应该是一体的特色。&br&&/li&&li&一个洞穴类型的副本应该秉承一脉,一直到关卡结束。&br&&/li&&li&但是为了解除疲劳感受,可以尝试在其中一些非关键的小关卡节点,加入不同风格的内容。&br&&/li&&li&特殊的多重关卡,可以用来做这类型的作用。&br&&/li&&/ul&&p&例:如果在一个以冰雪为主的关卡地下城,其中一个场景为洞中地下岩浆的场景,这样可以在整个关卡地下城中做出鲜明的场景转换,从而在体验过程中可以起到一定作用。&/p&&br&6.4 不同关卡转换&ul&&li&常规性的做法不同关卡之间有联系有变换。&br&&/li&&li&主城和相对的场景之间有联系但是有变化。&br&&/li&&/ul&&b&7. 目标变化&/b&&br&&br&7.1 关卡目标&ul&&li&通常关卡的一个进行方式都是打赢BOSS,去到下一个关卡。&br&&/li&&li&在长期的内容下面,通常都是通过不同的任务类型和手段驱动玩家用不同的方式做同一件事情。以达到不同的目标。&br&&/li&&li&不同类型的手段可以定义为锁。&br&&/li&&li&目标通常为对玩家有所增益的一些具体的奖励。&br&&/li&&/ul&&br&7.2 手段运用&ul&&li&如果一直是打怪,并且是同样的方式和要求下去打怪。玩家同样有疲劳感。&br&&/li&&li&因此这种方式的运用应该有不同的变化。&br&&/li&&li&主要是要求的变化。&br&&/li&&li&不同的任务或者关卡可以有自己特殊的手段和方式。&br&&/li&&/ul&&p&例如:每消灭一个怪可以增加1点攻击力,死亡清零,如果延续下去可以越来越强力的面对后期的挑战。&/p&&ul&&li&运用不同的手段和规则,以达到消除关卡持续挑战的疲劳感。&br&&/li&&/ul&&br&7.3 目标建立&ul&&li&游戏的目的其中之一为对所学,所掌握的能力有直观的表现,并且能获得系统认可的奖励。&br&&/li&&li&系统认可的奖励可以被玩家认为是他的目标。&br&&/li&&li&通常玩家会对一个明确的目标去挑战一系列的怪物或者探索。但是当达到这一目标后通常会失去动力。&br&&/li&&li&这需要在关卡的节奏和流程上,在这一目标消失的同时,给玩家建立新的目标,并且留下一定的线索和支持。&br&&/li&&/ul&&p&例:当前的目标是,这个关卡的BOSS打赢后可以获得一块宝剑碎片,当十个宝剑碎片可以换取一把宝剑。如果这个目标完成,并且下一个目标很遥远,通常玩家对下一阶段的动力需要重新建立和引导。&/p&&ul&&li&除任务手段,在这里都可以建立新的动力,让玩家在达成这个目标的同时给予玩家新的指引,去下一段。&br&&/li&&/ul&&br&&b&8. 探索&/b&&br&探索考虑的是时间成本和游戏节奏。&br&&br&&ul&&li&对于网游玩家来讲,其实利益目标是第一的导向。&br&&/li&&li&因此探索的可能性基本不可能存在,因为这负担着时间成本,基本上这类的设定会被认为是废设定。&br&&/li&&li&体力的限制使得玩家对关卡的成败会有重视,因为会影响时间成本&br&&/li&&li&有传送和无传送的设计区别较大&br&&/li&&/ul&&br&&p&拿最后一条举个例子:&/p&&img src=&/c87dd948c9e5b8cc7e7e9d9_b.jpg& data-rawwidth=&1076& data-rawheight=&50& class=&origin_image zh-lightbox-thumb& width=&1076& data-original=&/c87dd948c9e5b8cc7e7e9d9_r.jpg&&&p&图注:&/p&&p&绿色格子:无任何动作的跑步前进过程(Z表示障碍,M表示房间门),每个绿色格子时长为1s&/p&&p&红色格子:战斗,每个格子表示一次战斗&/p&&p&黄色格子:关卡中的陷阱元素,每个黄色格子表示该副本中的特色陷阱(B表示补血池,C表示尖刺陷阱,H表示召唤阵)。&/p&&br&&br&&p&上面这个关卡图,&/p&&p&1.关卡节奏比较平衡,结束战斗后3~5s即可再次进入战斗&/p&&p&2.战斗和陷阱、障碍并存&/p&&p&3.关卡中有障碍3个、地形变化2种、补血池1个、尖刺陷阱4组、召唤阵4个,种类丰富&/p&&p&4.关卡中没有长时间无意义的跑步前进阶段,关卡中无重复往返跑的路径&/p&&p&5.关卡共有14波战斗,跑步前进时间在1min左右,相比于4~6min的副本长度,比例比较平衡&/p&&br&&p&而下图:&/p&&img src=&/e3cff906bb0eb299d9d88e_b.jpg& data-rawwidth=&1056& data-rawheight=&47& class=&origin_image zh-lightbox-thumb& width=&1056& data-original=&/e3cff906bb0eb299d9d88e_r.jpg&&&br&&p&这个关卡中太多无意义的跑动,或多或少让玩家感觉到很无趣,节奏性较弱。&/p&&br&&p&好了,抛砖引玉结束。&/p&
这竟然是13年1月的一个问题。可见当时知乎上游戏从业者是多么稀少…… 所谓世无英雄,遂使竖子成名,既然无人回答,老衲又无意中看见了,来一个马后炮的回答吧。事先声明:非游戏从业人士,回答不科学之处,请谅解。 首先,题主提到拐角、格子个数、障碍物…
&p&林林总总我也算买了一些关于游戏的书籍,大概有下面这么些:&/p&&img src=&/v2-f8667efc278b52f155e5dbbb_b.jpg& data-rawwidth=&3264& data-rawheight=&1836& class=&origin_image zh-lightbox-thumb& width=&3264& data-original=&/v2-f8667efc278b52f155e5dbbb_r.jpg&&&p&其中关于编程的书籍就不妄加评论了,想要学习游戏编程的建议看&a href=&/?target=https%3A///miloyip/game-programmer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&《游戏程序员的学习之路》&i class=&icon-external&&&/i&&/a&。&/p&&p&下面是我的推荐,我将其归为三类:&/p&&ol&&li&又全面又好用,买到真是赚到&ul&&li&《体验引擎:游戏设计全景探秘》:只要看就有收获的书,强烈推荐。&/li&&li&《通关!游戏设计之道》:行文诙谐有趣,有大量图示说明,即使是当故事书看都不错。&/li&&li&《游戏设计艺术》:很系统地介绍了游戏设计的方方面面。&/li&&li&《游戏设计梦工厂》:外国一些游戏院校的入门书。&/li&&/ul&&/li&&li&特定的设计思路,需要再读读看&ul&&li&《游戏设计要则探秘》:觉得它说得很有道理,但是对目前的设计工作感觉没什么推动……就是那种道理我都懂,然而怎么用呢?实践后我再修正这个评论。&/li&&li&《游戏大师Chris Crawford谈互动叙事》:很难懂。&/li&&li&《游戏机制——高级游戏设计技术》:将游戏化为资源的转移,思路很好,然而一旦复杂度上去就很难建模……不过抛开后面的建模方法,前半部分也很有价值。&/li&&li&《游戏设计的236个技巧》:着墨于动作游戏方面,分析游戏中的各种细节。如果关注3D动作游戏这本书相当好。&/li&&li&《数据驱动的游戏设计》:这是唯一一本我当年复印了而现在没有买正版进行补偿的书籍,原因就是翻译实在太烂了:能将“暴击”翻译成“关键命中”。其他的错误也是频频出现。书本身尚佳。&/li&&/ul&&/li&&li&游戏行业故事&ul&&li&《神作之路》:对十个畅销游戏的制作者进行采访,列出的开发过程中出现的问题,非常有价值。&/li&&li&《Doom启示录》,《游戏之巅:游戏背后的创业风云》:尚未看,盛名在外。&/li&&/ul&&/li&&/ol&&p&另外推荐两个YouTube节目频道:&/p&&ul&&li&&a href=&/?target=https%3A///playlist%3Flist%3DPLB9B0CA0& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Extra Credits: All Episodes&i class=&icon-external&&&/i&&/a&:大名鼎鼎的额外加分系列,只要是游戏设计相关的,它们都谈。(而且很有趣)。&/li&&li&&a href=&/?target=https%3A///playlist%3Flist%3DPLc38fcMFcV_s7Lf6xbeRfWYRt7-Vmi_X9& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Game Maker’s Toolkit&i class=&icon-external&&&/i&&/a&:针对某一游戏机制或者某一游戏的专业级讨论,建议你一期不拉,眼也别眨地看(如果你能和我一样,为喜欢的几期贡献中文字幕就更好啦)。&/li&&/ul&
林林总总我也算买了一些关于游戏的书籍,大概有下面这么些:其中关于编程的书籍就不妄加评论了,想要学习游戏编程的建议看。下面是我的推荐,我将其归为三类:又全面又好用,买到真是赚到《体验引擎:游戏设计全景探秘》:只要看就…
&img src=&/v2-594ada4ffdbb09c342e8_b.jpg& data-rawwidth=&432& data-rawheight=&209& class=&origin_image zh-lightbox-thumb& width=&432& data-original=&/v2-594ada4ffdbb09c342e8_r.jpg&&&p&最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩)。&/p&&p&这个游戏叫做《不要停!八分音符酱?》。它是一款来自岛国的恶搞游戏,主角是一只可爱的小生物 — 八分音符酱,玩家通过对它喊话来控制其前进和跳跃。&/p&&p&因为操作方式太奇葩,所以玩游戏的人本身似乎会比游戏更好玩……&/p&&img src=&/v2-040bcdb8cd948d8f668c_b.png& data-rawwidth=&750& data-rawheight=&468& class=&origin_image zh-lightbox-thumb& width=&750& data-original=&/v2-040bcdb8cd948d8f668c_r.png&&&p&不过这不是我今天重点。我们是编程教室啊,肯定不能像游戏主播一样打个游戏卖个萌就完啦!
&/p&&p&所以,我就用了大约 100 行 Python 代码,自己实现了一个。而且,还配了个超霸气的主角:海中霸主皮皮虾!&/p&&img src=&/v2-17f0d05edb2c02da5f72f_b.png& data-rawwidth=&640& data-rawheight=&360& class=&origin_image zh-lightbox-thumb& width=&640& data-original=&/v2-17f0d05edb2c02da5f72f_r.png&&&p&先上效果(优化后的版本):
&/p&&a class=&video-box& href=&/?target=https%3A///x/page/z0380ogn3e7.html& target=&_blank& data-video-id=&& data-video-playable=&false& data-name=&魔性声控游戏 - 暴走皮皮虾 - 腾讯视频& data-poster=&///qqvideo_ori/0/z0380ogn3e7_228_128/0& data-lens-id=&&&
&img class=&thumbnail& src=&///qqvideo_ori/0/z0380ogn3e7_228_128/0&&&span class=&content&&
&span class=&title&&魔性声控游戏 - 暴走皮皮虾 - 腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&/x/page/z0380ogn3e7.html&/span&
&/a&&p&&br&&/p&&p&最初的仿制版本用了大约100行 Python 代码,花了半天时间。后来又花一天时间,根据自己的恶趣味,加了点更魔性的功能。另外加了个联机的排行榜。&/p&&img src=&/v2-85857cdbefb0acdaecedc_b.png& data-rawwidth=&2560& data-rawheight=&1004& class=&origin_image zh-lightbox-thumb& width=&2560& data-original=&/v2-85857cdbefb0acdaecedc_r.png&&&p&执行文件和代码都上传了,不用安装 Python 也可以玩。具体细节可以对照源码看,代码不长。
&/p&&p&这里简单说下实现的核心思路,主要用到两个模块:&/p&&h2&cocos2d-python&/h2&&p&这个之前的贪吃蛇大作战 Python 版就用到。参见 &a href=&/p/& class=&internal&&爆款游戏《贪吃蛇大作战》的 Python 实现 - 知乎专栏&/a&。负责游戏的主循环、图像渲染、事件响应等。&/p&&h2&pyaudio&/h2&&p&基于开源声音库 PortAudio 的 Python 模块。靠它实现这个游戏的核心玩法:声控。&/p&&p&有了这两样东西,其他就没什么特别的了。如果你用 cocos2d 开发过小游戏,剩下的就是一些常规工作。通过几个代码片段粗略地说下:&/p&&ul&&li&定义角色,添加在场景上&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 定义 sprite&/span&
&span class=&k&&class&/span& &span class=&nc&&PPX&/span&&span class=&p&&(&/span&&span class=&n&&cocos&/span&&span class=&o&&.&/span&&span class=&n&&sprite&/span&&span class=&o&&.&/span&&span class=&n&&Sprite&/span&&span class=&p&&):&/span&
&span class=&k&&def&/span& &span class=&nf&&__init__&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&):&/span&
&span class=&nb&&super&/span&&span class=&p&&(&/span&&span class=&n&&PPX&/span&&span class=&p&&,&/span& &span class=&bp&&self&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&__init__&/span&&span class=&p&&(&/span&&span class=&s1&&'ppx.png'&/span&&span class=&p&&)&/span&
&span class=&o&&...&/span& &span class=&c1&&# 略&/span&
&span class=&c1&&# 创建并添加&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span& &span class=&o&&=&/span& &span class=&n&&PPX&/span&&span class=&p&&()&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&add&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&ul&&li&给角色增加重力的效果&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&update&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&,&/span& &span class=&n&&dt&/span&&span class=&p&&):&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&speed&/span& &span class=&o&&+=&/span& &span class=&mi&&10&/span& &span class=&o&&*&/span& &span class=&n&&dt&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&y&/span& &span class=&o&&-=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&speed&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&y&/span& &span class=&o&&&&/span& &span class=&o&&-&/span&&span class=&mi&&80&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&reset&/span&&span class=&p&&()&/span&
&/code&&/pre&&/div&&ul&&li&获取麦克风的声音&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&c1&&# 初始化&/span&
&span class=&n&&pa&/span& &span class=&o&&=&/span& &span class=&n&&PyAudio&/span&&span class=&p&&()&/span&
&span class=&n&&SAMPLING_RATE&/span& &span class=&o&&=&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&pa&/span&&span class=&o&&.&/span&&span class=&n&&get_device_info_by_index&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&)[&/span&&span class=&s1&&'defaultSampleRate'&/span&&span class=&p&&])&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&stream&/span& &span class=&o&&=&/span& &span class=&n&&pa&/span&&span class=&o&&.&/span&&span class=&n&&open&/span&&span class=&p&&(&/span&&span class=&n&&format&/span&&span class=&o&&=&/span&&span class=&n&&paInt16&/span&&span class=&p&&,&/span& &span class=&n&&channels&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&,&/span& &span class=&n&&rate&/span&&span class=&o&&=&/span&&span class=&n&&SAMPLING_RATE&/span&&span class=&p&&,&/span& &span class=&nb&&input&/span&&span class=&o&&=&/span&&span class=&bp&&True&/span&&span class=&p&&,&/span& &span class=&n&&frames_per_buffer&/span&&span class=&o&&=&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&NUM_SAMPLES&/span&&span class=&p&&)&/span&
&span class=&c1&&# 每帧中获取音量&/span&
&span class=&n&&string_audio_data&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&stream&/span&&span class=&o&&.&/span&&span class=&n&&read&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&NUM_SAMPLES&/span&&span class=&p&&)&/span&
&span class=&n&&k&/span& &span class=&o&&=&/span& &span class=&nb&&max&/span&&span class=&p&&(&/span&&span class=&n&&struct&/span&&span class=&o&&.&/span&&span class=&n&&unpack&/span&&span class=&p&&(&/span&&span class=&s1&&'1000h'&/span&&span class=&p&&,&/span& &span class=&n&&string_audio_data&/span&&span class=&p&&))&/span&
&/code&&/pre&&/div&&ul&&li&通过音量判断行走和跳跃&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&if&/span& &span class=&n&&k&/span& &span class=&o&&&&/span& &span class=&mi&&3000&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&floor&/span&&span class=&o&&.&/span&&span class=&n&&x&/span& &span class=&o&&-=&/span& &span class=&nb&&min&/span&&span class=&p&&((&/span&&span class=&n&&k&/span& &span class=&o&&/&/span& &span class=&mf&&20.0&/span&&span class=&p&&),&/span& &span class=&mi&&150&/span&&span class=&p&&)&/span& &span class=&o&&*&/span& &span class=&n&&dt&/span&
&span class=&k&&if&/span& &span class=&n&&k&/span& &span class=&o&&&&/span& &span class=&mi&&8000&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&jump&/span&&span class=&p&&((&/span&&span class=&n&&k&/span& &span class=&o&&-&/span& &span class=&mi&&8000&/span&&span class=&p&&)&/span& &span class=&o&&/&/span& &span class=&mf&&1000.0&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&目前只是通过试验随意设置了下参数,不能保证在每台电脑上的效果。&/p&&p&这里,地面上的每个块是放在一个整体的容器里,皮皮虾的“行走”,其实是通过地面整体向后退来实现的。&/p&&ul&&li&简单的碰撞检测&/li&&/ul&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&collide&/span&&span class=&p&&(&/span&&span class=&bp&&self&/span&&span class=&p&&):&/span&
&span class=&n&&px&/span& &span class=&o&&=&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&x&/span& &span class=&o&&-&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&floor&/span&&span class=&o&&.&/span&&span class=&n&&x&/span&
&span class=&k&&for&/span& &span class=&n&&b&/span& &span class=&ow&&in&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&floor&/span&&span class=&o&&.&/span&&span class=&n&&get_children&/span&&span class=&p&&():&/span&
&span class=&k&&if&/span& &span class=&n&&b&/span&&span class=&o&&.&/span&&span class=&n&&x&/span& &span class=&o&&&=&/span& &span class=&n&&px&/span& &span class=&o&&+&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&mf&&0.8&/span& &span class=&ow&&and&/span& &span class=&n&&px&/span& &span class=&o&&+&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&mf&&0.2&/span& &span class=&o&&&=&/span& &span class=&n&&b&/span&&span class=&o&&.&/span&&span class=&n&&x&/span& &span class=&o&&+&/span& &span class=&n&&b&/span&&span class=&o&&.&/span&&span class=&n&&width&/span&&span class=&p&&:&/span&
&span class=&k&&if&/span& &span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&y&/span& &span class=&o&&&&/span& &span class=&n&&b&/span&&span class=&o&&.&/span&&span class=&n&&height&/span&&span class=&p&&:&/span&
&span class=&bp&&self&/span&&span class=&o&&.&/span&&span class=&n&&ppx&/span&&span class=&o&&.&/span&&span class=&n&&land&/span&&span class=&p&&(&/span&&span class=&n&&b&/span&&span class=&o&&.&/span&&span class=&n&&height&/span&&span class=&p&&)&/span&
&span class=&k&&break&/span&
&/code&&/pre&&/div&&p&如果你现在对上面的代码还一脸懵逼,没关系,赶紧去看一看我们公众号里超好懂的入门教程。我们之后也还会对游戏开发、爬虫、数据分析等方面做进一步的介绍。&/p&&p&&br&&/p&&p&&u&公众号(Crossin的编程教室)里回复 &b&皮皮虾&/b&,获取游戏程序和源代码。&/u&&/p&&p&&br&&/p&&p&&i&其他文章及回答:&/i&&/p&&p&&a href=&/question//answer/& class=&internal&&学习编程的过程中可能会走哪些弯路,有哪些经验可以参考?&/a&&/p&&p&&a href=&/question//answer/& class=&internal&&你是如何自学 Python 的?&/a&&/p&&p&&a href=&/p/& class=&internal&&数据分析:当赵雷唱民谣时他唱些什么?&/a&&/p&&p&&a href=&/p/& class=&internal&&我去扒了杜蕾斯的微博&/a&&/p&&p&&a href=&/p/& class=&internal&&一行代码扫出“敬业福”&/a&&/p&&p&&a href=&/p/& class=&internal&&今天,你抢到票了吗?&/a&&/p&&p&&br&&/p&&h2&Crossin的编程教室&/h2&&ul&&li&微信公众号ID:crossincode&/li&&li&网站:&a href=&/?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&&/li&&li&QQ群:&/li&&li&微信加群:crossin123&/li&&/ul&&img src=&/5b58c0ecafdc5d85c857_b.jpg& data-rawwidth=&258& data-rawheight=&258& class=&content_image& width=&258&&&p&&/p&
最近几天,一款魔性的小游戏在微博上刷屏了,各大平台的主播也纷纷如感染病毒一样直播自己怎么玩这个游戏(被游戏玩)。这个游戏叫做《不要停!八分音符酱?》。它是一款来自岛国的恶搞游戏,主角是一只可爱的小生物 — 八分音符酱,玩家通过对它喊话来控…
正好结束了这个事情,来来回回4个多月,希望经验能帮助到题主。&br&&br&一点个人经验,我在最初选校的时候也基本就是去google查“game design graduate school rank”之类的,然后就看一些网站的排名。开始当然很杂,各种网站各种排名不一样,Princeton Reviews算比较正规的网站,其他都是小网站,毕竟不是大热门专业,不过看多了就会发现总有那么几所是重复的,于是乎就列下他们的名字然后去到他家网站看详细信息。&br&&br&对于详细信息,我觉得首先看这个学校这个项目的课程介绍,一般来说主流点的track分类会分为三个方向,programming,art,production。其实我更喜欢像Guildhall of SMU的分类:programming,art,design,更贴近业界,因为一毕业就找production的工作还是不太现实,不过很多写着production其实是包含了design了,难道是因为他们觉得design没啥教的么= = 还有一些类似ETC of CMU是没有细分的,这种就是比较专注于全面培养,如果题主没想明白以后想到programmer还是designer还是artist可以更多地考虑这类学校,因为所有方向都会接触一下学一些。&br&&br&对于排名,我觉得这个就很见仁见智了,感觉上重叠的前10所都是差不多的,除了这俩逆天的存在如USC和MIT,其他的我觉得排名其实没有意义。游戏行业找工作说白了还是看你的游戏项目经验,背景院校影响不会那么大,因为游戏业很多离经叛道的存在,recruiters也都是懂的。而游戏项目的课程比如一学期做一个完整的游戏这种,我所了解到的所有游戏学校都有开设,也就是说还是看进去了自己的努力程度了。毕竟这个专业的年龄都不超过20年,所以排名其实意义不是很大。不过要是有名校背景的愿望,那可以多考虑下cmu,usc和ucsc这一类。&br&&br&以下列出我目前申请的几所学校的一些信息(一共申了6所拿到5所录取1所让我第二次参加portfolio review):&br&1.Guildhall of SMU (录取,决定去)&br&全美第一个开设游戏专业的大学,研究生的游戏方向分类很对我胃口,分为level design,game programming和game art三个方向。课程安排也比较合理,认识一个bioware的level design也是从这里毕业的,不过综合就业率和就业质量不好调查所以没有具体情况。2年的master课程很满,了解到信息也是大家都很忙,整个专业在一个单独的校区,不在smu主校区,学费2年7W多刀,生活费两年3W(含车)差不多,所以大概10W刀左右。优势在于,gear box就在附近,东山再起的id soft也不远,远一点Austin还有bioware之类的,德州大游戏公司挺多,税低生活便宜。&br&&br&2.ETC of CMU (录取)&br&卡内基梅隆的游戏中心,比较综合的一个专业,申请的时候没有具体的track分类,课程设计更偏向于娱乐技术而不是游戏专精,特色课building a virtual world用到oculus rift和各种tracking 设备和VR设备,一个很吊的存在是这个专业可以选计算机科学的课程,所以被录取了也就相当于半个cmu的计算机科学硕士了,这是大大的福利啊,推荐不清楚自己想做啥方向而对编码又有一定自信的同学。学费2年10W刀,生活费应该会贵一点估算4W刀吧,毕竟匹兹堡。优势在于,牌子响,能上计算机的屌课,networking能认识到很多牛人, 项目很多,能获得很多经验,虽然可能不一定是电子游戏相关。&br&&br&3.Digipen (录取)&br&神一样的学校,整个master只有游戏编程和游戏艺术,portal、portal2的开发团队均是这里出来的,唯一一个valve可能校招的学校,GDC学术比赛常年赞助者。。。光环太多,基本叫做为游戏而生。如果对自己的编程能力有十分的自信,而且也想继续走游戏程序这个方向,强烈建议申这个学校,学费两年大概7W刀,生活费因为在西雅图旁边略贵,也估算4W刀吧。不过所有的评论都提到这里基本没有周末,无时无刻都在编程,生活极其艰辛,有毅力的话再考虑吧,当然毕业之后我相信前景可观。&br&&br&4.UCSC (录取)&br&当时申这个学校主要考虑到UC系统和加州地理,program只有一年,不过还是4个学期,但是一年的学费是6W多,加州生活费一年估计也得2W多刀,不过课程设计还算不错,就是不知道一年的时间能有多深的程度吧。优势在于加州位置好,各种大小公司都有,intern和工作应该不会愁,而且ucsc本身质量很好,肯定也能认识大牛。&br&&br&5.University of Utah - EAE (录取)&br&EAE常年参加GDC的学生游戏竞赛,而且成绩都不错,可见质量很好,分为programming,art,production三个方向,production包含一些design的课程。因为最后才给我的录取通知所以就没了解更多信息了。学费两年大概也是7W,生活费应该2W左右吧感觉犹他不是很贵,盐湖城本身风景如画,学校的课程安排也很好,不过周围游戏公司貌似不是很多,希望有了解的朋友补充。&br&&br&6. FIEA - UCF(二次review)&br&FIEA也分为programming,art,production三个方向,同样production包含design课程,当时看了他们的宣传视频和一些访谈,觉得还是挺靠谱的。而且给的portfolio任务都挺专业的,我当时恰逢要准备smu的portfolio任务,就水过去了,结果就挂了,不过依然还是给了我二次review的机会,算是个waitlist吧,不过我实在没精力再搞了就没继续申了。学费也是两年7W多刀,生活费在奥兰多应该需要3W多吧。优势在于,旁边就是各种Disney和EA,不愁找不到工作,不过后面肯定要跳出这两个大公司的,然后就是。。。各种可以耍,奥兰多要耍有Disney land和universal studio,要观有海岸,各种能旅游。。。&br&&br&还有很多其他学校我没列出来,比如萨凡纳艺术学院,fullsail university,乔治亚理工等等,由于了解不如这六所多,也就不细说了。选学校时,主要对比的东西还是看他的课程表,看他在网上的评价,然后重点有一个是,看他的学生作品,如果学生作品都很水,那也就可想而知,如果学生作品都很牛,再看他的作品是程序牛呢,还是设计牛,或是美术牛,就可以根据自己的兴趣选择了。&br&&br&奖学金一事,由于我当时申请的时候怕拒就没太多关注,应该入学了还是可以申请的,不过我感觉游戏设计专业大概是没有奖学金?因为我在各种网上看美国人的评论都没提到,我在申请时也没注意有这方面的提醒,除了ucsc主动给了我1W3刀的学费免除(还是尼玛好贵)以外其他都是说我可以申请financial aid,这个应该不算奖学金吧,然后utah和ucf倒是有页面和奖学金有关,不过是需要你是他们那些组织的成员,所以刚申请的时候应该不行。有经验的朋友可以分享下。&br&&br&上面都是简略介绍,这里有一篇我的采访有更多的细节,总结了下自己一年入学以来的体会:&a href=&/p/& class=&internal&&&span class=&invisible&&http://&/span&&span class=&visible&&/p/22&/span&&span class=&invisible&&729739&/span&&span class=&ellipsis&&&/span&&/a&&br&&br&利益相关:15年5月UTDallas CS毕业,15年8月smu入学level design。已入学一年。
正好结束了这个事情,来来回回4个多月,希望经验能帮助到题主。 一点个人经验,我在最初选校的时候也基本就是去google查“game design graduate school rank”之类的,然后就看一些网站的排名。开始当然很杂,各种网站各种排名不一样,Princeton Reviews算…
先说结论:不是完全随机的。&br&&br&利益相关:某款月流水峰值破2000万手游的服务器负责人。&br&&br&只说我们游戏的做法,只说思路,具体实现有差异。&br&&br&掉落系统(玩家看起来是随机的)是由计数器(分为角色个人计数和区服计数两种)和掉落库共同组成的。&br&比如副本掉落,掉落库分为区服稀有掉落库(掉落的东西非常稀有,会触发区服跑马灯)、个人稀有掉落库(掉落的东西比较稀有,但人人可得)和普通掉落库(没啥好东西),每次进行掉落的时候会对区服计数器和个人计数器进行累加操作,如果区服计数器达到条件则触发区服稀有掉落库掉落,如果个人计数器达到条件则触发个人稀有掉落库掉落,否则触发普通掉落库掉落。每种掉落库内部采用的是权重随机,这部分可以认为是随机的。&br&简而言之,先根据计数器来找到掉落库,然后在掉落库内部进行权重随机。&br&&br&我们游戏内绝大部分系统都是类似方案,比如抽卡、各种副本结算、各种培养系统。&br&&br&&br&===破百赞,再补充另外一种随机规则===&br&&br&有种抽奖系统,可以让玩家看到抽中的概率。&br&如果玩家本次没有抽中,就会增加抽中的概率,并且及时反馈给玩家,如果玩家抽中了,则会恢复为初始概率。&br&比如,初始概率为10%,如果没有抽中则增加1%的概率,如果玩家持续不中则概率最多增加到90%就不会再增加了。&br&这种系统也是有计数器的,假设配置的计数器下限为300次,那么如果玩家抽取次数小于300次的话,即使概率为90%,也绝对不会抽中的。&br&只有当计数器超过300次以后,才会根据概率来计算是否抽中。并且,实际计算的概率与玩家看到的概率是两码事(初始值不同,增长步长也不同),也就是说即使玩家的计数器达标了,显示概率也达到90%了,实际参与计算的概率可能才是60%甚至30%。&br&玩家一旦抽中,那么计数器、显示概率和实际概率都会恢复为初始值,重新开始新的一轮。&br&当然,玩家的实际体验取决于策划配置的计数器下限以及显示概率和实际概率的初始值和增长步长,如果配置的参数不合理,要么玩家感觉比较坑,要么产出控制的不理想。&br&&br&====================&br&&br&有知友问掉率是否与玩家的充值金额有关系?&br&在我们游戏里面,掉率与充值金额是无关的。
先说结论:不是完全随机的。 利益相关:某款月流水峰值破2000万手游的服务器负责人。 只说我们游戏的做法,只说思路,具体实现有差异。 掉落系统(玩家看起来是随机的)是由计数器(分为角色个人计数和区服计数两种)和掉落库共同组成的。 比如副本掉落,掉…
&img src=&/v2-b62b6dc660aab1_b.png& data-rawwidth=&1212& data-rawheight=&550& class=&origin_image zh-lightbox-thumb& width=&1212& data-original=&/v2-b62b6dc660aab1_r.png&&&p&电子游戏发展到今天,游戏数值系统主要是依赖于两种截然不同的公式。&br&&/p&&p&第一种公式是减法公式,第二种公式是除法公式。&/p&&p&最简单的两种公式:&/p&&p&减法公式:伤害=攻击-防御&/p&&p&除法公式:伤害=攻击÷(1-防御÷(a+防御))&/p&&p&毫无疑问,暴雪自己是除法公式的大师。从伟大的游戏系列《暗黑破坏神》开始,到《魔兽争霸3》再到《魔兽世界》,处处可见大师级的除法公式对游戏的实际体验提升的意义。从今天的游戏行业现状来说,除法公式撑起了今天游戏行业主流玩法之一的“刷装备”的PVE核心玩法,是游戏行业快速发展的功臣之一。&/p&&p&当然,除法公式还不仅仅是用在PVE游戏上面。其实继承了暴雪血统的MOBA游戏,比如今天市场占有率最高的DOTA2+LOL,本质上,也是使用的《魔兽争霸3》的除法公式。&/p&&p&但是,我们今天要讨论的话题是减法公式。是《守望先锋》使用的公式:减法公式。&/p&&p&我们将借助减法公式,回答OW的很多问题:&/p&&p&为什么一开始快速这么好玩?&/p&&p&为什么OW竞技模式不适合普通玩家?&/p&&p&为什么半藏这么好玩?&/p&&p&如果你想上分,应该在哪里提升自己?&/p&&p&为什么秩序之光对普通玩家是梦靥?&/p&&p&为什么韩国人在OW项目上这么强大?&/p&&p&……&/p&&p&&b&一、减法公式&/b&&/p&&p&减法公式,也就是攻击减防御,然后这个值,会根据游戏的一些具体情况,再设定一些系数与之相乘,然后得出最终伤害值。&/p&&p&减法公式表面上理解起来容易,也确实相对比较容易被数值策划精确计算。因此各种JRPG,早期的经典游戏游戏比如《星际争霸》《梦幻西游》等都是减法公式。还有,去年席德梅尔的大作《文明6》,也采用了减法公式来描述新时代武器对旧时代的碾压效果。&/p&&p&但是现在为什么很多游戏又不敢做成减法公式呢?&/p&&p&有一个原因很简单,因为减法公式在他的基础上,有一个隐患就是“不破防”。简单的说,一旦防御大于攻击,攻击不能破防的那个玩家,挫败感就很强。除法公式为什么诞生,就是解决玩家可能出现的不破防的问题而诞生的。除开这一点外,除法公式跟减法公式本质上的区别不大。&/p&&p&《守望先锋》的本质,是一个减法公式。当然,与传统的攻击-防御不同的是,这里是防御值,是治疗英雄的治疗能力。《守望先锋》的伤害公式为:伤害=攻击能力-治疗能力。&/p&&p&在FPS游戏里,游戏还是有命中率的。我们先忽略暴头伤害带来的暴击因素,我们将上述公式进一步细分可得到:&b&伤害期望=攻击频率*命中率-治疗能力。&/b&&/p&&p&好了。我们不进一步把游戏复杂化了。我们先忽略大招和小技能的问题,再忽略狙击手的暴击给游戏公式带来的毁灭性问题。为了计算简便,我们把一次暴击当成命中两次,然后在命中率里面进行计算。&/p&&p&二、&b&减法公式的收益曲线&/b&&/p&&p&减法公式有什么问题呢?&/p&&p&实质上,减法公式最大的问题不是不破防,而是游戏里的玩家收益难以实现线性提升。&/p&&p&我们从最简单的减法公式的图像来看。&/p&&p&伤害=攻击-防御;&/p&&p&y=x-b;&/p&&p&这个公式反应在图像上就是:&/p&&img src=&/v2-8e130d714a57eae9e6c9ab0d_b.png& data-rawwidth=&1576& data-rawheight=&797& class=&origin_image zh-lightbox-thumb& width=&1576& data-original=&/v2-8e130d714a57eae9e6c9ab0d_r.png&&&p&一条笔直的45度角的斜线,与X轴的交点是b点。&/p&&p&这个公式咋看没有问题,是一个线性升级的模式。但是稍微熟悉一点游戏数值的的人都知道,当攻与防的数值越接近的时候,提升攻/防的收益也就越大。反之,如果攻防相差太越,提升攻/防的收益也就越不明显。&/p&&p&为什么呢?&/p&&p&我们举个例子。比如我们规定防御值是5。然后攻击力分别从6到10。&/p&&p&这样,代入上面的式子,我们得到这样的结果:攻击力6,伤害值1;攻击力7伤害值2;攻击力8,伤害值3;攻击力9,伤害值4,攻击力10,伤害值5;&/p&&p&&b&伤害提升率=伤害值之差÷之前伤害值×100%;&/b&&/p&&p&我们的X2-X1的差的空间都是用1作为单位计算。&/p&&p&6-7的伤害提升率为:1/1*100%=100%;&/p&&p&7-8的伤害提升率为:1/2*100%=50%;&/p&&p&8-9的伤害提升率为:1/3*100%=33%;&/p&&p&9-10的伤害提升率为:1/4*100%=25%;&/p&&p&老玩家其实都能在减法公式里纯感觉就知道。减法公式的游戏,伤害每次都只提升了一点,但是每一点伤害的价值是远远不同的。越接近破防边缘的数据,越有用。更别说当攻击力从5提升到6的时候,是相对不破防的5,6是一个无穷大的提升。&/p&&p&为了推出更一般通用的公式。我们开始取一般值来计算。&/p&&p&我们在斜线上任取一点x?和x?,然后我们计算一下x?相对x?提升了多少,如图:&/p&&br&&img src=&/v2-f57ebffd6f7_b.png& data-rawwidth=&1366& data-rawheight=&799& class=&origin_image zh-lightbox-thumb& width=&1366& data-original=&/v2-f57ebffd6f7_r.png&&&p&y=x-b;&/p&&p&y?=x?-b;&/p&&p&y?=x?-b;&br& 伤害提升率=(y?-y?)/y?*100%=(x?-x?)/(x?-b)&/p&&p&为了方便计算,我们令a=x?-x?,a为自定义的伤害差值;&/p&&p&&b&伤害提升率=a/(x?-b)&/b&&/p&&p&这样,我们就得到了最终的双曲线图形。这也就是减法公式的收益曲线。&/p&&img src=&/v2-f2fae09ea2ce4cdd06ab66_b.png& data-rawwidth=&1415& data-rawheight=&786& class=&origin_image zh-lightbox-thumb& width=&1415& data-original=&/v2-f2fae09ea2ce4cdd06ab66_r.png&&&p&其中,a的大小决定了双曲线的每一点的斜率;b影响双曲线中心是哪一点。&/p&&p&结合图形来看,直接从图形上就可以看出,减法公式的收益是极其不均衡的。这里的y值表示提升率,y值越高表示提升率越大。实际上如果你再把提升率再2次求导的话,你会发现这提升率的变化率也是极端不均衡的。越接近攻防相等的地点,这变化率就越夸张。&/p&&p&双曲线再求导的示意图如下。求导过程省略。&/p&&br&&img src=&/v2-22b54c37da_b.png& data-rawwidth=&1273& data-rawheight=&750& class=&origin_image zh-lightbox-thumb& width=&1273& data-original=&/v2-22b54c37da_r.png&&&p&三、&b&在《守望先锋》里的实际意义&/b&&/p&&p&减法公式这种不均衡的成长率问题,给游戏里自然带来了实质上的优点和缺点。&/p&&p&缺点是,设计上容易出现不破防的问题;但是这个不破防的问题,又恰恰是减法公式的优点带来的:中国量产的众多氪金游戏里,故意会把游戏做得尽可能接近破防不远的地方。这种数值控制的好处就是,让土豪花很多钱提升看上去的一点点,这一点点能让普通玩家看了之后心理直觉能接受,但是实际上的提升效果又很让土豪满意。于是减法公式成了今天中国游戏市场的主力军。&/p&&p&有人要问了,如果双方玩家数值差别过大,PVP没法玩怎么办?&/p&&p&用天梯或者等级区分实现不同战斗力量玩家的隔离啊!&/p&&p&但是,《守望先锋》这里操作上出现了问题。《守望先锋》现在的玩法,隔离不了不同战斗力的玩家。所以,现在的《守望先锋》,并不适合做成天梯推广给普通玩家娱乐。&/p&&p&我们用数学工具来解释一下,《守望先锋》现在给玩家带来的一系列困惑的问题原因。&/p&&p&我们实际的数据模拟一下战斗场景:&/p&&p&我们取版本输出位代表的76,治疗位代表的安娜。然后一个靶子作为肉。为方便计算,不计技能使用和换子弹的情况。&/p&&p&方便计算,我们不考虑这个虚构的靶子体型和总血量,忽略安娜的治疗延迟生效。我们取OW国服排行榜500强的数据,WNV安娜命中率72%,弹匣上限8,治疗单发75,每秒攻击频率1.2次,换弹时间1.5秒,循环治疗效率=(0.72×75×8)÷(8÷1.2+1.5)=52.8979 heals/s;加入新版生物手雷(CD10秒)的结果,假定高命中率的手雷是100%命中;于是理论结果=((52.8979×10)+100+0.72×75×0.5×3)÷10=70.9979≈71 heals/s。强迫症,后面太多9了。&/p&&p&于是我们得到了第一个数据:国服第一安娜的理想治疗循环效率值在削弱之后的新版是71点治疗量每秒。恩……如果有人问削弱前的版本这位500强安娜是多少的话,我们也可以计算:&/p&&p&((52.8979×10)+100+0.72×75×1×4)÷10=84. heals/s。&/p&&p&我们再取500强第一76,也是我们OW界著名的圣地亚哥的命中率数据50%,暴击率7%,士兵76的每秒10发子弹,一个弹匣25发子弹,单发子弹伤害20,暴击子弹伤害40,换弹时间1秒,螺旋飞弹爆炸伤害120,CD时间8秒。计算DIYA哥的理论循环输出效率。&/p&&p&这里注意一下,因为螺旋飞弹统计不了命中率,而且还有爆炸衰减带来的伤害衰减。我们为了简化计算把螺旋飞弹的命中率也设定为50%,不计算爆炸冲击波的伤害,于是这里有第一个误差来源;第二个误差是螺旋飞弹的施法时间本身也会干扰输出上限,但是76的特性可以让他在换弹的间隔时间内无损使用螺旋飞弹,这样尽可能的减少施法时间,所以我们也不计算不考虑施法时间。还有,因为麦克雷的翻滚换弹,寡妇半藏的爆头秒杀,法鸡的爆炸冲击波,闪光死神黑影路霸的子弹快速衰减的不确定性,这些数据无法统计的部分,影响比76更大,所以我们只能也只能选择76作为代表性的输出英雄;&/p&&p&不计算右键的循环输出效率=(25×20×0.5×(1+0.07))÷(25÷10+1)=76.42857 damage/s。(DIYA哥果然是天选76?)&/p&&p&加入右键的输出效率=(76.4×0.5)÷8=83.92857约等于83.9heals/s。&/p&&p&好了。经过我们艰苦的计算。我们发现了一个可怕的事实……&/p&&p&在游戏里,暴雪设定的纯粹的攻防数值,是几乎等值的。所以我们可以恶意推测一下,暴雪考虑到数据收集分析的便利性,简单粗暴的根据1输出=1治疗=1护盾的公式简单粗暴的搞出来了铁三角的设计。&/p&&p&而DIVA的76跟WNV的安娜疯狂怼一个靶子的结果是什么呢?&/p&&p&如果没有大招或者没有其他额外因素的话。大概就是半天都未必能打死。83.9与84.5的差值,实际上是误差因素以内,是可以忽略的差值。换句话说,1V1,这个游戏攻击未必能破防。&/p&&p&在破防点附近,我们需要注意到的事情是什么呢?在理想状态下,在破防点附近玩家稍微能提升一点点命中率,就可以取得异常夸张的提升效果。&/p&&p&一点命中率的提升,在这个时候效用有多么大呢?&/p&&p&我们回到之前的公式,先算安娜的数据,将命中率设为r?:&/p&&p&安娜的循环治疗效率(新版)=((((r×75×8)÷(8÷1.2+1.5))×10+100) +r×75×0.5×3)÷10=73..25r=84.7194r+10(heals/s);&/p&&p&安娜的循环治疗效率(老版)=((((r×75×8)÷(8÷1.2+1.5))×10+100) +r×75×1×4)÷10=&b&103.4694r+10(heals/s);&/b&&/p&&p&然后计算76的数据,为了简便计算过程,我们将等价命中率设为r?;&/p&&p&因为一个暴击相当于开枪命中两次,这里为了简化计算。等价命中率=命中率+命中率×暴击率。比如DIYA哥50命中7暴击可以等价于53.5%的命中率。&/p&&p&不计右键,76的循环输出效率=20×25r÷(25÷10+1)=142.8571r;&/p&&p&计入右键,76的循环输出效率=(142.8571r×8+120×0.5)÷8=&b&142. (damage/s);&/b&&/p&&p&为了让守望先锋的问题本质更明确一点,我们把上版本安娜跟现在的76的输出能力放在一起,用减法公式得到有效秒伤。&/p&&p&有效秒伤=142.8571r?+7.5-103.4694r?-10&b&=142.8571r&/b&?&b&-103.4694r&/b&?&b&-2.5&/b&&/p&&p&(0&r?&1;0&r?&1);【r?为安娜命中率,r?为76命中率】&/p&&p&好了。我们得到这个公式之后,我们就能算玩家每一点命中率的相对提升了。&/p&&p&函数图如下(放大100倍的图像):&/p&&img src=&/v2-5cd20c3faf36c45f21ce572_b.png& data-rawwidth=&996& data-rawheight=&612& class=&origin_image zh-lightbox-thumb& width=&996& data-original=&/v2-5cd20c3faf36c45f21ce572_r.png&&&p&这张图的意思是我们设定一个圣地亚哥的76。然后要多少命中率的老版安娜才能挡住76的火力输出。这里,我们可以看到直线与X轴的交点在70多一点点的数据上。也就是说,70多命中的安娜才能顶住一个DIVA火力全开的76。&/p&&p&参考导数的推导和我们前面第二节的办法推理计算。推导过程略去。我们得到玩家的每一点命中率能提升的幅度的函数式为:&/p&&p&&b&提升命中率带来的的提升幅度:&/b&&/p&&p&&b&·固定安娜命中率算士兵76,士兵76为x&/b&&/p&&p&&b&有效伤害提升率=142.8571×(命中率之差)÷(142.94&/b&&b&r?&/b&&b&-2.5)&/b&&/p&&p&&b&·固定士兵76命中率算安娜,安娜为x&/b&&/p&&p&&b&有效伤害提升率=103.4694×(命中率之差)÷(142.8571&/b&&b&r?&/b&&b&-103.)&/b&&/p&&p&我们为了看到实际的图像。我们设定安娜命中率已知是0.72;我们求士兵76的玩家,以0.01命中率差距为间距,然后的函数图。结果如下图。&/p&&img src=&/v2-24c8fa19efc0d9e72e642b78ecf14e7b_b.png& data-rawwidth=&1124& data-rawheight=&664& class=&origin_image zh-lightbox-thumb& width=&1124& data-original=&/v2-24c8fa19efc0d9e72e642b78ecf14e7b_r.png&&&br&&p&好了,接下来要利用这个公式,实际填一个表,给玩家实际展示一下,OW玩家心目中不以为然的命中率,究竟对一个人的输出/治疗影响多么大。&/p&&p&&b&四、1%命中率,5%,8%命中率差别的影响,对玩家影响有多大?&/b&&/p&&p&我们还是以假想的76与安娜的输出治疗竞赛的理想实验,来说明这个问题。&/p&&p&直接上数据表。&/p&&img src=&/v2-b62b6dc660aab1_b.png& data-rawwidth=&1212& data-rawheight=&550& class=&origin_image zh-lightbox-thumb& width=&1212& data-original=&/v2-b62b6dc660aab1_r.png&&&p&这个表格反应的一个最直接的问题就是。其实你的分段最简单的,就是跟你的命中率赤裸裸的直接相关。上不了分,莫名其妙不知道为什么输,就是很简单的问题,枪法不够硬。不要以为练枪没什么用。练枪真的非常非常非常的关键!&/p&&p&很多人看了表格会说,真实的游戏不是这么纯粹理想化的游戏世界啊?&/p&&p&但是,如果简单的把对方一个整体抽象成有只有血量,恢复力和攻击力的的生命体,就能理解了。为什么鱼塘局的输出位总喜欢自信绕后?因为他们的大脑给他们的评估是在正面远距离输出,他的枪法输出能力打不死人,所以他们下意识就选择了抛弃队友。这样鱼塘玩家体验就很差。&/p&&p&玩家可能注意力都集中在技能使用,大招抉择上,但是实际上,这游戏的绝大多数时间都是输出效率与护盾+治疗效率的比拼。而这个时候,一点点命中率的差距,就决定了拉锯战双方的胜利者,乃至最终比赛的走势。&/p&&p&而OW这个游戏,因为本质是一个减法公式,导致了一场局势,哪怕是同一个人,选择英雄的熟练度,当局比赛的专注力,队友的正向情绪的鼓励,队友负向情绪的谩骂,都极大的影响比赛的胜负走势。OW天梯玩家换一个没有热手的新英雄,往往效果还不如不换。&/p&&p&减法公式的本质,在最后一点点区别的时候,极大的放大游戏的实力差。这是一个数字上的魔法。你以为你跟对面差距不大?不,这游戏,1%的命中率差距,就很大。&/p&&p&这里补充一句,实际上单看命中率是没有用的。重要的数据是看玩家在竞技模式下的每分钟输出/治疗数/护盾阻挡数,我们把这个数据规定为输出力,治疗数。这个数据可以替换我们之前的公式:&b&伤害期望=攻击频率*命中率-治疗能力,&/b&&/p&&p&&b&伤害期望=输出力-治疗力。&/b&&/p&&p&这里,因为命中率和攻击频率都是输出力的一个系数,可以视为等值的因子。我们的表格显示,1点命中率就可以影响很大很大,那么1点攻击频率也是跟1点命中率同样等值的影响效果。于是影响命中率和实际命中总量的意识,动态视力,细节处理,临场反应速度,乃至144HZ显示器,这些很依赖天赋和专业特训的项目或者好的硬件,对一名OW的玩家提升帮助可以说是一个天一个地。&/p&&p&尤其是144HZ显示器,千万千万别小看这显示器多出来的0.1秒不到的反应时间。但是实际上对天梯中高端玩家来说,这中间的差距之大简直不是一个游戏。&/p&&p&我们看到的事实就是,使用了144HZ显示器的OW玩家,都没有办法回到60HZ显示器了。就这个道理。&br&&/p&&p&&b&五、回答一些守望先锋的问题&/b&&/p&&p&推这些数据是为了什么?解答一些OW的问题。&/p&&p&&b&Q:为什么OW快速一开始很好玩?&/b&&/p&&p&A:第一,快速在50%胜率就很有乐趣。玩家不需要追求50%胜率以上才能有乐趣。&/p&&p&第二,因为一个奶加一个肉的141双方互殴的阵容,是一个新手和普通玩家能打死人的配置。这个时候新手村的玩家沮丧感并不大。而今天新人进来,除了要面对炸鱼的问题之外,更多的问题是新人要面临一个不破防的挫败感。&/p&&p&&b&Q:为什么OW天梯让普通玩家体验很糟糕?&/b&&/p&&p&A:因为OW的天梯玩家能明显感觉出这是一个吃天赋的游戏。而玩家还感知不到自己为什么输,输得往往莫名其妙。其实这就是单纯的双方命中率枪法有一点点差距,被游戏的减法差距放大导致的结果;&/p&&p&而天梯出现的222,然后又进化到312甚至303 402等变种,就变成了纯粹的输出跟治疗的拉锯战。而且这个固定阵容并不适合枪法普通的玩家游戏,这个版本白金分段法鸡,天使跟秩序之光是最多的;玩家使用自己喜欢的英雄,在空中打不下法鸡,输出力无法超越天使,近距离总被秩序之光绞死,那就只剩下挫败感;于是弃坑最多的玩家都是白金分段左右的,反而是青铜白银分段这种060 051阵容遍地横行环境,玩家能放下心情享受游戏。&/p&&p&暴雪在相当长一段时间防御比攻击还大,于是结果就是变成了回合制+大招的游戏,场面极其难看不说,比赛观赏性还瞬间降低到冰点。&/p&&p&&b&Q:为什么大师分段以上的天梯环境很好?&/b&&/p&&p&A:玩家OW里的天梯,想要在50%胜率下体会到快乐,非得到大师分段不可。第一是大师分段的人不用承担金武器失分太多的痛苦;第二是大师分段的玩家能看出这一局输的点在哪,而不是白金分段无脑甩锅或者遇到代练炸鱼,导致经常体验崩溃。&/p&&p&&b&Q:为什么游戏里的黑百合和半藏游戏体验如此美妙?&/b&&/p&&p&A:因为这两个狙击手有越过对方恢复力强制秒杀的能力,玩家不会在使用这两个英雄的时候产生打不死人的绝望感。黑百合为什么体验又相对不如半藏?因为黑百合的使用者要承担相当大的心理压力,命中不命中,爆头不爆头都是自己的锅没地方甩;而半藏的相对随缘的命中率可以解放玩家的心理压力。&/p&&p&&b&Q:为什么秩序之光成了鱼塘玩家的梦靥?&/b&&/p&&p&A:因为秩序之光贴身的输出力很高很高,而且因为秩序之光的输出力有随时间成长的效果,高到普通玩家不管治疗力还是输出力都比不上的程度。这就要求,跟秩序之光PK的玩家,必须能在反应时间内转身外加瞬间爆发出伤害秒杀秩序之光。实际上,这个条件枪法意识反应普通的玩家不可能做到。秩序之光稍微会玩,就可以当成一个3500分的大师在白金分段炸鱼。而国外,会玩的秩序之光甚至能取代一个治疗位,打500强的天梯。——越是枪法强的地方,越需要能超越治疗力的输出英雄,这个时候提升效果就越明显……恩,这就是这个版本的秩序之光。&/p&&p&暴雪做防御英雄的意义是为了防止战斗无法终结给打的补丁。但是这个设定却带来了一个非常致命的问题。防御英雄有战斗终结的能力,那就一定不能把这类英雄做得太强。否则这类英雄就会成为普通玩家使用其他英雄体验反馈的灾难。&/p&&p&&b&Q:为什么普通玩家不敢玩麦克雷或者源氏或者黑影?&/b&&/p&&p&A:因为这类英雄需要一流的枪法/一流的动态视力/一流的操作才能体会到爽快感。普通玩家玩类英雄,打不死人是正常情况。打不死人玩游戏是没有乐趣的。新人能打麻将,首先是因为新人被教一次,在老手场也有机会胡大牌。&/p&&p&&b&Q:玩家要想上分离开鱼塘要怎么办?&/b&&/p&&p&A:如果单排,就努力找到一点点缝隙时间就输出,努力提升自己的命中率,然后满意之后选输出位或者副坦位;或者使用强势逆天的英雄比如秩序之光;如果喜欢辅助位置……暴雪,是你的这个逗逼规则引导玩家找打手到鱼塘炸鱼的哈?&/p&&p&&b&Q:为什么这游戏的玩家都用输出位上分爬不动了才转辅助位?&/b&&/p&&p&A:因为辅助位本来CARRY因子权重就相对低,鱼塘各种绕后不跟团,无组织无纪律,就更加难以单排上分。而新版秩序之光的加入,这版本辅助位在鱼塘环境彻底失去了单排冲分的可能性。因为辅助位没有办法换英雄,也没有办法利用手上的英雄资源针对秩序之光。&/p&&p&而进入高分段之后,让玩家冲出鱼塘的输出命中率重新成跟短板甚至不破防的属性,玩家维持这个分段也只能秒辅助位。而这个时候能选输出CARRY的玩家只会在更高的分段。于是大师分段经常出现辅助选好补输出的情况。&/p&&p&&b&Q:为什么这个游戏韩国人这么强大?&/b&&/p&&p&A:因为韩国人的电竞体系一点点细节都会抓。而在这个游戏里,一点点细节知识上的领悟区别,就可以在实际游戏里数次放大差距。而同样的,OW这个游戏,每天专业训练14个小时的韩国人不是训练8个小时的玩家能比的,尽管双方天赋可能一样。但是OW这个游戏偏偏是最能将一点点差距就放大到极大的游戏。&/p&&p&写到这里……&/p&&p&什么?还有人跟笔者一样是弱势英雄的单排信仰玩家?&/p&&p&这样,来我的OW群,,我们慢慢哭诉得了。暴雪做了这么好的游戏,但是不让我们有一个可以舒舒服服玩游戏的环境啊,我能怎么办?我也很绝望啊。&/p&
电子游戏发展到今天,游戏数值系统主要是依赖于两种截然不同的公式。 第一种公式是减法公式,第二种公式是除法公式。最简单的两种公式:减法公式:伤害=攻击-防御除法公式:伤害=攻击÷(1-防御÷(a+防御))毫无疑问,暴雪自己是除法公式的大师。从伟大的…
&img src=&/v2-2de0afc4a601b7cf617b9_b.jpg& data-rawwidth=&778& data-rawheight=&298& class=&origin_image zh-lightbox-thumb& width=&778& data-original=&/v2-2de0afc4a601b7cf617b9_r.jpg&&&p&这一次,在前面弹跳小球的基础上,实现一个简单的飞机游戏的雏形,主要包括:飞机显示、控制移动、发射子弹、击中敌机等功能。需要的语法基础知识和弹跳小球一样:printf、scanf、if-else、for、while,不需要后续函数、数组的知识。&/p&&p&第一步,利用scanf输入不同的字符,asdw控制飞机*字符上下左右移动。&/p&&img src=&/v2-1fb9cbaaafc61c_b.png& data-rawwidth=&394& data-rawheight=&362& class=&content_image& width=&394&&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&stdio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&stdlib.h&&/span&&span class=&cp&&&/span&
&span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&mi&&5&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&y&/span& &span class=&o&&=&/span& &span class=&mi&&10&/span&&span class=&p&&;&/span&
&span class=&kt&&char&/span& &span class=&n&&input&/span&&span class=&p&&;&/span&
&span class=&k&&while&/span& &span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&system&/span&&span class=&p&&(&/span&&span class=&s&&&cls&&/span&&span class=&p&&);&/span&
&span class=&c1&&// 清屏函数&/span&
&span class=&c1&&// 输出小球上面的空行&/span&
&span class=&k&&for&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&x&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&c1&&// 输出小球左边的空格&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&y&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&& &&/span&&span class=&p&&);&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&*&&/span&&span class=&p&&);&/span&
&span class=&c1&&// 输出小球o&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&n&&scanf&/span&&span class=&p&&(&/span&&span class=&s&&&%c&&/span&&span class=&p&&,&/span&&span class=&o&&&&/span&&span class=&n&&input&/span&&span class=&p&&);&/span&
&span class=&c1&&// 根据用户的不同输入来移动&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'a'&/span&&span class=&p&&)&/span&
&span class=&n&&y&/span&&span class=&o&&--&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'d'&/span&&span class=&p&&)&/span&
&span class=&n&&y&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'w'&/span&&span class=&p&&)&/span&
&span class=&n&&x&/span&&span class=&o&&--&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'s'&/span&&span class=&p&&)&/span&
&span class=&n&&x&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&br&&p&但是scanf要求每输入一个字符,按回车键后才能执行,效果不好。因此,第二步使用一个新的输入函数getch(),需要#include
&conio.h&;另外,kbhit()是指用户输入的时候才返回1,否则返回0;这样if里面的语句不运行,也就是不会出现用户不输入 游戏就暂停的情况。&/p&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&stdio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&stdlib.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&conio.h&&/span&&span class=&cp&&&/span&
&span class=&kt&&void&/span& &span class=&nf&&main&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&mi&&5&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&y&/span& &span class=&o&&=&/span& &span class=&mi&&10&/span&&span class=&p&&;&/span&
&span class=&kt&&char&/span& &span class=&n&&input&/span&&span class=&p&&;&/span&
&span class=&k&&while&/span& &span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&system&/span&&span class=&p&&(&/span&&span class=&s&&&cls&&/span&&span class=&p&&);&/span&
&span class=&c1&&// 清屏函数&/span&
&span class=&c1&&// 输出小球上面的空行&/span&
&span class=&k&&for&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&x&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&c1&&// 输出小球左边的空格&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&y&/span&&span class=&p&&;&/span&&s}

我要回帖

更多关于 标识 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信