"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu

Disebabkan oleh banyak permintaan daripada pembaca, satu siri artikel yang besar bermula pada penggunaan teknologi pengkomputeran tanpa pelayan untuk membangunkan aplikasi sebenar. Kitaran ini akan meliputi pembangunan aplikasi, ujian dan penghantaran kepada pengguna akhir menggunakan alatan moden: seni bina aplikasi perkhidmatan mikro (dalam versi tanpa pelayan, berdasarkan OpenFaaS), kelompok Kubernetes untuk penggunaan aplikasi, pangkalan data MongoDB, memfokuskan pada pengelompokan dan aplikasi awan, serta bas awan SIFAT. Aplikasi ini melaksanakan permainan "Epics", salah satu varian permainan ruang tamu yang popular "Mafia".

Apakah "Epik"?

Ini adalah varian permainan "Mafia", juga dikenali sebagai "Werewolf". Ia berdasarkan permainan berpasukan di mana peserta mesti belajar langkah demi langkah siapa siapa dan cuba untuk menang. Malangnya, apabila bermain dalam talian, komponen penting dalam permainan seperti interaksi peribadi hilang, dan peraturan "Mafia" klasik agak mudah, oleh itu, untuk permainan yang lebih tidak linear dan menarik, watak lain biasanya ditambah, tetapi secara umum ciri-ciri utama "Mafia" asal dipelihara, sebagai contoh, perubahan siang dan malam, bergerak hanya pada waktu malam, serta pakatan antara peserta. Satu lagi perbezaan penting antara bermain dalam talian ialah hos (aka Game Master, Pencerita) biasanya merupakan program komputer.

Penerangan permainan

Peraturan permainan yang ingin saya laksanakan diambil daripada bot irc lama yang saya simpan dalam arkib peribadi saya kira-kira 10 tahun yang lalu. "Epik" mempunyai latar belakang yang dengannya setiap permainan bermula:

Di kerajaan yang jauh, di negeri ketiga puluh, di seberang tujuh lautan, beberapa kampung tinggal dan tinggal, dan di dalamnya Rakan-rakan yang baik ΠΈ Gadis cantik. Mereka menabur roti dan pergi ke hutan sekitar untuk memetik cendawan dan buah beri... Dan ini berterusan dari abad ke abad, sehingga malapetaka yang dahsyat menggegarkan Bumi dan kejahatan mula merebak ke seluruh dunia! Malam menjadi panjang dan sejuk, dan dalam kegelapan, makhluk yang tidak baik dan mengerikan berkeliaran di hutan dan mengembara ke kampung. Tiba dari suatu tempat Naga dan membiasakan diri mencuri gadis Merah dan mengambil segala yang berharga daripada orang kampung. Memudaratkan dan tamak Baba Yaga, yang terbang di atas mortar dari hutan yang jauh, mengelirukan fikiran penduduk, malah ada yang melepaskan kerajinan mereka dan pergi ke hutan untuk merompak, membentuk kumpulan di sana. Penjahat bertemu Goblin, yang tahu bagaimana untuk berubah menjadi pokok dan semak, dia mula memantau penduduk kampung yang aman dan melayani perompak, menghidu sama ada Rakan-rakan Baik itu melakukan sesuatu untuk menghapuskan penempatan mereka daripada roh jahat. Rakan-rakan yang baik dan gadis-gadis cantik, bosan dengan serbuan Perompak, dan kematian yang mengerikan di tangan orang-orang yang dahsyat Bermata Satu, mengumpul emas dan menjemput ahli gusti terkenal dari bandar jiran - Ivan Tsarevich, yang berjanji untuk membersihkan kampung itu daripada perompak. Dalam kawasan terbuka di hutan, Ivan menyelamatkan dari kematian tertentu Serigala kelabu, yang jatuh ke dalam perangkap lubang Perompak. Sebagai balasan, Serigala berjanji untuk memberitahu Tsarevich tentang pelbagai roh jahat hutan. Seorang penyembuh terkenal lewat Vasilisa yang Bijaksana, dan apabila dia melihat masalah, dia tinggal untuk merawat penduduk yang telah menderita akibat serangan orang-orang gagah itu. Di sebalik hutan sebuah istana hitam muncul, di mana, menurut khabar angin, dia menetap Koschei yang Tanpa Kematian, setiap malam dia melawat kampung-kampung dan menyihir Orang Baik dan Gadis Merah supaya mereka tidak berani mengingkari perintahnya, mereka akan melakukan segala-galanya seperti yang dia katakan. Dan menetap di Hutan Tak Bermaya Kucing Baiyun, dan setiap orang yang bertemu dengannya tertidur selepas dongengnya atau mati akibat kuku besinya.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
kerajaan Far Far Away

