01-复式记账与游戏经济系统(一)


什么是复式记账

在会计方法中,有一句话叫”有借必有贷,借贷必相等”。与之对应的是一套记账方法,叫做复式记账。

游戏经济系统的三个环节

游戏内可以抽出3个重要的经济环节:source、flow、sink。分别代表了资产进入玩家经济循环、在经济循环内流转、离开经济循环。

这里可以使用了经济循环这个词,而不是游戏,下面会解释到

source,顾名思义,是资产的来源渠道。资产经由source进入玩家经济循环。

玩家A向玩家B购买一件装备,这并不是装备的source,而是flow。 玩家B的装备来源于一个boss的掉落,这是source,设计者在游戏中设计了一个产出渠道,玩家可以通过击杀boss来获得产出。产出可以通过boss的刷新数量,掉落内容和概率来控制。

这件装备被玩家获得前,可以看作已经在游戏内,也可以看作还未真正存在,对于一个因玩家而存在的虚拟世界,所有的信息被玩家接触前,都无关紧要。这就是为什么前面特意用进入经济循环这个词来厘清这一过程。

在一个赛季制的SLG游戏中,有如下常见的source - 充值,获得代币 - 游戏内刷新的敌对npc单位,击杀后可能掉落装备、经验道具 - 赛季结束后,获得相应的奖励

总之,游戏内的道具、装备、资源、货币,whatever对玩家的游戏体验产生数值影响的内容,其被第一个玩家获取的渠道,就是source,交易的双方是游戏和玩家。

  • 为了方便理解,我们将主要使用代币来举例。假设代币是游戏中的通用货币,可以和任何其他的游戏资源进行兑换。

  • 在实际游戏设计中,不同的产出渠道经常会产出不同类型的代币,其生产和消费途径体现设计者的意图。

例如精力条,通常随时间自动恢复,用来限制玩家的某种行为,从而间接控制该行为可获取的另一种资源(通常是玩家在游戏内的重要追求)的产出。

flow是资产的流动,游戏内的典型flow有如下几种。 - 玩家消耗游戏币购买装备; - 玩家消耗代币,购买赛季通行证、抽卡

sink是资产的销毁,游戏内的典型sink比如: - 玩家消耗代币,购买游戏币、精力条

实际上的划分会更复杂一点,比如游戏可能对玩家之间的交易抽成代币,这部分被抽成的代币离开了玩家所处的经济循环,所以同样是一种sink。 又比如消耗代币抽卡,可能获得资产,也可能打了水漂。

在帐本中,虽然有游戏这个主体,但是他并不真正处于经济循环中。显然,游戏发放代币,并不需要先持有代币,代币是它印出来的。

帐本中的游戏主体,其实是一个统计的工具,他的帐目中,记录了游戏像玩家投放了多少代币,回收了多少代币。

本节原本的标题是《什么是游戏经济系统》,仔细想想过于宽泛了,除去记账的内容,一个经济系统还包含了许多其他内容:

  • 同样的产出数量,如何分配给不同的玩家
  • 如何刺激玩家的消费欲望… 这些内容既超出了本文的范围,也超出了笔者的能力。

游戏内产出的代码设计

其实写到这里,如何设计一个不出错的游戏内的产出系统,已经是水到渠成。

因为借贷相等,玩家获得奖励(借入)就一定等于账本中,游戏主体的产出(贷出),设计者可以通过限制不同渠道的产出数量,来控制玩家获得的奖励。

在一个封闭的代码系统中,输入是玩家获得奖励的参数,系统做两个操作:给玩家添加奖励,给对应的渠道记录产出。这个代码我奶奶都能写,实在不行就deepseek一下。 又由于这是一个封闭的代码系统,意味着确定的输入将产生确定的输出,which is非常典型的单元测试场景。

代码的正确性,一定是源于两个条件:封装和测试。封装保证当测试通过之后,代码不会被悄悄修改。测试则保证,当需求变更,代码修改后,还能保持正确。

在上面的设计中,唯一剩余的漏洞在于,玩法代码对产出系统的调用有可能出错。我们确保了击杀一次BOSS获得的奖励一定是正确的,但是如果战斗逻辑出了bug,每击杀一次BOSS调用了10次发奖呢?这里就是统计监控发挥作用的环节了。

此处本来应该有一份伪代码,但我懒得写了