分类
琐事

VBA菜鸡的小本本

Application

Application.ScreenUpdating = False
关闭脚本运行时界面自动刷新
Application.DisplayAlerts = False
关闭警报对话框
Dim sheet As Worksheet
 For Each sheet In Worksheets
 If sheet.Name <> ActiveSheet.Name Then sheet.Delete
 Next sheet
删除非激活工作表
Range("A1:B20").Clear
Range("A1:B20").ClearComments
Range("A1:B20").ClearContents
Range("A1:B20").ClearFormats

清除单元格的所有包括批注、内容、注释、格式等内容
清除单元格的批注
清除单元格的内容
清除单元格的格式

 

分类
理论 琐事 游戏设计

战斗数值框架搭建入门

设计一个游戏DEMO的时候要干的第一件事是什么呢?是搭建数值框架,而如果是一个打打杀杀的游戏,第一步要搭建的就是战斗数值的框架了。

AT君最近在自己尝试着做一些塔防的DEMO,并且获得了一些搭建数值框架的经验,在这篇文章中直接以实例的方式总结一下,如何着手从零搭建一个游戏的数值框架。

打打杀杀的游戏第一步要确认的是攻防关系,以及游戏的基本节奏。AT君所做的是一个塔防游戏,简单来说就是玩家的化身是一个塔,不断的攻击从四面八方向塔逼近的一波一波的怪物,直到击败一关中的所有波次,或被怪物打败——也就是说是一个有些类似于《抢滩登陆战》的游戏,只不过塔是自动攻击的。

AT君第一件确认的是单关的长度。由于是为手机游戏设计DEMO,因此单关长度要在3分钟以内。接下来就是3分钟的时间,要让玩家感受多少波次比较合适呢?这是一个比较个人化的体验所带来的决定:15秒一波,既不会密到喘不过来气,也不会松到觉得无聊。经过6波普通波次的战斗后,迎来30秒的BOSS波次,这样一来一关是120秒的时间,符合3分钟以内的标准,而且为以后扩充留下了一定空间——8波甚至9波也是可以做的,但由于目前要做最小化的DEMO,因此AT君认为这个波次6+1,一共120秒的设计是OK的。

这样我们得出了数值框架的第一部分:一波15秒,一关120秒。

一波15秒,所发生的事情是什么呢?最基本的事情是怪物冲向玩家,玩家把怪物们打死。那么一个标准的无伤模型就是最后一只怪物冲到玩家面前的时候,正好全部被玩家打死,接下来立刻就刷新了下一波。由于玩家的英雄站在地图中间,那么我们能够得出:

【结论2】假设标准怪物的移动速度是1,那么地图的半径就是15,英雄的攻击半径也是15。

接下来要定的是一个标准波次有多少怪物,每个需要玩家的英雄攻击几下来打死。这是在奠定游戏的基本节奏,因此非常关键。AT君想要的是偏“无双”风格的游戏,怪越来越多,被玩家的英雄哗哗的干死,非常爽快的游戏,因此标准怪物要很多。AT君一拍大腿,决定标准波次要有15个怪物,之后的每一波都比前一波多5个怪物,游戏一共有7波,那么分布就是这样的:

  • 15个标准怪物
  • 20个标准怪物
  • 25个标准怪物
  • 30个标准怪物
  • 35个标准怪物
  • 40个标准怪物
  • 1个标准BOSS

我们可以看到,怪物数量增加的速度非常快,最后一波标准怪物是第一波的两倍还要多,因此一定可以达到非常爽快的目的。当玩家用标准英雄去玩这个关卡的时候,得到的就是一个标准模型了。

我们假设一个标准怪物是40血,那么第一波共15个怪就是有600血,玩家的英雄要在15秒内造成600点伤害,因此我们得出:一个标准英雄的秒伤是40。那么标准英雄打一个标准怪物要打几下呢?至少要是2下,因为一定会存在血比标准怪物少的怪或单下伤害比标准英雄高的英雄。那么我们就得出了:

【结论3】假设一个标准怪物的生命值是40,则标准英雄的单体伤害为20,攻击间隔为0.5秒。

