Node.js рдкрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдиреЗрдЯрд╡рд░реНрдХ рд╢реВрдЯрд░

рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдЧреЗрдо рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЬрдЯрд┐рд▓ рд╣реИ: рдЙрдирдХреА рдореЗрдЬрдмрд╛рдиреА рдорд╣рдВрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рд╕рдВрд░рдЪрдирд╛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рдореИрдВ рдЖрдЦрд┐рд░реА рдмрд╛рдзрд╛ рдХреЛ рджреВрд░ рдХрд░рдиреЗ рдореЗрдВ рдЖрдкрдХреА рдорджрдж рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

рдпрд╣ рд▓реЗрдЦ рдЙрди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ рдЧреЗрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХрднреА рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдСрдирд▓рд╛рдЗрди рдЧреЗрдо рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдЕрдкрдиреЗ рдЧреЗрдо рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдиреЗрдЯрд╡рд░реНрдХ рдШрдЯрдХреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдорд╣рд╛рд░рдд рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рдХреБрдЫ рдФрд░ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ! рдпрд╣рд╛рдБ рд╣рдо рдХреНрдпрд╛ рдмрдирд╛рдПрдВрдЧреЗ:


рдЖрдк рдпрд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдЦреЗрд▓ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ ! рдЬрдм рдЖрдк рдбрдмреНрд▓реНрдпреВ рдпрд╛ "рдЕрдк" рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЬрд╣рд╛рдЬ рдХрд░реНрд╕рд░ рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рддрд╛ рд╣реИ; рдЬрдм рдЖрдк рдорд╛рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЧреЛрд▓реА рдорд╛рд░рддрд╛ рд╣реИред (рдпрджрд┐ рдХреЛрдИ рдСрдирд▓рд╛рдЗрди рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рджреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓реЗрдВ, рдпрд╛ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдлреЛрди рдкрд░)ред рдпрджрд┐ рдЖрдк рдЦреЗрд▓ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкреВрд░рд╛ рд╕реНрд░реЛрдд рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

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

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

рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

1. рддреИрдпрд╛рд░реА


рдореИрдВрдиреЗ Glitch.com рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЯрд┐рдкреНрд╕: рдЖрдк рд╢реЛ рдмрдЯрди (рдКрдкрд░реА рдмрд╛рдПрдБ) рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд▓реЙрдиреНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


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


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдк рдПрдХ рдЕрдирд╛рдо рдЦрд╛рддреЗ рдХреЗ рддрд╣рдд рдЖрд╡реЗрджрди рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк (рд╢реАрд░реНрд╖ рджрд╛рдПрдВ) рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдм, рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрд╕ рдЦреЗрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдПрдХ рдорд▓реНрдЯреАрдкреНрд▓реЗрдпрд░ рдореЛрдб рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред Index.html рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред рдЗрд╕рдХреЗ рддреАрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдп рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП: preload (рд▓рд╛рдЗрди 99), create (рд▓рд╛рдЗрди 115) рдФрд░ GameLoop (рд▓рд╛рдЗрди 142), рд╕рд╛рде рд╣реА рдкреНрд▓реЗрдпрд░ рдСрдмреНрдЬреЗрдХреНрдЯ (рд▓рд╛рдЗрди 35)ред

рдпрджрд┐ рдЖрдк рдЕрднреНрдпрд╛рд╕ рдХрд░рдХреЗ рд╕реАрдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдХреЗ рдЦреЗрд▓ рдХреЗ рдХрд╛рдо рдХреЛ рд╕рдордЭрдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ:

  • рджреБрдирд┐рдпрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдмрдврд╝рд╛рдПрдВ (рдкрдВрдХреНрддрд┐ 29) - рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрди-рдЧреЗрдо рдХреА рджреБрдирд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реНрд╡ рдЖрдХрд╛рд░ рд╣реИ рдФрд░ рдкреГрд╖реНрда рдХреЗ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд┐рдбрд╝рдХреА рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ ред
  • "рд╕реНрдкреЗрд╕" (рд▓рд╛рдЗрди 53) рдХреА рдорджрдж рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рдирд╛ рд╕рдВрднрд╡ рдмрдирд╛рдПрдВ ред
  • рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдЬрд╣рд╛рдЬ рдкреНрд░рдХрд╛рд░ (рд▓рд╛рдЗрди 129) рдмрджрд▓реЗрдВ ред
  • рдЧреЛрд▓реЗ рдХреА рдЧрддрд┐ рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдВ (рд▓рд╛рдЗрди 155)ред