Seperti yang telah anda lihat, pemain dibahagikan kepada beberapa kumpulan:

  • orang awam (Rakan Baik, Gadis Merah, Ivan Tsarevich, Serigala Kelabu dan Vasilisa yang Bijaksana)
  • perompak (perompak itu sendiri, serta Baba Yaga dan Leshy)
  • bebas (Snake-Gorynych, Dashing One-Eyed, Frog Princess, Koschey the Immortal, Cat-Bayun)

Matlamat permainan, seperti yang dinyatakan di atas, adalah untuk terus hidup dan menang. Lawan mesti meninggalkan permainan dengan satu cara atau yang lain, dan pemain bebas juga mesti kekal hidup sehingga tamat permainan. Permainan ini mempunyai emas, sejenis mata wang permainan yang pemain peroleh hanya dalam permainan. Pemenang menerima emas. Lebih banyak emas, lebih tinggi rating pemain.

Saya akan membincangkan sedikit lebih terperinci mengenai penerangan watak-watak.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
kawan baik

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Gadis Merah

kawan baik ΠΈ Gadis Merah - peranan yang paling meluas dan utama dalam permainan. Ini adalah orang awam yang tidur pada waktu malam dan bekerja pada siang hari. Pada waktu malam mereka diserang oleh salah seorang perompak, Ular Gorynych dan peranan lain, dan Vasilisa the Wise menyembuhkan mereka. Dengan sedikit kebarangkalian, Rakan Baik atau Red Maiden boleh bertahan dalam serangan tanpa kerosakan (mungkin kehilangan emas dalam proses), bagaimanapun, semua orang akan mengenali nama panggilan pemain pada hari berikutnya selepas serangan. Pada waktu malam, pemain ini tidak membuat sebarang pergerakan, tetapi menganalisis situasi permainan berdasarkan mesej dalam sembang permainan. Pada siang hari, pemain-pemain ini membuat keputusan dengan mengundi yang mana antara mereka bukan Rakan Baik atau Gadis Merah. Pemain yang diundi oleh majoriti pemain lain meninggalkan permainan, pemain yang tinggal menerima atau kehilangan emas. Jika pemain tidak memilih sesiapa dengan undi majoriti, tiada pemain akan dihukum bunuh.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Ivan Tsarevich

Ivan Tsarevich - pada mulanya pembela orang awam tanpa nama. Pada waktu malam dia memeriksa peranan pemain lain, kerana dia hanya mengenali seorang sekutunya - Serigala Kelabu. Dengan penyertaan langsung Serigala Kelabu (yang juga boleh menyemak peranan pemain lain), Ivan Tsarevich, bukannya memeriksa, boleh membunuh watak lain pada waktu malam. Jika, sebagai hasil pemeriksaan, Ivan Tsarevich melihat peranan Fellow Baik atau Gadis Merah dalam pemain, maka dia boleh menjemput mereka ke tempatnya dan memperkenalkan mereka kepada Serigala Kelabu dan Fellow Baik dan Gadis Merah yang lain. Ivan boleh diganggu oleh Puteri Katak, yang boleh menggodanya pada waktu malam, tanpa mendedahkan peranannya kepada pemain lain pada siang hari. Jika Ivan sendiri menemui Puteri Katak, dia boleh menjemputnya untuk menyertai orang awam, tetapi jika Puteri enggan, dia mati di tangan Ivan. Ular-Gorynych juga boleh mengganggu pemeriksaan Ivan-Tsarevich, tetapi, tidak seperti Puteri Katak, pada siang hari dia akan memberitahu pemain lain yang mana antara mereka adalah Ivan-Tsarevich. Pada siang hari, Ivan Tsarevich tidak berbeza dengan Fellow Baik yang lain.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Serigala kelabu

