Goblin Wars II.NET - рд╕реНрдХреНрд░реИрдЪ рд╕реЗ C # рдореЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреА рдХрд╣рд╛рдиреА рд╣реИ

рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп Khabrovitesред рдореИрдВ рдЖрдкрдХреЛ рдореЗрд░реА рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ - рд╕реА # рдореЗрдВ рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ 2 рдбреА рд╢реВрдЯрд░ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рджреГрд╢реНрдп рдШрдЯрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ - рд╣рдорд╛рд░реА рд╢рддрд╛рдмреНрджреА рдореЗрдВ рдЖрдкрдХреЛ 2 рдбреА рдЧреЗрдо рдореЗрдВ рдХреЛрдИ рджрд┐рд▓рдЪрд╕реНрдкреА рдирд╣реАрдВ рд╣реЛрдЧреА, рдХреБрдЫ рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рд╕рдорд╛рдзрд╛рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рд░реБрдЪрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рдЦреЗрд▓ рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЦреЗрд▓ рдХреЗ рдкреНрд░рдореБрдЦ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред

рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕



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


рдЧреЗрдордкреНрд▓реЗ


рд╡рд╣ рд╣реИ

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

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдорд╣рд╛рди рдЬрд╛рджреВрдЧрд░ рдмрди рд╕рдХрддреЗ рд╣реИрдВ?

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

рдЧреЛрдмрд▓рд┐рди рд╡рд╛рд░реНрд╕ II.Net



рдореЗрд░реЗ рдкрд╛рд╕ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рджреВрд╕рд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдерд╛ - рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рдПрдХ рддреЗрдЬрд╝ рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдЕрдм рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рди рдХрд┐ рдХреЗрд╡рд▓ 1x1 рдЙрд╕реА рдХреАрдмреЛрд░реНрдб рдкрд░ред рдЬрдм рдореИрдВ рдЖрдЦрд┐рд░рдХрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдкрдХреНрд╡ рд╣реБрдЖ, рддреЛ рдореИрдВрдиреЗ C ++ рдореЗрдВ GWII рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд╡рд╣ рдЕрд▓реНрдлрд╛ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛, рдФрд░ рдХреБрдЫ рдЙрддреНрд╕рд╛рд╣ рдлреАрдХрд╛ рд╣реЛ рдЧрдпрд╛ред рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рдЙрддреНрд╕рд╛рд╣ рд▓реМрдЯ рдЖрдпрд╛, рдФрд░ рдореИрдВрдиреЗ, рдЗрд╕ рдмрд╛рд░, рд╕реА # рдХреЛ рдЪреБрдирддреЗ рд╣реБрдП, рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдореИрдВрдиреЗ рдХреНрдпрд╛ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдереАред рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдпреЛрдЬрдирд╛рдПрдВ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рд╛рдХрд╛рдВрдХреНрд╖реА рдереАрдВ - рдХрдо рд╕реЗ рдХрдо рд╢реАрд░реНрд╖ рджреГрд╢реНрдп рдХреЛ рдПрдХ рдЖрдЗрд╕реЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рдХрдо рд╕рдордп (рдХрд╛рдо, рдЕрдиреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ) рдерд╛, рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рднреА рдПрдХ рдХрд▓рд╛рдХрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдЕрдВрдд рдореЗрдВ рдореИрдВрдиреЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛: рдкреБрд░рд╛рдиреЗ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗ рдЕрдзрд┐рдХрддрдо рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд▓реЗрдВ, рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛, рд╕рд┐рд╡рд╛рдп рдЗрд╕рдХреЗ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рджрд┐рдЦреЗ рдШреГрдгрд┐рдд (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЯрд╛рдЗрд▓реЗрдВ 64x64 рд╣реЛ рдЧрдИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдмрд╕ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ), рдПрдХ рд╢реАрд░реНрд╖ рджреГрд╢реНрдп рдЫреЛрдбрд╝ рджреЗрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдЧреЗрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдЕрдкреНрд░рдпреБрдХреНрдд рд╣рдерд┐рдпрд╛рд░реЛрдВ (рдЬреИрд╕реЗ рдкреБрд░рд╛рдиреЗ рдореЗрдВ рдмрдо рдФрд░ рд╣рдердЧреЛрд▓реЗ) рдХреЛ рд╣рдЯрд╛ рджреЗрдВ, рдЖрджрд┐ред
рддреБрд░рдВрдд рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдкреЗрд╢ рдХрд░реЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ:

