两种俄罗斯方块的记分规则

简介: 在实现俄罗斯方块游戏的得分处理时,我上网查找了一下关于俄罗斯方块游戏得分计算的相关内容,但是,并没有找到能够简单清晰的解决我的问题的内容。

在实现俄罗斯方块游戏的得分处理时,我上网查找了一下关于俄罗斯方块游戏得分计算的相关内容,但是,并没有找到能够简单清晰的解决我的问题的内容。


互联网的海洋里有着数以亿计的比特信息,但是却唯独找不到能解决你当前问题的有效信息,哪怕是一个并不复杂的问题,不知道你是否也会经常遇到这种情况。信息如洪流滔滔不绝的从你的身边流过,但是却难以取到对你有用的那一瓢。


每当我遇到这种情况时,就会察觉到在信息海洋中盲目寻找终究是徒劳的,有些东西还是得自己干。


怎么寻找俄罗斯方块游戏的记分规则呢?最好的方式就是找一个俄罗斯方块游戏,然后边玩边记录,方法其实就是这么简单。


在玩过了几个不同版本的俄罗斯方块游戏之后,我发现了对于这个经典的小游戏竟然有两种差异很大的记分规则,我给它们起了两个不同的名字,一个叫做“简单平滑版”,一个叫做“高风险高收益版”。

简单平滑版

我们先来看一下“简单版”的记分规则。


每堆叠一个“形状”所获得的分数与等级成正相关,等级越高,堆放一个“形状”获得的分数越高,分数(S)与等级(L)的计算公式为:

S = (L-1) * 2 + 4

image.png

就消除奖励来说,一共只有 4 种不同的情况,一次消除的行数越多,获得的额外奖励分数越多。

image.png

这个版本的记分规则非常的简单,玩家只需要玩一会儿游戏大概就能够看出其中的计算方式,随着等级的提升,形状的下落速度会变得越来越快,同时叠放一个形状所获得的分数也会相应的增加。计算方式很简单,升级过程很平滑,所以我把它叫做“简单平滑版”。

高风险高收益版

接着来看一下相对复杂的“高风险高收益版”的记分规则。

image.png

如图,表格中的行表示的是“形状”当前堆叠的行号(俄罗斯方块一共有 20 行),表格中的列表示的是当前的等级。当前的得分(S)与堆放行号(R)和等级(L)的计算公式为:

S = L 2+(R-1)*L

堆放的行号越高,放置一个“形状”所获得的分数越高,另外随着等级的提升,“形状”的分数也会大幅的增加。


堆放的行号越高就意味着距离顶端越近,GameOver 的风险越大,所以分数越高。另外,随着等级的提升,“形状”的下落速度越快,越容易 GameOver,分数也随着指数级的增长。


最后,如果玩家在游戏中使用了加速下落(按住方向键下,让形状快速的下落),则当前“形状”的分数在之前的基础上再乘以 2 。在之前的计算公式中增加一个变量 d (无加速下落时,d = 0;有加速下落时,d =1)。


最终的分数计算公式是这样:

S = (L 2+(R-1)*L) *2 d

只要 GameOver 的风险越大(堆叠的越高,等级越高,加速下落),所获得分数就越高,所以我把它叫做“高风险高收益版”的记分规则。


至于消除所获得的奖励,两者其实差不多。


这两种记分规则各有其优缺点,“简单平滑版”简单易于实现,但是整个过程过于平滑,缺少了风险和挑战。“高风险高收益”版,在游戏中提供了更多的风险和奖励供玩家选择,但是实现起来相对复杂一点儿。


目前,我制作的俄罗斯方块使用的是“简单平滑版”的记分规则,下个版本将会更新为“高风险高收益版”的记分规则。


因为,玩家喜欢在游戏中冒险。


关于俄罗斯方块的得分的计算属于游戏设计中的数值策划,这大概是最简单的数值策划。从中我们多少能够看出一些“关于数值策划都是干什么”的答案。


即使是同一个游戏,不同的数值计算方案却能够为游戏带来很大的不同。不得不感叹,游戏设计真的是一门很神奇的艺术。




我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的公众号就对啦!

相关文章
|
存储 缓存 Java
仅花200行代码,如何将60万行的RocksDB改造成协程
采用少量手动修改+自动代码转换的方式,将大型多线程程序改造成协程。在某些重IO、高并发的场景中,帮助业务取得了性能翻倍的效果。
56051 3
仅花200行代码,如何将60万行的RocksDB改造成协程
|
JSON Kubernetes Docker
k8s 集群中运行 docker registry 镜像仓库
k8s 集群中运行 docker registry 镜像仓库
1744 0
|
9月前
|
数据采集 机器学习/深度学习 搜索推荐
Pandas数据应用:推荐系统
在数字化时代,推荐系统是互联网公司的重要组成部分,Pandas作为Python的强大数据分析库,在数据预处理和特征工程中发挥关键作用。常见问题包括缺失值、重复值处理及数据类型转换,解决方案分别为使用`fillna()`、`drop_duplicates()`和`astype()`等函数。常见报错如KeyError、ValueError和MemoryError可通过检查列名、确保数据格式正确及分块读取数据等方式解决。合理运用Pandas工具,可为构建高效推荐系统奠定坚实基础。
178 18
Pandas数据应用:推荐系统
|
8月前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的运算符
本文详细介绍了C语言中的各类运算符,包括算术、关系、逻辑、位运算符、赋值、三目运算符及sizeof,帮助读者深入理解其用法与特性。君志所向,一往无前,希望在成长的路上有你相伴!
651 2
一文彻底搞清楚C语言的运算符
|
7月前
|
人工智能 文字识别 自然语言处理
1.6K star!这个开源文本提取神器,5分钟搞定PDF/图片/Office文档!
Kreuzberg 是一个基于 Python 的文本提取库,支持从 PDF、图像、Office 文档等 20+ 格式中提取文本内容。采用 MIT 开源协议,具备本地处理、异步架构、智能 OCR 等特性,特别适合需要隐私保护的文档处理场景。
566 1
|
7月前
|
数据采集 Web App开发 API
B站高清视频爬取:Python爬虫技术详解
B站高清视频爬取:Python爬虫技术详解
|
网络协议 Linux 网络安全
NMAP扫描基本操作
NMAP扫描基本操作
637 5
|
SQL 数据可视化 安全
微软SQL Server可视化工具与技巧
微软SQL Server不仅提供了强大的数据库管理功能,还集成了多种可视化工具,帮助用户更直观地理解和管理数据
1002 5
|
消息中间件 监控 NoSQL
使用redis做消息队列
使用redis做消息队列
341 0