рд╣рдо рдПрдХ рдЦреЗрд▓ рджреЗрд╡ рдХрд╛рдврд╝рд╛ред рднрд╛рдЧ 1

рдкрд░рд┐рдЪрдп


рдХрд╣рд╛рдиреА рдмреНрд▓реЙрдХрдЪреЗрди-рдЖрдзрд╛рд░рд┐рдд рд╣реИрдХрд╛рдереЙрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдИред рдШрдЯрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВ рдПрдХ рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдорд┐рд▓рд╛, рдЬреЛ рдПрдХ рд╢реМрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдмреЛрд░реНрдб рдмрд┐рдЬрдиреЗрд╕ рдЧреЗрдо рдмрдирд╛рддрд╛ рд╣реИ (рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЧреЗрдо рдХреЗ рдЦреЗрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЖрдЧреЗ рдерд╛), рд╣рдордиреЗ рдПрдХ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдПрдХ рдЯреАрдо рдвреВрдВрдвреА, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рдкреНрддрд╛рд╣рд╛рдВрдд рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд░рдгрдиреАрддрд┐рдХ рдЧреЗрдо "рдЕрдВрдзрд╛" рдХрд┐рдпрд╛ред рд╣реИрдХрд╛рдереЙрди рдмреАрдд рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдЙрддреНрд╕рд╛рд╣ рдмрдирд╛ рд░рд╣рд╛ред рдФрд░ рд╣рдо рдЦреБрд╢реА, рд╡рд┐рд╢реНрд╡ рд╕рдореБрджрд╛рдп рдФрд░ рдЪреБрдирд╛рд╡реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХрд╛рд░реНрдб рдЧреЗрдо рдХреЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдПред

рд▓реЗрдЦреЛрдВ рдХреА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рд╣рдо рдПрдХ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдЧ рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд░реЗрдХ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд╕рд╛рде рдЬреЛ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдХрджрдо рд░рдЦрд╛ рд╣реИ рдФрд░ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдкрд░ рдХрджрдо рдЙрдард╛рдПрдВрдЧреЗред
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:

  • рдЦреЗрд▓ рд╕рд╛рд░рд╛рдВрд╢
  • рдмреИрдХрдПрдВрдб рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдирд┐рд░реНрдгрдп рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдпрд╣ "рд▓рд╛рдЗрд╡" рдХрд╣рд╛рдБ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдпрд╣ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╕реНрддрд░ рдкрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рди рдХрд░реЗ
  • рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо - рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдордВрдЧрдиреА рдХреЗ рд╕рдВрдЧрдарди
  • рдЖрдЧреЗ рдХреА рдпреЛрдЬрдирд╛

рдЦреЗрд▓ рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ


рдорд╛рдирд╡ рдЬрд╛рддрд┐ рд╡рд┐рд╢реНрд╡ рдпреБрджреНрдзреЛрдВ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдХрдореА рдФрд░ рдирд┐рд░рдВрддрд░ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рд╕реЗ рдердХ рдЧрдИ рд╣реИред рдкреНрд░рдореБрдЦ рдЧреБрдЯ рдПрдХрд▓ рдиреЗрддреГрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзреБрдирд┐рдХ рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рд╣реБрдПред рдирд┐рдпрдд рд╕рдордп рдкрд░, рджреБрдирд┐рдпрд╛ рдХреЗ рдорддрджрд╛рддрд╛рдУрдВ рдХреЛ рдПрдХ рдЕрдВрд╢ рдХреА рдкрд╕рдВрдж рдкрд░ рдлреИрд╕рд▓рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЕрдЧрд▓реЗ рд╕рд╣рд╕реНрд░рд╛рдмреНрджреА рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╣ рдкрд░ рд╢рд╛рд╕рди рдХрд░реЗрдЧрд╛ред рдкреНрд░рдореБрдЦ рдЧреБрдЯ "рдИрдорд╛рдирджрд╛рд░" рд╢рдХреНрддрд┐ рд╕рдВрдШрд░реНрд╖ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реИрдВред рдПрдХ рдЦреЗрд▓ рд╕рддреНрд░ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рдЕрдВрд╢ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рдХрд╛рд░реНрдб рдЧреЗрдо рдЪреБрдирд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдЯ рдХреЗ рдкрд╛рд╕ рдЪреБрдирд╛рд╡реА рджреМрдбрд╝ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдЬрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЖрдп рдХреЗ рд╕реНрд░реЛрдд рдмрдЬрдЯ рдХреЛ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ рдФрд░ рд╡реЛрдЯ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рдЦреЗрд▓ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдПрдХреНрд╢рди рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рдбреЗрдХ рдорд┐рд╢реНрд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧреАрджрд╛рд░ рдХреЛ 4 рдХрд╛рд░реНрдб рдЬрд╛рд░реА рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдореЛрдбрд╝ рдкрд░, рдЦрд┐рд▓рд╛рдбрд╝реА рджреЛ рдЧреЗрдо рдХреНрд░рд┐рдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЦрд┐рд▓рд╛рдбрд╝реА рдЗрд╕реЗ рдЯреЗрдмрд▓ рдкрд░ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рд▓рдХреНрд╖реНрдп рдХреЛ рдирд╛рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрдЬрдЯ рд╕реЗ рдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд▓рд╛рдЧрдд рдореЗрдВ рдХрдЯреМрддреА рдХрд░рддрд╛ рд╣реИред рд░рд╛рдЙрдВрдб рдХреА рд╕рдорд╛рдкреНрддрд┐ рдХреЗ рдмрд╛рдж, рдЦрд┐рд▓рд╛рдбрд╝реА рдЕрдкреНрд░рдпреБрдХреНрдд рдХрд╛рд░реНрдбреЛрдВ рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдХреЛ рд░рдЦ рд╕рдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдбреЗрдХ рд╕реЗ рдХрд╛рд░реНрдб рдорд┐рд▓рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рджреМрд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╣рд╛рде рдореЗрдВ 4 рдПрдХреНрд╢рди рдХрд╛рд░реНрдб рд╣реЛрдВред