рдПрдХ рдирдИ рд░реЛрд╢рдиреА рдореЗрдВ

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



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

рдЦреЗрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛: рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рд▓реЛрдХрди



рдореИрдВ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ - рдЦреЗрд▓ рдореЙрдбреНрдпреВрд▓рд░ рд╣реИред рдмрд╣реБрдд рдореЙрдбреНрдпреВрд▓рд░ рд╣реИред рдЗрд╕ рдЕрд░реНрде рдореЗрдВ рдХрд┐ рдЦреЗрд▓ рдХреЗ рд╕рднреА рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ dll рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЬреЛ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ рд╡реЗ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдлреЗрдВрдХрдирд╛ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдмрджрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред UDP рдиреЗрдЯрд╡рд░реНрдХ, lindgren рдиреЗрдЯрд╡рд░реНрдХ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ? рдХреГрдкрдпрд╛ рдПрдХ dll, Network.dll рд▓реЗрдВ, рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦреЗрдВ, рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдХрд░, INetworkClient, INetworkServerред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рдПрдХрд▓ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрдерд╛рдХрдерд┐рдд рд╢реВрдиреНрдп-рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕реА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдХреЗрд╡рд▓ рдПрдХ рдХрдиреЗрдХреНрд╢рди рд╣реИ - рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реБрджреНрдз рдХреЙрд▓ред рдЙрд╕реА рд╕рдордп, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╡реЗ рдЬрд╝реАрд░реЛ-рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рдеред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рднреА рдпрд╣реА рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреЗ рд╕рд╛рде OpenGL рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП Graphics.dll рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ - рдХрдо рд╕реЗ рдХрдо WinAPI, рдХрдо рд╕реЗ рдХрдо D3Dред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ, рдПрдХ dll рдХреА рдЬрдЧрд╣, рдЖрдк рдПрдХ рдЖрдЗрд╕реЛрдореЗрдЯреНрд░реА рдХреЗ рд╕рд╛рде рд╢реАрд░реНрд╖ рджреГрд╢реНрдп рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдРрд╕реА рдЗрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИред
рдиреАрдЪреЗ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕реНрддрд░ рдирд┐рд░реНрднрд░рддрд╛ рдЧрд╛рд░реНрдл рд╣реИ:


рдЦреЗрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛

GoblinWarsII.exe рдФрд░ Server.exe рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдЙрдирдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╣реЛрддреА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕рднреА рддрд░реНрдХ dllok рдореЗрдВ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рднреА рд╕рд░реНрд╡рд░ рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

class Program { static void Main(string[] args) { var game = new Game(); var networkServer = new UDPGameServer(game, int.Parse(args[2])); var matchParameters = new MatchParameters {Difficulty = DifficultyLevel.Easy, FragLimit=0, TimeLimit = uint.Parse(args[0]), MapName=args[1]}; game.StartMatch(matchParameters); networkServer.Start(); while (Console.ReadKey().KeyChar != 'q'); game.Halt(); networkServer.Stop(); } } 


Common.dll рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЯрд╛рдЗрдорд░ рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдШреЛрд╖рдгрд╛рдПрдВ рдФрд░ рд╕рд╣рд╛рдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдореВрд▓ рд░реВрдк рд╕реЗ, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╡рд░рдг рдирд┐рд╣рд┐рдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░реНрд╡рд░ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛрдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдкреНрд░рдХрд╛рд░

 public enum ItemType { PistolBullet, AKBullet, ShotgunBullet, Rocket, Louse, AVOBullet, PhaseBullet, Trapped, StronglyTrapped, WildLouse, LouslyTrapped, PoisonTrapped, FirstAid, MegaHealth, AVOModifier, Boost, LousePack, Equipment, GunabadianHello, LouseHunterEquipment } 


