「新史詩」。 適合開發人員、維運人員和好奇的人

「新史詩」。 適合開發人員、維運人員和好奇的人

由於讀者的大量請求,大量關於使用無伺服器運算技術來開發實際應用程式的文章正在開始。 此週期將涵蓋使用現代工具的應用程式開發、測試和交付給最終用戶:微服務應用程式架構(無伺服器版本,基於 開放式FaaS), 簇 Kubernetes 用於應用程式部署、資料庫 MongoDB的,專注於雲端叢集與應用,以及雲端總線 NATS。 該應用程式實現了遊戲“Epics”,這是流行的客廳遊戲“Mafia”的變體之一。

什麼是「拜林」?

這是遊戲「黑手黨」的變種,也稱為「狼人」。 它基於團隊遊戲,參與者必須逐步了解誰是誰並努力獲勝。 不幸的是,在線上玩時,人際互動這樣的遊戲重要組成部分消失了,而經典《黑手黨》的規則又相當簡單,因此,為了更非線性和有趣的遊戲玩法,通常會添加其他角色,但總的來說,原版《黑手黨》的主要特徵都被保留下來,例如白天和黑夜的變化、只在夜間行動、以及參與者之間的聯盟等。 線上遊戲的另一個重要區別是主機(又名遊戲大師、故事講述者)通常是電腦程式。

遊戲說明

我想要實現的遊戲規則取自大約 10 年前我保存在個人檔案中的舊 irc 機器人。 「史詩」每場遊戲都有一個背景故事:

在遙遠的王國,在七大洋彼岸的第三十國,有幾個村莊生息繁衍,在它們之中 好夥伴 и 美麗的女孩。 他們播種麵包,去周圍的森林採摘蘑菇和漿果……這樣的情況持續了一個又一個世紀,直到一場可怕的災難震撼了地球,邪惡開始在全世界蔓延! 夜晚變得漫長而寒冷,在黑暗中,不友善而可怕的生物在森林裡徘徊,走進村莊。 從某處到達 並養成了偷走紅少女並搶走村民一切值錢東西的習慣。 有害且貪婪 巴巴亞嘎從遙遠的森林乘迫擊砲飛來,迷惑了居民的心智,甚至有人放棄手藝,進入森林搶劫,在那裡結成幫派。 惡人相遇了 哥布林知道如何變成樹木和灌木叢的他開始監視和平的村民並為強盜服務,嗅探好夥伴們是否在圖謀清除他們的定居點的邪靈。 好夥伴和美麗的少女,厭倦了強盜的攻擊,厭倦了可怕的死亡 瀟灑的獨眼,收集黃金並邀請了鄰近城市的著名摔角手—— 伊凡·沙列維奇,他承諾要消滅村裡的強盜。 在森林裡的一塊空地上,伊凡免於死亡 灰狼,落入了強盜的陷阱。 作為回報,狼答應向沙皇通報各種森林惡靈的情況。 一位著名的治療師經過 智者瓦西麗莎當她看到麻煩時,她留下來照顧那些遭受猛男攻擊的居民。 森林後面出現了一座黑色宮殿,據傳聞,他就定居在其中。 不死者科謝每天晚上,他都會到各個村莊去迷惑好夥伴和紅姑娘,讓他們不敢違抗他的命令,一切都照他說的去做。 並定居在無生命森林 貓白雲,每個遇見他的人都在聽完他的故事後睡著了,或者死於他的鐵爪之下。

「新史詩」。 適合開發人員、維運人員和好奇的人
遙遠的王國

正如您已經看到的,玩家被分成幾組:

  • 平民(好夥伴、紅少女、伊凡·沙列維奇、灰太狼和智者瓦西麗莎)
  • 強盜(強盜本身,以及 Baba Yaga 和 Leshy)
  • 獨立(蛇-戈里尼奇、瀟灑獨眼、青蛙公主、不朽的科斯奇、貓-巴雲)