我们确定了英雄攻击力和怪物生命值的关系,接下来需要确定的是怪物攻击力和英雄生命值的关系。标准怪物都是近战的,那么我们以什么为标准呢?由于第一波怪是一定会被标准英雄无伤打死的,因此英雄的死亡时间一定是在15秒至120秒内。玩家纯挂机必须是不能见到BOSS波次的,因此死亡时间可以缩短至15秒至90秒内。AT君一拍大腿,认为标准英雄的死亡时间应该是在60秒,也就是第四波怪刷出来的时候。由于怪物攻击英雄会不断随着数量的减少而减少DPS,再加上AT君的高等数学已经全都忘光了,因此经过连算带测,得出的结论是:

【结论4】假设英雄的生命值为1000,那么标准怪物的秒伤为5。

接下来是BOSS,AT君将标准BOSS的生命值设定为了45个标准怪物的生命值,即1800(相当于第七波的总生命值),在移动速度与普通怪物相同的前提下,可见其近身至英雄身边会损失600生命值。玩家如果在BOSS波什么都不干,只靠平A挂机,是一定会被BOSS打死的,由于我们已经设计好BOSS波次要在30秒之内完成,因此BOSS的秒伤要至少是1000/15=66.6666,AT君一拍大腿将其定成了100,这样一来假设玩家的英雄满血进入BOSS波次,之后什么都不干纯挂机,会在25后结束游戏,BOSS剩余800血。这样我们就得出了:

【结论5】标准BOSS的生命值是1800,移动速度为1(即等于标准怪物的速度),秒伤为100。

若我们从另外一个思路来考虑:如果我们要求BOSS波25秒结束游戏,且前提是BOSS移动速度为1,那么如果我们要求BOSS打死玩家的时候还剩一半血,就可以得出BOSS的血量=25秒*英雄秒伤/1/2=25*40*2=2000血,秒伤=英雄血量/(25秒-BOSS移动速度*地图半径)=1000/(25-1*10)=100。我们只定了要求BOSS波纯挂机25秒结束,BOSS剩余一半血,移动速度为1,就能够得出BOSS的血量和秒伤啦,并且是能够得出理论上的极值的。

到了这里我们可以总结一下我们得到的数据:

标准怪物:

  • 生命值:40
  • 移动速度:1
  • 射程:0.1(即近战)
  • 攻击力:5
  • 攻击间隔:1

标准BOSS:

  • 生命值:1800
  • 移动速度:1
  • 射程:0.1(即近战)
  • 攻击力:100
  • 攻击间隔:1

标准英雄:

  • 生命值:1000
  • 不能移动
  • 射程:15(或无限)
  • 攻击力:20
  • 攻击间隔:0.5

标准关卡:

  • 怪物刷新点至英雄距离:15
  • 刷怪间隔:15秒
  • 第1波:15个标准怪物
  • 第2波:20个标准怪物
  • 第3波:25个标准怪物
  • 第4波:30个标准怪物
  • 第5波:35个标准怪物
  • 第6波:40个标准怪物
  • BOSS波:1个标准BOSS

这样我们就得出了一套最最最基本的数据,游戏已经可以玩啦。回顾一下我们是如何得出这些内容的,经历了几个步骤:

  1. 根据单局时长和想要的游戏节奏 => 得出移动速度、地图大小、波次间隔;
  2. 根据撸怪风格和标准怪物生命值 => 得出怪物数量、英雄秒伤;
  3. 根据我们认为合适的英雄死亡节奏 => 得出怪物的秒伤;
  4. 根据我们认为合适的BOSS波节奏 => 得出BOSS的属性;

这样一来,我们只要改变以下几个最基本的值,其他的值都会跟着联动:

  • 标准单局时间:120秒
  • 标准波次结构:6普通波+1BOSS波
  • 标准波次的间隔:15秒
  • 准怪物移动速度:1单位/秒
  • 标准怪物生命值:40
  • 标准英雄打标准怪物几下打死:2
  • 标准怪物在标准波次的个数:15个
  • 英雄挂机死亡时间:60秒
  • 标准英雄生命值:1000
  • 标准BOSS的移动速度:1单位/秒
  • 英雄BOSS波挂机死亡时间:25秒
  • 英雄BOSS波挂机死亡剩余生命值:44.4444%

