ሰርቨርን ስለማጥፋት የጠላፊ ጨዋታ ጀርባ እንዴት ተፈጠረ

ሰርቨርን ስለማጥፋት የጠላፊ ጨዋታ ጀርባ እንዴት ተፈጠረ
ከአገልጋዩ መጥፋት ጋር ያለን የሌዘር ፍለጋ እንዴት እንደተቀናበረ ልንነግራችሁ እንቀጥላለን። በቀደመው ጀምር ተልዕኮውን ስለ መፍታት ጽሑፍ.

በጠቅላላው የጨዋታው ጀርባ 6 የስነ-ህንፃ ክፍሎች ነበሩት ፣ በዚህ ጽሑፍ ውስጥ የምንመረምረው-

  1. ለጨዋታ ስልቶች ተጠያቂ የሆኑ የጨዋታ አካላት ጀርባ
  2. የኋላ እና የጣቢያ ውሂብ ልውውጥ አውቶቡስ በ VPS ላይ
  3. ከጀርባ ጥያቄዎች (የጨዋታ አካላት) ወደ አርዱዪኖ እና ሃርድዌር በጣቢያው ላይ ተርጓሚ
  4. ሪሌሎችን የመቆጣጠር ሃላፊነት የነበረው አርዱዪኖ ከተርጓሚው ትዕዛዝ ተቀብሎ ትክክለኛውን ስራ ሰርቷል።
  5. ትክክለኛ መሣሪያዎች: ማራገቢያ, የአበባ ጉንጉኖች, የወለል ንጣፎች, ወዘተ.
  6. Frontend - ተጫዋቾች መሳሪያዎችን የሚቆጣጠሩበት የ Falcon ድህረ ገጽ ራሱ

እያንዳንዳቸውን እንይ።

የጨዋታ አካላት ጀርባ

የኋለኛው ክፍል እንደ የፀደይ ቡት መተግበሪያ ተተግብሯል፡ በርካታ የእረፍት መቆጣጠሪያዎች፣ የዌብሶኬት የመጨረሻ ነጥብ እና ከጨዋታ አመክንዮ ጋር አገልግሎቶች ነበሩት።

ሶስት ተቆጣጣሪዎች ብቻ ነበሩ፡-

  • ሜጋትሮን የአሁኑ የሜጋትሮን ገጽ በGET ጥያቄዎች ተልኳል፡ ኃይልን ከማብራት በፊት እና በኋላ። ሌዘር በPOST ጥያቄ በኩል ተኮሰ።
  • የታጠፈ ገፆችን በገጽ ስም እንዲያገለግሉ ማድረግ። Tilde ወደ ውጭ የሚላኩ ገጾችን ከመጀመሪያ ስሞች ጋር ሳይሆን ከውስጥ መታወቂያ እና ተገዢነት መረጃ ጋር ያወጣል።
  • የውሸት-ከፍተኛ ጭነት አገልጋይ ካፕቻን ለማገልገል Captcha መቆጣጠሪያ።

የዌብሶኬት መጨረሻ ነጥብ መግብሮችን ለመቆጣጠር ጥቅም ላይ ውሏል፡ አምፖሎች፣ ጋራላንድ እና ፊደሎች። ለሁሉም ተጫዋቾች በተመሳሰለ መልኩ የመሳሪያውን ወቅታዊ ሁኔታ ለማሳየት ተመርጧል፡ ማብራትም ሆነ ጠፍቶ፣ ገባሪም ሆነ አልነቃም፣ የፊደሉ ቀለም በአሁኑ ጊዜ በግድግዳው ላይ የበራ ነው። ሌዘርን የማብራት ስራን ትንሽ የበለጠ ከባድ ለማድረግ ለጋርላንድ እና ለሌዘር በተመሳሳይ መግቢያ እና የይለፍ ቃል አስተዳዳሪ/አስተዳዳሪ ፍቃድ ጨምረናል።

ተጫዋቾቹ የአበባ ጉንጉን በማብራት ሊፈትኑት እና በሌዘር ተመሳሳይ ነገር መድገም ይችላሉ።

ተጫዋቾችን አላስፈላጊ በሆነ ምርጫ ላለማሰቃየት እንደዚህ አይነት ተራ መግቢያ-የይለፍ ቃል ጥንድ መረጥን።

ተግባሩን ትንሽ የበለጠ ሳቢ ለማድረግ ከmongodb የመጡ የነገር መታወቂያዎች በክፍሉ ውስጥ እንደ መሳሪያ መለያዎች ጥቅም ላይ ውለው ነበር።