рд░рд╛рдЙрдВрдб 3, 6 рдФрд░ 9 рдХреЗ рдЕрдВрдд рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо рд╡реЛрдЯреЛрдВ рд╡рд╛рд▓рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдЦреЗрд▓ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдХрдИ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдкрд╛рд╕ рд╕рдорд╛рди рдиреНрдпреВрдирддрдо рд╡реЛрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рд▓реЗ рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЦреЗрд▓ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдЖрд╡рд╛рдЬ рдорддрджрд╛рддрд╛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреВрд▓ рдореЗрдВ рдЬрд╛рддреА рд╣реИред

рд░рд╛рдЙрдВрдб 12 рдХреЗ рдЕрдВрдд рдореЗрдВ, рд╡рд┐рдЬреЗрддрд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдорддреЛрдВ рдХреЗ рд╕рд╛рде рд╣реИред

рдмреИрдХрдПрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдЪреБрдирдирд╛


рдЦреЗрд▓ рдХреЗ рд╡рд░реНрдгрди рд╕реЗ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

  1. рдпрд╣ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рд╣реИ
  2. рдХрд┐рд╕реА рддрд░рд╣ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдФрд░ рдЦрд╛рддреЛрдВ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ
  3. рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдШрдЯрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╕реЗ рдЦреЗрд▓ рдХреЛ рд▓рд╛рдн рд╣реЛрдЧрд╛ - рдорд┐рддреНрд░, рд╕рдореБрджрд╛рдп (рд╡рдВрд╢), рдЪреИрдЯ, рдЙрдкрд▓рдмреНрдзрд┐рдпрд╛рдВ (рдЙрдкрд▓рдмреНрдзрд┐рдпрд╛рдВ)
  4. рд▓реАрдбрд░рдмреЛрд░реНрдб рдФрд░ рдореИрдЪрдореЗрдХрд┐рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
  5. рдЯреВрд░реНрдирд╛рдореЗрдВрдЯ рдкреНрд░рдмрдВрдзрди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреА
  6. рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЦреЗрд▓ рдПрдХ рдХрд╛рд░реНрдб рдЧреЗрдо рд╣реИ, рдЖрдкрдХреЛ рдХрд╛рд░реНрдбреЛрдВ рдХреА рд╕реВрдЪреА рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЦрд┐рд▓рд╛рдбрд╝реА рдФрд░ рдЙрдкрд▓рдмреНрдз рд╕рдВрдХрд▓рд┐рдд рдХрд╛рд░реНрдбреЛрдВ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ
  7. рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдПрдХ рдЗрди-рдЧреЗрдо рдЕрд░реНрдерд╡реНрдпрд╡рд╕реНрдерд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрди-рдЧреЗрдо рдореБрджреНрд░рд╛, рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд╛рдорд╛рдиреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди (рдХрд╛рд░реНрдб) рд╢рд╛рдорд┐рд▓ рд╣реИред

рдЬрд░реВрд░рддреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕ рдирддреАрдЬреЗ рдкрд░ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рд╢реБрд░реБрдЖрддреА рд╕реНрддрд░ рдкрд░ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдмреИрдХрдПрдВрдб рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдФрд░ Google рдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рдХреНрдпрд╛ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╡рд┐рд╢реЗрд╖ рдХреНрд▓рд╛рдЙрдб рдЧреЗрдорд┐рдВрдЧ рдмреИрдХрдПрдВрдб рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ PlayFab (рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рджреНрд╡рд╛рд░рд╛ рдЦрд░реАрджрд╛ рдЧрдпрд╛) рдФрд░ рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ (рдЕрдореЗрдЬрд╝реЕрди рджреНрд╡рд╛рд░рд╛ рдЦрд░реАрджрд╛ рдЧрдпрд╛) рдмрд╛рд╣рд░ рдЦрдбрд╝реЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╡реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдирдХреА рдЖрдВрддрд░рд┐рдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИ, рд╕рдорд╛рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдиреАрдЪреЗ рдкреНрд░рддреНрдпреЗрдХ рдордВрдЪ рдФрд░ рдкрд╕рдВрдж рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред

PlayFab


рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рд╡рд┐рднрд┐рдиреНрди рдЦреЗрд▓реЛрдВ рдХреЗ рдЦрд╛рддреЛрдВ рдХреЛ рдПрдХ рдорд╛рд╕реНрдЯрд░ рдЦрд╛рддреЗ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ
  • рдЧреЗрдорд┐рдВрдЧ рдЗрдХреЙрдирдореА рдХреЛ рдХреЛрдб рдХреА рдПрдХ рднреА рд▓рд╛рдЗрди рдХреЗ рдмрд┐рдирд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЪреБрдЕрд▓ рд╕реНрдЯреЛрд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ
  • рдЕрдиреБрдХреВрд▓ рдпреВрдЬрд░ рдЗрдВрдЯрд░рдлреЗрд╕
  • Microsoft рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХреЗ рдмрд╛рдж рдЙрддреНрдкрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
  • Indie Studio рд╕рджрд╕реНрдпрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рд▓рд╛рдЧрдд $ 99 (100k MAU рддрдХ) рд╣реИ, рдЬрдм рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ 1k MAU рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ $ 8 (рдиреНрдпреВрдирддрдо рдЦрд╛рддрд╛ $ 300) рдХрд╛ рдЦрд░реНрдЪ рдЖрдПрдЧрд╛

рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рдЧреЗрдо рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╕рдЦреНрддреА рд╕реЗ рд╕реАрдорд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЧреЗрдо рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реБрд▓реНрдХ рд╕рджрд╕реНрдпрддрд╛ рдореЗрдВ (рдпрджрд┐ рдореИрдВ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ, рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдВрдЯрд┐рдЯреА рдЧреНрд░реБрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдкреНрд░рддреНрдпреЗрдХ 500 рдмрд╛рдЗрдЯреНрд╕ рдХреЗ 3 рд╕реНрд▓реЙрдЯ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ
  • рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рддреГрддреАрдп-рдкрдХреНрд╖ рд╕рд░реНрд╡рд░ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдЖрдкрдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдпрд╛ рдПрдЬрд╝реНрдпреЛрд░ рдердВрдбрд░рд╣реЗрдб рдкрд░ рдлреЛрдЯреЙрди рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЕрдкрдиреА рд╕рджрд╕реНрдпрддрд╛ рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЗрдВрдбреА рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
  • рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд░рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕реНрд╡рдд: рдкреВрд░реНрдг рдХреЗ рдмрд┐рдирд╛ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдФрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛?)
  • рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдбреАрдмрдЧрд░ рдирд╣реАрдВ рд╣реИ, рдЖрдк рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЙрдбрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ рд▓реЙрдЧ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

GameSparks


рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рдЦреЗрд▓ рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдгред рди рдХреЗрд╡рд▓ рдХрдИ рдЬрдЧрд╣ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдк рдбреЗрдЯрд╛ (рд╕рд╛рдорд╛рдиреНрдп рдЧреЗрдо рдореЗрдЯрд╛рдбреЗрдЯрд╛, рд╡рд░реНрдЪреБрдЕрд▓ рд╕рд╛рдорд╛рди, рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓, рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рд╕рддреНрд░, рдЖрджрд┐) рдХреЛ рдмрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдПрдХ рдкреВрд░реНрдг-рд╡рд┐рдХрд╕рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, MongoDB рдФрд░ Redis рджреЛрдиреЛрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рд╡рд┐рдХрд╛рд╕ рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рдЖрдк 10 рдПрдордмреА рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓рдбрд╝рд╛рдИ 10 рдЬреАрдмреА рдореЗрдВ
  • рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдПрдХ рдореБрдлреНрдд рд╕рджрд╕реНрдпрддрд╛ (рд╡рд┐рдХрд╛рд╕) рдореЗрдВ рдПрдХ рд╕рд╛рде 10 рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 10 рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕реАрдорд╛ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рд╣реИ
  • рдХреНрд▓рд╛рдЙрдбрдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рдо, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреВрд▓ (рдЯреЗрд╕реНрдЯ рд╣рд╛рд░реНрдиреЗрд╕) рд╕рд╣рд┐рдд

рдирдХрд╛рд░рд╛рддреНрдордХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ:

  • рднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди (рд╕рд░реНрджрд┐рдпреЛрдВ 2018) рджреНрд╡рд╛рд░рд╛ рдЦрд░реАрдж рдХреЗ рдмрд╛рдж рд╕реЗ рдЙрдкрдХрд░рдг рд╕реНрдерд┐рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдИ рдирд╡рд╛рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ
  • рдлрд┐рд░, рдЕрдореЗрдЬрд╝реЕрди рдХреЗ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХреЗ рдмрд╛рдж, рдЯреИрд░рд┐рдл рдмрджрддрд░ рд╣реЛ рдЧрдП, рдкрд╣рд▓реЗ рдореБрдлреНрдд рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ 10,000 рдПрдордПрдпреВ рддрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдерд╛
  • рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рдЙрддреНрдкрд╛рджрди рд▓рд╛рдЧрдд $ 300 (рдорд╛рдирдХ рд╕рджрд╕реНрдпрддрд╛) рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ

рд╕реЛрдЪ


рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЧреЗрдо рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдореМрджреНрд░рд┐рдХ рдирд┐рд╡реЗрд╢ рдХреЗ рдмрд┐рдирд╛ рд▓рд╛рдареА рдФрд░ рд╕реНрдХреЙрдЪ рдЯреЗрдк рдХрд╛ рдПрдХ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЦреЗрд▓ рдпрд╛рдВрддреНрд░рд┐рдХреА рдХреЗ рдЦреЗрд▓ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдЗрд╕рд▓рд┐рдП, рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЪреБрдирддреЗ рд╕рдордп, рдореИрдВ рдПрдХ рдореБрдлреНрдд рд╕рджрд╕реНрдпрддрд╛ рдкрд░ рдПрдХ рдореИрдХреЗрдирд┐рдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдмрдврд╝рд╛рддрд╛ рд╣реВрдВред
GameSparks рдЗрд╕ рдХрд╕реМрдЯреА рдкрд░ рдЦрд░рд╛ рдЙрддрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди PlayFab рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬреЛ рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдПрдХ рдЗрдВрдбреА рд╕реНрдЯреВрдбрд┐рдпреЛ-рд╕реНрддрд░реАрдп рд╕рджрд╕реНрдпрддрд╛ ($ 99) рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред

рдЙрд╕реА рд╕рдордп, рдореИрдВ рдЗрд╕ рдЬреЛрдЦрд┐рдо рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдореЗрдЬрд╝реЕрди рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ рд╡рд┐рдХрд╕рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдпрд╣ "рдорд░" рд╕рдХрддрд╛ рд╣реИред рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП рдФрд░ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд╕реНрд╡рд╛рдорд┐рддреНрд╡ рдХреА рд▓рд╛рдЧрдд рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдореБрдЭреЗ рдпрд╛ рддреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдмреИрдХрдПрдВрдб рдкрд░ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо


рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг


рдЗрд╕рд▓рд┐рдП, рдЧреЗрдо рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдмреИрдХрдкреЙрдЯрд┐рдВрдЧ рд╕реНрдЯреЗрдЬ рдкрд░ рдмреИрдХреЗрдВрдб рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЧрд┐рд░ рдЧрдпрд╛ред рдкрд╣рд▓рд╛ рдЪрд░рдг рдпрд╣ рд╕реАрдЦрдирд╛ рд╣реИ рдХрд┐ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕реЗ рдХреИрд╕реЗ рдЬреБрдбрд╝реЗрдВ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдХреИрд╕реЗ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░реЗрдВред рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЦреЗрд▓ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдкрдВрдЬреАрдХрд░рдг рдФрд░ рдПрд╕рдПрдордПрд╕ рдХреЗ рдмрд┐рдирд╛ рдЦреЗрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреЗрдорд╕реНрдкреАрдХрд░реНрд╕ DeviceAuthenticationRequest рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рдЕрдирд╛рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдмрд╛рдж рдореЗрдВ рдПрдХ рдЕрдирд╛рдо рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдк рдЕрдкрдиреЗ Google рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдиреЗрдХреНрдЯ рдХрд░рдХреЗ рдПрдХ рдкреВрд░реНрдгрд░реВрдкреЗрдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдорд╕реНрддрд┐рд╖реНрдХ рдЯреАрдбреАрдбреА рд╣реИ, рдореИрдВрдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЦреЗрд▓ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рдмрдирд╛рдХрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рдЪреВрдВрдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ CloudCode рдХреЛ JS рдореЗрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ mocha.js рдФрд░ chai.js. рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ JS рдореЗрдВ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдХрд░реВрдВрдЧрд╛ред рдкрд╣рд▓рд╛ рдЯреЗрд╕реНрдЯ рдЗрд╕ рддрд░рд╣ рдирд┐рдХрд▓рд╛:

var expect = require("chai").expect; var GameClientModule = require("../src/gameClient"); describe("Integration test", function () { this.timeout(0); it("should connect client to server", async function () { var gameClient = new GameClientModule.GameClient(); expect(gameClient.connected()).is.false; await gameClient.connect(); expect(gameClient.connected()).is.true; }); }) 

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, mocha.js рдореЗрдВ рдЯрд╛рдЗрдордЖрдЙрдЯ 2 рд╕реЗрдХрдВрдб рд╣реИ, рдореИрдВ рддреБрд░рдВрдд рдЗрд╕реЗ рдЕрдВрддрд╣реАрди рдмрдирд╛рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдПрдХреАрдХрд░рдг рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдореЗрдВ, рдореИрдВ рдПрдХ рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреЛрдИ рд╕рдВрдмрдВрдз рдирд╣реАрдВ рд╣реИ, рдмреИрдХрдПрдВрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ, рдФрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рд╣рд░реЗ рд░рдВрдЧ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ рдЬреЗрдПрд╕ рдПрд╕рдбреАрдХреЗ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ (рдХреНрд░рд┐рдкреНрдЯреЛ-рдЬреЗрдПрд╕ рдФрд░ рдбрдмреНрд▓реНрдпреВрдПрд╕) рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдФрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, GameClientModule рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред

 var GameSparks = require("../gamesparks-javascript-sdk-2018-04-18/gamesparks-functions"); var config = new require("./config.json"); exports.GameClient = function () { var gamesparks = new GameSparks(); this.connected = () => (gamesparks.connected === true); this.connect = function () { return new Promise(function (resolve, reject) { gamesparks.initPreview({ key: config.gameApiKey, secret: config.credentialSecret, credential: config.credential, onInit: () => resolve(), onMessage: onMessage, onError: (error) => reject(error), logger: console.log }); }); } function onMessage(message) { console.log("GAME onMessage: " + JSON.stringify(message)); } } 

рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╢реБрд░реБрдЖрддреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрдХрдиреАрдХреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХреБрдВрдЬреА рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯреЗрдб рд╡рд┐рдзрд┐ рдПрд╕рдбреАрдХреЗ рд╕реЗ рдЙрд╕реА рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рдкреЗрдЯрддреА рд╣реИред рдХрдиреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдореЗрдВ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрд▓рдмреИрдХ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдСрдирдореИрд╕реЗрдЬ рд╣реИрдВрдбрд▓рд░ рдХреЛ рднреА рдЙрд╕реА рдХреЙрд▓рдмреИрдХ рдореЗрдВ рдмрд╛рдВрдзрддрд╛ рд╣реИред onMessage рдмреИрдХрдПрдВрдб рд╕реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛, рдЕрдм рдЗрд╕реЗ рдХрдВрд╕реЛрд▓ рдкрд░ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХрд░рдиреЗ рджреЗрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг рд▓рд╛рд▓ рд╣реИред рдпрд╣ GameSparks JS SDK рдиреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдВрджрд░реНрдн рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдЪрд▓реЛ рдЙрд╕реЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреЛрдб рдЦрд╕рдЦрд╕ тАЛтАЛрдкрд░ рдХреНрд░реЛрдо рд╣реИред рд╣рдо gameparks.js рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 if (typeof module === 'object' && module.exports) { // node.js var navigator = { userAgent: "Chrome/73.0.3683.103", vendor: "Google Inc.", platform: "Mac" }; var window = {}; window.setInterval = setInterval; // <<<   KeepAlive  } 

рдкрд░реАрдХреНрд╖рдг рд╣рд░рд╛ рд╣реЛ рдЧрдпрд╛, рдЖрдЧреЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЦреЗрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реА рддреБрд░рдВрдд рдЦреЗрд▓рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрдмрдХрд┐ рдореИрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдХреА рд╕рдВрдЪрдп рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╛ рддреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рдпрд╛ рдХрд┐рд╕реА рд░реИрдВрдбрдорд▓реА рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдЗрдб рдЖрдЗрдбреЗрдВрдЯрд┐рдлрд╛рдпрд░ рд╕реЗ рдмрдВрдз рдЬрд╛рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреА рдкрд░реАрдХреНрд╖рд╛ рд╣реЛрдЧреА:

 it("should auth two anonymous players", async function () { var gameClient1 = new GameClientModule.GameClient(); expect(gameClient1.playerId).is.undefined; var gameClient2 = new GameClientModule.GameClient(); expect(gameClient2.playerId).is.undefined; await gameClient1.connect(); await gameClient1.authWithCustomId("111"); expect(gameClient1.playerId).is.equals("5b5f5614031f5bc44d59b6a9"); await gameClient2.connect(); await gameClient2.authWithCustomId("222"); expect(gameClient2.playerId).is.equals("5b5f6ddb031f5bc44d59b741"); }); 

рдореИрдВрдиреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2 рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдкрд░ рддреБрд░рдВрдд рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдмреИрдХрдПрдВрдб рдкрд░ рдЕрдкрдиреА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдЬрд┐рд╕рдореЗрдВ рдЖрдк GameSparks рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрд╛рд╣рд░реА рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдиреЗ рд╡рд╛рдВрдЫрд┐рдд рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд┐рдпрд╛ рд╣реИред рдЧреЗрдорд╕реНрдкреАрдХрд░реНрд╕ рдкреЛрд░реНрдЯрд▓ рдкрд░ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХреА рдЧрдИ рдкреНрд░реЛрдлрд╛рдЗрд▓ред

GameClient рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП:

 this.playerId = undefined; this.authWithCustomId = function (customId) { return new Promise(resolve => { var requestData = { "deviceId": customId , "deviceOS": "NodeJS" } sendRequest("DeviceAuthenticationRequest", requestData) .then(response => { if (response.userId) { this.playerId = response.userId; resolve(); } else { reject(new Error(response)); } }) .catch(error => { console.error(error); }); }); } function sendRequest(requestType, requestData) { return new Promise(function (resolve) { gamesparks.sendWithData(requestType, requestData, (response) => resolve(response)); }); } 

рдбрд┐рд╡рд╛рдЗрд╕рд╡рд╛рдпреБрдереЗрдиреЗрд░реЗрд╕реЗрдХреНрд╕реНрдЯ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ рднреЗрдЬрдиреЗ, рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкрд╣рдЪрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИред рддреБрд░рдВрдд, рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдореЗрдВ, рд╕рд╣рд╛рдпрдХ рдиреЗ рдПрдХ рдкреНрд░реЛрдорд┐рд╕ рдореЗрдВ рдПрдХ рдЖрд╡рд░рдг рдХреЗ рд╕рд╛рде рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ рдХреЛ рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ред

рджреЛрдиреЛрдВ рдкрд░реАрдХреНрд╖рдг рд╣рд░реЗ рд╣реИрдВ, рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдФрд░ рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░ рдХреЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИред
GameClient рдореЗрдВ, рдореИрдВрдиреЗ рдПрдХ рддрд░реАрдХрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИ рдЬреЛ рд╕рд░реНрд╡рд░ (рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ) рдФрд░ рдХрдиреЗрдХреНрдЯрдЕрдВрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИред рдХрдиреЗрдХреНрдЯ рдФрд░ рдСрд░реНрдЯрд╡рд┐рдердХрд╕реНрдЯрдордЗрдбреА рдХреЗ рд╕рдВрдпреЛрдЬрди рдХрд╛ рдирд╛рдоред рдПрдХ рдУрд░, connectAsAnonymous рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ ... рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпрд╣ рдкреНрд░рдпреЛрдЬреНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╡рд┐рдзрд┐ рд╕рд╣рд╛рдпрдХ рдЬреЛрдбрд╝рд╛ рдЬреЛ рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрдорд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рд╕рд░рдгреА рдореЗрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рдореЛрдЪрд╛ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╕рд░рдгреА рдореЗрдВ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рд░рдирд┐рдВрдЧ рдЯреЗрд╕реНрдЯ рдХреЗ рдмрд╛рдж, рдореИрдВ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рд╕рд░рдгреА рдХреЛ рд╕рд╛рдл рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рдЕрднреА рддрдХ рдХреЛрдб рдореЗрдВ "рдореИрдЬрд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕" рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд╕реНрдЯрдо рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╢рдмреНрджрдХреЛрд╢ рдЬреЛрдбрд╝рд╛ред

рдЕрдВрддрд┐рдо рдХреЛрдб рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд▓рд┐рдВрдХ рдЬрд┐рд╕реЗ рдореИрдВ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рджреВрдВрдЧрд╛ред

рдЦреЗрд▓ рдЦреЛрдЬ рд╕рдВрдЧрдарди (рдордВрдЧрдиреА)


рдореИрдВ рдореИрдЪрдореЗрдХрд┐рдВрдЧ рд╕реБрд╡рд┐рдзрд╛ рд╢реБрд░реВ рдХрд░реВрдВрдЧрд╛, рдЬреЛ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЬрдм рд╣рдо рдЧреЗрдо рдореЗрдВ "рдЧреЗрдо рдЦреЛрдЬреЗрдВ" рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╡рд╣ рдпрд╛ рддреЛ рдкреНрд░рддрд┐рджреНрд╡рдВрджреНрд╡рд┐рдпреЛрдВ, рдпрд╛ рдЯреАрдордореЗрдЯреНрд╕, рдпрд╛ рджреЛрдиреЛрдВ (рдЦреЗрд▓ рдХреЗ рдЖрдзрд╛рд░ рдкрд░) рдХреЛ рдЪреБрдирддреА рд╣реИред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдРрд╕реА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╕рдВрдХреЗрддрдХ MMR (рдореИрдЪ рдореЗрдХрд┐рдВрдЧ рдЕрдиреБрдкрд╛рдд) рд╣реЛрддрд╛ рд╣реИ - рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реЗрдЯрд┐рдВрдЧ, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╕рдорд╛рди рд╕реНрддрд░ рдХреЗ рдХреМрд╢рд▓ рдХреЗ рд╕рд╛рде рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдЖрдпрд╛:

 it("should find match", async function () { var gameClient1 = newGameClient(); var gameClient2 = newGameClient(); var gameClient3 = newGameClient(); await gameClient1.connectAsAnonymous(playerCustomIds.id1); await gameClient2.connectAsAnonymous(playerCustomIds.id2); await gameClient3.connectAsAnonymous(playerCustomIds.id3); await gameClient1.findStandardMatch(); expect(gameClient1.state) .is.equals(GameClientModule.GameClientStates.MATCHMAKING); await gameClient2.findStandardMatch(); expect(gameClient2.state) .is.equals(GameClientModule.GameClientStates.MATCHMAKING); await gameClient3.findStandardMatch(); expect(gameClient3.state) .is.equals(GameClientModule.GameClientStates.MATCHMAKING); await sleep(3000); expect(gameClient1.state) .is.equals(GameClientModule.GameClientStates.CHALLENGE); expect(gameClient1.challenge, "challenge").is.not.undefined; expect(gameClient1.challenge.challengeId).is.not.undefined; expect(gameClient2.state) .is.equals(GameClientModule.GameClientStates.CHALLENGE); expect(gameClient2.challenge.challengeId) .is.equals(gameClient1.challenge.challengeId); expect(gameClient3.state) .is.equals(GameClientModule.GameClientStates.CHALLENGE); expect(gameClient3.challenge.challengeId) .is.equals(gameClient1.challenge.challengeId); }); 

рддреАрди рдЧреНрд░рд╛рд╣рдХ рдЦреЗрд▓ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВ (рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреБрдЫ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдиреНрдпреВрдирддрдо рд╣реИ) рдФрд░ рдЦреЗрд▓ рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рд╣реИрдВред рд╕рд░реНрд╡рд░ рдкрд░ рддреАрд╕рд░реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рдЦреЗрд▓ рд╕рддреНрд░ рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЗрд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЙрд╕реА рд╕рдордп, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ, рдФрд░ рд╕рдорд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рддреНрд░ рдХрд╛ рд╕рдВрджрд░реНрдн рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдмреИрдХрдПрдВрдб рддреИрдпрд╛рд░ рдХрд░реЗрдВред GameSparks рдореЗрдВ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддреИрдпрд╛рд░-рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдг рд╣реИ, рдкрде рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ "рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛-> рдорд┐рд▓рд╛рди"ред рдореИрдВ рдПрдХ рдирдпрд╛ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реВрдВред рдорд╛рдирдХ рдорд╛рдкрджрдВрдбреЛрдВ рдЬреИрд╕реЗ рдХрд┐ рдХреЛрдб, рдирд╛рдо рдФрд░ рдореИрдЪ рдХрд╛ рд╡рд┐рд╡рд░рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрд╕реНрдЯрдо рдЧреЗрдо рдореЛрдб рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдЗрдВрдЧрд┐рдд рдХреА рдЧрдИ рд╣реИред рдореИрдВ рдмрдирд╛рдП рдЧрдП рдореИрдЪ рдХреЗ рдХреЛрдб "StandardMatch" рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реВрдВрдЧрд╛ рдФрд░ 2 рд╕реЗ 3 рддрдХ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреВрдВрдЧрд╛ред

рдЕрдм рдЖрдкрдХреЛ "рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реАрдорд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рд╕рдордп, рдкреНрд░рдХрд╛рд░ (рдкреВрд░реНрдг, рд╕рд╛рдкреЗрдХреНрд╖ рдФрд░ рдкреНрд░рддрд┐рд╢рдд рдореЗрдВ) рдФрд░ рд╕реАрдорд╛рдПрдВ рдЗрдВрдЧрд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВред



рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ 19 рдХрд╛ MMR рд╡рд╛рд▓рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдЦреЛрдЬ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдкрд╣рд▓реЗ 10 рд╕реЗрдХрдВрдб рдореЗрдВ 19 рд╕реЗ 21 рдХреЗ MMR рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рддреЛ рджреВрд╕рд░реА рдЦреЛрдЬ рд╕реАрдорд╛ рд╕рдХреНрд░рд┐рдп рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдЕрдЧрд▓реЗ 20 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рд╕реАрдорд╛ рдХреЛ 16 рд╕реЗ рдмрдврд╝рд╛ рджреЗрддреА рд╣реИ ( 19-3) рд╕реЗ 22 (19 + 3)ред рдЗрд╕рдХреЗ рдмрд╛рдж, рддреАрд╕рд░реА рд╕реАрдорд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рднреАрддрд░ 14 (19-25%) рд╕реЗ 29 (19 + 50%) рддрдХ рдХреА рд╕реАрдорд╛ рдореЗрдВ 30 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЬ рдХреА рдЬрд╛рдПрдЧреА, рдЬрдмрдХрд┐ рдореИрдЪ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЕрдЧрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдиреНрдпреВрдирддрдо рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдорд╛ рд╣реЛ рдЧрдИ рд╣реИ (рдиреНрдпреВрдирддрдо рдЕрдВрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ) ред рдЦрд┐рд▓рд╛рдбрд╝реА)ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рддрдВрддреНрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрди рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ MMR рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдореИрдЪ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдореИрдВ рдЗрди рд╡рд┐рд╡рд░рдгреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдЧрд╛ рдЬрдм рд╕рдордп рдЦреЗрд▓ рдХреА рд░реЗрдЯрд┐рдВрдЧ рдореЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ (рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдирд╣реАрдВ)ред рдорд╛рдирдХ рдЧреЗрдо рдореЛрдб рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ рдореИрдВ рдЕрднреА рддрдХ рдПрдордПрдордЖрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╕реАрдорд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЬрдм рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЪреБрдирд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдПрдХ рдЦреЗрд▓ рд╕рддреНрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЗрд╕рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред GameSparks рдореЗрдВ, рдЦреЗрд▓ рд╕рддреНрд░ рд╕рдорд╛рд░реЛрд╣ "рдЪреИрд▓реЗрдВрдЬ" рд╣реИред рдЗрд╕ рдЗрдХрд╛рдИ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ, рдЦреЗрд▓ рд╕рддреНрд░ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреА рдЪреБрдиреМрддреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-> рдЪреБрдиреМрддрд┐рдпрд╛рдВ" рдкрде рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдореИрдВ "StandardChallenge" рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЦреЗрд▓ рд╕рддреНрд░ рдЯрд░реНрди рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рдд рдЦрд┐рд▓рд╛рдбрд╝реА рдПрдХ рд╕рд╛рде рдирд╣реАрдВ, рдХрд░рд╡рдЯ рд▓реЗрддреЗ рд╣реИрдВред рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪрд╛рд▓реЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдЧреЗрдо рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдореИрдЪрдореЗрдХрд┐рдВрдЧ рд░реЗрдВрд╕ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд▓реЗрдпрд░ рдХрд╛ MMR рдорд╛рди рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдпрд╣ рдЧреЗрдо рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рдзреЛрдЦрд╛рдзрдбрд╝реА рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдХрд┐рд╕реА рднреА рдПрдордПрдордЖрд░ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдПрдХ рдмреИрдХреЗрдВрдб рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИред рдЧреЗрдо рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рдШрдЯрдирд╛ рдмрдирд╛рддрд╛ рд╣реВрдВред рдпрд╣ "рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди-> рдЗрд╡реЗрдВрдЯреНрд╕" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдИрд╡реЗрдВрдЯ FindStandardMatch рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред рдЕрдм рдЖрдкрдХреЛ рдЗрд╕ рдШрдЯрдирд╛ рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрд▓рд╛рдЙрдб рдХреЛрдб рдХреЗ "рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛-> рдХреНрд▓рд╛рдЙрдб рдХреЛрдб" рдЕрдиреБрднрд╛рдЧ рдкрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ "рдЗрд╡реЗрдВрдЯ" рдЕрдиреБрднрд╛рдЧ рдореЗрдВ FindStandardMatch рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИрдВрдбрд▓рд░ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ:

 var matchRequest = new SparkRequests.MatchmakingRequest(); matchRequest.matchShortCode = "StandardMatch"; matchRequest.skill = 0; matchRequest.Execute(); 