Network.dll, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝рдиреЗ рд╡рд╛рд▓рд╛ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЙрдЬрд┐рдХ рд╣реИред
ServerLogic.dll рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╕рднреА рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рдЧрдгрдирд╛ рд╣реЛрддреА рд╣реИред
Media.dll рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рд╣реЛрддрд╛ рд╣реИ (рдореИрдВ рдЗрд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рдКрдВрдЧрд╛)ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, Graphics.dll рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реАрдзреЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
рд▓рдЧрднрдЧ рд╣рд░ dllka рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - ServerLogic - рдЦреЗрд▓ рддрд░реНрдХ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛, рдиреЗрдЯрд╡рд░реНрдХ - рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛, рдореАрдбрд┐рдпрд╛ - рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдореАрдбрд┐рдпрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдзрд╛рдЧрд╛ (рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд╕рд░реНрд╡рд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡), рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ - рдПрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдзрд╛рдЧрд╛ред
рдЪрд▓реЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд╕рд░реНрд╡рд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

рдЧреЗрдо рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░: рд╕рд░реНрд╡рд░



рдЗрд╕рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╕реНрдкрд╖реНрдЯ рдерд╛, рд╕рд░реНрд╡рд░ рдореЗрдВ рдореБрдЦреНрдп рдЪреАрдЬ рдЧреЗрдо рдХреНрд▓рд╛рд╕ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг Server.exe рдмрд╛рдЗрдирд░реА рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 var game = new Game(); 


рдЕрдиреНрдп рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд▓реЙрдЬрд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдмрд╛рд╣рд░ рд╕реЗ рдЖрдк рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рд╣рдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдЪ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░, рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдЦреЗрд▓ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рднреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
 public IList<GameObjectState> GetAllObjectStates() 
- рдЦреЗрд▓ рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХред
рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рджреБрдирд┐рдпрд╛ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЗрд╕рдХреЗ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдереНрд░реЗрдб рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рд╕реНрдЯрдо рд╕рдордп-рд╕рдордп рдкрд░ рдЧреЗрдо рдХреЛ рджреБрдирд┐рдпрд╛ рдХреЗ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдЗрд╕реЗ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рдФрд░ рдЗрд╕реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗред
рдПрдХ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕реНрд╡рдпрдВ рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рд╕рд╣рднрд╛рдЧрд┐рддрд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЖрдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛) рднреА рд╕реАрдзреЗ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IPlayerDescriptor рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ:

  public interface IPlayerDescriptor { void PerformAction(PlayerAction action); Tuple<double, double> GetLookCoords(); long GetId(); double GetLoginTime(); } 


рдирддреАрдЬрддрди, рд╣рдореЗрдВ рд╡рд╣реА рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдерд╛ - рдЦреЗрд▓ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЙрдк-рдкреНрд░рдгрд╛рд▓реАред рдЖрдЗрдП рдЕрдм рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рдЕрдВрджрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
"рд╢реАрд░реНрд╖ рдкрд░рдд" рд╕реБрдВрджрд░ рдорд╛рдирдХ рдереНрд░реЗрдб рд╕реБрд░рдХреНрд╖рд┐рдд рд╢рдмреНрджрдХреЛрд╢ <рдСрдмреНрдЬреЗрдХреНрдЯ рдЖрдИрдбреА, рдСрдмреНрдЬреЗрдХреНрдЯ> - рджрд┐рдЦрддрд╛ рд╣реИ

 private readonly ConcurrentDictionary<ushort, GameObject> gameObjects; 


рдФрд░ рдПрдХ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЪрдХреНрд░ рдЬрд┐рд╕реЗ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рджреА рдЧрдИ рд╕рдВрдЦреНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкрд┐рдЫрд▓реЗ рдорд┐рд╕рдХреЙрд▓ рд╕реЗ рдмреАрддрд╛ рд╕рдордп рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:

 private void ObjectProcessingTaskRoutine() { quantTimer.Tick(); Statistics.TimeQuantPassed(quantTimer.QuantValue); if (currentMatchParameters.TimeLimit > 0 && Statistics.MatchTime > currentMatchParameters.TimeLimit) EndMatch(); foreach(var gameObject in gameObjects) { if (!gameObject.Value.Destroyed()) gameObject.Value.Process(quantTimer.QuantValue); else gameContext.RemoveObject(gameObject.Key); } } 