ObjectId የጊዜ ማህተም ይዟል፡ ሁለት የዘፈቀደ እሴቶች አንዱ በመሳሪያ መለያው ላይ ተመስርቶ የሚወሰድ ሲሆን ሁለተኛው ደግሞ በሚፈጥረው የሂደቱ ፒዲ እና በቆጣሪው እሴት ላይ የተመሰረተ ነው። በመደበኛ ክፍተቶች እና በተለያዩ የፒዲ ሂደቶች የሚመነጩትን መለያዎች ማድረግ ፈልጌ ነበር ፣ ግን በጋራ ቆጣሪ ፣ የሌዘር መሣሪያ መለያ ምርጫ የበለጠ አስደሳች እንዲሆን። ነገር ግን፣ በመጨረሻ፣ ሁሉም በቆጣሪው እሴት ብቻ በሚለያዩ መለያዎች ጀመሩ። ይህ እርምጃውን በጣም ቀላል አድርጎት ሊሆን ይችላል እና የ objectId መዋቅር ትንተና አያስፈልገውም።

ከጀርባ ጥያቄዎች ተርጓሚ

Python ስክሪፕትበሰዓት ቆጣሪዎች ላይ የሰራው እና ከጨዋታ ማጠቃለያ ወደ አካላዊ ሞዴል የተረጎመ። ለምሳሌ፣ “የወለሉን መብራት አብራ” → “relay N2 ን ያብሩ።

ስክሪፕቱ ከ RabbitMQ ወረፋ ጋር የተገናኘ እና ጥያቄዎችን ከወረፋው ወደ አርዱዪኖ አስተላልፏል። እንዲሁም የትይዩ ብርሃን መቀያየርን አመክንዮ ተግባራዊ አድርጓል፡ ከአንዳንድ መሳሪያዎች ጋር አብሮ መብራቱ በርቶ ነበር ለምሳሌ ሃይል መጀመሪያ ለሜጋትሮን ሲቀርብ በመድረክ መብራት በራ። ለጠቅላላው ትዕይንት ሲኒማቶግራፊ የመብራት ንድፍ ስለ ፕሮጄክታችን ተባባሪ ፕሮዲዩሰር እና ፕሮዲዩሰር ዲዛይነር ኢሊያ ሴሮቭ ታላቅ ሥራ የተለየ ታሪክ ነው ፣ እና ስለ እሱ በተለየ ጽሑፍ ውስጥ እንነጋገራለን ።

ተርጓሚው ሰዓት ቆጣሪን በመጠቀም እና ምስሉን ወደ ቴሌቪዥኑ ለማስተላለፍ አመክንዮአዊ ሃላፊነት ነበረው-የማስነሻውን ማስጀመሪያ ጊዜ ቆጣሪ ፣ ጩኸት ካፒባራ ፣ በጨዋታው መጨረሻ ላይ ማስታወቂያ።

የሜጋትሮን ቶከን የማመንጨት አመክንዮ እንዴት እንደተዋቀረ

የሙከራ ምት

በየ 25 ሰከንድ አዲስ ቶከን ይፈጠራል እና ሌዘርን በ10/10 ሃይል ለ255 ሰከንድ ለማብራት ይጠቅማል። አገናኝ ወደ github ከ Megatron ኮድ ጋር.

ሌዘር ከዚያም ለ 1 ደቂቃ ቀዘቀዘ - በዚህ ጊዜ ውስጥ አይገኝም እና አዲስ የተኩስ ጥያቄዎችን አልተቀበለም.

ይህ ኃይል በገመድ ውስጥ ለማቃጠል በቂ አልነበረም, ነገር ግን ማንኛውም ተጫዋች Megatron ን በማቃጠል የሌዘር ጨረሩን በተግባር ማየት ይችላል.

ማስመሰያውን ለመፍጠር የMD5 hashing አልጎሪዝም ጥቅም ላይ ውሏል። እና እቅዱ ተሳክቷል MD5 ከ MD5 + ቆጣሪ + ምስጢር ለትግል ማስመሰያ እና ለሙከራ ምልክት ያለ ምስጢር።