Serigala kelabu - pembantu kepada Ivan Tsarevich, yang deria baunya yang tajam membantu Ivan mencari Fellow Baik dan Gadis Merah yang lain. Grey Wolf memberitahu pemain ini siapa Ivan the Tsarevich, dan juga memaklumkan tentang pemain lain dengan peranan Good Fellows dan Red Maidens. Jika Serigala menemui perompak atau musuh lain, dia segera memberitahu Ivan Tsarevich supaya dia boleh mengambil tindakan pada malam berikutnya. Jika Serigala diserang oleh Puteri Katak, dia bertukar menjadi Rakan Baik biasa dan tidak boleh memeriksa sesiapa, dan Puteri tidak akan tahu bahawa ia sebenarnya Serigala Kelabu, kerana Serigala tidak tidur pada waktu malam. Walau bagaimanapun, Serigala itu sendiri akan mengetahui pada hari itu yang mana antara pemain adalah Puteri Katak, dan boleh cuba memujuk rakan-rakan Baik dan Gadis Merah yang lain, yang dibawanya kepada Ivan Tsarevich, untuk mengundi bagi pelaksanaan Katak. Puteri. Juga pada malam berikutnya, dia boleh cuba memujuk Puteri Katak secara tanpa nama di sisi orang awam supaya dia tidak menyentuh mana-mana daripada mereka. Serigala boleh mengorbankan dirinya pada waktu malam untuk menyelamatkan Ivan Tsarevich atau Vasilisa yang Bijaksana, jika dia menganggap bahawa mereka tiba-tiba akan diserang perompak, atau telah dizom oleh Koshchei (Serigala mempunyai kekebalan semula jadi terhadap pesona Koshchei), tetapi selepas pengorbanan diri yang digugurkan oleh Serigala daripada permainan.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Vasilisa yang Bijaksana

Vasilisa yang Bijaksana - bermain untuk orang awam, tetapi mereka tidak tahu tentang dia, kerana Vasilisa sangat sederhana. Juga, Vasilisa yang Bijaksana, apabila dia merawat, tidak bertanya dan, seperti doktor yang baik, merawat semua orang. Tetapi jika Koschey, Likho atau Leshy meminum ubatnya, mereka tidak akan hidup lebih lama daripada satu hari, kerana Vasilisa hanya merawat orang. Ubat Vasilisa the Wise juga tidak akan membantu ular Gorynych atau Cat-Bayun, tetapi mereka juga tidak akan membawa bahaya. Juga, Kot-Bayun tidak menyentuh Vasilisa pada waktu malam, kerana Vasilisa tidak pergi ke Hutan Tak Bermaya untuk membeli herba ubat. Di samping itu, pesona wanita Puteri Katak tidak berfungsi pada Vasilisa. Jika mereka cuba membunuh pesakitnya dua kali, ubat tidak akan berdaya. Vasilisa tidak akan menyelamatkan anda daripada serangan ajaib, contohnya dari kutukan Dashing. Pada siang hari, Vasilisa berkelakuan seperti Gadis Merah, dan hanya pandangan yang singkat dan sedikit sedih dapat membayangkan sedikit bahawa dia adalah penyembuh terbaik di Kerajaan Jauh.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Perompak

perompak, tidak seperti semua peranan sebelum ini, mereka mengenali satu sama lain, kerana mereka tinggal di Lair yang sama, dan juga mengenali Leshy dan Baba Yaga, jadi mereka boleh berlakon secara konsert sejak langkah pertama. Tetapi hanya Ketua geng yang melakukan aksi pada waktu malam dan tidak mengundi pada siang hari, manakala Perompak yang lain rajin berpura-pura menjadi Rakan Baik dan Gadis Merah. Jika Ketua meninggalkan permainan atas apa-apa sebab, salah seorang Penyangak yang tinggal segera mengambil tempatnya. Pertama sekali, Perompak cuba untuk melumpuhkan Ivan the Tsarevich sehingga dia telah mengumpulkan tenaga yang mencukupi daripada Good Fellows dan Red Maidens untuk secara aktif berhadapan dengan Perompak pada siang hari.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Goblin

Goblin pada waktu malam dia mengintip untuk Perompak, memberitahu mereka tentang peranan yang terdapat di Sarang mereka, tetapi pada siang hari dia tidak mengundi, kerana dia tidak tinggal di kampung. Walau bagaimanapun, pemain lain boleh mengundi Leshy dan dengan itu menghukumnya. Memandangkan Leshy berasal dari paya, dia tidak boleh digoda oleh Puteri Katak, dan jika dia mencuba, Leshy akan menandakan rumahnya, dan penduduk kampung akan mengetahui siapa dia sebenarnya. Leshem tidak sepatutnya takut dengan mantra Koshchei, tetapi Vasilisa boleh menyembuhkannya hingga mati. Jika Kot-Bayun cuba menyerang Leshy, dia berisiko kehilangan kuku besinya, dan kemudian Kot perlu menidurkan mangsa tidur dengan hanya mendengkur.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Baba Yaga