рд╕реЙрдХреЗрдЯ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ


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

рдкрд╣рд▓реА рдЪреАрдЬрд╝ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рд╡рд╣ рд╣реИ рд╕реЙрдХреЗрдЯ.рдЖрдИрдУ рдореЙрдбреНрдпреВрд▓ред рдЧреНрд▓рд┐рдЪ рдореЗрдВ, рдпрд╣ package.json рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдХрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдпрд╛ рддреЛ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдРрдб рдкреИрдХреЗрдЬ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ "socket.io" рджрд░реНрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред


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


рдЕрдм рдЪрд▓рд┐рдП server.js рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЛрдб рд╕реНрдерд┐рдд рд╣реИред рдЕрдм рддрдХ, рд╣рдорд╛рд░реЗ HTML рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рд╣реИрдВред рд╕реЙрдХреЗрдЯ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ:

 var io = require('socket.io')(http); //     http 

рдЕрдм рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ Socket.io рдХреЛ рднреА рдЗрдиреЗрдмрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рддреЛ рдЪрд▓рд┐рдП index.html рдкрд░ рд╡рд╛рдкрд╕ рдЖрддреЗ рд╣реИрдВ рдФрд░ <head> b <head> рдЕрдВрджрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:

 <!--    Socket.io --> <script src="/socket.io/socket.io.js"></script> 

рдиреЛрдЯ: Socket.io рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рдкрде рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд░реЗрдЦрд╛ рддрдм рднреА рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЬрдм рдЖрдкрдХреЗ рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдореЗрдВ рдХреЛрдИ /socket.io/ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рди рд╣реЛред

рдЕрдм Socket.io рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИ рдФрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ!

2. рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рдорд╛рдиреНрдпрддрд╛ рдФрд░ рд╕реНрдкреЙрдЗрдВрдЧ


рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрджрдо рд╕рд░реНрд╡рд░ рдкрд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдирдП рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред

рд╕рд░реНрд╡рд░ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛


рдЗрд╕ рдХреЛрдб рдХреЛ server.js рдХреЗ рдиреАрдЪреЗ рдЬреЛрдбрд╝реЗрдВ:

 //  Socket.io    io.on('connection', function(socket){ console.log("New client has connected with id:",socket.id); }) 

рддреЛ рд╣рдо рд╕реЙрдХреЗрдЯ рд╕реЗ рдкреВрдЫрддреЗ рд╣реИрдВред рд╕рднреА connection рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ socket рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ socket.id рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИред

рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ ( index.html ) рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯреЗрдВ рдФрд░ рдЗрд╕ рд▓рд╛рдЗрди рдХреЛ рдХрд╣реАрдВ рдмрдирд╛рдПрдБ рдлрдВрдХреНрд╢рди рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:

 var socket = io(); //    'connection'   

рдпрджрд┐ рдЖрдк рдЧреЗрдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ ( рд▓реЙрдЧреНрд╕ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ), рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕рд░реНрд╡рд░ рдиреЗ рдЗрд╕ рдХрдиреЗрдХреНрд╢рди рдШрдЯрдирд╛ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ!

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

connection рдИрд╡реЗрдВрдЯ рд╕реЙрдХреЗрдЯ.io рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдПрдХ рдЗрдирд▓рд╛рдЗрди рдШрдЯрдирд╛ рдереАред рд╣рдо рдХрд┐рд╕реА рднреА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрдкрдиреЗ рдИрд╡реЗрдВрдЯ рдХреЛ new-player рдирд╛рдо рджреВрдВрдЧрд╛, рдФрд░ рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЧреНрд░рд╛рд╣рдХ рдЬреИрд╕реЗ рд╣реА рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рднреЗрдЬреЗрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 //  Socket.io    io.on('connection', function(socket){ console.log("New client has connected with id:",socket.id); socket.on('new-player',function(state_data){ //   new-player    console.log("New player has state:",state_data); }) }) 

рдпрджрд┐ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЬрдм рддрдХ рдЖрдк рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдЕрднреА рддрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЗрд╕ new-player рдЗрд╡реЗрдВрдЯ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЪрд▓реЛ рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдпрд╣ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ, рдФрд░ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред рдирдП рдЬреБрдбрд╝рдиреЗ рд╡рд╛рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рд╕реНрдерд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?