MD5 የኛ ደጋፊ የሆነው ፓቬል ያደረገው የንግድ ፕሮጀክት ዋቢ ነው። ከጥቂት አመታት በፊት ይህ ፕሮጀክት MD5ን ተጠቅሟል፣ እና ለፕሮጄክቱ አርክቴክት ጊዜው ያለፈበት የኢንክሪፕሽን ስልተ-ቀመር እንደሆነ ሲነግሩት MD5ን ከMD5 መጠቀም ጀመሩ። በጣም የኖብ ፕሮጀክት ለማድረግ ስለወሰንን, ሁሉንም ነገር አስታወሰ እና ትንሽ ማጣቀሻ ለማድረግ ወሰነ.

የትግል ጥይት

የሜጋትሮን የውጊያ ሁነታ 100% ሌዘር ሃይል በ 3 ዋት ነው። ይህ ክብደት በተያዘው ገመድ ውስጥ ለማቃጠል ፣ የውሃ ገንዳውን ለመስበር እና አገልጋዩን በውሃ ለማጥለቅ ለ 2 ደቂቃዎች ያህል በቂ ነው።

በፕሮጀክቱ Github ላይ ጥቂት ፍንጮችን እንተወዋለን-ማለትም የማስመሰያ ማመንጨት ኮድ, አንድ ሰው የሙከራ እና የውጊያ ቶከኖች በተመሳሳይ የቆጣሪ አመልካች ላይ ተመስርተው እንደሚፈጠሩ ሊረዳ ይችላል. የውጊያ ማስመሰያ ሁኔታን በተመለከተ፣ ከቆጣሪው እሴት በተጨማሪ፣ ጨውም ጥቅም ላይ ይውላል፣ ይህም ከመጨረሻዎቹ ሁለት ገጸ-ባህሪያት በስተቀር ይህንን ጭብጥ በመቀየር ታሪክ ውስጥ ሙሉ በሙሉ የቀረው ነው።

ይህንን መረጃ በማወቅ በመጨረሻዎቹ 2 የጨው ምልክቶች መደርደር እና ከጠፋው ወደ ሄክሳዴሲማል ስርዓት የተቀየሩት ቁጥሮች ለእሱ ጥቅም ላይ እንደዋሉ ለማወቅ ተችሏል ።

በመቀጠልም ተጫዋቾቹ የቆጣሪውን ዋጋ (የሙከራ ቶከንን በመተንተን) እና በመጨረሻው ደረጃ የተመረጠውን የቆጣሪው እሴት እና ጨው በመጠቀም የውጊያ ምልክት ማመንጨት አለባቸው.

ቆጣሪው በቀላሉ በእያንዳንዱ የሙከራ ምት እና በየ25 ሰከንድ ይጨምራል። ስለዚህ ጉዳይ በየትኛውም ቦታ አልጻፍንም, ትንሽ የጨዋታ አስገራሚ መሆን ነበረበት.

Captcha መስተጋብር አገልግሎት

በጨዋታው አለም፣ ደጋፊውን ለማብራት እና ፍንጭ በፍንጭ ለመክፈት ይህ ተመሳሳይ ካፕቻ ነበር። ከካሜራው ቀጥሎ የጭነት መቆጣጠሪያ ያለው ላፕቶፕ ነበር።

ሰርቨርን ስለማጥፋት የጠላፊ ጨዋታ ጀርባ እንዴት ተፈጠረ

አገልግሎት በክትትል ውስጥ ምን ማሳየት እንዳለብኝ እንደ የአሁኑ ጭነት አስላለሁ፡ ሙቀት እና ሲፒዩ ፋን። መለኪያዎች ወደ የጊዜ ቋት የውሂብ ጎታ ተላልፈዋል እና በግራፋና ተሳሉ።

በመጨረሻዎቹ 5 ሰከንዶች ውስጥ ካፕቻውን ለማሳየት ከ 50 በላይ ጥያቄዎች ካሉ ፣ ከዚያ ጭነቱ በተወሰነ + የዘፈቀደ የእርምጃዎች ብዛት ጨምሯል። ስሌቱ 100% ጭነት በሁለት ደቂቃዎች ውስጥ ሊገኝ ይችላል.

በእርግጥ በአገልግሎቱ ውስጥ በመጨረሻው ጨዋታ ላይ ከሚታየው የበለጠ አመክንዮ ነበር፡ መቆጣጠሪያውን የ CPU Fan መሽከርከር ብቻ በሚታይበት መንገድ አስቀምጠን ነበር።