如上所述,遊戲的目標是生存並獲勝。 對手必須以某種方式離開遊戲,獨立者也必須保持活著直到遊戲結束。 遊戲中有金幣,一種玩家只能在遊戲中賺取的遊戲貨幣。 獲勝者將獲得金牌。 金幣越多,玩家的等級就越高。

我將詳細介紹人物的描述。

「新史詩」。 適合開發人員、維運人員和好奇的人
好人

「新史詩」。 適合開發人員、維運人員和好奇的人
紅少女

好人 и 紅少女 - 遊戲中最廣泛、最主要的角色。 這些是晚上睡覺、白天工作的平民。 晚上,他們遭到強盜之一蛇戈里尼奇和其他角色的攻擊,智者瓦西里薩治癒了他們。 好夥伴或紅少女在攻擊中毫髮無傷地倖存下來(可能會在此過程中失去金幣)的可能性很小,但是,每個人都會在攻擊後的第二天認出玩家的暱稱。 到了晚上,這些玩家不會做出任何動作,而是根據遊戲聊天中的消息來分析遊戲局勢。 白天,這些玩家透過投票來決定誰不是好夥伴或紅少女。 被大多數其他玩家投票選出的玩家離開遊戲,其餘玩家獲得或失去金幣。 如果玩家沒有以多數票選擇任何人,則不會有玩家被處決。

「新史詩」。 適合開發人員、維運人員和好奇的人
伊凡·沙列維奇

伊凡·沙列維奇 - 最初是一位匿名的平民捍衛者。 晚上他會檢查其他玩家的角色,因為他只認識他的一位盟友——灰狼。 在灰狼的直接參與下(他也可以檢查其他玩家的角色),伊凡沙列維奇可以在晚上殺死另一個角色,而不是檢查。 如果檢查的結果是,伊凡·沙列維奇(Ivan Tsarevich)在玩家身上看到了好夥伴或紅少女的角色,那麼他可以邀請他們到他的位置,並將他們介紹給灰狼和其他好夥伴和紅少女。 伊凡可能會受到青蛙公主的干擾,青蛙公主可以在晚上引誘他,而白天不會向其他玩家透露他的角色。 如果伊凡本人發現了青蛙公主,他可以邀請她加入平民,但如果公主拒絕,她就會死在伊凡手中。 蛇戈里尼奇也可以乾擾伊凡沙皇的檢查,但與青蛙公主不同的是,白天他會告訴其他玩家哪一個是伊凡沙皇。 白天,伊凡·沙列維奇與其他好夥伴沒有什麼不同。

「新史詩」。 適合開發人員、維運人員和好奇的人
灰狼

灰狼 - 伊凡沙列維奇的助手,他敏銳的嗅覺幫助伊凡找到了其他好夥伴和紅少女。 灰狼告訴這些玩家誰是沙皇伊凡,並告知其他扮演好夥伴和紅少女角色的玩家。 如果狼發現強盜或其他敵人,他會立即通知伊凡·沙列維奇,以便他在第二天晚上採取行動。 如果狼受到青蛙公主的攻擊,他就會變成一個普通的好夥伴,無法檢查任何人,而公主也不會知道這實際上是灰太狼,因為狼晚上不睡覺。 然而,狼本人會在白天找出哪位玩家是青蛙公主,並可以嘗試說服他帶到伊凡沙皇身邊的其他好夥伴和紅少女投票支持處決青蛙。公主。 同樣在第二天晚上,他可以試著匿名說服青蛙公主站在平民這邊,要她不要碰任何人。 如果狼認為沙皇伊凡或智者瓦西里莎會突然遭到強盜的攻擊,或者被科甚切殭屍化(狼對科甚切的魅力具有天生的免疫力),那麼狼可以在夜間犧牲自己來拯救他們。沃爾夫在自我犧牲後退出了遊戲。

「新史詩」。 適合開發人員、維運人員和好奇的人
智者瓦西麗莎