Baba Yaga Dia juga bekerja bersama-sama dengan Perompak dan melemparkan mantra pada waktu malam: dia sama ada boleh menghantar penyakit kepada pemain lain atau melindungi salah seorang sekutunya daripada serangan. Sihirnya lagi kuat dari sumpahan Likh. Pada siang hari, Baba Yaga juga aktif: sesiapa di bawah perlindungannya tidak boleh dihukum bunuh walaupun dengan undi majoriti. Walau bagaimanapun, bekalan akar ajaib untuk perlindungan siang hari adalah terhad, jadi Baba Yaga tidak boleh melindungi sesiapa, termasuk dirinya sendiri, lebih daripada tiga kali setiap permainan. Pada siang hari, Baba Yaga berpura-pura menjadi Gadis Merah biasa dan mengundi dengan orang lain.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Naga

Naga pada waktu malam dia terbang ke atas kampung, hutan dan paya dan melakukan rompakan, mendedahkan peranan orang yang dirompak pada siang hari. Pada siang hari, Ular tidur, jadi dia tidak mengundi, tetapi dia boleh dihukum bunuh dengan undi majoriti. Ular itu sangat berbahaya untuk semua orang, terutamanya untuk Perompak dan Ivan Tsarevich. Ular itu tidak peduli siapa yang dia rompak, tetapi jika dia ditemui oleh Serigala atau Leshy, dia boleh menjadi sekutu yang berharga. Jika anda membunuh Ular pada waktu malam, anda boleh, dengan kebarangkalian tertentu, menerima barang yang sangat berharga - Kulit Ular, yang akan melindungi pemiliknya sekali daripada serangan fizikal.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Bermata Satu

Bermata Satu pada waktu malam dia membunuh semua orang yang menghalangi jalannya, dan sesiapa yang tidak dapat dibunuhnya (Leshy, Kota-Bayun, atau Serpent Gorynych) dia mengutuk, supaya sesiapa yang cuba berkomunikasi dengan si terkutuk pada malam yang sama akan mati pada siang hari . Orang yang terkutuk itu sendiri juga mati dalam kes ini, hanya Kot-Bayun yang tidak mati, yang hanya pergi tidur untuk mendapatkan kekuatan, melangkau gilirannya pada malam berikutnya. Hanya Baba Yaga yang boleh menyelamatkan Likh daripada kutukan itu. Kutukan itu tidak menjejaskan orang yang mengalahkan Kucing-Bayun: dia, seperti Kucing, hanya pergi ke katil dan melangkau giliran.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Puteri Katak

Puteri Katak tidak boleh memenangi permainan, tetapi dia boleh memperoleh banyak wang dengan menggoda pemain lain pada waktu malam. Yang tergoda terlepas giliran. Katak tidak boleh menggoda Vasilisa yang Bijaksana, dan dia juga harus mengelakkan Leshy, yang akan mengkhianatinya kepada semua orang pada hari berikutnya. Jika Ivan the Tsarevich atau Ketua Perompak menjumpai Katak, mereka boleh menjemput orang awam atau Perompak ke sisi mereka, manakala Ivan tidak akan menerima penolakan Katak, tetapi Ketua tidak begitu cerewet. Tetapi Puteri agak licik, dia boleh menjadi ejen berganda, kerana walaupun pada hakikatnya dia tidak boleh menang bersendirian, ini adalah peluang yang sangat baik untuk mendapatkan emas, kerana peluang untuk bertahan hingga akhir permainan sangat meningkat! Pada siang hari, Puteri Katak berpura-pura menjadi Gadis Merah dan mengundi dengan semua orang bersama-sama.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Koschei yang Tanpa Kematian

