我是 Michele,一位在大数据领域工作的计算机科学家。 2021 年 1 月初,我通过 Linkedin 了解到 FaaS War 全球无服务器竞赛。我从小就对电子游戏充满热情,被 80 年代风格的游戏画面所吸引,在仔细分析游戏规则后,我开始开发自己的战斗机。在这个故事中,我将只关注我的开发经验,以及使我获得第一轮胜利的选择和想法。我将简要解释 Faas Wars 是什么,但有关所有必要信息,请参阅官方网站。 FaaS Wars 是一项由 Nimbella 组织并得到 Apache OpenWhisk 社区成员支持的编程竞赛。比赛的目标是在享受乐趣的同时接近无服务器世界。游戏的目标是在一对一的战斗中击败其他参与者开发的敌方机器人。您可以控制您的机器人编写代码来处理事件和发出命令。与对手的互动是通过无服务器事件进行的,我们必须以最佳方式管理这些事件以战胜对手。根据接收到的事件,有必要做出反应并向机器人下达命令。主要命令用于向前、向后或原地旋转机器人。每个主命令都可以伴随一个辅助命令并行执行,例如射击或旋转炮塔。
在官方教程的指导下,我迈出了第一步,开发了一个初级机器人来理解和试验游戏的机制。随着每次迭代,策略不断发展,新的机器人原型立即通过与其他参与者的机器人竞争进行测试。正是对手的技巧让我能够快速设计、改进和完善制胜策略。我注意到大多数对手都有相同的策略:瞄准射击并旋转炮塔以试图跟随运动。很好的策略,但问题是这样做时,他们并没有从他们的位置上移动太多,因此很容易被击中。在地图上移动不是很快,除非你只是来回移动。事实上,在到达地图上的任何一点之前,机器人必须指向那个方向,但问题是旋转阶段很慢,因此存在在敌人火力下停留时间过长的风险。所以我必须找到一种快速行动的方法,并决定从我出生前几年创建的老游戏中汲取灵感:太空入侵者。因此,这个想法只是简单地将机器人沿着地图的边缘定位,并仅在两个方向上移动:上方和下方。同时,尽可能多地将炮塔旋转向对面边缘射击,希望能击中地图中央的对手。这种策略带来了几个优点,因为机器人永远不会停留在同一位置,因此更难被发现,最重要的是,它不会浪费时间进行旋转。
随着时间的推移,我添加了新功能并尝试改进弱点。例如,我改进了机器人从初始位置移动到最近边缘的初始阶段,这是一个非常微妙的阶段,因为如果失败,它会导致肯定的失败。我添加了一个动作历史来跟踪最新事件,这样,例如,在发现对手后,我可以在他的轴上移动并跟随他,而不是随机移动。在实现主要功能后,我在1月份的最后一轮及时提交了名为Cortex2的机器人,并获得了决赛资格。在开发阶段,在和其他几场比赛的获胜者的测试中,我意识到我可以登上领奖台,但战斗的结果很大程度上取决于机器人的起始位置(这是随机的)。在这里可以看到的决赛是由每轮的获胜者进行的,总共 7 名,采用循环赛制,其中每个战士只能与每个对手进行一场战斗。出乎意料的是,我在 6 场战斗中赢了 5 场,从而赢得了第一轮 FaaS Wars!完美的策略并不存在,因此我们的目标是开发一个平均能够战胜大多数对手的机器人。为此,建议分析对方机器人的行为并找到一些启发式方法。尽可能多地移动,不要在短时间内返回同一地点。否则,如果对方发现了你,你很容易被击中几次
尽量减少旋转的次数和角度,因为它们需要时间,更容易被发现 战斗中获得的信息很宝贵,保留它并寻找利用它的好策略 跟踪对手的动作,以便您可以预测下一个 炮塔的旋转不会阻碍机器人的运动,因为它是平行发生的,所以尽量让它始终指向对手 不要忘记管理与墙壁的碰撞,否则你可能会卡住个人,这是一次有趣、有创意和有启发性的体验。开发阶段变得简单而直观,丰富了与其他参与者的竞争精神。观察来自世界各地的其他开发人员的想法也很有趣。
感谢这次活动,我有机会更接近我只听说过的云计算概念,特别是 FaaS(功能即服务)类别。我赢得了 1 月份 200 美元的奖金和 3 月份 800 美元的大奖,从而完成了 FaaS Wars 的第一季。我邀请大家加入战斗,因为还有第 2 季的最后一战,以 800 美元进行。