智者瓦西麗莎 - 為平民表演,但他們不了解她,因為瓦西里薩非常謙虛。 此外,智者瓦西里薩在治療時不會提出問題,而是像一位好醫生一樣治療每個人。 但如果 Koschey、Likho 或 Leshy 喝了她的藥,他們的壽命不會超過一天,因為 Vasilisa 只治療人。 智者瓦西里薩的藥物也無法幫助蛇戈里內奇或貓巴雲,但它們也不會帶來傷害。 而且,科特-巴雲在晚上也不會碰瓦西麗莎,因為瓦西麗莎不會去死亡森林買藥材。 另外,青蛙公主的女性魅力對瓦西麗莎不起作用。 如果他們兩次試圖殺死她的病人,醫學就無能為力了。 瓦西麗莎不會讓你免受魔法攻擊,例如衝刺詛咒。 白天,瓦西莉莎的舉止就像一位紅少女,只有一閃即逝、略帶悲傷的神情才能暗示她是遙遠王國最好的治療師。

「新史詩」。 適合開發人員、維運人員和好奇的人
流氓

劫匪與之前的所有角色不同,他們互相認識,因為他們住在同一個巢穴,而且也認識 Leshy 和 Baba Yaga,所以他們從一開始就可以合作。 但只有該團伙的頭目在晚上行動,白天不投票,而其他強盜則努力假裝是好夥伴和紅少女。 如果領袖因任何原因離開遊戲,剩下的一名盜賊會立即接替他的位置。 首先,強盜們正試圖阻止伊凡沙皇,直到他從好夥伴和紅少女那裡集結了足夠的力量,在白天積極對抗強盜們。

「新史詩」。 適合開發人員、維運人員和好奇的人
哥布林

哥布林 晚上,他為強盜們做間諜,告訴他們在他們的巢穴中發現的角色,但白天他不投票,因為他不住在村子裡。 然而,其他玩家可以投票給萊希並處決他。 由於萊西來自沼澤,他不會被青蛙公主引誘,如果他嘗試,萊西會在她的房子上做標記,村民會發現她的真實身份。 萊謝姆不應該害怕科甚切伊的咒語,但瓦西里薩可以把他治癒致死。 如果科特-巴雲試圖攻擊萊希,他就有失去鐵爪的風險,然後科特將不得不用他的咕嚕聲讓受害者入睡。

「新史詩」。 適合開發人員、維運人員和好奇的人
巴巴亞嘎

巴巴亞嘎 他也與強盜們一起工作,並在夜間施展法術:他可以給其他玩家帶來疾病,也可以保護他的盟友之一免受攻擊。 她的巫術甚至比利克的詛咒還要強大。 白天,芭芭雅嘎也很活躍:任何在她保護下的人即使通過多數票也不能被處決。 然而,白天保護的魔根供應有限,所以芭芭雅嘎每場比賽無法保護任何人,包括她自己超過XNUMX次。 白天,芭芭雅嘎假裝成一個普通的紅少女,和其他人一起投票。

「新史詩」。 適合開發人員、維運人員和好奇的人

夜間,他飛越村莊、森林和沼澤進行搶劫,暴露白天被搶劫者的角色。 白天,蛇在睡覺,所以他不投票,但可以通過多數票處決他。 這條蛇對每個人來說都是非常危險的,尤其是對強盜和伊凡沙皇來說。 蛇不在乎他搶了誰,但如果他被狼或萊西發現,他可以成為一個有價值的盟友。 如果你在晚上殺死蛇,你有一定機率獲得非常有價值的物品——蛇皮,它可以保護它的主人免受物理攻擊一次。

「新史詩」。 適合開發人員、維運人員和好奇的人
瀟灑的獨眼

瀟灑的獨眼 晚上,他會殺死所有妨礙他的人和他無法殺死的人(Leshy、Kota-Bayun 或蛇 Gorynych),他會詛咒他,這樣任何試圖在當晚與該死的人交流的人都會在白天死去。 在這種情況下,該死的人自己也會死,只有科特巴雲沒有死,他只是上床睡覺以增強體力,第二天晚上就跳過了他的輪次。 只有巴巴雅嘎才能將利克從詛咒中拯救出來。 該詛咒不會影響擊敗貓巴雲的人:他就像貓一樣,只是上床睡覺並跳過一回合。

