← 游戏机制

顾客怎么决定点什么

一道菜在菜单上、也有货,某个顾客群体却可能一单都不点。这要从顾客怎么选说起。1

每个顾客都属于一个顾客群体,游戏给同一道菜按群体分别打分。顾客出门吃饭要做两个选择:先选去哪家店,再选在店里点什么。1,2,3

第一步:选店

想出去吃饭的顾客只看自己当前所在地区的店铺。一家店要被考虑,得同时满足:1,4,5

  • 菜单不为空;
  • 正在接待新顾客:做菜和服务的店员都在班(即两者上班时间的重叠时段),并且距离这个时段结束还有超过 1 小时;
  • 有空座位。下雨或暴雨的日子,顾客只坐有遮挡的座位(在屋顶下,或桌上有遮阳伞),除非饿得厉害。下雪不限制座位:光是下雪,不会让顾客只找有遮挡的座位。

符合条件的店各得一个权重:这位顾客所属群体对该店的人气,加上一个距离修正。店就在旁边时修正为 +0.1,越远越低,足够远时为 −0.1。

权重为 0 或更低的店不会被选中;其余店被选中的概率与权重成正比。人气怎么算见人气。

示例菜单

这位顾客选中的店有下面这份菜单,四样单品都有货。分数是为举例编的:它们是某个顾客群体按你的菜单售价,对每样单品的满意度,满分 100。1,2,3

单品类别该群体的分数
一份面条菜92
一瓶汽水饮品80
一份炒饭菜75
一碗汤菜61

第二步:哪些单品能被点

顾客把所有有货的单品放在一起比,菜和饮品不分开。最高分定下一条分界线。一样单品要有货,并且比有货单品的最高分低不到 30 分,才可能被点。下面把这些单品叫作候选单品。正好低 30 分的单品不算候选。1

单品分数比最高分低是候选吗?
一份面条920是(最高分)
一瓶汽水8012是
一份炒饭7517是
一碗汤6131否

候选单品 = 有货且(有货单品最高分 − 该单品得分)< 301

汤比最高分低 31 分,所以这个群体完全不会点它。别的群体给汤的分数可能不一样。

第三步:选一样单品

顾客从候选单品里随机选一样,每样机会相同。在这个例子里,面条、汽水、炒饭各占这个群体三分之一的选择。比最高分低 29 分的单品,被选中的机会和最高分的那样一样大。1

第四步:可能再加一杯饮品

选中的是菜,顾客有 80% 的概率再从候选饮品里随机加一杯;选中的是饮品,这一单就只有这杯饮品。所以不管菜单多长,一单最多一道菜加一杯饮品。1

这个例子里,汽水是唯一的候选饮品。这个群体平均每 15 单里,5 单只点汽水,5 单点面条,5 单点炒饭。这 10 单点菜的订单里有 8 单会再加汽水。所以 15 单里有 13 单含汽水,每道菜各 5 单。饮品还会被加进点了菜的订单,所以可能比任何一道菜卖得都多。

一杯饮品也可能挤掉所有菜。如果某群体给一杯饮品的分数比每道菜都高 30 分或更多,这个群体的顾客只会点饮品。

最好的单品卖完时

分界线由有货单品里的最高分决定,所以卖完会挪动分界线。面条卖完后,汽水(80 分)成了最高分。汤现在只比最高分低 19 分,不到 30 分,于是重新成为候选。汽水、炒饭、汤各占三分之一的选择。1

改价时

分数按你的菜单售价算,所以改价会改变分数,可能让单品成为候选或掉出候选。假设面条还有货时,一次改价让这个群体给汤的分数从 61 升到 63。汤就只比最高分低 29 分,重新成为候选。详见菜品满意度与价格断崖。1,2,3

没有单独的预算检查。价格超出某群体预算的单品,只要比有货单品的最高分低不到 30 分,照样是候选。1,3

这里没讲的

顾客多久出门吃一次饭不在这条规则里,我们也还没有在游戏代码里查清楚。

在本站

  • 在我的存档里载入存档后打开菜单页,能看到每个群体给每样单品的分数,某群体不会点的单品会变灰。
  • 在规划器里试不同的菜单和价格。
  • 店铺在各群体中的人气见人气。

来源

正文里的数字对应下面的来源,点数字可以跳过去。

来自游戏代码

  1. ↑顾客如何从店铺菜单中选择
  2. ↑游戏如何把菜品评分的各部分合成一个满意度,以及在哪里使用
  3. ↑各顾客群如何给一道菜打分:价格、性价比、稀有度、本地偏好
  4. ↑店铺何时接待新顾客,以及下雨时顾客接受哪些座位

来自游戏数据(版本 25680465)

  1. ↑各种天气的雨量和雪量