我眼中的游戏开发

 不知不觉进入游戏开发行业已11个年头,期间经常会有些非圈内的朋友和一些想进入游戏行业的小朋友与我交流,希望多了解一些游戏行业的东西,想想索性写点什么,那就讲两个故事吧。


01 打造王冠的故事


一个天才设计师想到了一个精妙的创意,并由此设计了一份图纸(策划案),然后召集了一众工匠(游戏开发团队)照着这份图纸开始打造(开发),并在打造过程中不断调整起先一些可能不合理的设计点,不断打磨穿戴(游戏)体验,最终做出一个璀璨的王冠(游戏成品)。设计师将它的作品送往首都参加评比(游戏上线),最终被慧眼识珠的评委们选中作为国王的礼物,设计者们名利双收。

这个故事很美好,大家都爱听,但摸了摸头上的包,我再继续讲另外一个故事。

02 沙漠绿洲的探险家


冒险旅途开始

一个沙漠探险家(看见了/估算出/梦见了)在沙漠的某个地方有着令人神往的绿洲,于是他(说服其他人相信他/雇佣一批人)组成了一支探险队。在准备好充足的装备物资后,开始朝着心中的目标前进。

在这一路上探险家首先得不断沿途规划路线,除了保证能正确的找到通往目的地的道路,还得应对沙漠中恶劣的环境,如无处不在的流沙(让团队内部陷入无止尽纠结的争吵),遮天蔽日的沙尘暴(来自外部不必要的嘈杂干扰),持续干旱导致的缺水(团队士气的低落),可能还有队伍内部二五仔的跑路甚至叛变,以及最重要的———验证绿洲是否真的存在(也许只是沙漠蜃楼),以便及时改变目标,甚至直接原路返回,因为有时及时止损也是正确的策略。

事实证明,所有出发的探险队能最终抵制者恐怕十之无一。非常幸运,这支队伍居然真的找到了地图上未知的绿洲,然而这个绿洲的水源是否足够大到能撑起这个探险队在此驻扎呢?如果不够那就只能赶紧准备准备,开始下次探险了。

假设绿洲的水源足够多,探险家的目的就此达到了么?不,还要检测水源是否优质,标准就在于人们是否接受,于是如何将水送到他们的手中就成了接下来的任务。

如何送达?

这个时候,探险家可以选择插块大牌子,等待路过的人自己来主动品尝,如果运气不错遇到了吟游诗人(编辑推荐),他们将这片地方写入诗歌传唱还会吸引来许多来体验的客人。也可以选择与已在这片大陆上大量铺设管道的组织合作,架设新的管道直达千家万户,但需要付出为此源源不断的按报酬比例支付管道费用的代价,最夸张的甚至能分走90%(分发渠道)。还可以选择数不清的代理商人,由他们负责将水源送往各地,同样也要分走一大笔费用(合作发行)。最近还可以选择先进的无人机送货,精准送达,按照人头收费(广告买量)。最终这片水源是否能够成为一片合格的新绿洲给人们供水,就要看最终人们对这个水的评价了(数据说话,用脚投票)。

倘若运气不错,这里的水为人们所接受了,而且刨除掉运输费用还有一定结余,那是不是接下来就是高枕无忧了呢?Naive!

蠢蠢欲动的跟随者们

在这片沙漠上,不光有具备冒险精神的探险家,还有很多的机会主义者,他们四处打听哪里发现了新水源,然后立马沿着探险者足迹前往新的水源去分一杯羹。更有一些沙漠大佬,直接会组织一支庞大军队,带着抽水泵开着卡车就过去了。

刚到达水源的探险者能做的就是:1. 尽量构筑防御工事(用户壁垒)让机会主义者无法轻易进入;2. 加快汲取水源效率,并将其转化为更多的物资,使自己的力量更加强大,来应对更加难对付的其他沙漠大佬的钢铁式入侵,毕竟能对抗魔法的只有魔法!至于怎么汲取,这是另一个话题了,可以再开一篇。

无孔不入的“污水处理专家”

即使第一时间阻止了大部分跟随者们的侵入,也不是自此就高枕无忧。如果不小心被一些“污水处理专家”偷偷混入此地,往里疯狂倒入污水垃圾,防护不当最终所有水变污水,一般人便再也无法直接汲取水源了,他们再用自己擅长的污水处理技术独自享用,最终逼迫所有正常人离开这里寻找新的水源。