「新史詩」。 適合開發人員、維運人員和好奇的人
青蛙公主

青蛙公主 無法贏得比賽,但他可以透過晚上勾引其他玩家來賺很多錢。 受誘惑的人錯過了輪到他的機會。 青蛙無法引誘智者瓦西麗莎,她也應該避開萊希,因為萊希第二天就會向所有人背叛她。 如果沙皇伊凡或強盜首領找到了青蛙,他們可以邀請平民或強盜加入自己的陣營,而伊凡不會接受青蛙的拒絕,但首領卻沒有那麼挑剔。 但公主很狡猾,她可以成為雙重間諜,因為儘管她無法獨自獲勝,但這卻是獲得金牌的絕佳機會,因為生存到遊戲結束的機會大大增加! 白天,青蛙公主假扮紅少女,和大家一起投票。

「新史詩」。 適合開發人員、維運人員和好奇的人
不死者科謝

不死者科謝 住在他的城堡裡。 晚上,他穿過周圍的村莊,殭屍化好夥伴和紅少女,他們為他服務,毫無疑問地執行所有命令。 例如,如果拒絕執行命令,在白天以不同於科甚切告訴的方式進行投票,或者如果科甚切禁止,則在白天在聊天室中寫訊息,科甚切的僕人就會死亡。 因此,科甚奇能夠影響白天的投票結果,儘管他本人並不親自投票。 如果科甚切被殺,他的所有受害者也會死去。 瓦西麗莎可以治癒僕人科甚切,然後科甚切回到原來的角色。 蛇戈里尼奇和狼對殭屍化有著天生的免疫力,所以科許無論多麼想要,都無法將它們變成他的服務。 狼也可以透過犧牲自己來幫助伊凡或瓦西麗莎擺脫困境。 被狼救了,狼獲得了對殭屍化的免疫力。

「新史詩」。 適合開發人員、維運人員和好奇的人
貓白雲

貓白雲 生活在森林裡,夜間狩獵。 白天他睡在自己的空洞裡,所以他不參與投票。 然而,白天他可以透過多數票被處決。 貓可以透過兩種方式進行攻擊:咕嚕聲——然後受害者睡著了,晚上不能走路,第二天也不能投票——或者用鐵爪直接殺死。 用爪子攻擊對蛇戈里尼奇不起作用,而攻擊萊希之後,貓可能根本沒有爪子了! 瀟灑不能詛咒貓,詛咒後貓只會睡一晚。 如果有人成功擊敗了Kota-Bayun,他的任何疾病都將被治愈,包括Likh的詛咒。 貓的這種能力會一直保留到玩家身上直到遊戲結束。 科甚切的僕人白天不能投票給貓,但他們可以在不通知科甚切的情況下間接找出貓是誰。 科特-巴雲並沒有與伊凡或強盜結盟,因此他們是科特的主要目標。

使用的技術

為了編寫遊戲,我選擇了基於 OpenFaaS 的無伺服器運算技術,因為它足夠簡單來組織遊戲,同時也足夠先進來編寫複雜的遊戲規則,而不會產生不必要的複雜性。 我還將使用 Kubernetes 集群,因為這種部署應用程式的方法使得獲得快速部署和輕鬆擴展的能力變得非常簡單和可靠。 要創建遊戲邏輯,只能使用 OpenFaaS,但我也會嘗試將 Storyteller 作為一個單獨的容器來比較實現的複雜性。 作為微服務和函數的主要程式語言,我選擇了 Go,由於我在空閒時間研究了很長一段時間來代替Perl,並且會使用js基於一定的框架來與微服務和功能進行用戶交互。 我將在該系列的相應文章中告訴您最終的決定。 為了相互進行功能通信,我選擇了 NATS.io,因為我之前已經遇到過它,而且它很容易整合到 Kubernetes 中。

公告

  • 介紹
  • 設定開發環境,將任務分解為功能
  • 後端工作
  • 前端工作
  • 建立CICD,組織測試
  • 開始試玩遊戲
  • 結果

來源: www.habr.com

添加評論