Koschei yang Tanpa Kematian tinggal di istananya. Pada waktu malam, dia berjalan melalui kampung-kampung di sekelilingnya dan menzombifies Good Fellows dan Red Maidens, yang datang dalam perkhidmatannya dan tanpa ragu-ragu melaksanakan semua perintah. Dengan enggan melaksanakan perintah, contohnya, mengundi pada siang hari secara berbeza daripada apa yang diberitahu oleh Koshchei, atau menulis mesej dalam sembang pada siang hari jika Koshchei melarangnya, Hamba Koshchei mati. Justeru, Koschey mampu mempengaruhi keputusan pengundian tempoh hari, walaupun dia sendiri tidak mengundi. Jika Koshchei dibunuh, semua mangsanya juga akan mati. Vasilisa boleh menyembuhkan Hamba Koshchei, yang kemudiannya kembali kepada peranan asalnya. Ular-Gorynych dan Serigala mempunyai kekebalan semula jadi terhadap zombifikasi, jadi Koschey, tidak kira berapa banyak yang dia mahu, tidak boleh mengubahnya menjadi perkhidmatannya. Serigala juga boleh membantu Ivan atau Vasilisa daripada masalah dengan mengorbankan dirinya. Disimpan oleh Serigala memperoleh kekebalan Serigala terhadap zombifikasi.

"Epik Baharu". Untuk pembangun, ops dan orang yang ingin tahu
Kucing Baiyun

Kucing Baiyun tinggal di hutan, memburu pada waktu malam. Pada siang hari dia tidur dalam rongganya, jadi dia tidak mengambil bahagian dalam mengundi. Bagaimanapun, pada siang hari dia boleh dihukum bunuh dengan undi majoriti. Kucing boleh menyerang dalam dua cara: purr - dan kemudian mangsanya tertidur dan tidak boleh berjalan pada waktu malam, dan tidak boleh mengundi keesokan harinya - atau membunuh secara langsung dengan kuku besi. Menyerang dengan cakar tidak berfungsi pada Snake-Gorynych, dan selepas menyerang Leshy, Kucing boleh dibiarkan tanpa cakar sama sekali! Dashing tidak boleh mengutuk Kucing, yang selepas kutukan itu hanya akan tidur untuk satu malam. Jika sesiapa berjaya mengalahkan Kota-Bayun, dia akan sembuh dari sebarang penyakit atau penyakit termasuk kutukan Likh. Keupayaan Kucing ini kekal dengan pemain sehingga tamat permainan. Orang suruhan Koshchei tidak boleh mengundi Kucing itu pada siang hari, tetapi mereka secara tidak langsung boleh mengetahui siapa Kucing itu tanpa memaklumkannya kepada Koshchei. Kot-Bayun tidak mengadakan pakatan dengan Ivan atau Perompak, jadi mereka adalah sasaran utama Kot.

Teknologi yang digunakan

Untuk menulis permainan, saya memilih teknologi pengkomputeran tanpa pelayan berdasarkan OpenFaaS, kerana ia cukup mudah untuk mengatur permainan, dan pada masa yang sama cukup maju untuk menulis peraturan permainan yang rumit tanpa komplikasi yang tidak perlu. Saya juga akan menggunakan kluster Kubernetes, kerana kaedah menggunakan aplikasi ini menjadikannya agak mudah dan boleh dipercayai untuk mendapatkan penggunaan pantas dan keupayaan untuk membuat skala dengan mudah. Untuk mencipta logik permainan, anda hanya boleh bertahan dengan OpenFaaS, tetapi saya juga akan cuba menjadikan Pencerita sebagai bekas berasingan untuk membandingkan kerumitan pelaksanaan. Sebagai bahasa pengaturcaraan utama untuk perkhidmatan mikro dan fungsi, saya memilih Go, kerana saya telah mengkajinya untuk masa yang lama dalam masa lapang saya untuk menggantikan Perl, dan js akan digunakan berdasarkan rangka kerja tertentu untuk interaksi pengguna dengan perkhidmatan mikro dan fungsi. Saya akan memberitahu anda tentang keputusan muktamad dalam artikel yang sepadan dalam siri ini. Untuk berkomunikasi fungsi antara satu sama lain, saya memilih NATS.io, kerana saya telah menemuinya sebelum ini, dan ia mempunyai integrasi yang agak mudah ke dalam Kubernetes.

Pengumuman

  • Pengenalan
  • Menyediakan persekitaran pembangunan, memecahkan tugas kepada fungsi
  • Kerja hujung belakang
  • Kerja bahagian hadapan
  • Menyediakan CICD, menganjurkan ujian
  • Mulakan sesi permainan percubaan
  • Keputusan

Sumber: www.habr.com

Tambah komen