勇士变恶龙

倘若足够厉害以及幸运,这处水源最终被守住了。后来者基本已无法构成威胁,那么最后一个问题来了,水源终究有限,总有开采完的一天,但是队伍却越变越大,如何寻找新的水源?你可以选择轻装上阵,化整为零,重新开始新的旅程。但人性总是懒惰的,能躺着就不会坐着,更多的人会选择摊开地图,选择合适自己开采模式的的新发现的水源,组织现有军队带着抽水泵和卡车直接就过去了,又一个新的沙漠大佬诞生了……


故事讲完了,至于哪个是我眼中的游戏开发?我也不知道。

游戏战斗的技巧性设计

说到游戏,最为人熟知的系统恐怕莫过于游戏的战斗,那究竟什么是游戏战斗?我给它的定义是:在游戏既定规则下,合理的运用可用手段去战胜对手的一个过程。也就是说战斗总体设计可以说分为2块:规则设计与手段设计,简单做了个思维导图。

对战斗设计的简单解构

胜负规则和行动规则基本上决定了游戏的类型,所以在选择了某种类型游戏的情况下,设计上的差异主要就体现在了数值计算规则,元素交互规则,战斗手段的设计(包括它们之间的交互规则)上了,而其中最容易被玩家感知的便是战斗手段的设计。

做为一名合格的游戏设计者,不管是战斗系统还是其他的系统,首先要做的便是明确这个系统给玩家传达的是一种什么样的体验,比如说动作类,是要让玩家体验连击割草般的爽快,还是寻找敌人的弱点进行针对性攻击,还是要对抗中寻找对方的招式弱点进行反制等等,这些都决定了最终你的系统会如何去进行设计。

思路决定设计

这里以《怪物猎人》这款游戏来简单分析下它的战斗设计,假设我们是它的设计者,会是一个什么思路呢?

首先第一点,这是一个以小博大的怪物狩猎类游戏,那么整个游戏系统肯定是要让怪物的整体硬实力远大于玩家,这样玩家战胜怪物之后才会有极大的征服感。

既然怪物的硬实力是远大于玩家的,那么就决定了玩家对怪物是无法采取碾压式的攻击的,玩家在战斗中必须要充分发挥自己的技巧去战胜强大的敌人。

所以最终我们得出这个战斗系统需要保证在标准环境下:

  1. 怪物的各方面单纯数值能力均可对玩家构成碾压性的威胁。
  2. 玩家需要通过自身的技巧来获得游戏胜利。

那么关键问题来了,如何设计才能充分发挥玩家的技巧?这里我们试着仅针对近武器来进行战斗设计。

近战技巧性分析

首先我们先抛弃伤害数值部分,单纯看招式,近身攻击的参数包含哪些?攻击范围动作的前摇时间攻击敌人可造成的硬直时间以及动作的后摇时间

常见的游戏化能力分析

我们再对它们逐一进行简要分析(如果双方都在静止状态,这个时候比拼的就是绝对硬实力):

  1. 攻击范围比较简单,决定了是否存在单边挨打。
  2. 前摇时间决定同时出招,谁会先挨打。
  3. 攻击造成的硬直时间决定了是否会打断对方的攻击以及影响对方下一次攻击的时间。
  4. 而动作的后摇则决定了会不会给对方反击的机会

技巧性就是玩家需要通过自己的操作巧妙的利用以上的因素,使得自己可以打到对方而尽量不让对方打到自己或尽可能减少伤害,那让我们继续来分析,先看从怪物设计角度如何设计。

  1. 攻击范围,我们可以通过设定使其攻击距离长但角度不大,从而让玩家可以有机会进入攻击盲区对其进行攻击。
  2. 前摇时间,应当留给玩家足够的反应时间进行防御应对,如果时间短,则必须有前奏提示供玩家预判。
  3. 攻击硬直,非常重要,由于会打断玩家动作,逼迫玩家更需要考虑自己的行动,无法跟怪物硬碰硬。
  4. 后摇时间,一套攻击操作完后须留够提供玩家反击的后摇时间,从而鼓励玩家尽力防御后进行反击。