በፍለጋው መጀመሪያ ላይ ግራፋንን ከ Falcon ድህረ ገጽ ተደራሽ ለማድረግ ፈልገዋል። ነገር ግን ከጀርባ አፕሊኬሽን ሪፖርቱ የስፕሪንግ ቡት መለኪያዎችንም ይዟል፣ ይህም ለማጽዳት ጊዜ አልነበረንም፣ ስለዚህ የእሱን መዳረሻ ለማገድ ወስነናል። እና ልክ እንደዚያው - በፍለጋው መጀመሪያ ላይ እንኳን ፣ አንዳንድ ተጫዋቾች መተግበሪያው በፀደይ ቡት ማዕቀፍ ውስጥ እንደተፃፈ እና የአንዳንድ አገልግሎቶችን ስም እንኳን እንደቆፈረ ገምተዋል።

ማስተናገጃ እና የውሂብ አውቶቡስ

መረጃን ከጀርባ ወደ ጣቢያው ለማስተላለፍ የሚረዳ መሳሪያ፣ RabbitMQ እያሄደበት ያለው የVPS አገልጋይ።

የኋላ እና የመረጃ አውቶቡሱ እንዲቆዩ ተደረገ የእኛ ቪፒኤስ. ኃይሉ በስክሪኑ ላይ ካዩት ኮምፒውተር ጋር ይነጻጸራል፡ ባለ 2-ኮር ቪፒኤስ ከሁለት ጊጋባይት ራም ጋር። ከፍተኛው ጭነት ለጥቂት ቀናት ብቻ የታቀደ በመሆኑ ታሪፉ ለሀብቶች ተከፍሏል - ለአጭር ጊዜ ቪፒኤስን ለመጫን ያቀዱ ደንበኞቻችን የሚያደርጉት ይህ ነው። ከዚያም ጭነቱ ከምንጠብቀው በላይ ከፍ ያለ ሆኖ ተገኝቷል, እና ቋሚ ታሪፍ የበለጠ ትርፋማ ይሆናል. ተልዕኮ ካደረጉ፣ የመስመር ታሪፎችን ይምረጡ ቱርባ.

አገልጋዩን ከDDoSa ለመጠበቅ፣ Cloudflareን ተጠቀምን።

VPS ሁሉንም ነገር በክብር ተቋቁሟል ማለት ተገቢ ነው።

ሪሌሎችን የመቆጣጠር ሃላፊነት የነበረው አርዱዪኖ ከተርጓሚው ትዕዛዝ ተቀብሎ ትክክለኛውን ስራ ሰርቷል።

ይህ ስለ ፕሮጀክቱ ሃርድዌር ክፍል የሚቀጥለው ርዕስ የበለጠ ነው፡ ደጋፊው በቀላሉ የተወሰነ ቅብብል ለማብራት ጥያቄዎችን ልኳል። እንዲህ ሆነ፣ ደጋፊው ሁሉንም አካላት ከሞላ ጎደል የሚያውቅ ሲሆን ከሱ የሚቀርቡ ጥያቄዎች “ይህን አካል አብራ” የሚመስሉ ይመስላል። ይህንን ያደረግነው ለጣቢያው ቀደምት ሙከራ ነው (ሁሉንም አርዱዪኖ እና ሪሌይሎችን ገና አልሰበሰብንም) በመጨረሻ ሁሉንም ነገር እንደዛው እንተወዋለን።

የፊት ለፊት

ቦታውን በፍጥነት በጠፍጣፋ ላይ ፈጠርን, አንድ የስራ ቀን ወስዶ 30 ሺህ በጀታችን አስቀምጠናል.

መጀመሪያ ላይ ጣቢያውን በቀላሉ ወደ ውጭ ለመላክ እና የጎደሉን አመክንዮዎች ለመጨመር አስበን ነበር, ነገር ግን ይህንን እንዳናደርግ የሚከለክለን አጠቃቀም ጋር ተገናኘን.

ፈቃዱን ለመጣስ ዝግጁ አልነበርንም, ስለዚህ ሁለት አማራጮች ነበሩ-ሁሉንም ነገር እራሳችንን ለመተግበር ወይም Tilda በቀጥታ ለማነጋገር, ስለ ፕሮጀክቱ ይናገሩ እና ኮዱን ለመቀየር ፍቃድ ይጠይቁ.

ሁለተኛውን አማራጭ መርጠናል እና እኛን በግማሽ መንገድ ብቻ ሳይሆን አንድ አመት ነፃ የንግድ መለያ ሰጡን, ለዚህም ለእነሱ በጣም እናመሰግናለን. የሶኮልን ድረ-ገጽ ዲዛይን ማሳየታቸው በጣም አሳፋሪ ነበር።

