游戏数学题

俄罗斯方块:难度曲线

作为广为人知的世界级游戏,《俄罗斯方块》能够历经数十年经久不衰,看似简单的游戏机制里必然揭示了许多有趣的体验设计法则,其中之一便是它的游戏难度曲线:随着方块的累积,操作方块的空间会越来越少,游戏将会越来越难。合理的游戏难度区间能让玩家快速进入忘我的心流状态,而数十年的时间和几代玩家已经证明,《俄罗斯方块》绝对称得上是游戏难度曲线的典范,正是它让玩家们乐此不疲地继续着游戏。而《俄罗斯方块》的游戏规则又是如此简单,因此我想尝试用数学的方式给出这条曲线。

一维模型

我们来考虑一个简化的一维模型,实际的俄罗斯方块可以考虑是多个一维模型的组合:

image-20241013000850059

最小游戏单元

首先我们可以注意到:如果p和q是一个常数,那么可以简单地用

(1)m=(pq)

也就是说,方块的累积使得通道的可用高度H每时每刻都在压缩,忽略方块未落稳的情况,易得t时刻方块落到底部所需时间为

(2)T(t)=hmatv

游戏难度为

(3)D(t)=1/T(t)=vhmat

设置合理的参数,其图像为

image-20241013034519953

由于进行了许多简化,我们可以将其视为一个最小的游戏单元。

消除逐渐提速

由于下落变快,方块之间的接触概率变大,因此方块消除速度也会更快,考虑方块的消除速度随着落下时间的减少而加快:

(4)q(t)=k/T(t)

修改eq.2为:

(5)T(t)=h(pq)atv=hpat+kat/T(t)vvT2(hpat)Tkat=0

解这个一元二次方程,得

(6)T=(hpat)±(hpat)2+4v(kat)2v

舍去负根,游戏难度为:

(7)D(t)=1/T(t)=2v(hpat)+(hpat)2+4v(kat)

设置合理的参数,相同时间内的游戏难度曲线为:

image-20241013015617813

可以发现,加入了方块消除速度q值修正后的模型,游戏难度上升明显变缓,与实际情况有较大出入。于是我们可以将方块消除速度进行分段:

(8)q(t)={k/T(t),t<tthresq0,t>=tthres

在这个模型中,当下落时间T(t)小于一定阈值时,玩家应接不暇,方块的消除速度不再增加,维持一个较小的稳定值时的难度曲线函数变为:

image-20241013020952489

由此,我们发现玩家的难度曲线在阈值点附近发生了突变。超过这个临界点后,游戏会很快结束。

模拟曲线

我们还可以假设,随着游戏的进行,方块下落的速度v也会缓慢增加:

(9)v=v0+st

并且每隔一段时间tr后方块获得一次大消除,一次性消除x个方块,这也许会使得玩家的难度曲线在临界点附近反复跳跃,让游戏一直进行下去,很可惜,我不会再想用解析式表示这些复杂的公式,而是用模拟过程的图像来进行说明。

按照上述思想我们可以通过模拟绘制一维俄罗斯方块模型的游戏难度曲线,由于图中还考虑了下落速度随时间成正比增长,这使得游戏难度在每一个消除周期后都会获得更大增幅。

image-20241013033636910

魔法使之夜:恋爱动力学

谐振模型

有一个简单的模型能够描述恋爱中的小情侣之间的拉扯游戏,并且能够很好地帮我们复习线非性动力学中的主要知识,主要内容出自Strogatz的《非线性动力学》,我觉得很有趣,下面是具体介绍:

有一对男女,我们就叫他们静希草十郎苍崎青子好了。

文件:静希草十郎 苍崎青子

 

不妨设:

C(t)tQ(t)t

值越大表示对对方的态度越亲密,正值表示亲密,负值表示疏远。

为了简单起见,二人的恋爱模型可以表示为

(1)C˙=aQQ˙=bC

常数a、b均为正值。

用形象的理解就是,在由C、Q张成的平面空间中的每一个点(c,q)上都分配了一个向量:

(aQ,bC)

我们在4个象限中分别画一下向量的朝向,不难看出,表示二人亲密状态的曲线轨迹应该是一个圆环,也就是说:二人的亲密关系始终在

(+,+)(+,)(,)(,+)(+,+)...

四种状态中循环,如下图中所示:

image-20241003174633944

可以用通解法进一步求解,(1)式改写为:

(2)ddt(CQ)=(0ab0)(CQ)

求解参数矩阵的特征方程:

(3)(0ab0)ν=λν

(4)det(λabλ)=0λ1=iab,λ2=iab

将特征值带回(3)式,特征向量为

(5)ν1=(iab1),ν2=(iab1)

通解为:

(6)(CQ)=c1eiabt(iab1)+c2eiabt(iab1)

用欧拉公式进一步化简,得

(7){C=bω(c1+c2)sinωtQ=(c1+c2)cosωtω=ab,c1c2

这是一个椭圆的参数方程,与之前的分析一致。

因此,两人的关系会一直处于一个循环的状态,不会有任何实质性进展,但好消息是两人会在1/4的时间内同时持亲密态度,并且两人至少不会彼此莫不关心:也就是到达系统稳定点(0,0)。

综上,笨蛋草十郎永远不会得逞,谁让青子是蘑菇我老婆呢?

一阶线性模型

在大多数恋爱关系中,我们采取的策略显然会更加复杂,于是我们可以建立一个稍微更为普适的模型:

(8)ddt(xy)=(abcd)(xy)

特征方程为

(9)det(aλbcdλ)=0

特征值和特征向量的求解略显复杂,但我们可以可以通过刻画平面中的特征值和特征方向来观察系统的演化,展开行列式有:

(10)λ2τλ+Δ=0τ=tr(A)=a+dΔ=det(A)=adbc

特征值与矩阵的迹和行列式值的关系为

(11)λ=τ±τ24Δ2,τ=λ1+λ2,Δ=λ1λ2

通解为:

(12)x(t)=c1eλ1tx1+c2eλ2tx2

可以分情况讨论

Δ<0

这种情况下特征方向为两条直线,且一条直线上的解指数增长,另一条直线上的解指数减小,这种情况,平面中心的不动点称为鞍点(saddle point),系统的相图可以刻画出两人恋爱状态的演化轨迹:

image-20241003181236454

这种情况下,两人恋爱的最终结果可能是走向第一象限的热恋状态,也有可能进入第三象限的对抗状态,具体哪一种则取决于两人的初始感觉。

综上所述,我们可以用一张图来表示所有不动点的情况,我们可以借由不动点的类型轻易地画出系统的大致相图,并判断系统的最终状态:

image-20241003185603548

帝国时代4:资源消长与平衡

作为一款深受玩家喜爱的即时战略游戏,《帝国时代4》不仅需要玩家进行军事扩张,同时还需要掌控经济发展、资源分配和战略规划。游戏中的每一场战斗不仅仅是士兵的碰撞,更是资源供需关系的较量。无论是粮食的增长、黄金的采集,还是军队的消耗与升级,都遵循着一定的规律。合理的资源增长与消耗平衡能够让玩家快速进入“心流”状态,而这种机制正是许多即时战略游戏的核心设计之一。

在这篇文章中,我们通过数学建模,尝试分析《帝国时代4》中资源增长与消耗的平衡关系,探索在军事扩张过程中,如何在经济发展与战争损耗之间找到最优解。


简化模型假设

我们构建一个简化的经济-军事模型,描述游戏中的资源动态:

  1. 资源生产:

    • 资源类型包括粮食(F)和黄金(G)。

    • 粮食用于训练士兵,黄金用于升级科技。

    • 假设每个村民的固定工作效率为 rF (粮食/秒)和 rG(黄金/秒)。

    • 村民总数 N 可分配到粮食生产和黄金生产中。

  2. 资源需求:

    • 假设每生产一单位士兵需要消耗 cF 粮食和 cG 黄金。

    • 士兵会随着战斗而损耗,假设每秒士兵的损耗率为 μ,需要通过新的生产来补充。

  3. 资源动态方程:

    • 每单位时间,粮食和黄金的变化可以分别表示为:

      dFdt=rFNFcFP
      dGdt=rGNGcGP

      其中 NFNG 分别为分配到粮食和黄金的村民数量,P 表示士兵的生产速度。

  4. 军事力量:

    • 士兵数量 S 随时间的变化可以表示为:

      dSdt=PμS

      其中 P=min(FcF,GcG),受当前资源限制。

通过以上模型,可以描述资源生产、军队训练与战争消耗之间的动态关系。


战争与资源的平衡

在《帝国时代4》中,军事扩张与资源增长往往是对立的:过多的村民分配到资源生产上,会导致军队规模不足;而过多的人力投入到战斗中,则会减缓经济发展。我们可以通过分析资源增长与军队损耗的平衡点,寻找一条“合理扩张曲线”。

单一资源生产与消耗平衡

考虑一个简化情况,仅有粮食生产,假设 NF=N,黄金需求为 0(cG=0)。此时资源与军队的动态方程为:

dFdt=rFNcFP
dSdt=PμS

在稳态下(即 dFdt=0dSdt=0),我们可以得到:

P=μS
rFN=cFP

P=μS 代入,得:

S=rFNcFμ

这表明,士兵数量 S 与村民总数 N 成正比,比例系数由生产效率 rF、单兵消耗 cF 和损耗率 μ 决定。

多资源的动态平衡

  1. 游戏中的资源包括粮食(Food, F)和黄金(Gold, G)。

  2. 每个村民的资源生产效率为:

    • rF: 每名村民每秒生产的粮食。

    • rG: 每名村民每秒生产的黄金。

  3. 总村民数量 N 被分配为:

    • NF: 专注于粮食生产的村民数量。

    • NG: 专注于黄金生产的村民数量。

  4. 每单位时间,粮食和黄金的变化受村民分配数量影响:

    dFdt=rFNFcFP
    dGdt=rGNGcGP

    其中,cFcG 分别表示生产一个士兵所需的粮食与黄金。

 

士兵生产

  1. 士兵数量 S 的变化由生产速度 P 和战斗损耗率 μ 决定:

    dSdt=PμS
  2. 士兵生产速度 P 受当前资源限制:

    P=min(FcF,GcG)

动态村民分配策略

村民在粮食和黄金生产之间的分配是动态调整的,具体规则如下:

  1. 资源优先级

    • 当粮食不足(F<G),更多村民被分配到粮食生产(NF 增加,NG 减少)。

    • 当黄金不足(G<F),更多村民被分配到黄金生产(NG 增加,NF 减少)。

  2. 村民总数约束

    NF+NG=N

模拟可视化

1.村民数量恒定:

image-20250318202746468

2.村民数量线性增加:

image-20250318203840233


葬送的芙丽莲:时间流逝的魔法

在动漫《葬送的芙丽莲》中,芙丽莲作为一名长生种精灵,她的漫长寿命让她对时间的感知与人类截然不同。对人类来说,十年的时间可能是一段非常漫长的记忆,而对芙丽莲来说,十年可能稍纵即逝。为了更好地理解长生种对时间的主观感知,我们可以通过两个数学模型来描述时间流逝对她的影响。

TV动画《葬送的芙莉莲》最新视觉图公开!今年秋开播 - 白鸟acg

传统比例理论

传统模型假设感知时间的增长速率与真实时间成反比:

1. 模型假设

  1. 感知时间的增长速率与真实时间成反比: dTdt=kt,t>c.

  2. 在真实时间的早期(tc),感知时间线性增长: T(t)=t,tc.

2. 计算

(t > c) 时的感知时间公式积分:

T(t)=ktdt=kln(t)+C,

其中 (C) 为积分常数。

3. 确定参数

有连续性条件:

  1. (t = c) 时,感知时间连续,满足 (T(c) = c)c=kln(c)+CC=ckln(c).

  2. (t = c) 时,感知时间的增长速率连续,满足 dTdt=1

    dTdt=kt,令 t=c1=kck=c.

    综上,有:

    T(t)={t,tc,cln(t)+ccln(c),t>c.

其中:


感知比例理论

改进模型假设感知时间的增长速率与过去的感知时间成反比:

1. 模型假设

  1. 感知时间的增长速率与真实时间成反比: dTdt=kT,t>c.

  2. 在真实时间的早期(tc),感知时间线性增长: T(t)=t,tc.

2. 计算

(t > c) 时的感知时间公式积分:

TdT=kdtT22=k(tc)+C,

其中 (C) 为积分常数。

3. 确定参数

有连续性条件:

  1. 积分常数 (C): 在 (t = c) 时,感知时间连续,满足 (T(c) = c)c22=CC=c22.

  2. 比例常数 (k): 在 (t = c) 时,感知时间的增长速率连续,满足 dTdt=1

    dTdt=kT,令 T=c1=kck=c.

综上,有:

T(t)=T(t)={t,tc,2c(tc)+c2,t>c.

其中:

数学公式如下:

T(t)={t,tc,2k(tc)+c2,t>c.

其中:

模拟曲线

image-20250318214357556

100年=?

假设芙丽莲的生命跨度为 (t = 1000) 年,线性增长阶段结束时间为 (c = 10)。通过斜率连续性计算得 (k = c = 10)。我们计算当真实时间从 (t = 1000) 增加到 (t = 1100) 时的感知时间变化。

ΔT1=T1(1100)T2(1000)=57.0056.05=0.95.
ΔT2=T2(1100)T2(1000)=147.96141.07=6.89.
模型感知时间变化(ΔT
传统模型(比例理论)0.95 年
改进模型(感知比例理论)6.89 年