那么对玩家设计来说呢?

  1. 攻击范围,正常情况都应该是小于boss,既是因为设计需要,也是因为本身怪物的体型都要明显大于主角,需要给玩家提供压迫感。
  2. 前摇时间,这个如果要求玩家预判的技巧,就可以设计成相对较长,比如大剑,锤之类的重武器。但也可以考验玩家不停的走位能力,设计成比较短但伤害低的,比如双刀与片手剑,但是这些都必须还得与其他元素相结合来进行设计,原则上来说威力越大的招式前摇应该越长。
  3. 攻击造成硬直的时间,每次攻击都能打断对方不是我们需要的,但无法打断对方也不是我们希望,所以一般通用做法就是增加硬直规则,每次击打产生硬直值,硬直值累计到一定程度可以对对方造成硬直,一半来说硬直值可以与武器的威力挂钩,当然也可以单独分开设计,设计出以硬直为特色的武器。这里硬直值究竟是设定为显性还是隐型可以根据游戏自身的设计需要来进行,比如希望玩家的注意更集中在其他地方或是降低游戏门槛,可以考虑设置为显性从而降低玩家的负担。
  4. 后摇时间类似于前摇时间,通常也是威力越大时间越长。但后摇的设计至关重要,因为它会直接关系到玩家攻击完后会不会由于后摇而承受对方的攻击,所以动作类游戏通常会提供一些手段来取消后摇,防止玩家出现攻击完必承受对方攻击这种情况,同时也可以防止玩家站桩输出。比如回避翻滚就是经常被使用的取消手段。

考虑清楚了这些之后,再来看整体战斗思路设计。要体现战斗的技巧性,核心原则就是:

  1. 避免玩家单一套路的简单重复有效,要求玩家全程集中精神进行战斗。
  2. 提供多种手段组合的可能,让玩家可以自由探索它们之间的build

如何避免简单重复的套路有效?

只要玩家的生命防御数值对怪物不构成碾压式,一般来说仅仅通过对战斗参数进行调整就可以避免简单的站桩输出。但仅此还不够,因为机械的hit&run也是算是一种简单套路,这个时候就必须引入多种攻击手段,包括必要的全范围无死角攻击强迫玩家提前逃离攻击区域。

如何提供多种手段的组合性

这个更多是设计创意的问题了,前提是设计要能够将各个手段的基本元素拆解清楚,避免出现毛线团思维,关键是设计者的全局思维,而原则就是尽可能的让元素多连接,尽量不采用一对一的搭扣式设计。

结语

本文仅是针对动作类游戏的近战类战斗设计进行的一番分析,但设计思路都是类似的:

  1. 由预期体验引导出设计原则
  2. 将战斗元素进行详细分解
  3. 从中分析各个因素可能对整体体验产生的影响
  4. 以此为设计标准进行实际手段的落地设计并进行调整。

最后,战斗设计是一个完整体验,虽然上面我将其劈成不同的点来进行思考,但只是为了透视剖析它的组成,在最后的设计时,我们仍然要将其作为一个整体来进行思考设计。

PS:私以为战斗设计中有一个非常不好的思路,就是设计者设计时往往会针对假想敌来设计,比如说为了克制某种武器或者某个职业来设计,这种我称之为恶意的设计。好的设计应该是尽量符合以上的原则,同时又要符合怪物自身的特点,我们需要的是综合的体验,而不是纯粹设计的产物,虽然最终可能会出现A怪物适合用武器A,武器D打,不适合武器E打,但是这个应该是结果而不应该是设计的出发点。

欢迎关注微信公众号:Lua爱好者

令人沉迷的斯金纳箱

 假设有这么一款游戏,你需要做的就是在游戏中不停的点击,或者每隔一段时间上来点一下这个按钮,你会觉得这个游戏好玩吗?

01 从游戏黏性说起

游戏好不好玩一个很重要的标准就是游戏的黏性,简单来说就是要让人玩得停不下来,想要一直玩下去。如果只能用一个数值来表示它,那就是玩家在游戏里投入的游戏总时长。为了延长游戏时长设计者们绞尽脑汁想了很多办法:比如一直可供探索的新的内容,让玩家牵肠挂肚的故事剧情,需要反复尝试挑战的关卡等,但它们一般也只能达到两位数(小时)的级别,要让这个数字再往上走,设计者们需要寻求新的力量。

 

02 斯金纳的实验

(斯金纳正在做他的行为实验)

