“新史诗”。 适合开发人员、运维人员和好奇的人

“新史诗”。 适合开发人员、运维人员和好奇的人

由于读者的大量请求,大量关于使用无服务器计算技术来开发实际应用程序的文章正在开始。 该周期将涵盖使用现代工具的应用程序开发、测试和交付给最终用户:微服务应用程序架构(无服务器版本,基于 开放式FaaS), 簇 kubernetes 用于应用程序部署、数据库 MongoDB的,专注于云集群与应用,以及云总线 NATS。 该应用程序实现了游戏“Epics”,这是流行的客厅游戏“Mafia”的变体之一。

什么是“史诗”?

这是游戏“黑手党”的变种,也称为“狼人”。 它基于团队游戏,参与者必须逐步了解谁是谁并努力获胜。 不幸的是,在线玩时,人际互动这样的游戏重要组成部分消失了,而经典《黑手党》的规则又相当简单,因此,为了更加非线性和有趣的游戏玩法,通常会添加其他角色,但总的来说,原版《黑手党》的主要特征都被保留下来,例如白天和黑夜的变化、只在夜间行动、以及参与者之间的联盟等。 在线游戏的另一个重要区别是主机(又名游戏大师、故事讲述者)通常是计算机程序。

游戏描述

我想要实现的游戏规则取自大约 10 年前我保存在个人档案中的旧 irc 机器人。 “史诗”每场游戏都有一个背景故事:

在遥远的王国,在七大洋彼岸的第三十国,有几个村庄生息繁衍,在它们之中 好伙伴 и 美丽的女孩。 他们播种面包,去周围的森林采摘蘑菇和浆果……这样的情况持续了一个又一个世纪,直到一场可怕的灾难震撼了地球,邪恶开始在全世界蔓延! 夜晚变得漫长而寒冷,在黑暗中,不友善而可怕的生物在森林里徘徊,走进村庄。 从某处到达 Snake Gorynych 并养成了偷走红少女并抢走村民一切值钱东西的习惯。 有害且贪婪 巴巴亚嘎从遥远的森林乘迫击炮飞来,迷惑了居民的心智,甚至有人放弃手艺,进入森林抢劫,在那里结成帮派。 恶人相遇了 哥布林知道如何变成树木和灌木丛的他开始监视和平的村民并为强盗服务,嗅探好伙伴们是否在图谋清除他们的定居点的邪灵。 好伙伴和美丽的少女,厌倦了强盗的袭击,厌倦了可怕的死亡 潇洒的独眼,收集黄金并邀请了邻近城市的著名摔跤手—— 伊万·沙列维奇,他承诺要消灭村里的强盗。 在森林里的一块空地上,伊万免于死亡 灰狼,落入了强盗的陷阱。 作为回报,狼答应向沙皇通报各种森林恶灵的情况。 一位著名的治疗师路过 智者瓦西丽莎当她看到麻烦时,她留下来护理那些遭受猛男攻击的居民。 森林后面出现了一座黑色宫殿,据传闻,他就定居在其中。 不朽的Koschey每天晚上,他都会到各个村庄去迷惑好伙伴和红姑娘,让他们不敢违抗他的命令,一切都按照他说的去做。 并定居在无生命森林 猫白云,每个遇见他的人都在听完他的故事后睡着了,或者死于他的铁爪之下。

“新史诗”。 适合开发人员、运维人员和好奇的人
遥远的王国

正如您已经看到的,玩家被分为几组:

  • 平民(好伙伴、红少女、伊凡·沙列维奇、灰太狼和智者瓦西丽莎)
  • 强盗(强盗本身,以及 Baba Yaga 和 Leshy)
  • 独立(蛇-戈里尼奇、潇洒独眼、青蛙公主、不朽的科斯奇、猫-巴云)