我们会发现,虽然是在搭建战斗数值框架,但实际上和攻击力啊,攻击速度啊,生命值啊直接相关的数值非常少——只有一个我们假设的标准怪物生命值和标准英雄的生命值作为基础单位而已。一切都是在游戏的基本节奏定了之下推算出来的数值,我们会发现,单局时间,单波波次,挂机死亡时间,这些都是时间,也就是节奏,这些是我们需要确定的数据,这些是我们想要产生的体验,而最终得到的攻防数值都是为这些服务的。当我们看到别人的游戏的时候往往看到的是这些果,经常有人连篇累牍的分析别人的游戏数值是什么样的,这个单位的攻击力是多少,但不能掌握那个“为什么这些数值要这么定”的因的话,是在做本末倒置的无用功,直白点说就是还停留在门外汉的级别啦,外行看热闹而已。因此,对于一个战斗数值框架来说,最优先的是定基本的“节奏”,这是由空间上和时间上两方面来决定的,其他的一切数值基本都是水到渠成,定了一个就能推算出来其他的。

总之,最重要的是方法论,要做到每个数值维度的设计都是有道理有基础的,而不是凭感觉拍脑袋拍出来的,这样之后我们调整的时候才会有方向,出了问题可以不断的对这套数值框架进行验证与调整,避免像AT君一样陷入曾经的“傻媳妇和面”窘境——一切凭感觉拍脑袋,最终只能面多了兑水,水多了兑面,然后是无尽的测试地狱。平衡不可能全都是纸上谈兵,一定会需要依靠测试来调整,但那些没有理论依据,只靠测试来调平衡的绝对是愚蠢的不靠谱做法,等着程序员、测试员和老板骂死你吧。

说了这么多,相信很多人已经开始早就怀疑一个问题了:目前这个模型是玩不下去的,英雄只能普通攻击,到了60秒的时候就死了!怎么才能获得最终的胜利呢?

这里亮点登场——锵锵锵,AT君设计的这个游戏,是一款TCG游戏!玩家要配一套牌组,带进游戏中去施放,和传统的TCG一样,每张牌都需要支付一定的费用才能打出,不足的这部分能力就要靠卡牌来实现了。那么接下来我们就需要解决一个问题了:

1费值多少?

每个问题都要有一个基本的原点,我们假设1费值1条标准怪物的命,那么我们就可以得出:

【结论6】假设1费值1条标准怪物的命,那么1点费用用于攻击时,价值是40点伤害。

游戏中一共有15+20+25+30+35+40个标准怪,以及一个生命值相当于45个标准怪的BOSS,生命值总计210*40=8400。游戏时间120秒,普通英雄一共造成了120*40=4800点伤害,剩下的3600伤害要从卡牌里出,我们就能得出,一局游戏如果想无伤通关,需要3600/40=90点费用,一局游戏120秒,那么得出了下一个结论:

【结论7】每1.3333333秒产生1点费用。

也就是说,如果玩家带的都是10费的卡,平均每13.3333秒能够打出1张。我们可以根据玩家的卡组平均费用的出玩家平均多久打出一张牌,由于AT君并不想要让游戏的强度太高,一场游戏下来操作次数不要超过30次为妙,平均每4秒出一次牌,平均费用为4*1.33333=5.3333333,这就是我们的标准卡组平均费用啦。

以从结论6为标准,我们可以得出其他一系列其他的卡牌设计标准。比如,伤害提高100%的卡牌,1费值持续多久?按照标准英雄计算,值1秒,英雄的秒伤为40,这个效果只要持续1秒就提供了40点伤害。只要是以各种方式增加伤害的,我们都可以用标准英雄为模板来计算其收益。

另外一种则是与英雄生命相关的,比如1张X费的牌效果是为英雄恢复100点生命值,X应该是多少?一张0费的牌,效果是对英雄造成100点伤害,产生X点费用,X是多少比较合适?由于英雄生命值是另外一套独立的价值标准,因此也需要一个基础。

我们有一个原则就是,玩家如果只带恢复生命值的卡,必然是会输的。我们知道BOSS的秒伤是100,那么每1点费用恢复的生命值应该是小于133.333333的,否则玩家可以只靠治疗卡牌磨死BOSS,因此我们可以粗略的拍大腿——

【结论8】用于恢复英雄生命值时,每1点费用应该恢复100点生命值(且不可高于133.3333)。