20世纪30年代,有一个叫斯金纳的心理学家,他做了这样一个非常著名的实验:

实验1将一只很饿的小白鼠放入一个有按钮的箱中,每次按下按钮,则掉落食物。

结果:小白鼠自发学会了按按钮。

实验2将一只很饿的小白鼠放入这个箱中,但按钮会由一开始的一直掉落食物,逐渐降低到每1分钟后,按下按钮才会掉落食物。

结果:小白鼠一开始不停按钮。过一段时间之后,小白鼠学会了间隔1分钟按一次按钮。

实验3将一只很饿的小白鼠放入这个箱中,但这次不一样的是,每次按下按钮,不是固定掉落,也不是间隔时间掉落,而是以一定概率掉落食物,概率可认为调整。

结果:小白鼠学会了不停按钮,更重要的是斯金纳发现即使概率越来越低,小白鼠按按钮的行为却几乎不会变化,直到差不多40-60次按按钮掉落一个食物,小白鼠仍然会不停按按钮,持续很久一段时间。

(斯金纳箱的示意图)

后来人们将斯金纳这个实验装置称之为斯金纳箱(其实斯金纳箱还有另外一个鸽子试验,可以用来解释一些游戏中的玄学行为),而斯金纳则将小白鼠的这一系列学习行为称之为行为强化,并且他认为行为强化对人类也同样奏效,人的行为也是行为强化的结果,并且可以通过行为强化去改变别人的反应,随后他又把动物的学习行为推而广之到人类的学习行为上,实验对象甚至包括他自己的亲生女儿,但斯金纳却也因此遭到了当时科学界的许多谴责。

 

03 无法抵抗的力量

斯金纳当时做这个实验本来是寄希望通过研究人的行为,从而达到塑造人的行为,改进教育方法。但他却犯了和传统行为主义者同样的错误——只注重描述,不注重解释;只注重外部反应和外部行为结果,却不探讨内部心理机制,实际最终结果并不理想。

但是这个实验却也揭示了老虎机等赌博行为背后的成瘾机制,并启发了后世的游戏设计者们:如果我们也能够让玩家一直在游戏中重复的做着某些动作,那他们不就可以一直在游戏里玩下去吗?那实际是怎么样呢?让我们来看一下下面这个几个在游戏里常见的系统:

  1. 每次击杀怪物就会获得经验以及一些资源,玩家们学会了不停的去杀怪这个行为,而机械性的不断获取经验,一段时间后将获得更大的奖励——升级,于是玩家们更加乐此不疲。

  2. 游戏中的定时礼包,每隔一段时间后玩家就可以上去开启它们并获得奖励,定时礼包不断的重复,而玩家会一次又一次的定时上线领取它们。

  3. 击杀一个boss或是通关一个副本有概率掉落一些极品装备,于是我们反复的去击杀boss/刷副本,乐此不疲。

怎么样?是不是熟悉的配方,熟悉的味道?仔细观察,我们会发现现在绝大部分游戏或多或少都可以看到斯金纳箱的影子(我们以为我们是在玩游戏,但其实也许在某些时候不过是设计者眼中一只斯金纳箱中的小白鼠)。写到这里,也许我们会想,啊,我现在已经知道这些了,我已经可以看穿设计者的这些小把戏了,你无法再愚弄我了。但是!斯金纳箱可不是什么障眼小把戏,它是一个被证明了确切有效的揭示生物行为本质的理论,而这套理论是否生效与你知道与否并没有什么关联,即使你知道了这一切,在面对这些模式时,只要这些奖励是能够刺激到你的,你仍然会像小白鼠一样一直不停的按动那个按钮,它就像黑暗原力一样,强大,有效,并充满了诱惑。

04 那个点击游戏