рдпрд╣ рдХреЛрдб StandardMatch рдореЗрдВ 0 рдХреЗ MMR рдХреЗ рд╕рд╛рде рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рдирдХ рдЦреЗрд▓ рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрдВрдЬреАрдХреГрдд рдХреЛрдИ рднреА рдЦрд┐рд▓рд╛рдбрд╝реА рдЦреЗрд▓ рд╕рддреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред рд░реЗрдЯрд┐рдВрдЧ рдореИрдЪ рдХреЗ рдЪрдпрди рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореИрдЪ рдХрд╛ MMR рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд┐рд▓рд╛рдбрд╝реА рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рдирд┐рдЬреА рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкреАрд▓ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИред

рдЬрдм рдЦреЗрд▓ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИрдВ, рддреЛ GameSparks рд╕рднреА рдЪрдпрдирд┐рдд рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдПрдХ MatchFoundMessage рд╕рдВрджреЗрд╢ рднреЗрдЬреЗрдЧрд╛ред рдпрд╣рд╛рдВ рдЖрдк рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЦреЗрд▓ рд╕рддреНрд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢-> MatchFoundMessage" рдореЗрдВ рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

 var matchData = Spark.getData(); if (Spark.getPlayer().getPlayerId() != matchData.participants[0].id) { Spark.exit(); } var challengeCode = ""; var accessType = "PRIVATE"; switch (matchData.matchShortCode) { case "StandardMatch": challengeCode = "StandardChallenge"; break; default: Spark.exit(); } var createChallengeRequest = new SparkRequests.CreateChallengeRequest(); createChallengeRequest.challengeShortCode = challengeCode; createChallengeRequest.accessType = accessType; var tomorrow = new Date(); tomorrow.setDate(tomorrow.getDate() + 1); createChallengeRequest.endTime = tomorrow.toISOString(); createChallengeRequest.usersToChallenge = []; var participants = matchData.participants; var numberOfPlayers = participants.length; for (var i = 1; i < numberOfPlayers; i++) { createChallengeRequest.usersToChallenge.push(participants[i].id) } createChallengeRequest.Send(); 