GameContext рдПрдХ рд╡рд░реНрдЧ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рд╕рднреА рдмрдирд╛рдИ рдЧрдИ рдЧреЗрдо рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдЧреЗрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЧреЗрдо рдореИрдк рдХрд╛ рд▓рд┐рдВрдХ, рдЦрд┐рд▓рд╛рдбрд╝рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА, рд╕рд╛рде рд╣реА рдЧреЗрдо рдореЗрдВ рдПрдХ рдирдИ рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддрд░реАрдХреЗ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рд▓рд┐рдВрдХ рдХреЛ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рди рд╣реЛ рдЕрдкрдиреЗ рдЖрдк рдкрд░
 ConcurrentDictionary<ushort, GameObject> gameObjects; 

GameContext рдХреЗ рд╕рднреА рдХреНрд╖реЗрддреНрд░ рдкрдардиреАрдп рд╣реИрдВ, рдЖрд╕рд╛рдиреА рд╕реЗ, рдЬреЛ рдЦреЗрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ "рдХреНрд╖рддрд┐" рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

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

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

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

 internal interface IGameObject { void SendMessage(ComponentMessageBase msg); GameObjectState GetState(); IComponent[] GetComponents(); ushort GetId(); GameObjectType GetGOType(); IGameObject GetParent(); void Dispose(); bool Destroyed(); } 


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

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, GameObject рдореЗрдВ рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ (рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рджреБрдирд┐рдпрд╛ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 public void SendMessage(ComponentMessageBase msg) { messageQueue.Enqueue(msg); } public GameObjectState GetState() { var states = new List<ComponentState>(components.Count); lock (lockObj) { if (Destroyed()) return null; foreach (var component in components) { var state = component.GetState(); if (state != null) states.Add(state); } } return new GameObjectState(Id, type, states); } public void Process(double quantValue) { if (Destroyed()) return; lock (lockObj) { SendMessage(new MsgTimeQuantPassed(this, quantValue)); //    ,     while (messageQueue.Count > 0) { ComponentMessageBase msg; messageQueue.TryDequeue(out msg); foreach (var component in components) component.ProcessMessage(msg); } } } 


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

рд╕рдВрджреЗрд╢ рдкреНрд░рдкрддреНрд░ рдХреЗ CANCARENT рдХрддрд╛рд░ рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рддреЗ рд╣реИрдВ
рдирд┐рдЬреА рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдорд╡рд░реНрддреА рдХреНрдпреВ рд╕рдВрджреЗрд╢

рд╕реВрдЪреА
  private readonly List<Component> components; 
рдмреЗрд╢рдХ, рд╡рд╕реНрддреБ рдХреЗ рд╕рднреА рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдЦреЗрд▓ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛: рдШрдЯрдХ



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

  public abstract void ProcessMessage(ComponentMessageBase msg); public virtual ComponentState GetState() { return null; } public virtual bool Probe() { return true; } 


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

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

 public SolidBody(GameObject owner, GameContext gameContext, double x, double y, double sizeX, double sizeY, byte angle = 0, bool semisolid = false) 


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

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

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

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

 internal class Projectile : Component { private SolidBody solidBody; //  ,    SolidBody! private readonly double speed; //  тАУ   public Projectile(GameObject owner, double speed) : base(owner) { this.speed = speed; } public override void ProcessMessage(ComponentMessageBase msg) { //    тАУ   ,        . if (msg.MessageType == MessageTypes.TimeQuantPassed) ProcessTimeQuantPassed(msg as MsgTimeQuantPassed); } //   .      ,      ,   ,     private void ProcessTimeQuantPassed(MsgTimeQuantPassed msg) { double dT = msg.MillisecondsPassed; var solidState = (SolidBodyState)solidBody.GetState(); byte angle = solidState.Angle; double dX = SpecMath.Cos(angle) * speed * dT, dY = SpecMath.Sin(angle) * speed * dT; // ,        тАУ      ,        .         тАУ     . solidBody.AppendCoords(dX, dY, angle); } //  ,    . GetOwnerComponent,    ,     .    ,   ,      .   . public override bool Probe() { solidBody = GetOwnerComponent<SolidBody>(); return solidBody != null; } } 


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

 internal class DieOnTTL : Component { private readonly double ttl; private double lifetime; public DieOnTTL(GameObject owner, double ttl) : base(owner) { this.ttl = ttl; lifetime = 0.0; } public override void ProcessMessage(ComponentMessageBase msg) { if (msg.MessageType == MessageTypes.TimeQuantPassed) ProcessTimeQuantPassed(msg as MsgTimeQuantPassed); } private void ProcessTimeQuantPassed(MsgTimeQuantPassed msg) { var dT = msg.MillisecondsPassed; lifetime += dT; if (lifetime >= ttl) //     Owner.SendMessage(new MsgDeath(Owner)); } } 


рддрдм рдХреНрдпрд╛, рд╣рдорд╛рд░реА рдЧреЛрд▓рд┐рдпрд╛рдВ рджрд┐рдЦреЗрдВрдЧреА? рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдпрд╣рд╛рдБ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкрд┐рд╕реНрддреМрд▓ рдХреА рдЧреЛрд▓реА:

 class PistolBullet : GameObject { public PistolBullet(GameContext context, IGameObject parent, double x, double y, byte angle, double speed, double ttl) : base(context, GameObjectType.PistolBullet, parent) { AddComponents( new SolidBody(this, context.GameMap, x, y, 9, 9, angle, true), new DieOnTTL(this, ttl), new Projectile(this, speed), new DieOnCollide(this,new GameObjectType[]{GameObjectType.Player, GameObjectType.WildLouse}, true, new ushort[]{parent.GetId()}), new DecayOnDeath(this) ); } } 


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдХрд╣рд╛, рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдХреЗрд╡рд▓ рдЗрд╕рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╣рд╛рде рдЕрднреА рддрдХ рдмрд╛рд╣рд░ рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓реЛрдб рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪреЗ рдереЗред рдпрд╣ рдХреЛрдб рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЧреЗрдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдЖрдзрд╛рд░ рд╕реЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ GameObject рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ - GameObjectType.PistolBullet
рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕реЗ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЬрд╛рдПрдЧрд╛, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдШрдЯрдХреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдмреБрд▓реЗрдЯ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреА рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рд╛рде рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯрдХрд░рд╛рд╡ рд╣реИрдВред
рдЬреЛ рдХреБрдЫ рдмрдЪрддрд╛ рд╣реИ рд╡рд╣ рдЙрди рдШрдЯрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ рдЬреЛ рдЧреЛрд▓реА рдХреЛ рдЧреЛрд▓реА рдмрдирд╛ рджреЗрдЧрд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд╣рд╛рдВ рд╕реЗ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдпрд╣рд╛рдВ рдореБрд╢реНрдХрд┐рд▓ рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдХреБрдЫ XML рд╕реЗ рдШрдЯрдХреЛрдВ рдХреА рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕реЙрд▓рд┐рдбрдмреЙрдбреА, рдЪреВрдВрдХрд┐ рдПрдХ рдмреБрд▓реЗрдЯ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдордиреНрд╡рдп рдФрд░ рдЯрдХрд░рд╛рд╡ рд╣реЛрддрд╛ рд╣реИред рд╕реЗрдореАрд╕реЙрд▓рд┐рдб рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╕рд╣реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ - рд╣рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧрдгрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдмреБрд▓реЗрдЯ рдХреЛ рдЙрдбрд╝рд╛рди рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рднрд▓реЗ рд╣реА рд╡реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рд╕реЗ рди рдЯрдХрд░рд╛рдПрдВред рдЗрд╕рд▓рд┐рдП DieOnTTL рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝реЗрдВ, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╣реА рдЖрдЬреАрд╡рди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдмрдирд╛рдпрд╛ рдерд╛ред
рдЧреЛрд▓реА рдЖрдЧреЗ рдЙрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдЗрд╕реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯрд╛рдЗрд▓ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рд╣рдо рдЗрд╕реЗ рдЗрд╕реА рдЧрддрд┐ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдЧреЛрд▓реА рдПрдХ рдЯрдХреНрдХрд░ рд╕реЗ рдорд░рдиреА рдЪрд╛рд╣рд┐рдПред DieOnCollide рдЬреЛрдбрд╝реЗрдВред рдореИрдВрдиреЗ рдЗрд╕реЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреБрдЪреНрдЫ рд╣реИ - рд╕реЙрд▓рд┐рдбрдмреЙрдбреА MsgCollide рд╕рдВрджреЗрд╢ рднреЗрдЬрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдХреБрдЫ рднреА рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ MsgCollide.CollidedObject рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╕рднреА рдХрд┐рд╕рдХреЗ рд╕рд╛рде рд╣реИрдВред рдпрд╣рд╛рдБ рдкреИрд░рд╛рдореАрдЯрд░ рдЯрдХрд░рд╛рд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╣рдо рдЕрдирджреЗрдЦрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рджреАрд╡рд╛рд░реЛрдВ рд╕реЗ рдЯрдХрд░рд╛рддреЗ рд╣реИрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЖрдИрдбреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЗрд╕ рдмреБрд▓реЗрдЯ рдХреЛ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рдЖрдИрдбреА рдХреЛ рд╡рд╣рд╛рдВ рд╕реЗ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдмреБрд▓реЗрдЯ рдЦреБрдж рдХреЛ рдШрд╛рдпрд▓ рди рдХрд░реЗрдВред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдЦрд┐рд░реА рдЪреАрдЬ рдЬреЛ рд╣рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╡рд╣ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдЙрди рд╕рдВрджреЗрд╢реЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рд╣реИ рдЬреЛ рд╣рдо рдорд░ рдЪреБрдХреЗ рд╣реИрдВ - DecayOnDeath рдмрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪреБрдкрдЪрд╛рдк рдорд╛рд░ рджреЗрдЧрд╛ рдЬрдм рдпрд╣ MsgDeath рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рд╣рдо рдПрдХ рд░реЙрдХреЗрдЯ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдХреБрдЫ рднреА рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ:

  class Rocket : GameObject { public Rocket(GameContext context, IGameObject parrent, double x, double y, byte angle, double speed, double ttl, double radius) : base(context, GameObjectType.Rocket, parrent) { AddComponents( new SolidBody(this, context.GameMap, x, y, 15, 15, angle, true), new DieOnTTL(this, ttl), new Projectile(this, speed), new DieOnCollide(this,new[]{GameObjectType.Player, GameObjectType.WildLouse}, true, new ushort[]{parrent.GetId()}), new ExplodeOnDeath(this,context, radius) ); } } 


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

рдПрдХ рдЯреЗрд▓реАрдкреЛрд░реНрдЯрд┐рдВрдЧ рдмреБрд▓реЗрдЯ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдЯреЗрд▓рд┐рдлрд╝реЛрди рдШрдЯрдХ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддреА рд╣реИ:

  AddComponents( new SolidBody(this, context.GameMap, x, y, 30, 30, angle,false, false, true), new DieOnTTL(this, ttl), new Projectile(this, speed), new Teleporter(this, context), new DieOnCollide(this, new GameObjectType[] {}, true, new ushort[] { parrent.GetId() }), new PhaseOnDeath(this, context, radius) ); 


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

рдпрд╣рд╛рдБ рдЦреЗрд▓ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рдШрдЯрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ:



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

рдмрд╛рд╣рд░реА рд╕рд┐рд╕реНрдЯрдо, рдпрд╛ рдмрд▓реНрдХрд┐, рдиреЗрдЯрд╡рд░реНрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕реА рд╕рдВрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рдеред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ PerformAction () рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рд╕рдВрдмрдВрдзрд┐рдд PlayerDescriptor yanks;
рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрджреЗрд╢реЛрдВ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд░рдЪрдирд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ PlayerRescriptor.PlayerObject.SendMeddage () рдХреЛ рднреЗрдЬрдирд╛ рд╣реИред

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



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

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

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


All Articles