再次回到我们开头提到的那个问题?一个不停的点击的游戏你会玩么?我想面对这样一个问题,绝大部分人的答案应该是,我可没这么无聊。那么我们现在来尝试对它进行一些改造。

  1. 首先我们加上这么一个设定,进入游戏后,我们将告诉你,你是一名勇者,而在你面前的是一个怪物,你每次对着这个怪物点击一次可以让这个怪物损失1点生命值,你会愿意去试一试击杀它吗?(当然击杀完后系统会再生成一只更强大一点的,以便让你可以一直点击下去)

  2. 接下来我们再来加入点什么,击败这名怪物后你将获得一定的经验值而获得一定经验值可以提升你的等级,等级提升你接下来每次点击将会使它们损失更多的生命值,你会愿意继续点下去让自己越来越强吗?

  3. 好的,我们再加入区域概念,当你超过10级之后,你将会前往下一个区域,而那里将会有新的没见过的更强大的怪物供你挑战,你会先试着点到10级吗?

  4. 到新区域后,这里的怪物更加强大,你每次点死一个需要的时间越来越长,好的,那么我们再给这个角色加一个必杀技,必杀技每隔10秒可以使用一次,使用一次可以造成100倍的攻击伤害,你会愿意每隔10秒使用一次吗?

  5. 我们已经改造的够多了,我相信到这里已经会有人开始愿意玩这个游戏了,最后我们再加入一项——装备。装备不仅可以提升你的攻击力,还有各种各样的特性,比如说一定概率造成X倍伤害,一定概率能够让怪物立即致死,点击后接下来的xx秒会附加持续伤害等等。而每次你击败怪物都会有一定几率掉落一个随机装备,你是不是觉得似乎开始有趣了起来?

  6. 为了让它更“有趣”一点,我们加入宝箱怪物,它将比普通怪物拥有更高的概率掉落装备,并且品质更好,当然它们也是一定概率随机出现在怪物中的,好的,我相信它出现的时候应该会让你觉得很开心。

  7. 最后,我们再加入一个许愿宝箱,每6个小时你可以点开一次,必定获得蓝色品质以上的装备,再来个大许愿宝箱,每24个小时才可点开一次,必定获得紫色以上的装备,猜猜这会发生什么?

至此,我们这次简短的改造就算完成了,我相信如果真有这么一款游戏,应该还是会有不少人愿意去尝试的,甚至可能还会有人会在那么一段时间陷入点到停不下来的境界,套用个流行的词,会进入心流的状态。

(当年风靡全国的热血传奇)

让我们再来看看这个游戏,它本质还是我们之前提到的:你需要做的就是在游戏中不停的点击,或者每隔一段时间上来点一下这个按钮但我相信这次得到的答案会跟之前大不一样。那么我们究竟对这个游戏做了什么?让我们简单的分析一下:

  1. 首先我们加入了奖励,这里的奖励既包含新的怪物,新的装备这种从感官层面给人以新鲜感的奖励,也包括经验值,升级,装备的属性这些本身隶属于游戏内的奖励。

  2. 然后我们加入了斯金纳箱,没错,就是它。对比下之前斯金纳做的实验,你会发现我们做的和斯金纳做的并没有太大不同:点击给予奖励,每隔一段时间给予点击更大奖励,给予点击随机概率的惊喜奖励。

这里其实也刚好对应了游戏设计中我们一直在做的两件事:funny & hook。我们通过funny让玩家接受我们的游戏,同时我们要在游戏中设置一些hook让他们尽可能的留在这个游戏中,也就是我们经常说的让游戏有黏性,而斯金纳箱就可以让我们比较轻松的把玩家给hook住。

结语

不仅在游戏时长方面,在氪金方面它的魔力也是无与伦比,比如氪金开箱,这里我们就不再展开详谈了。而事实上斯金纳箱也确实已经在诸多游戏尤其是手游中被广泛的运用,屡试不爽,而且我们通常还会冠之以一个非常好听的名字——玩家数值规划。

(让人欲罢不能的十连抽)

但是,值得注意的是,斯金纳箱是如此的好用,以至于我们会很容易就沉溺于它强大的力量,再也不想去研究其他的方法,最终堕入原力的黑暗面——在这个世界里将不再有玩家,有的只是一个个小白鼠。所以作为一名光明的绝(you)地(xi)武(ce)士(hua),我们需要时刻提醒自己,设计游戏更重要的是它需要给人们带来乐趣,而不是行为控制;我们要驾驭力量,而不是被它腐蚀。

(《指环王》中最终被魔戒腐蚀的史麦戈)

欢迎关注微信公众号:Lua爱好者

基于游戏认知对玩家进行分类并分析

 玩家群体是一个非常广泛的群体,将他们进行分类有助于我们去了解不同人群的行为,并可以更好的分析用户行为

