游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10799|回复: 5

[原创] 随机性、合理性——跑酷类游戏无限生成关卡算法研究

[复制链接]

1万

主题

1万

帖子

3万

积分

论坛元老

Rank: 8Rank: 8

积分
36572
发表于 2016-3-19 12:20:50 | 显示全部楼层 |阅读模式
QQ截图20160319121307.png

  GameRes游资网授权发布 文/白甲兴

  无限续关类游戏(类似天天酷跑)是如何无限生成关卡的?其中运用了什么算法?

  本人就个人理解和实践经验做一些归纳和解释,同时带上编程和设计思路:

  1. 首先,关键就是随机。

QQ截图20160319120952.png

  这里提到的“无限”实际上就是一个随机的过程。随机保证不断有关卡出现在玩家眼前同时又让有玩家有新鲜感,造成“无限续关”的感觉(以下伪代码);

  2. 解决了随机问题,接下来就是合理问题。

  如何让新生成的关卡符合玩家之前的游玩体验,并且保证是可以通关的?可以用两种方式解决:

  (1)约束,对新生成的元素(如怪物、地形等随机点)做出一定的限制,以使其符合之间设计的关卡通识。在此用Minecraft的生成算法举个例子,例如怪物只能在晚上出现(时间变量限制),只能在亮度低的地方出现(生成时若检测亮度数值不符合则不生成),例如沙砾会在水边生成(检测周围地格)等,这些附加条件都属于约束,以保证新生成出来的关卡与原来的关卡保持合理一致;

  1. 循环(地形生成周期)
  2. {
  3.   如果(条件合理 如:目前地形 == 沙漠)
  4.      生成沙砾();
  5.   或者(目前地形 == 海洋)
  6.      生成水面();
  7. }
复制代码

  (2)模板,用固有的(或者可以调整某些参数的)关卡模板(一组预先定义好的生成函数)来生成新关卡。这种方式生成的关卡变化较小,但往往设计感较强。而且通过调整参数(怪物浓度、资源密度、水域宽度等)可以创造出具有相当差异的新关卡。同时这种方式对合理性的解决往往更加有效稳定,相比之下随机约束的方式有时考虑不周产生“坏关”或“卡关”的概率会高一些。不过模板法相对的对游戏设计的要求更高一些(以下伪代码)

  1. 循环(地形生成周期)
  2. {
  3.   整数 a = 随机正整数;
  4.   如果(a 等于 1)
  5.     随机生成();
  6.   或者(a 等于 2)
  7.     碎裂地形模板();
  8. }

  9. 碎裂地形模板(碎裂程度,砖块浓度)
  10. {
  11.   循环(地形生成周期)
  12.   {
  13.     如果(条件合理 如:目前地形 == 沙漠)
  14.        每 砖块浓度
  15. 生成 碎裂程度的 砖块;
  16.   }
  17. }
复制代码

  这两种方法并不冲突,可以兼而有之。在跳跃游戏《涂鸦跳跃》(Doodle Jump)中,玩家既会遇到随机生成的跳板,也会遇到有预先设计好的跳板群(例如一条就塌需要连跳的一段关卡),可以说随机生成的部分考验了玩家的基本素质(底力),而模板部分考验了玩家的经验。两种方法结合,给玩家更佳全面的体验。

1.png

  图左方的黄色跳板跳过之后便会开始碎裂,需要连续向上移动,是预先设计好的模板生成的。图右方的部分则是随机生成。

  3.关于难度递增问题。

  通过调整上述生成算法中的参数、环境值、变量等,难度会自然而然地提升。但是若要做到合理量化,这就涉及到数值策划的数学问题了,首先需要一个数学模型来说明“难度”这个目标量是如何随着“怪物浓度”、“可站地格”等数值变化的。这个模型应由设计者结合关卡结构和实际体验决定。

  例如: 2.png (α为难度值,β为怪物浓度,γ为可站地格)

  其次,设定难度增长曲线。也就是难度随着时间、关数等增长的函数。

  例如: 3.png (α为难度值,λ为递增参数,χ为当前时间)

  这是一个简单的难度增长曲线,难度随时间线性增长。

  之后,根据难度增长曲线,确定变量随时间增长的函数

  联立得 4.png

   5.png 6.png 就是最终怪物浓度,和可站地格随时间和另一个参数变化的公式。

  相关阅读跑酷游戏关卡设计怎么实现难度量化?


102

主题

2443

帖子

7639

积分

论坛元老

Rank: 8Rank: 8

积分
7639
发表于 2016-3-19 13:30:25 来自手机 | 显示全部楼层
别疯了,随机的关卡得看制作的人,星期六还工作也是66666

0

主题

12

帖子

162

积分

注册会员

Rank: 2

积分
162
发表于 2016-3-21 10:49:31 | 显示全部楼层
请问你做过跑酷没有?

0

主题

141

帖子

533

积分

高级会员

Rank: 4

积分
533
发表于 2016-3-21 11:58:53 | 显示全部楼层
楼上这么一说小篱确实好苦逼

0

主题

1

帖子

15

积分

新手上路

Rank: 1

积分
15
发表于 2016-3-22 09:56:35 | 显示全部楼层
做跑酷的路过,就说一下分析最大的错误。跑酷的重点在操作量和反馈体验,你下面那个公式缺少了这个就是不成立的。难度往往在于多重复杂地形加怪物的结合,通常是连续的高强度操作随机跑道组,而不是单节的怪物增加导致玩家操作不便
怪物浓度一说最早做的时候也试过,后来被推翻了,我们现在说的都是一段多节跑道组中的操作量,比如玩家持续跑10秒所要做的操作量,叫法可能不同,但是重点应该都是——一段时间内的操作量控制

0

主题

28

帖子

114

积分

注册会员

Rank: 2

积分
114
发表于 2016-3-24 12:13:30 | 显示全部楼层
zwm788 发表于 2016-3-22 09:56
做跑酷的路过,就说一下分析最大的错误。跑酷的重点在操作量和反馈体验,你下面那个公式缺少了这个就是不成 ...

完全同意.. 随机生成的体验是不可控行为.主要是随机公式生产的反馈量是不可控的.
所说楼主用随机公式来代替大量的地图编辑. 但是这样做你每次测试的结果都会不一样. 你并不好定义其反馈信息的准确性;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-5-3 02:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表