接下来会有越来越多的复杂情况,让我们难以预估,1点费用应该产生多强的效果,比如召唤防御塔的平衡标准是什么样的?召唤一个改变路径的墙的平衡标准是什么样的?控制法术的平衡标准应该是什么样的?一局游戏内永久性的提高英雄的能力的平衡标准是什么样的?但只要我们能够找到一个方法论,就可以先得出一个我们认为是正确的平衡标准,然后再通过不断的测试来反复检验我们的平衡标准,这样一来我们就可以通过反复迭代最终得出一个游戏最终的全部数值了,整个框架是一个从最基础的原则一点一点搭建起来的牵一发动全身的动态框架,而不是四处都是拍脑袋拍出来的数值。

关键还是在于方法论,即便错误,也是可以验证的。而没有方法论,连对错都不知道,就没有验证的基础了。游戏中的最终数值,不一定所有东西都是绝对平衡的,但有框架能保证数值不会崩——比如假设我们一拍脑袋设计了一张1费恢复200生命值的牌,数值就已经崩了,而如果我们没有框架,只靠测,就算经历九九八十一难确定了导致游戏崩的就是这张牌,也不知道应该改到133.3333以下才会不崩,还是只能靠调完了再去无尽的测试,简直是地狱。而框架能让我们逃离这个地狱,这就是框架的价值,地基打得牢,以后填的坑就少,不然就是害人害己害团队害老板了。

好啦,AT君的经验就分享到这里了,终于在2016年的1月的最后一天的23点多完成了这篇博客,不至于让2016年的1月份只有1篇文章了!过几天就过年啦,AT君提前祝大家新年快乐,年终奖炒鸡多!

分类
琐事 脑洞

如果我有25亿美元

最近Markus Persson卖了《MineCraft》之后四处败家,然后又感到人生空虚的新闻在业内人尽皆知了,我认识的朋友们无一例外的对这种身为游戏人但却因为有了钱而感到空虚的人感到不耻,并且纷纷为了证明自己就算有了25亿也不会像他一样除了买别墅就不知道还能干啥了而讨论了一番如果自己有了25亿会拿来干啥,于是AT君趁着这次抗战胜利70周年的小长假的机会,把这个写下来作为今年9月份的第一篇博客吧!上个月只写了两篇博客有点少,因此这个月加加油,正好假期也多,多写一些。脑洞正式开始!

这个东西可能是一个网站或者社区,假设它的名字就叫ManiaHero。它的的设计目的是,把没有能力进行独立开发的开发者凑到一起,通过线上协作的方式,让这些开发者们基于自由的意愿进行协作,不必看老板的脸色去做那些愚蠢的换皮游戏,也不用感叹于三线城市的人才短缺和一线城市的飙升房价,配合ManiaHero专业人员的辅导,从无到有的完成游戏的设计与开发,直到上线盈利,能够养活自己甚至一夜暴富。只要你有梦想,有能力,ManiaHero就能给你一份有尊严的游戏人的生活。

我们不妨想象一个满腔热血的年轻人想要投入到游戏开发的大军中却又无法独立完成项目,而且又找不到同伴,于是他来到了ManiaHero。他需要什么样的帮助,才能成为一个真正的靠自己的双手实现自己的游戏,并且通过盈利来让自己不会被饿死的游戏开发者呢?

首先他需要进行实名注册,加入其他万万千千和自己一样,想要通过这个网站找到一同战斗的小伙伴的人。于是这个小伙细心填写了自己的实名信息、简历、证书、作品集之类的东西,就像Gamaustra上的用户。

注册成功后,这个年轻人会发现,想要在这个网站上找点儿事情做,是需要找一个项目申请加入,或者自己发布一个项目的——就像威客网站。注意,所有的活动和利益分配都是基于项目而不是团队。由于这个年轻人非常有梦想,因此他自然会选择发布一个项目,因为做一个属于自己的游戏才有意义,不是吗?而不是在别人的团队中扮演一个打工仔的角色。

接下来这个年轻人发现,发布一个项目需要的东西是比较多的,首先要能够清晰的描述清楚这个游戏的类型,玩法,特色列表,它的好玩之处,它的与众不同之处等等——就像你在Kickstarter上创建一个项目所要做的一样,只不过你吸引的不是未来的用户与资助者,而是其他和你一样在寻找梦中的项目的开发者,因此这甚至比在Kickstarter上创建一个项目还重要。