在回顾自己过往的游戏经历,感受自己如何一步步从一个懵懂无知的小孩变成一个资深游戏爱好者的时候,我发现似乎找到了一种将游戏玩家进行分类的维度——游戏认知

游戏认知在这里指代玩家接触游戏的经验以及对游戏产品的深入了解程度,这里我们将玩家依据认知程度的不同划分为了5个层次,他们对游戏的认知是依次加深并逐层转化的,我将他们依次分别称为:尝试性、感官型、专业型、思考型透视型如下图所示:

根据感知程度对玩家进行的分类

接下来我会为每个类型进行解释并做简单分析。

01 尝试型玩家


这类用户更多可视为游戏行业的潜在用户,拥有及其庞大的数量规模,其中多数几乎没有什么过往游戏经验,只是可能会听说过一些已经形成了社会规模效应的爆款游戏(比如愤怒的小鸟,跳一跳,王者荣耀这些),对游戏的理解就是一项泛娱乐产品之一,更多是为了打发无聊的碎片时间。

他们通常获得游戏的途径为广告与周边朋友在玩的游戏,对这些游戏的态度就是看着好像蛮好玩的,我也来试试,所以将其称为尝试型玩家,这类用户是近2年大火的超休闲游戏的重要组成部分,是投放买量的主要流量来源。

02 感官型玩家


从数量规模上来看,他们是游戏行业的主流用户群体,具有一定的游戏经验,会将游戏视为一项独特的娱乐形式,对游戏会要求有一定的挑战(可能是来自PVE,也可能来自PVP)从而带来感官上的刺激或是喜欢一些特定题材背景,再或者是对某类画面风格情有独钟,所以他们可以接受一定的游戏难度与较复杂的数值系统。

这类玩家获得游戏的主要途径一般是各类游戏广告、游戏渠道的推荐、还有游戏主播们热播的游戏,本质上仍然属于被动接收类玩家,对于获取这类用户,在宣发上需要做更多精细化投放。

03 专业型玩家


这里所说的专业并非是指游戏水平的专业(所以说游戏电竞里的高手并不一定就是属于这个层级的,但应该会有很大程度的重合),而是指拥有丰富的游戏经验,能够清晰的分清楚游戏的各种类型,不仅是对游戏,对游戏厂商也有非常多的了解,知道一些知名的游戏评测媒体,如IGNFAMI通等等。他们会对某些自己喜爱的游戏类型甚至是游戏厂商有特别的喜爱。

这类用户几乎不太容易被虚假浮华的广告素材所吸引,而是会倾向于主动从专业媒体,大型游戏展会,或是关注某些厂商的新闻,来了解新游戏的信息,所以吸引这类玩家更好的宣传途径应该是积极参加各类游戏展,寻找专业媒体进行评测以及品牌广告。

04 思考型玩家


从这层开始,这类人群已经开始脱离普通游戏玩家这一范畴了,他们除了单纯的玩游戏之外,还会开始对游戏本身进行一些思考,比如分析游戏的各个系统组成,分析游戏的数值设计,思考游戏设计者的设计意图等。

进入到这层的玩家可能多半会进入游戏行业,他们可能是游戏评论家,可能是游戏媒体编辑,也可能是游戏设计师或者准备投身于行业的人们。

05 透视型玩家


这类人即使是在游戏行业从业者里,也是属于极少数,他们与思考型玩家最大的不同点是:他们已经不是简单的去思考游戏应该要由什么系统、数值与关卡组成,而是能深刻的洞察到游戏乐趣的本质,他们会开始思考诸如这个游戏的乐趣是什么,吸引我反复游玩背后的本质是什么这类问题。

在他们眼中,衡量一个游戏的好坏,题材、画面、以及故事这些东西已经不是游戏最重要的因素,更重要的是玩家在这个游戏中的核心乐趣来源,它们是可能来自心灵的共鸣,可能是来自大脑感受到技能提升的快感,也可能仅仅只是斯金纳箱让人产生的强化行为。

总结