በውጤቱም፣ ወደ ኤለመንታሪ መሳሪያዎች የሚላኩ ጥያቄዎችን js ሎጂክን ከፊት ለፊት ጋር አያይዘን፣ እና የጨዋታ ክፍሎችን ለማብራት እና ለማጥፋት የአዝራሮችን ዘይቤ በትንሹ ቀይረናል።

የጣቢያ ዲዛይን

የተለየ ምዕራፍ ዋጋ ያለው የፍለጋ ታሪክ።

እኛ የድሮው ፋሽን ጣቢያን ብቻ ሳይሆን ሁሉንም መሰረታዊ የንድፍ ህጎችን የሚጥስ በጣም አስጸያፊ መፍጠር እንፈልጋለን። በተመሳሳይ ጊዜ, ታማኝነትን ማቆየት አስፈላጊ ነበር-የ ENT ታሪክን ላለማቋረጥ, የጸሐፊውን አስመሳይነት ማሳየት እና ተጫዋቾች እንደዚህ አይነት ጣቢያ ሊኖር እና ደንበኞችን እንኳን ማምጣት እንደሚችሉ ማመን አለባቸው. እና አመጣው! ጨዋታው እየተካሄደ እያለ ድህረ ገፆችን ለመፍጠር ሁለት ጊዜ ተገናኝተናል።

መጀመሪያ ላይ ብዙ gifs እና የሚያብረቀርቁ ንጥረ ነገሮችን ለማካተት እየሞከርኩ ንድፉን እራሴ አደረግሁ። ነገር ግን የ10 አመት ዲዛይነር ባለቤቴ ትከሻውን ተመልክቶ “በጣም ጥሩ” ሲል አሰናበተው። የንድፍ ደንቦችን ለመጣስ, እነሱን ማወቅ ያስፈልግዎታል.

ሰርቨርን ስለማጥፋት የጠላፊ ጨዋታ ጀርባ እንዴት ተፈጠረ

ዘላቂ የሆነ የመጸየፍ ስሜት የሚቀሰቅሱ በርካታ የቀለም ቅንጅቶች አሉ-አረንጓዴ እና ቀይ እኩል ብልጽግና ፣ ግራጫ እና ሮዝ ፣ ሰማያዊ እና ቡናማ። በመጨረሻ ፣ እንደ መሰረታዊ ቀለሞች በቀይ እና አረንጓዴ ጥምረት ላይ ተቀመጥን ፣ gifs ከድመት ጋር ጨምረን እና የሶኮሎቭን እራሱን ከአክሲዮን ፎቶ 3-4 ፎቶዎችን መርጠናል ። ጥቂት መስፈርቶች ብቻ ነበሩኝ፡ መካከለኛ እድሜ ያለው ሰው፣ የማይመጥን ልብስ ለብሶ ጥንዶች መጠን በጣም ትልቅ እና በ"ፕሮፌሽናል ስቱዲዮ ፎቶ ቀረጻ" ውስጥ። ለፈተናው ለጓደኞቻቸው አሳይተው "እንዴት ይወዳሉ?"

በዲዛይን ልማት ሂደት ባለቤቴ በየግማሽ ሰዓቱ መተኛት ነበረበት፤ ሄሊኮፕተሩ መብረር ጀመረ። ፓሻ የፊት ለፊት ገፅታውን እንደጨረሰ - ዓይኖቹን ለመጠበቅ የገንቢውን ኮንሶል ወደ አብዛኛው ማያ ገጽ ለመክፈት ሞከረ።

ትክክለኛ መሣሪያዎች

ደጋፊዎቹ እና መብራቶቹ በሙሉ ኃይል ወዲያው እንዳይበሩ በጠንካራ ግዛት ቅብብሎሽ በኩል ተጭነዋል - ስለዚህም ኃይሉ ከክትትል ጋር በትይዩ ይጨምራል።

ግን ስለዚህ ጉዳይ በሚቀጥለው ጽሁፍ ላይ ስለ ጨዋታው የሃርድዌር ክፍል እና ስለ ጣቢያው ትክክለኛ ግንባታ እንነጋገራለን.

ተጠንቀቁ!

አገልጋዩን ለማጥፋት ስላለው ተልዕኮ ሌሎች መጣጥፎች

ሰርቨርን ስለማጥፋት የጠላፊ ጨዋታ ጀርባ እንዴት ተፈጠረ

ምንጭ: hab.com

አስተያየት ያክሉ