рд╣рдо рдЕрдиреНрдп рд╕рднреА рдЬреБрдбрд╝реЗ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдкрддрд╛ рдЪрд▓реЗ рдХрд┐ рдПрдХ рдирдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рд╕рд╛рдордиреЗ рдЖрдпрд╛ рд╣реИред Socket.io рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдХрд╛рд░реНрдп рд╣реИ:

 socket.broadcast.emit('create-player',state_data); 

рдЬрдм socket.emit рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ socket.emit рд╕рдВрджреЗрд╢ рдХреЗрд╡рд▓ рдЗрд╕ рдПрдХрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрдм socket.broadcast.emit рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ socket.broadcast.emit рдпрд╣ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд╡рд╛рдп рдЬрд┐рд╕рдХреЗ рд╕реЙрдХреЗрдЯ рдкрд░ рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рдерд╛ред

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

рд╕рд░реНрд╡рд░ рдХреЛрдб рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 //  Socket.io    io.on('connection', function(socket){ console.log("New client has connected with id:",socket.id); socket.on('new-player',function(state_data){ //   new-player    console.log("New player has state:",state_data); socket.broadcast.emit('create-player',state_data); }) }) 

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

рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реНрдкреЙрдирд┐рдВрдЧ


рдЕрдм, рдЗрд╕ рдЪрдХреНрд░ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рджреЛ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ:

  1. рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рд╕реНрдерд╛рди рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред
  2. рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдкреНрд▓реЗрдпрд░ рдмрдирд╛рдиреЗ рдФрд░ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП create-player рдмрдирд╛рдПрдВред

рдХреНрд░рд┐рдПрдЯ рдлрдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рдкреНрд▓реЗрдпрд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рд▓рдЧрднрдЧ рд▓рд╛рдЗрди 135 рдкрд░), рд╣рдо рдПрдХ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд╛рди рдбреЗрдЯрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

 socket.emit('new-player',{x:player.sprite.x,y:player.sprite.y,angle:player.sprite.rotation}) 

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

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ ред рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рд╕рдВрджреЗрд╢ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 New player has state: { x: 728.8180247836519, y: 261.9979387913289, angle: 0 } 

рдЕрдм рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдПрдХ рдирдП рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕реВрдЪрдирд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЙрд╕рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ!

рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдирдпрд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рд╕реБрдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рд╕рдВрджреЗрд╢ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

 socket.on('create-player',function(state){ // CreateShip -      ,     CreateShip(1,state.x,state.y,state.angle) }) 

рдЕрдм рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ ред рдЦреЗрд▓ рдХреЗ рд╕рд╛рде рджреЛ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦреЛрд▓реЗрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рджреЛ рдЧреНрд░рд╛рд╣рдХ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд╣рд▓реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рдкрд╛рд╕ рджреЛ рдЬрд╣рд╛рдЬ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╣реИред

рдХрд╛рд░реНрдп: рдХреНрдпрд╛ рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реБрдЖ? рдпрд╛ рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ / рд╕рд░реНрд╡рд░ рддрд░реНрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ! рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ: рдЬрдм рдкрд╣рд▓рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрдиреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╕рд░реНрд╡рд░ рдЕрдиреНрдп рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдПрдХ create-player рдЗрд╡реЗрдВрдЯ рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЕрднреА рддрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд░реНрд╡рд░ рдлрд┐рд░ рд╕реЗ рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдкрд╣рд▓рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд╣рд▓реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдпрд╛рдж рдХрд░рддрд╛ рд╣реИред

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

рдЦреЗрд▓ рд╕реНрдерд┐рддрд┐ рд╕рд┐рдВрдХ рдЪреЗрддрд╛рд╡рдиреА


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

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

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

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

рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реВрдВрдЧрд╛:

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

рдЖрдк рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпреЗ рдЪрд░рдг рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИрдВ ( рдореЗрд░реА рд╕реБрд╡рд┐рдзрд╛ рдЯрд┐рдк рдпрд╣рд╛рдВ рдХрд╛рдо рдЖ рд╕рдХрддреА рд╣реИ)ред рдпрд╣рд╛рдБ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

 //  Socket.io    // 1 -      / var players = {}; io.on('connection', function(socket){ console.log("New client has connected with id:",socket.id); socket.on('new-player',function(state_data){ //   new-player    console.log("New player has state:",state_data); // 2 -      players[socket.id] = state_data; //    io.emit('update-players',players); }) socket.on('disconnect',function(){ // 3-       delete players[socket.id]; //    }) }) 

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

рдЗрд╕ рддрд░рд╣ рд╕реЗ рдореИрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЗрд╕ рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реВрдВ:

 //     // : -         other_players = {} socket.on('update-players',function(players_data){ var players_found = {}; //        for(var id in players_data){ //      if(other_players[id] == undefined && id != socket.id){ // ,      var data = players_data[id]; var p = CreateShip(1,data.x,data.y,data.angle); other_players[id] = p; console.log("Created new player at (" + data.x + ", " + data.y + ")"); } players_found[id] = true; //     if(id != socket.id){ other_players[id].x = players_data[id].x; //  ,    ,      other_players[id].y = players_data[id].y; other_players[id].rotation = players_data[id].angle; } } //       for(var id in other_players){ if(!players_found[id]){ other_players[id].destroy(); delete other_players[id]; } } }) 

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

рдЕрдм рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВ ред рдЖрдкрдХреЛ рдХрдИ рдЧреНрд░рд╛рд╣рдХ рдмрдирд╛рдиреЗ рдФрд░ рд╕рд╣реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдЬрд╣рд╛рдЬреЛрдВ рдХреА рд╕рд╣реА рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП!

3. рдЬрд╣рд╛рдЬ рдХреЗ рдкрджреЛрдВ рдХрд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди


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

  1. рд╣рд░ рдмрд╛рд░ рдЬрдм рд╡рд╣ рдХрд┐рд╕реА рдирдИ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдмрд╛рдзреНрдп рдХрд░реЗрдВред
  2. рдЗрд╕ рдЪрд╛рд▓ рд╕рдВрджреЗрд╢ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд┐рдЦрд╛рдПрдВ рдФрд░ players рд╢рдмреНрджрдХреЛрд╢ рдореЗрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдбреЗрдЯрд╛ рддрддреНрд╡ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВред
  3. рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрдбреЗрдЯ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдПрдВред

рдФрд░ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП! рдЕрдм рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреА рдЖрдкрдХреА рдмрд╛рд░реА рд╣реИред

рдпрджрд┐ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреНрд░рдорд┐рдд рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рд╕рдВрдХреЗрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рддреИрдпрд╛рд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рджреЗрдЦреЗрдВ ред

рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ


рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рд╕реАрдзрд╛ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдЦрд┐рд▓рд╛рдбрд╝реА рд╕реЗ рд╣рд░ рдмрд╛рд░ рдПрдХ рдЖрдВрджреЛрд▓рди рдХреА рдШрдЯрдирд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рд╕рднреА рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдЕрдЧрд░ рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рд╣рдореЗрд╢рд╛ рдирд╡реАрдирддрдо рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдорд┐рд▓ рдЬрд╛рддреА рд╣реИ, рд▓реЗрдХрд┐рди рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реИрдХрдбрд╝реЛрдВ рдкреНрд░рддрд┐ рдлреНрд░реЗрдо рддрдХ рдмрдврд╝ рд╕рдХрддреА рд╣реИред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 10 рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдПрдХ рдЖрдВрджреЛрд▓рди рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВред рд╕рд░реНрд╡рд░ рдХреЛ рд╕рднреА 10 рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдкрд░ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рддрд┐ рдлреНрд░реЗрдо 100 рд╕рдВрджреЗрд╢ рд╣реИ!

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

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

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЦреЗрд▓ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд╢реБрд░реБрдЖрддреА рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдкреНрд░реЗрд╖рд┐рдд рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

4. рд╢реЗрд▓ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди


рд╣рдо рд▓рдЧрднрдЧ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ! рдЕрдВрддрд┐рдо рдЧрдВрднреАрд░ рд╣рд┐рд╕реНрд╕рд╛ рдЧреЛрд▓реЗ рдХреЗ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╣рдо рдЗрд╕реЗ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдП рдЧрдП рдЦрд┐рд▓рд╛рдбрд╝реА:

  • рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдореЗрдВ рдЕрдкрдиреЗ рд╕рднреА рдЧреЛрд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рднреЗрдЬрддрд╛ рд╣реИред
  • рд╕рд░реНрд╡рд░ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдзреЛрдЦрд╛ рд╕реБрд░рдХреНрд╖рд╛


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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрдиреНрдп рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ:

  • рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдФрд░ рджрд┐рд╢рд╛ рдХреЗ рд╕рд╛рде рд╢реЙрдЯ рд╢реЗрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдмрдирд╛рддрд╛ рд╣реИред
  • рд╕рд░реНрд╡рд░ рдЧреЛрд▓реЗ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред
  • рд╕рд░реНрд╡рд░ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рд╕рднреА рдЧреЛрд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред
  • рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рд╢реЗрд▓ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рдХреНрд╖реЗрдкреНрдп рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдФрд░ рдЗрд╕рдХреЗ рдЖрдЧреЗ рдХреЗ рдЖрдВрджреЛрд▓рди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдЧреЛрд▓реЗ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ рдЬреЛ рдЕрдиреНрдп рдЧреНрд░рд╛рд╣рдХ рджреЗрдЦрддреЗ рд╣реИрдВред

рдРрд╕реА рдпреЛрдЬрдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдХрд╛рд▓ рджрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╕рдВрджреЗрд╢ рдирд┐рд░реНрдорд╛рдг рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗред рдореИрдВ рдЕрдм рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЦреБрдж рдирд╣реАрдВ рдмрдирд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХрд╛ рдЕрд╕реНрддрд┐рддреНрд╡ рдФрд░ рд╕реНрдерд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм index.html рдореЗрдВ рд╣рдорд╛рд░рд╛ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ рд╢реЙрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

 //   if(game.input.activePointer.leftButton.isDown && !this.shot){ var speed_x = Math.cos(this.sprite.rotation + Math.PI/2) * 20; var speed_y = Math.sin(this.sprite.rotation + Math.PI/2) * 20; /*    ,       ,       var bullet = {}; bullet.speed_x = speed_x; bullet.speed_y = speed_y; bullet.sprite = game.add.sprite(this.sprite.x + bullet.speed_x,this.sprite.y + bullet.speed_y,'bullet'); bullet_array.push(bullet); */ this.shot = true; //  ,     socket.emit('shoot-bullet',{x:this.sprite.x,y:this.sprite.y,angle:this.sprite.rotation,speed_x:speed_x,speed_y:speed_y}) } 

рдЕрдм рд╣рдо рдХреНрд▓рд╛рдЗрдВрдЯ рдореЗрдВ рдЧреЛрд▓реЗ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкреВрд░реЗ рдХреЛрдб рдХреЗ рдЯреБрдХрдбрд╝реЗ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 /*     ,         //   for(var i=0;i<bullet_array.length;i++){ var bullet = bullet_array[i]; bullet.sprite.x += bullet.speed_x; bullet.sprite.y += bullet.speed_y; //  ,       if(bullet.sprite.x < -10 || bullet.sprite.x > WORLD_SIZE.w || bullet.sprite.y < -10 || bullet.sprite.y > WORLD_SIZE.h){ bullet.sprite.destroy(); bullet_array.splice(i,1); i--; } } */ 

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

 //     socket.on('bullets-update',function(server_bullet_array){ //     ,   for(var i=0;i<server_bullet_array.length;i++){ if(bullet_array[i] == undefined){ bullet_array[i] = game.add.sprite(server_bullet_array[i].x,server_bullet_array[i].y,'bullet'); } else { //      ! bullet_array[i].x = server_bullet_array[i].x; bullet_array[i].y = server_bullet_array[i].y; } } //    ,   for(var i=server_bullet_array.length;i<bullet_array.length;i++){ bullet_array[i].destroy(); bullet_array.splice(i,1); i--; } }) 

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

рдЕрдм server.js рдореЗрдВ рд╣рдореЗрдВ рдЧреЛрд▓реЗ рдХреЛ рдЯреНрд░реИрдХ рдФрд░ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдкрд╣рд▓реЗ, рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдХреЗ рд╕рдорд╛рди рдЯреНрд░реИрдХрд┐рдВрдЧ рдЧреЛрд▓реЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рдгреА рдмрдирд╛рдПрдВрдЧреЗ:

 var bullet_array = []; //         

рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рдХреНрд╖реЗрдкреНрдп рд╢реЙрдЯ рдШрдЯрдирд╛ рд╕реБрдирддреЗ рд╣реИрдВ:

 //   shoot-bullet        socket.on('shoot-bullet',function(data){ if(players[socket.id] == undefined) return; var new_bullet = data; data.owner_id = socket.id; //    id  bullet_array.push(new_bullet); }); 

рдЕрдм рд╣рдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60 рдмрд╛рд░ рдЧреЛрд▓реЗ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВ:

 //   60       function ServerGameLoop(){ for(var i=0;i<bullet_array.length;i++){ var bullet = bullet_array[i]; bullet.x += bullet.speed_x; bullet.y += bullet.speed_y; // ,       if(bullet.x < -10 || bullet.x > 1000 || bullet.y < -10 || bullet.y > 1000){ bullet_array.splice(i,1); i--; } } } setInterval(ServerGameLoop, 16); 

рдФрд░ рдЕрдВрддрд┐рдо рдЪрд░рдг рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдВрджрд░ рдЕрдкрдбреЗрдЯ рдЗрд╡реЗрдВрдЯ рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ (рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд▓реВрдк рдХреЗ рд▓рд┐рдП рдмрд╛рд╣рд░):

 //  ,    ,    io.emit("bullets-update",bullet_array); 

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

5. рдЧреЛрд▓реЗ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡


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

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

  • рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд┐рд╕реА рднреА рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред
  • рдЬрдм рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд╣рд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдПрдВ
  • рд╣рд┐рдЯ рдЗрд╡реЗрдВрдЯ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕рд┐рдЦрд╛рдПрдВ рдФрд░ рд╣рд┐рдЯ рд╣реЛрдиреЗ рдкрд░ рдЬрд╣рд╛рдЬ рдХреЛ рдмреНрд▓рд┐рдВрдХ рдХрд░реЗрдВред

рдЖрдк рдЗрд╕ рднрд╛рдЧ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд┐рдЯ рд╣реЛрдиреЗ рдкрд░ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЬрд╣рд╛рдЬ рдХреЛ рддреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдЗрд╕рдХрд╛ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ 0 рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:

 player.sprite.alpha = 0; 

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

 for(var id in other_players){ if(other_players[id].alpha < 1){ other_players[id].alpha += (1 - other_players[id].alpha) * 0.16; } else { other_players[id].alpha = 1; } } 

рдПрдХрдорд╛рддреНрд░ рдХрдард┐рди рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЦрд┐рд▓рд╛рдбрд╝реА рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЧреЛрд▓реЗ рдирд╣реАрдВ рдорд╛рд░рддрд╛ (рдЕрдиреНрдпрдерд╛ рд╡рд╣ рд╣рд░ рдмрд╛рд░ рдЬрдм рд╡рд╣ рдЧреЛрд▓реА рдорд╛рд░рддрд╛ рд╣реИ рддреЛ рдиреБрдХрд╕рд╛рди рдЙрдард╛рдПрдЧрд╛)ред

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

6. рдореЛрд╢рди рд╕реНрдореВрджреА


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

рдЦреЗрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░рд╛ рдХрд╛рдо рд╡рд╣рд╛рдБ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЧреЗрдордкреНрд▓реЗ рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рд░реВрдк рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рдЪрд╛рд╣рд┐рдП:

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

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

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

рд╣рдо рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ рд╢реЗрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдЬрд╛рдирдХрд░ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдХрд┐ рдпрд╣ рд╡рд┐рдзрд┐ рдореМрдЬреВрдж рд╣реИред

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

 //     if(id != socket.id){ other_players[id].target_x = players_data[id].x; //  ,    ,     other_players[id].target_y = players_data[id].y; other_players[id].target_rotation = players_data[id].angle; } 

рдлрд┐рд░, рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рддрд░рдл рднреА), рд╣рдо рд╕рднреА рдЕрдиреНрдп рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд▓реВрдк рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреА рдУрд░ рдзрдХреЗрд▓рддреЗ рд╣реИрдВ:

 //     ,      for(var id in other_players){ var p = other_players[id]; if(p.target_x != undefined){ px += (p.target_x - px) * 0.16; py += (p.target_y - py) * 0.16; //  ,    /  var angle = p.target_rotation; var dir = (angle - p.rotation) / (Math.PI * 2); dir -= Math.round(dir); dir = dir * Math.PI * 2; p.rotation += dir * 0.16; } } 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд░реНрд╡рд░ рд╣рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 30 рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рднреЗрдЬрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА 60 рдПрдлрдкреАрдПрд╕ рдкрд░ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЧреЗрдо рдЕрднреА рднреА рд╕реБрдЪрд╛рд░реВ рджрд┐рдЦрддрд╛ рд╣реИ!

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

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

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

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

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


All Articles