分析完了用户的群体划分,这里我们再来对这些群体做一些总结。

  • 尝试型玩家(第1类)和观感型玩家(第2类)可统一归类为大众玩家,他们对游戏的认知程度并不算高,但确是数量最庞大的用户群体,如果希望游戏的流行程度变得更高,拉拢这部分人群的一定是最重要的,所以在立项之初就要认真考虑游戏的题材以及游戏玩法的复杂程度,因为它们会直接关系到后期广告投放,渠道宣传等买量的成本。

  • 专业型玩家(第3类)和思考型玩家(第4类)可以归类为核心用户,这类玩家他们一般愿意自己主动去了解游戏,并且自身也可能会成为大众玩家的KOL,从而成为口碑引爆的起始爆点。为了获取这类用户,相比单纯的投放获量,做好品牌宣传提高游戏在专业圈里的知名度可能会是一个更好的选择。

  • 从行业角度来看,第1,2,3类玩家属于非从业类用户,IP类题材一般来说对他们都具有非常大的吸引力。(这3类玩家都不太会关心游戏的内核,所以IP换皮策略仍然会比较有效)

  • 至于透视型玩家(第5类),他们对游戏的要求非常之高,要想吸引他们恐怕除了过硬的游戏质量别无他法。

以上均为个人的一些见解和想法,也非常欢迎有更多不同的见解。

欢迎关注微信公众号:Lua爱好者

别把语言当信仰

上次在公众号里发了条消息,有好多人问知乎上的争论是什么?其实没什么,只是在一个讨论unity里嵌入lua的话题里,有人说如果官方能提供原生的热更新解决方案,所有嵌入Lua的这些unity框架都得死,言下之意就是我C#各方面都碾压你Lua,我用你只不过是因为你可以暂时帮我解决热更新问题。

 

关于这个话题,并不想讨论孰是孰非。凭心而论,每种语言其实有它的适用环境,比如要快速做一个小工具,我首选会采用Python,因为三方库非常齐全。但如果对实时性有很高要求可能我会改用C/C++去实现核心模块,但如果写游戏的业务逻辑我会采用Lua,因为语言本身简洁,约束少,更灵活。

 

当然每个人对所谓的语言适用环境的理解都不一样,比如曾经的我就觉得C++可以搞定一切,也正应验了那句话,拿惯了锤子,看一切都是钉子。所以最开始我因为项目原因接触Lua的时候也只不过是将它当作了无须编译的C++来编写,还特意为了能让Lua实现一些C++的特性去写了一堆勉强算作中间层的代码,那时候我认为这就是跨语言的编程思想,语言并不能对我构成障碍。

 

但后来随着自己开始独立承担整个项目,我开始面临项目语言的选择这样一个问题的时候,我不禁开始反思,C++真的是最合适的语言么?并且在潜移默化间习惯了Lua的表这种方便的数据结构后再回头看C++,突然觉得在实现各种游戏逻辑业务的时候,C++的STL实在是有点刻板和笨重。在处理有些异步事务时,一个协程几行代码就能讲清楚的逻辑换做C++来写,既啰嗦冗长还不便于阅读。还有回调逻辑,由于匿名函数和闭包的缺失(那时候C++11还没出台)用使C++写个回调真是又累限制又多(参数限制)。这时候我开始认识到,哦,原来每个语言都是有自己的魅力的。

 

再到后来,我又陆续接触了Python,JS,Scheme,Haskell,C#,当然有些语言并不是为了解决什么问题,而是纯粹为了感受下这些语言给我们带来的不一样的思维。(比如Scheme和Haskell,强烈推荐使用Lua的朋友一定要去体验下Scheme这门语言,因为Lua很多地方都有借鉴它)

 

最后来说信仰。信仰这个东西它会令你非常有归属感,但是它也会给你加上一个无形的枷锁,让你排斥这个信仰之外的东西,看看一些极端穆斯林们对非穆斯林的表现,算是比较极端了。然而即便是穆斯林内部,逊尼派和什叶派也是互掐的一塌糊涂,基督教也是,天主教东正教互相开除对方教皇。

 

写代码本来是件简简单单的事情,为什么也要搞出个XXX是世界上最好的语言呢?寻找语言的归属感,其实我觉得还有一个词更合适——思维懒惰。也许有人要问,那为什么要做这个公众号?就像说明里说的,只是希望借此让更多人了解并喜欢上这门语言,也能够发现同样喜欢这门语言的人,仅此而已。并不是要宣传鼓吹Lua是宇宙语言。

 

Lua元表应用汇总

真的是好久好久没有写过东西了。= 。=

元表是Lua里头一个很强大的特性,有了它,可以自定义扩展出很多本身Lua并不原生支持的东西。所以其实一直都想做一个关于元表应用的汇总,趁着过年这点闲暇,暂且汇总下目前所了解的一些,也权当抛砖引玉吧。