如上所述,游戏的目标是生存并获胜。 对手必须以某种方式离开游戏,独立者也必须保持活着直到游戏结束。 游戏中有金币,一种玩家只能在游戏中赚取的游戏货币。 获胜者将获得金牌。 金币越多,玩家的等级就越高。

我将详细介绍人物的描述。

“新史诗”。 适合开发人员、运维人员和好奇的人
好人

“新史诗”。 适合开发人员、运维人员和好奇的人
红少女

好人 и 红少女 - 游戏中最广泛和主要的角色。 这些是晚上睡觉、白天工作的平民。 晚上,他们遭到强盗之一蛇戈里尼奇和其他角色的攻击,智者瓦西里萨治愈了他们。 好伙伴或红少女在攻击中毫发无伤地幸存下来(可能会在此过程中失去金币)的可能性很小,但是,每个人都会在攻击后的第二天认出玩家的昵称。 到了晚上,这些玩家不会做出任何动作,而是根据游戏聊天中的消息分析游戏局势。 白天,这些玩家通过投票来决定谁不是好伙伴或红少女。 被大多数其他玩家投票选出的玩家离开游戏,其余玩家获得或失去金币。 如果玩家没有以多数票选择任何人,则不会有玩家被处决。

“新史诗”。 适合开发人员、运维人员和好奇的人
伊万沙皇

伊万沙皇 - 最初是一位匿名的平民捍卫者。 晚上他会检查其他玩家的角色,因为他只认识他的一位盟友——灰狼。 在灰狼的直接参与下(他也可以检查其他玩家的角色),伊凡沙列维奇可以在晚上杀死另一个角色,而不是检查。 如果检查的结果是,伊凡·沙列维奇(Ivan Tsarevich)在玩家身上看到了好伙伴或红少女的角色,那么他可以邀请他们到他的位置,并将他们介绍给灰狼和其他好伙伴和红少女。 伊万可能会受到青蛙公主的干扰,青蛙公主可以在晚上引诱他,而白天不会向其他玩家透露他的角色。 如果伊万本人发现了青蛙公主,他可以邀请她加入平民,但如果公主拒绝,她就会死在伊万手中。 蛇戈里尼奇也可以干扰伊凡沙皇的检查,但与青蛙公主不同的是,白天他会告诉其他玩家哪一个是伊凡沙皇。 白天,伊凡·沙列维奇与其他好伙伴没有什么不同。

“新史诗”。 适合开发人员、运维人员和好奇的人
灰太狼

灰太狼 - 伊凡·沙列维奇的助手,他敏锐的嗅觉帮助伊凡找到了其他好伙伴和红少女。 灰狼告诉这些玩家谁是沙皇伊凡,并告知其他扮演好伙伴和红少女角色的玩家。 如果狼发现强盗或其他敌人,他会立即通知伊凡·沙列维奇,以便他在第二天晚上采取行动。 如果狼受到青蛙公主的袭击,他就会变成一个普通的好伙伴,无法检查任何人,而公主也不会知道这实际上是灰太狼,因为狼晚上不睡觉。 然而,狼本人会在白天找出哪位玩家是青蛙公主,并可以尝试说服他带到伊凡沙皇身边的其他好伙伴和红少女投票支持处决青蛙公主。 同样在第二天晚上,他可以尝试匿名说服青蛙公主站在平民一边,让她不要碰任何人。 狼可以在夜间牺牲自己来拯救伊凡·沙列维奇或智者瓦西里萨,如果他认为他们会突然受到强盗的攻击,或者被科什切伊僵尸化(狼对科什切伊的魅力有天生的免疫力),但之后狼的自我牺牲退出了游戏。

“新史诗”。 适合开发人员、运维人员和好奇的人
智者瓦西丽莎