рдХреЛрдб рдкрд╣рд▓реЗ рдЬрд╛рдБрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдкрд╣рд▓рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИред рдЕрдЧрд▓рд╛, рдкрд╣рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдУрд░ рд╕реЗ, StandardChallenge рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╢реЗрд╖ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдордВрддреНрд░рд┐рдд рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЪреИрд▓реЗрдВрдЬ рдЖрдИрд╕рдореИрд╕реЗрдЬ рд╕рдВрджреЗрд╢ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдЖрдк рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдВрд╢реЛрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдЧреЗрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХрд╛ рдирд┐рдордВрддреНрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ AcceptChallengeRequest рдХреЛ рднреЗрдЬрдХрд░ рдкреБрд╖реНрдЯрд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдпрд╛ рдЖрдк рд╕рд╛рдЗрд▓реЗрдВрдЯ рдореЛрдб рдореЗрдВ рдЖрдордВрддреНрд░рдг рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ "рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрджреЗрд╢реЛрдВ рдореЗрдВ-> ChallengeIssuedMessage" рдХреЗ рд▓рд┐рдП рдХрд░реВрдВрдЧрд╛, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЬреЛрдбрд╝реВрдВрдЧрд╛:

 var challangeData = Spark.getData(); var acceptChallengeRequest = new SparkRequests.AcceptChallengeRequest(); acceptChallengeRequest.challengeInstanceId = challangeData.challenge.challengeId; acceptChallengeRequest.message = "Joining"; acceptChallengeRequest.SendAs(Spark.getPlayer().getPlayerId()); 

