前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【极客挑战赛】手打强者竟是这样逆袭TOP3!?

【极客挑战赛】手打强者竟是这样逆袭TOP3!?

作者头像
腾讯云开发者
发布2021-09-03 10:41:02
4040
发布2021-09-03 10:41:02
举报

导语 | 在腾讯腾讯云开发者社区联合腾讯码客、腾讯安全平台部全新打造的创新赛事【腾讯极客挑战赛 | 鹅罗斯方块】中,在短暂10天内,4570名参赛者或以自己的硬核技术诠释着 “代码无所不能”;或坚持游戏主义,手玩出一片天。今天小编邀请到的就是超强手打玩家——汪好盛。他以硬核手打与AI技能双管齐下,最终脱颖而出、斩获季军!

大佬这样说

AI与手打同时尝试打分,最后提交的最高成绩是手打成绩,主要思路是尽可能堆高后进行消4,依据序列的情况妥协进行消3.2,通过本地实现一个模拟器提供各种信息来辅助整个流程。AI算法思路与内部赛道的139w分大佬类似,手打最终117.9w分。

一、参赛途径

在目前国内最大的现代俄罗斯方块的QQ群,群主屁(farter)同时也是腾讯爷的安利下参赛。

群内对现代方块AI和经典方块AI都有非常多的研究(在方块AI猴群合作诞生了misamino zzztoj 等开创性的高效率对战AI,同时zzztoj目前仍被世界方块圈认为是最强的无延迟现代方块对战AI),也有很强的人类高手。在屁爷的推荐下,同时我比较感兴趣也有相对比较多的方块编写与魔改AI的经验,于是我参加了这次比赛。

二、解题过程

先看了一眼规则,就直接进去手打玩了玩。虽然有das但手感还是怪,旋转系统也与现代块,甚至传统块都有巨大差异。完全没有锁定延迟,比较严苛的死亡条件,没有hold,单next,这些对玩家来说条件过于苛刻了。看到还有速度的数字,后期肯定不是人类能操作的情况,于是放弃了直接手打的可能性,转而开始分析网页代码。

(一)JS的代码分析

网页的js代码非常友好,完全不设置任何阻碍,甚至在引导怎么使用,摆明了想让我们往AI或是其它不寻常的道路走,于是我魔改了一下得分一个提交,于是被后台gank了。之后又看到了控制台输出的内容(一大串方块动作形成的录像文件),基本确定了是后台会对操作序列进行验证得分。同时也发现,实质上自然软降也被算在了录像文件的D之中,所以速度什么的其实是无关紧要的,后台根本不会考虑自然降落速度造成的影响。本质上就是一个special judge的题。(给出输入,后台与分数对比,相同则通过)

接下来是从代码中寻找相关规则,过程就不再赘述。发现是总共10000块,固定序列,以及场地上方块越多消行数越多就能获得更高的奖励。基本明确了不能单纯通过存活策略刷长度来取胜。要在10000块内用尽可能高的效率去完成消除。(尽可能满场地,消4,妥协进行消3.2)

分析到了现在基本明朗了,我思考了一下认为可以走两个方向。一个是通过AI定制策略去尽可能完成更高的分,但相对的,这个结果不一定可控,很难快速知道预期效果,第二个则是通过编写模拟器去人工完成这一题(10000块也是可以勉强接受的数量),这个方案的好处就是可以很快的得到预期分数,明确自己最后大概的分段。

(二)编写模拟平台

无论是哪种方案,一个自己的模拟平台是必要的。正好,之前我就一直计划着编写一个现代方块通用AI平台,虽然完成度还不高,但基础设施已经基本搭建完成。遇见这次赛题,正好拿出来进行实战。设计的时候我提供了可以高度自定义规则的接口,于是遇见这次赛题,小小的修改了一个旋转系统出来,不消一个小时就实现了对平台的模拟。

接下来就是两个方向的同时进行了,不过本次比赛我个人的方块AI效果不是特别好,平时也没有太多时间进行优化。思路上与内部赛道的139w大佬有一点类似(也是块群AI系列的常用算法)(非常推荐观摩),不过由于各种原因并没有来得及出一个比较好看的成绩。

(三)最终解题方案

AI方案虽然也一直在推进,但效果并不是很好,推荐阅读刚才所提到的另一篇大佬的解题报告。手打的则是和朋友一起进行了研究了一些策略,以及提供了相关的模拟器功能。

在这个非常严苛发块环境与奇长无比的赛程下。如果一个失误就要重新开始打,这是绝对不可以被接受的。于是我给模拟器加入了回撤系统,并支持随时保存的功能。但有这些依然是不够的,本来网页只提供了1块的预览,这显然是太少了的,既然已经能拿到全部序列,为什么不多看一点。所以一开始我模拟器改为了6块预览。对于堆叠来说容易了很多,但也注意到了这种随机序列下。虽然消4是收益最高的,但也会出现接近100块没有一个i的情况。这时候玩家其实需要提前知道这个情况,来即时的对场地进行调整,于是加入了下一块i会来的时间,后来想了想,都提供了i为什么不干脆全部种类都提供以保证尽可能适合的堆叠?于是就加入了信息统计,其他一些常规的信息统计和死亡判定就不多说了。其实也非常想实现一个能够利用到某种下一块到来信息的AI算法,但可惜没有很好的设计思路。希望有大佬能尝试看看。

最终打完了10000块,获得了117.9w分,实际预测分其实还要高一些,不过人类终究还是有极限的啊.jpg

三、比赛总结

最后提交的成绩不是AI算出地成绩其实还是有点遗憾的,靠手打的成绩混到了第三有点不好意思,各位大佬的解题思路也都非常精彩。依然在参赛中收获了很多经验。也打算在赛后抽空完成这个GeekAI与平台以真正地完赛!

 作者简介

汪好盛

软件开发工程师

汪好盛,软件开发工程师。2018icpc赛事青岛银牌、ccpc赛事秦皇岛银牌;浙江省大学生程序设计比赛金牌。

 推荐阅读

人机共生时代,分布式机器学习是如何加速的?

手把手教你快速理解gRPC!

golang:快来抓住让我内存泄漏的“真凶”!

一文读懂@Decorator装饰器——理解VS Code源码的基础(下)


👇戳阅读原文前往「腾讯腾讯云开发者社区」作者个人主页参与交流哦~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云开发者 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (一)JS的代码分析
  • (二)编写模拟平台
  • (三)最终解题方案
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档