智者瓦西丽莎 - 为平民表演,但他们不了解她,因为瓦西里萨非常谦虚。 此外,智者瓦西里萨在治疗时不会提出问题,而是像一位好医生一样治疗每个人。 但如果 Koschey、Likho 或 Leshy 喝了她的药,他们的寿命不会超过一天,因为 Vasilisa 只治疗人。 智者瓦西里萨的药物也无法帮助蛇戈里内奇或猫巴云,但它们也不会带来伤害。 而且,科特-巴云在晚上也不会碰瓦西丽莎,因为瓦西丽莎不会去死亡森林购买药草。 另外,青蛙公主的女性魅力对瓦西丽莎不起作用。 如果他们两次试图杀死她的病人,医学就无能为力了。 瓦西丽莎不会让你免受魔法攻击,例如冲刺诅咒。 白天,瓦西莉莎的举止就像一位红少女,只有一闪而过、略带悲伤的神情才能暗示出她是遥远王国最好的治疗师。

“新史诗”。 适合开发人员、运维人员和好奇的人
流氓

劫匪与之前的所有角色不同,他们互相认识,因为他们住在同一个巢穴,而且也认识 Leshy 和 Baba Yaga,所以他们从一开始就可以配合。 但只有该团伙的头目在晚上行动,白天不投票,而其他强盗则努力假装是好伙伴和红少女。 如果领袖因任何原因离开游戏,剩下的一名盗贼会立即接替他的位置。 首先,强盗们正试图阻止伊凡沙皇,直到他从好伙伴和红少女那里集结了足够的力量,在白天积极对抗强盗们。

“新史诗”。 适合开发人员、运维人员和好奇的人
木妖精

木妖精 晚上,他为强盗们做间谍,告诉他们在他们的巢穴中发现的角色,但白天他不投票,因为他不住在村子里。 然而,其他玩家可以投票给莱希并处决他。 由于莱西来自沼泽,所以他不会被青蛙公主引诱,如果他尝试,莱西会在她的房子上做标记,村民们会发现她的真实身份。 莱谢姆不应该害怕科什切伊的咒语,但瓦西里萨可以把他治愈致死。 如果科特-巴云试图攻击莱希,他就有失去铁爪的风险,然后科特将不得不用他的咕噜声让受害者入睡。

“新史诗”。 适合开发人员、运维人员和好奇的人
巴巴亚嘎

巴巴亚嘎 他还与强盗们一起工作,并在夜间施展法术:他可以给其他玩家带来疾病,也可以保护他的盟友之一免受攻击。 她的巫术甚至比利克的诅咒还要强大。 白天,芭芭雅嘎也很活跃:任何在她保护下的人即使通过多数票也不能被处决。 然而,白天保护的魔根供应有限,所以芭芭雅嘎每场比赛无法保护任何人,包括她自己超过XNUMX次。 白天,芭芭雅嘎假装成一名普通的红少女,和其他人一起投票。

“新史诗”。 适合开发人员、运维人员和好奇的人

夜间,他飞越村庄、森林和沼泽进行抢劫,暴露白天被抢劫者的角色。 白天,蛇在睡觉,所以他不投票,但可以通过多数票处决他。 这条蛇对每个人来说都是非常危险的,尤其是对强盗和伊凡沙皇来说。 蛇不在乎他抢了谁,但如果他被狼或莱西发现,他可以成为一个有价值的盟友。 如果你在晚上杀死蛇,你有一定概率获得非常有价值的物品——蛇皮,它可以保护它的主人免受物理攻击一次。

“新史诗”。 适合开发人员、运维人员和好奇的人
短跑独眼

短跑独眼 晚上,他会杀死所有妨碍他的人,而凡是他杀不了的人(Leshy、Kota-Bayun 或蛇 Gorynych)他都会诅咒,这样任何试图在当晚与该死的人交流的人都会在白天死去。 在这种情况下,该死的人自己也会死,只有科特巴云没有死,他只是上床睡觉以增强体力,第二天晚上就跳过了他的轮次。 只有巴巴雅嘎才能将利克从诅咒中拯救出来。 该诅咒不会影响击败猫巴云的人:他就像猫一样,只是上床睡觉并跳过一回合。