рдЕрдЧрд▓рд╛ рдЪрд░рдг, рдЧреЗрдорд╕реНрдкрд╛рд░реНрдХреНрд╕ рдиреЗ рдЪреИрд▓реЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯрдореИрд╕реЗрдЬ рдЗрд╡реЗрдВрдЯ рдХреЛ рднреЗрдЬрд╛ред рдЗрд╕ рдИрд╡реЗрдВрдЯ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реИрдВрдбрд▓рд░ ("рдЧреНрд▓реЛрдмрд▓ рдореИрд╕реЗрдЬ-> рдЪреИрд▓реЗрдВрдЬрд╕реНрдЯрд╛рд░реНрдЯрдореИрд╕реЗрдЬ") рдЧреЗрдо рд╕реЗрд╢рди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд░реНрд╢ рд╕реНрдерд╛рди рд╣реИ, рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдореБрдЭреЗ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЧреНрд░рд╛рд╣рдХ рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди:

 exports.GameClientStates = { IDLE: "Idle", MATCHMAKING: "Matchmaking", CHALLENGE: "Challenge" } exports.GameClient = function () { this.state = exports.GameClientStates.IDLE; this.challenge = undefined; function onMessage(message) { switch (message["@class"]) { case ".MatchNotFoundMessage": this.state = exports.GameClientStates.IDLE; break; case ".ChallengeStartedMessage": this.state = exports.GameClientStates.CHALLENGE; this.challenge = message.challenge; break; default: console.log("GAME onMessage: " + JSON.stringify(message)); } } onMessage = onMessage.bind(this); this.findStandardMatch = function () { var eventData = { eventKey: "FindStandardMatch" } return new Promise(resolve => { sendRequest("LogEventRequest", eventData) .then(response => { if (!response.error) { this.state = exports.GameClientStates.MATCHMAKING; resolve(); } else { console.error(response.error); reject(new Error(response)); } }) .catch(error => { console.error(error); reject(new Error(error)); }); }); } } 

рдкрд░реАрдХреНрд╖рдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рджрд┐рдЦрд╛рдИ рджрд┐рдП - рд░рд╛рдЬреНрдп рдФрд░ рдЪреБрдиреМрддреАред рдСрдирдореИрд╕реЗрдЬ рдкрджреНрдзрддрд┐ рдиреЗ рдПрдХ рд╕рд╛рд░реНрдердХ рд░реВрдк рдкреНрд░рд╛рдкреНрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ рдФрд░ рдЕрдм рдПрдХ рдЧреЗрдо рд╕рддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЧреЗрдо рдЪреБрдирдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред FindStandardMatch рд╡рд┐рдзрд┐ рдХреЛ рднреА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдмреИрдХрдПрдВрдб рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рдкрд░реАрдХреНрд╖рдг рд╣рд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рд╕рдВрддреБрд╖реНрдЯ рд╣реВрдВ, рдЦреЗрд▓ рдХреЗ рдЪрдпрди рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рд╣реИред

рдЖрдЧреЗ рдХреНрдпрд╛ рд╣реИ?


рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рдореИрдВ рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░, рдЧреЗрдо рд╕реЗрд╢рди рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдореВрд╡реНрд╕ рддрдХ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдБрдЧрд╛ред рдореИрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реВрдВрдЧрд╛ - рдЧреЗрдо рдХреА рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдЧреЗрдо рд╕рддреНрд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдФрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдгред рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреЛ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░реАрдХреНрд╖рдг - рдЗрдХрд╛рдИ рдФрд░ рдПрдХреАрдХрд░рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдореИрдВ рд▓реЗрдЦреЛрдВ рдореЗрдВ рдмрдВрдзреЗ рднрд╛рдЧреЛрдВ рдореЗрдВ рдЧрд┐рдЯрдм рдкрд░ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░реВрдВрдЧрд╛ ред

рдПрдХ рд╕рдордЭ рд╣реИ рдХрд┐ рдПрдХ рдЧреЗрдо рдмрдирд╛рдиреЗ рдореЗрдВ рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрддреНрд╕рд╛рд╣реА рд▓реЛрдЧреЛрдВ рдХреА рд╣рдорд╛рд░реА рдЯреАрдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХрд▓рд╛рдХрд╛рд░ / рдбрд┐рдЬрд╛рдЗрдирд░ рдЬрд▓реНрдж рд╣реА рдЬреБрдбрд╝реЗрдВрдЧреЗред рдФрд░ рдЧреБрд░реБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреВрдирд┐рдЯреА 3 рдбреА, рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдореЛрд░реНрдЪрд╛ рдмрдирд╛рдПрдЧрд╛, рдкрд╛рдпрд╛ рдЬрд╛рдирд╛ рдмрд╛рдХреА рд╣реИред

Source: https://habr.com/ru/post/hi451458/


All Articles