重载算术运算符


这个没什么好说的,也算是元表的最初级运用了,具体应用见Lua手册中的介绍。

Cache表


这个也属于元表的基本运用,没什么好说的,通过弱引用来做一个Cache缓存。

只读表


通过实现__index和__index元方法,来实现对一个表的只读访问(这里的实现只针对一层表结构)

实现面向对象


这个之前有专门写过,参见

一个完整的Lua版OOP示例

简单使用Lua实现类的继承

共享表数据


有时候我们可能需要这样一个表参数传递,表里大部分数据是固定的,但是部分数据是动态创建的,如果每次都全部重新创建一遍就比较浪费,于是可以将固定数据做成一张表,然后每次创建新表使其可以共享这个固定数据表里的数据,新表内部只包含那些动态的数据。


以上的都是比较常见的一些应用,下面的这些也许就比较“冷门”了,至少我第一次接触的时候是觉得很“黑科技”的。

带功能的函数


这个主要运用了__call函数,用一个表来扩展原有函数,从而来实现带记忆(对运行过的输入参数保存结果,下次同样的参数传递进来可直接返回结果,达到优化效率的目的,这里也应用了上述的Cache表)。且此表可直接对原有函数进行替换,并可附加清除记忆功能。

为函数添加标签


这里也是通过__call将函数转换为可执行表,然后在其元表中加入一个标签来为此函数添加标签,同时新生成的函数可以与原函数完美替换。

统计函数运行信息


这个跟上面的类似,还是利用__call将函数转换为可执行表,向其元表中添加统计记录,并在函数运行时统计信息,最后再通过GetStatInfo来查看此函数的运行信息,这样在我们需要对某些函数做性能统计时,就不用修改原函数或者全盘查找替换了。

Lua装饰器


其实上面几个应用在其他语言里(比如Python)都可被称为装饰器(Decorator),并且为其提供了一些语法糖,这里我们也利用Lua的元表为其做了一个类似的语法糖(使用 .. 运算符),并用这个语法糖将以上几个函数修改了下。

先看最终效果:

这里首先我们用统计函数来修饰原函数,用于统计原函数真正的运行次数,然后为这个函数加上记忆函数功能使其相同输入参数时仅须运行1次,最后加上标签foo_final, 为这个最终函数打上标记。

最终运行结果显示,一切符合预期。

最后附上各个装饰器的实现:

以及最后用于生成装饰器的函数实现:

其实有了这个装饰器,就可以使用Lua去做所谓的面向切面的编程(Aspect-Oriented Programming)了,能做的事情就远不止上面提到的那几种,只是上面几个我个人比较常用而已。
最后,元表的世界好奇妙,哈哈。

 

欢迎关注微信公众号:Lua爱好者

使用Lua制作动态数据表格

表格配置中有种很常用的表格就是等级数值表,类似下面这种:

table_1
一般都是数值策划用exce制作出来的,而且很大可能是用公式计算出来的。通常情况下这么做没什么问题,但是有这么一种需求,一个怪物的掉落经验会随着玩家等级变化而变化,那么要配置这样一个掉落表就会是个让人很繁琐的事情了。通常我们会有两种做法:(我之前呆过的项目经验) 继续阅读

简单使用Lua实现表格动态解析

在游戏开发里,游戏配置是必不可少的一项。表格式配置是一种非常常见的格式,简单易用,支持excel等表格工具编辑,深受广大策划同学的喜爱。这里介绍一种简单使用Lua来做表格配置的方式。

首先是表格的格式,为了简单起见没有采用直接解析excel格式的方式来做,而采用了csv格式,个人喜好,采用制表符作为分隔符。生成出来的格式大概如下
(这里推荐使用OpenOffice来进行编辑):

ID\tName\tDescription\n
1\tTom\t他是一个工人\n

继续阅读

唔,流水账~

从1月28日开工,到现在又过去了整整2个月零3天。从第一版设定,反反复复修改到现在方向基本已经差不多确定,今天终于做完了战斗和关卡的框架,出了第一个战斗demo,接下来的目标是把游戏的其余基本框架搭建完,然后开始做内容,然后调数值,抠细节,嗯,大概这样,加油。
继续阅读