“新史诗”。 适合开发人员、运维人员和好奇的人
青蛙公主

青蛙公主 无法赢得比赛,但他可以通过晚上勾引其他玩家来赚很多钱。 受诱惑的人错过了轮到他的机会。 青蛙无法引诱智者瓦西丽莎,她也应该避开莱希,因为莱希第二天就会向所有人背叛她。 如果沙皇伊凡或强盗首领找到了青蛙,他们可以邀请平民或强盗加入自己的阵营,而伊凡不会接受青蛙的拒绝,但首领却没有那么挑剔。 但公主很狡猾,她可以成为双重间谍,因为尽管她无法独自获胜,但这却是获得金牌的绝佳机会,因为生存到游戏结束的机会大大增加! 白天,青蛙公主假扮红少女,和大家一起投票。

“新史诗”。 适合开发人员、运维人员和好奇的人
不朽的Koschey

不朽的Koschey 住在他的城堡里。 晚上,他穿过周围的村庄,僵尸化好伙伴和红少女,他们为他服务,毫无疑问地执行所有命令。 例如,如果拒绝执行命令,在白天以不同于科什切告诉的方式进行投票,或者如果科什切禁止,则在白天在聊天室中写消息,科什切的仆人就会死亡。 因此,科什奇能够影响白天的投票结果,即使他本人不投票。 如果科什切被杀,他的所有受害者也会死去。 瓦西丽莎可以治愈仆人科什切,然后科什切回到原来的角色。 蛇戈里尼奇和狼对僵尸化具有天生的免疫力,所以科什无论多么想要,都无法将它们变成他的服务。 狼还可以通过牺牲自己来帮助伊万或瓦西丽莎摆脱困境。 被狼救了,狼获得了对僵尸化的免疫力。

“新史诗”。 适合开发人员、运维人员和好奇的人
猫白云

猫白云 生活在森林里,夜间狩猎。 白天他睡在自己的空洞里,所以他不参与投票。 然而,白天他可以通过多数票被处决。 猫可以通过两种方式进行攻击:发出咕噜声——然后受害者睡着了,晚上不能走路,第二天也不能投票——或者用铁爪直接杀死。 用爪子攻击对蛇戈里尼奇不起作用,而在攻击莱希之后,猫可能就根本没有爪子了! 潇洒不能诅咒猫,诅咒后猫只会睡一晚。 如果有人成功击败了Kota-Bayun,他的任何疾病都将被治愈,包括Likh的诅咒。 猫的这种能力会一直保留到玩家身上直到游戏结束。 科什切的仆人白天不能投票给猫,但他们可以在不通知科什切的情况下间接找出猫是谁。 科特-巴云并没有与伊凡或强盗结盟,因此他们是科特的主要目标。

使用的技术

为了编写游戏,我选择了基于 OpenFaaS 的无服务器计算技术,因为它足够简单来组织游戏,同时也足够先进来编写复杂的游戏规则,而不会产生不必要的复杂性。 我还将使用 Kubernetes 集群,因为这种部署应用程序的方法使得获得快速部署和轻松扩展的能力变得非常简单和可靠。 要创建游戏逻辑,只能使用 OpenFaaS,但我也会尝试将 Storyteller 作为一个单独的容器来比较实现的复杂性。 作为微服务和函数的主要编程语言,我选择了 Go,由于我在空闲时间研究了很长一段时间来代替Perl,并且会使用js基于一定的框架来与微服务和功能进行用户交互。 我将在该系列的相应文章中告诉您最终的决定。 为了相互进行功能通信,我选择了 NATS.io,因为我之前已经遇到过它,而且它很容易集成到 Kubernetes 中。

公告

  • 介绍
  • 设置开发环境,将任务分解为功能
  • 后端工作
  • 前端工作
  • 建立CICD,组织测试
  • 开始试玩游戏
  • 结果

来源: habr.com

添加评论