前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【参赛经验分享】[腾讯内部赛道Rank6]鹅罗斯方块半手打(TAS)心得

【参赛经验分享】[腾讯内部赛道Rank6]鹅罗斯方块半手打(TAS)心得

原创
作者头像
ZeroNinEX
修改2021-08-20 14:17:49
9023
修改2021-08-20 14:17:49
举报
文章被收录于专栏:默认专栏默认专栏默认专栏

在技术主导的比赛中靠着手打拿了奖,被要求写笔记,感觉自己弱爆了

参与这个比赛的时候,最初的想法也是想依靠算法去实现的,毕竟手打得无论多好,最优解肯定得依靠算法实现,但是由于种种原因(比如大学被ACM折磨过一段时间之类的...)不想写算法,就以最单纯的玩家心态去解决这个问题了。

玩家的游戏水平肯定是有所差异的,包括这个游戏,想要在8天之内成为高手也是不太现实的。但是方法总比困难多,玩家群体中有一种神奇的游戏攻略方法,让玩家只要付出足够的耐心,就能在游戏中做出各种高手都做不出的操作——TAS。

TAS,全称Tool-Assisted Speedrun,即“工具辅助竞速”,亦称Tool-Assisted Superplay。简称为TA(工具辅助)。是指以完全不变动游戏本体为前提,利用模拟器的辅助功能,以极高的精度完成游戏的一种游戏方式。早期TAS视频以通关竞速类为主,随着TAS创作范畴的扩大,S也采用为了superplay的缩写。(摘自百度百科,如果有兴趣可以看看B站上各种游戏TAS视频)

从规则上看,这个游戏非常适合TAS,原因有如下两点:

1、游戏序列固定,规则开源。因为存在固定的随机数种子和随机数算法,可以轻松地使用其他工具复现出整个方块序列,又因为规则开源,实现起来可以基本照搬代码。一般来说TAS需要类似模拟器和SL大法作为基础,而这两个特性相当可以使用极低的成本快速开发一款SL模拟器,TAS的实现成为了可能。

2、分数提交只需提交序列。既然只提交序列,就说明时间这个因素被完全忽略了,这意味着开发TAS工具更加简单,不用写任何定时器,同时由于时间影响不存在,玩家无需被快速下落的方块打乱心思,可以让方块落在任何合法的地方,不满意随时撤销,然后生成相应的序列代码即可。

因此,经过TAS处理后,这个游戏通关的门槛只剩下了两个因素——耐心和时间。

工具的开发

好在之前开发过俄罗斯方块游戏,这次开发节省了非常多的时间。因为是个人使用,开发效率优先,不需要多么漂亮,所以使用了C++和Qt进行快速开发。

YxpZhpGPL7knunih.png
YxpZhpGPL7knunih.png

图中的网格和方块都是简单画出来的

由于用的不是JS,无法照搬原版代码,因此实际上是根据规则自己重新实现了一遍。但是由于是本地实现,我可以开发额外的辅助功能,主要由如下几点:

1、未来方块提示。在web版中,只显示出未来的一个方块(那么多S和Z方块,预测一个怎么够用啊)显示出未来的8个方块,可以提前进行贪心部署。

2、方块预测。这个游戏的方块序列是一言难尽的,因此绝对有必要为下一次各种方块的来临(以及长期不来临)做出准备。

3、方块数量统计和分数预测。因为目标是10000个方块,玩家拥有自己的“效率”,因此使用当前得分除以方块数量可以大致估算出效率,方便实时调整路径,以及探索更优的摆放方法。

4、键位修改。这个没什么好说的,但是合适的键位可以提高玩家的操作效率。

游戏过程

不得不说,游戏过程是很.....不太好的。虽然有一两百小时的《噗哟噗哟俄罗斯方块》的游戏经验,但是由于S和Z的方块比例过大,加上没有Hold机制救命,整个过程可以看做是人为的DFS。

整个游戏采用的技巧期初是右边留空(空一列用I或L方块消除,空两列用S或O方块消除),但是并不是很理想,有时候想要的方块迟迟不来,导致没办法无缝拼接,最后用完所有方块打到了86w的分数(然后马上被超过了)。但是也留下了很多经验,比如适当的留几行一列和几行两列可以增加未来方块的可控性,T方块可以让阶梯和平地互相转换等。

后来根据统计发现,Z方块的数量比S方块要多,因此换成左边留空的策略,在监视效率系数的情况下,加上第一次玩的经验,打到了112w分。(实际上效率有一段时间达到了116w分,但是由于保证效率需要耗费大量的精力,因此选择了降低一些分数快点打完)。

总结

手打毕竟是手打,拿到最优路径肯定要靠算法(其实就是菜....)。总的来说,看到最后的排名还是挺有成就感的,努力也没有白费,还是挺好的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 工具的开发
  • 游戏过程
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档