这个年轻人用他认为最完美的方式,详尽地描述了他想要的游戏的愿景,需要的开发人手,以及利润的分配方式,然后提交了这个项目。项目会经过ManiaHero专业的员工进行审核,审核通过之后就会出现在ManiaHero所有的项目中,其他自由的开发者们也能够看到了。如果这个年轻人不知道这个项目会需要多少人手,或者不知道利润怎么分配才好,也可以在这时候请求ManiaHero专业人员的帮助,他们会做出建议,但最终决定权还是在年轻人自己的手里。大家都知道,资深人士的一句话往往就能避免一个年轻人几周甚至几个月的弯路。

项目拥有数个重要节点,首先这个年轻人要公布项目在什么时候会正式启动,也就是说他必须在这个时间之前招到足够的人手。他还要决定原型,Alpha版,Beta版都是什么时候完成。不管是拉现实中的朋友一起注册ManiaHero然后作为项目成员加入进来,还是在网上找到可以接受报价但却和自己一样没啥经验的大学生,亦或直接一开始就开出一笔较为昂贵但稳定的月薪来雇佣一个资深开发者几个月的协助,总之越快凑齐人手越好。如果这个年轻人够聪明的话,也许他会在发布项目之前就上ManiaHero的附属论坛上去转一转,看能不能在开始项目之前就招揽到内定人选,而不用发布项目之后才临时抱佛脚。

人手凑齐之后,就要开始进行正式开发了。年轻人要和所有人都确定好进度表,以及各自的工作内容。如果你用过Redbooth或类似的项目管理软件,会对这个阶段感到十分熟悉,ManiaHero会提供任务追踪,横道图,在线会议室,邮箱,文档,留言板等等基于项目的功能,保证团队成员们沟通的顺畅和开发流程的清晰。当然,这些毕竟只是工具,能不能用得好,还要看作为项目负责人的年轻人的个人能力了。

如果团队中的人经验都不足,那么开发基本是无法顺利按照当初预计的时间结束的。年轻人不得不和团队人员们协商来修改计划表,如果处理的不当甚至会有成员中途退出,年轻人不得不重新在ManiaHero上物色人选,甚至更糟的情况——毙掉这个项目。

假如年轻人终于成功的完成了项目,那么接下来的事情基本就都交给ManiaHero了。年轻人可以申请ManiaHero官方的测评报告,如果结果还可以,年轻人可以选择是否把游戏交给ManiaHero代理。如果项目在尚未完成时就已经表现出了较高的品质,ManiaHero可能也会主动地去拜访。如果分数太低的话,游戏就只能得到ManiaHero很少的推广资源了。这就有点儿像是Steam。

接下来就是等着数钱了——当然,作为项目负责人,这时候也可能你已经投进去很多钱了,最终是赚是赔还是个未知数。而作为项目的参与者,一段时间的辛劳究竟能获得多少回报,马上就要见分晓了。

完成的项目会自动加入到你在ManiaHero的简历中。如果你的游戏表现相当不错(当然,不会透露具体的数据),你的简历会更好看,参与其他项目的时候也就有更多的谈判资本了。

如果有这么一个ManiaHero网站的话,是不是会很爽?如果我真有25亿美元的话,也许会去搞这么个东西!AT君认为,这个ManiaHero网站的本质就是一个强大的发行商以线上社区乃至线上培训的方式,包养了一大堆有前途的游戏开发者,以及他们手里的项目,这些开发者相当于都成为了第二方开发商,这就像是一个线上的孵化基地,甚至还有着些许的培训功能,类似于TVB艺人培训班,实际上还是在为自己省钱,并且早早的就把合同都捏在了自己的手里。而开发者在使用这个网站的时候,更多的感受是威客网站、众筹网站和项目管理软件的集合体,并且还可以申请ManiaHero官方专业人士的意见——当然,不会都是免费的,或是其他ManiaHero成员的意见。

不知道以后会不会真的出现一个这种东西?当然啦,这只是AT君的脑洞,其中很可能很多环节都是难以实现的,只是AT君还不知道。不过,至少有脑洞好过有了25亿美元却感到空虚,对于本文来说也就够了!