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

рд╣рдо рдЕрдкрдиреЗ Data-Oriented Tech Stack рдХреЗ рд╕рд╛рде рдпреВрдирд┐рдЯреА рдХреЛрд░ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрдИ рдЧреЗрдо рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреА рддрд░рд╣, рд╣рдо рдЗрдХрд╛рдИ рдШрдЯрдХ рдкреНрд░рдгрд╛рд▓реА (рдИрд╕реАрдПрд╕), рд╕реА # рдЯрд╛рд╕реНрдХ рд╕рд┐рд╕реНрдЯрдо (рд╕реА # рдЬреЙрдм рд╕рд┐рд╕реНрдЯрдо) рдФрд░ рдмрд░реНрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рднреА рдмрд╣реБрдд рд▓рд╛рдн рджреЗрдЦрддреЗ рд╣реИрдВред рдпреВрдирд╛рдЗрдЯ рдХреЛрдкреЗрдирд╣реЗрдЧрди рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реБрджреВрд░ рдЙрддреНрддрд░ рдордиреЛрд░рдВрдЬрди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛ рдХрд┐ рд╡реЗ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдПрдХрддрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдбреЙрдЯреНрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реБрджреВрд░ рдЙрддреНрддрд░ рдордиреЛрд░рдВрдЬрди рдПрдХ рд╕реНрд╡реАрдбрд┐рд╢ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рдВрдЪ рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдорд┐рддреНрд░ рд╣реИрдВред 2018 рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЧрд┐рдпрд░ рд╡реАрдЖрд░ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрди рдЯреВ рдбрдВрдЧреАрди рдХреА рд░рд┐рд╣рд╛рдИ рдХреЗ рдмрд╛рдж рд╕реЗ, рдХрдВрдкрдиреА рдПрдХ рдЧреЗрдо рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реА рд╣реИ рдЬреЛ рдкреАрд╕реА рдЧреЗрдо рдХреА рдХреНрд▓рд╛рд╕рд┐рдХ рд╢реИрд▓реА рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рдЕрд░реНрдерд╛рддреН рдЬрд╝реЛрдВрдмреА рдЙрддреНрддрд░рдЬреАрд╡рд┐рддрд╛ рдореЛрдб рдореЗрдВ рдПрдкреЛрдХреИрд▓рд┐рдХрдкреНрдЯрд┐рдХ рдЧреЗрдоред рджреВрд╕рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд▓рд╛рд╢ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХрд╛ рдкреАрдЫрд╛ рдХрд░ рд░рд╣реА рд╣реИред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЯреАрдо рдХреА рджреГрд╖реНрдЯрд┐ рдиреЗ рднрд╛рд░реА рднреАрдбрд╝ рдореЗрдВ рдЖрдкрдХреЗ рдкреАрдЫреЗ рд╣рдЬрд╛рд░реЛрдВ рднреВрдЦреЗ рд▓рд╛рд╢реЛрдВ рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реЗ рдЬрд▓реНрджреА рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЪрд░рдг рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреА рдмрд╣реБрдд рд╕рд╛рд░реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рднрд╛рдЧ рдЧрдПред рд╢рддреНрд░реБрдУрдВ рдХреА рдЗрд╕ рд╕рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдмрдирд╛рдирд╛, рдорд░рдирд╛, рдЕрджреНрдпрддрди рдХрд░рдирд╛ рдФрд░
рдПрдирд┐рдореЗрд╢рди рдХрд░рдирд╛ рдореБрдЦреНрдп рдЕрдбрд╝рдЪрди рдмрдирд╛ рд░рд╣рд╛, рднрд▓реЗ рд╣реА рдЯреАрдо рдиреЗ
рдУрдмрд▓реИрдХреНрдЯ рдкреВрд▓рд┐рдВрдЧ рдФрд░
рдирд┐рдореЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред
рдЗрд╕рдиреЗ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЗ рддрдХрдиреАрдХреА рдирд┐рджреЗрд╢рдХ рдПрдВрдбреНрд░реЗрд╕ рдПрд░рд┐рдХреНрд╕рди рдХреЛ рдбреЙрдЯреНрд╕ рдкрд░ рдЕрдкрдирд╛ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рд╕реЗ рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╕рд┐рдХрддрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ред "рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЛ рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкреНрд░рдореБрдЦ рд╡рд┐рдЪрд╛рд░ рдпрд╣ рдерд╛ рдХрд┐ рдЖрдкрдХреЛ рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрдВрдж рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдпрд╣ рдХреИрд╕реЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдП," рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд╣рд╛ред ред рдЙрдирдХреЗ рд╢рдмреНрджреЛрдВ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХреА рд╡рд╕реНрддреБрдУрдВ рдкрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирдЬрд╝рд░ рд░рдЦрдирд╛ рдХреЛрдб рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЕрдореВрд░реНрдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рд╕реБрдЭрд╛рд╡ рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рд╢реНрд╡рджреГрд╖реНрдЯрд┐ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
тАЬрд╕реНрд╡рдпрдВ рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рд╕рдорд╛рдзрд╛рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдбреЗрдЯрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЙрд╕реА рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рд░-рдмрд╛рд░ рдЙрд╕реА рддрд░рд╣ рд╕реЗрдЯ рдХрд░реЗрдВрдЧреЗ? рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреИрд╢ рдХреА рдПрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдЖрдк рдХрд┐рддрдирд╛ рдЙрдкрдпреЛрдЧреА рдбреЗрдЯрд╛ рдлрд┐рдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдк рдореМрдЬреВрджрд╛ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдХрд┐рддрдирд╛ рдЬрдВрдХ рдбреЗрдЯрд╛ рдХреИрд╢ рд▓рд╛рдЗрди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдЧрдгрдирд╛ рдХреЛ рдХрдИ рдереНрд░реЗрдб рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдХреНрдпрд╛ рдореБрдЭреЗ рдПрдХрд▓ рдХрдорд╛рдВрдб рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? "рдЯреАрдо рдХреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдХрд┐ рдпреВрдирд┐рдЯреА рдХрдВрдкреЛрдиреЗрдВрдЯ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдЗрдХрд╛рдЗрдпрд╛рдВ рдШрдЯрдХ рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рд╕рд┐рд░реНрдл рдЦреЛрдЬрдХрд░реНрддрд╛ рд╣реИрдВред рдШрдЯрдХ рдХреЗрд╡рд▓ рдбреЗрдЯрд╛ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕рднреА рддрд░реНрдХ рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╕рд╛рде рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рдиреНрд╣реЗрдВ рдЖрд░реНрдХрдЯрд╛рдЗрдкреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред "рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░реНрджреГрд╖реНрдЯрд┐ рдореЗрдВ рд╕реЗ рдПрдХ рдЬрд┐рд╕рдиреЗ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХреА рдереА, рдИрд╕реАрдПрд╕ рдХреЛ SQL рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрд╢ рдХрд░рдирд╛ рдерд╛ред рдкреНрд░рддреНрдпреЗрдХ рдЕрднрд┐рд▓реЗрдЦ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрдВрдн рдПрдХ рдШрдЯрдХ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЗрдХрд╛рдИ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдЗрди рдЖрд░реНрдХ-рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдХреНрд╡реЗрд░реАрдЬрд╝ рдмрдирд╛рдиреЗ рдФрд░ рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВ, тАЭрдПрдВрдбрд░реНрд╕ рдХрд╣рддреЗ рд╣реИрдВред
рдкреЗрд╢ рд╣реИ рдбреЙрдЯреНрд╕
рдЗрд╕ рд╕рдордЭ рдореЗрдВ рдЖрдиреЗ рдХреЗ рд▓рд┐рдП, рдЙрдиреНрд╣реЛрдВрдиреЗ
рдЗрдХрд╛рдИ рдШрдЯрдХ рдкреНрд░рдгрд╛рд▓реА,
рдИрд╕реАрдПрд╕ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛, рдФрд░
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ рд╣рдордиреЗ рдиреЙрд░реНрдбрд╕ рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдХрд┐рдпрд╛ рдФрд░ рдпреВрдирд╛рдЗрдЯ рдСрд╕реНрдЯрд┐рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ред рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рднреА рдЯреАрдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдереАред "CppCon 2014 рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░
рдорд╛рдЗрдХ рдПрдХреНрдЯрди рдХреА
рд░рд┐рдкреЛрд░реНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рдорд╛рд░реА рдЖрдВрдЦреЗрдВ рдЦреЛрд▓рддреА рд╣реИред"
рд╕реБрджреВрд░ рдЙрддреНрддрд░ рдХреА рдЯреАрдо рдиреЗ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдкрдиреЗ
рджреЗрд╡ рдмреНрд▓реЙрдЧ рдкрд░ рдХреНрдпрд╛ рд╕реАрдЦрд╛, рдЗрд╕ рд╕рд╛рд▓ рд╕рд┐рддрдВрдмрд░ рдореЗрдВ рд╡реЗ рдХреЛрдкреЗрдирд╣реЗрдЧрди рдореЗрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдЯреА рдореЗрдВ рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдПред
рдпрд╣ рд▓реЗрдЦ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдпрд╣ рдИрд╕реАрдПрд╕, рд╕реА # рдЯрд╛рд╕реНрдХ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдмрд░реНрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЗ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИред рд╕реБрджреВрд░ рдЙрддреНрддрд░ рдиреЗ рднреА рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рдирдореВрдиреЗ рд╕рд╛рдЭрд╛ рдХрд┐рдПред
рдЬрд╝реЛрдВрдмреА рдбреЗрдЯрд╛ рд╕рдВрдЧрдарди
рдПрдВрдбрд░реНрд╕ рдХрд╣рддреЗ рд╣реИрдВ, '' рд╣рдо рдЬрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдЬреВрдЭ рд░рд╣реЗ рдереЗ, рд╡рд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреА рдУрд░ рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╡рд┐рд╕реНрдерд╛рдкрди рдФрд░ рдШреБрдорд╛рд╡ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░ рд░рд╣реА рдереАред '' рдЙрдирдХрд╛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рдЕрдореВрд░реНрдд
ZombieView рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдирд╛ рдерд╛, рдЬреЛ рдЬреЗрдиреЗрд░рд┐рдХ
EntityView рдкреИрд░реЗрдВрдЯ рдХреНрд▓рд╛рд╕ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реАред
EntityView рдПрдХ
MonoBehaviour GameObject рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИред рдпрд╣ рдЧреЗрдо рдореЙрдбрд▓ рдХреЗ рджреГрд╢реНрдп рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ
ZombieView рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЖрдВрджреЛрд▓рди рдФрд░ рдЕрдкрдиреЗ
рдЕрджреНрдпрддрди рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд░реЛрдЯреЗрд╢рди рдкреНрд░рдХреНрд╖реЗрдк рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдерд╛ред
рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд▓рдЧрддрд╛ рд╣реИ, рдЬрдм рддрдХ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдПрдХ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд╕реНрдерд╛рди рдкрд░ рд╕реНрдореГрддрд┐ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рд╣рдЬрд╛рд░реЛрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╕реАрдкреАрдпреВ рдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдПрдХ рдореЗрдореЛрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдзреАрд░реЗ-рдзреАрд░реЗ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдирд╛ рдбреЗрдЯрд╛ рд╕реАрд░реАрдЬрд╝ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдиреАрдЯ рдмреНрд▓реЙрдХреНрд╕ рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдХреИрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдЪрдХреНрд░ рдореЗрдВ рдХреИрд╢ рд╕реЗ рд▓рдЧрднрдЧ 128 рдпрд╛ 256 рдмрд┐рдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреАрдо рдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдЙрдореНрдореАрдж рдореЗрдВ рджреБрд╢реНрдордиреЛрдВ рдХреЛ рдбреЙрдЯреНрд╕ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдкрд╣рд▓реЗ рд▓рд╛рдЗрди рдореЗрдВ
рдЬрд╝реЛрдВрдмреА рд╡реНрдпреВ рдореЗрдВ
рдЕрдкрдбреЗрдЯ рдлрд╝рдВрдХреНрд╢рди рдерд╛ред рдЯреАрдо рдиреЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХрд┐рди рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдкрд╣рд▓реА рдФрд░ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рдмрд╛рдд рдкрджреЛрдВ рдФрд░ рдШреБрдорд╛рд╡реЛрдВ рдХрд╛ рдкреНрд░рдХреНрд╖реЗрдк рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рдЧреНрд░рд┐рдб рд╣реИред рджреЛ рдлреНрд▓реЛрдЯ рд╡реИрд░рд┐рдПрдмрд▓ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдБ рд▓рд╛рд╢ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рдШрдЯрдХ рд▓рдХреНрд╖реНрдп рд╕реНрдерд┐рддрд┐ рд╣реИ, рдпрд╣ рджреБрд╢реНрдорди рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред
[Serializable] public struct PositionData2D : IComponentData { public float2 Position; } [Serializable] public struct HeadingData2D : IComponentData { public float2 Heading; } [Serializable] public struct TargetPositionData : IComponentData { public float2 TargetPosition; }
рдЕрдЧрд▓рд╛ рдХрджрдо рдерд╛ рд╢рддреНрд░реБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░реНрдХрд╖рдХ рдмрдирд╛рдирд╛ред рдЖрд░реНрдХрдЯрд╛рдЗрдк рдЙрди рдШрдЯрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЗрдХрд╛рдИ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдпрд╣ рдШрдЯрдХ рдХрд╛ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рд╣реИред
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреБрд╢реНрдорди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдШрдЯрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ
GameObject рдХреЗ рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдЯреНрдЯрд░рдкрдВрдерд┐рдпреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкреНрд░реАрдлрд╝реИрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ ред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ
ComponentDataProxy рдореЗрдВ
рд▓рдкреЗрдЯ рд╕рдХреЗрдВ , рдЬреЛ рдЗрд╕реЗ
MonoBehaourour рдореЗрдВ рдмрджрд▓ рджреЗрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ
рдкреНрд░реАрдлрд╝реИрдм рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдк
EntityManager рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░
рдкреНрд░реАрдлрд╝реИрдм рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЙрди рдШрдЯрдХреЛрдВ рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ
рдкреНрд░реАрдлрд╝реИрдм рд╕реЗ рдЬреБрдбрд╝реЗ рдереЗред рд╕рднреА рдШрдЯрдХ рдбреЗрдЯрд╛ рдХреЛ 16 рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдореЗрдореЛрд░реА рдЪрдВрдХреНрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ
рдЖрд░реНрдХрд╣реИрдкреНрдЯрд╣рдВрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдПрдХ рджреГрд╢реНрдп рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдШрдЯрдХ рдкреНрд░рд╡рд╛рд╣ рд╣рдорд╛рд░реЗ рдЖрд░реНрдХрдЯрд╛рдЗрдк рдЪрдВрдХ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ:
"рдЪреЗрдЪрдЯрд╛рдЗрдк рд╡рд┐рдЦрдВрдбреВ рдХреЗ рдореБрдЦреНрдп рд▓рд╛рднреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛рддреЗ рд╕рдордп рдЖрдкрдХреЛ рдЕрдХреНрд╕рд░ рдЭреБрдВрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдореГрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрд╡рдВрдЯрд┐рдд рдХреА рдЧрдИ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдЗрдХрд╛рдЗрдпрд╛рдБ рдмрдирд╛рдирд╛ рдШрдЯрдХ рдбреЗрдЯрд╛ рдХреЗ рдЕрдВрдд рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд░рдЪрд┐рдд рд╣реИред рдПрдХрдорд╛рддреНрд░ рдорд╛рдорд▓рд╛ рдЬрдм рдвреЗрд░ рдЖрд╡рдВрдЯрди рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рддрдм рдПрдХ рдЗрдХрд╛рдИ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЪрдВрдХ рдХреА рд╕реАрдорд╛рдУрдВ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╛ рддреЛ рдЖрдХрд╛рд░ рдореЗрдВ 16 рдХреЗрдмреА рдХреЗ рдПрдХ рдЪрд╛рдкрд╛рдХрд▓ рдХреЗ рдПрдХ рдирдП рд╣рд┐рд╕реНрд╕реЗ рдХрд╛ рдЖрд╡рдВрдЯрди рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдпрд╛ рдпрджрд┐ рдПрдХ рд╣реА рдЕрднрд┐рд▓реЗрдЦрд╛рдЧрд╛рд░ рдХрд╛ рдПрдХ рдЦрд╛рд▓реА рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдлрд┐рд░ рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдирдП рдЪрдВрдХ рдХреЗ рдШрдЯрдХ рдкреНрд░рд╡рд╛рд╣ рдореЗрдВ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, тАЭ рдПрдВрдбрд░реНрд╕ рдмрддрд╛рддреЗ рд╣реИрдВред
рдЖрдкрдХреА рд▓рд╛рд╢ рдХрд╛ рдмрд╣реБрд╕реНрддрд░реАрдпрдХрд░рдг
рдЕрдм рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХреЗ рд╕реЗ рдореЗрдореЛрд░реА рдореЗрдВ рдкреИрдХ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЯреАрдо рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рд╕реАрдкреАрдпреВ рдХреЛрд░ рдкрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ C # рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреА рдереАред
рдЕрдЧрд▓рд╛ рдХрджрдо рдПрдХ рдРрд╕реА рдкреНрд░рдгрд╛рд▓реА рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рдЙрди рд╕рднреА
рдЖрд░реНрдХрд┐рдЯрд╛рдЗрдк рдмреНрд▓реЙрдХреЛрдВ рд╕реЗ рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░
рджреЗ, рдЬрд┐рдирдореЗрдВ
рд╕реНрдерд┐рддрд┐рдбреИрдЯрд╛ 2 рдбреА, рд╣реЗрдбрд┐рдВрдЧрдбреИрдЯрд╛ 2 рдбреА рдФрд░
рдЯрд╛рд░рдЧреЗрдЯрдкреЗрдВрд╢рдирдбреЙрдЯрд╛ рдШрдЯрдХ рдереЗ ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдВрдбрд░реНрд╕ рдФрд░ рдЙрдирдХреА рдЯреАрдо рдиреЗ
JobComponentSystem рдмрдирд╛рдпрд╛ рдФрд░
OnCreate рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдЙрдирдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
private EntityQuery m_Group; protected override void OnCreate() { base.OnCreate(); var query = new EntityQueryDesc { All = new [] { ComponentType.ReadWrite<PositionData2D>(), ComponentType.ReadWrite<HeadingData2D>(), ComponentType.ReadOnly<TargetPositionData>() }, }; m_Group = GetEntityQuery(query); }
рдХреЛрдб рдПрдХ рдЕрдиреБрд░реЛрдз рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рджреБрдирд┐рдпрд╛ рдХреА рдЙрди рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рдирдХреА рд╕реНрдерд┐рддрд┐, рджрд┐рд╢рд╛ рдФрд░ рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд╡реЗ рдХрдИ рд╡рд░реНрдХрдлрд╝реНрд▓реЛрдЬрд╝ рдореЗрдВ рдЧрдгрдирд╛рдУрдВ рдХреЛ рд╡рд┐рддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП C # рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рд╢реЗрдбреНрдпреВрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗред
"рд╕реА # рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рдкреНрд░рдгрд╛рд▓реА рд╣реИ рдЬреЛ рдПрдХрддрд╛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдереНрд░реЗрдбреНрд╕ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдПрдХ рд╣реА рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдирддрд╛ рд╣реИред рдПрдВрдбрд░реНрд╕ рдХрд╣рддреЗ рд╣реИрдВред
рдЯреАрдо рдиреЗ
IJobChunk рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдЬрд╛рд░реЛрдВ рджреБрд╢реНрдордиреЛрдВ рдиреЗ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ
рдЪрд╛рдкрд▓реВрд╕реЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рдирд┐рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬреЛ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдЕрдиреБрд░реЛрдз рд╕реЗ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
IJobChunk рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдореЗрдВ рд╕рд╣реА рд╡рд┐рдЦрдВрдбреВ рд╡рд┐рддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рддреНрдпреЗрдХ рдлрд╝реНрд░реЗрдо, рдПрдХ рдирдпрд╛
UpdatePositionAndHeadingJob рдХрд╛рд░реНрдп
, рдЧреЗрдо рдореЗрдВ рджреБрд╢реНрдордиреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдФрд░ рдШреБрдорд╛рд╡реЛрдВ рдХреЗ рдкреНрд░рдХреНрд╖реЗрдк рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
protected override JobHandle OnUpdate(JobHandle inputDeps) { var positionDataType = GetArchetypeChunkComponentType<PositionData2D>(); var headingDataType = GetArchetypeChunkComponentType<HeadingData2D>(); var targetPositionDataType = GetArchetypeChunkComponentType<TargetPositionData>(true); var updatePosAndHeadingJob = new UpdatePositionAndHeadingJob { PositionDataType = positionDataType, HeadingDataType = headingDataType, TargetPositionDataType = targetPositionDataType, DeltaTime = Time.deltaTime, RotationLerpSpeed = 2.0f, MovementLerpSpeed = 4.0f, }; return updatePosAndHeadingJob.Schedule(m_Group, inputDeps); }
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдХрд╛рд░реНрдп рджрд┐рдЦрддрд╛ рд╣реИ:
public struct UpdatePositionAndHeadingJob : IJobChunk { public ArchetypeChunkComponentType<PositionData2D> PositionDataType; public ArchetypeChunkComponentType<HeadingData2D> HeadingDataType; [ReadOnly] public ArchetypeChunkComponentType<TargetPositionData> TargetPositionDataType; [ReadOnly] public float DeltaTime; [ReadOnly] public float RotationLerpSpeed; [ReadOnly] public float MovementLerpSpeed; }
рдЬрдм рдПрдХ рд╢реНрд░рдорд┐рдХ рдзрд╛рдЧрд╛ рдЕрдкрдиреА рдХрддрд╛рд░ рд╕реЗ рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХрд╛рд░реНрдп рдХреЗ рдореВрд▓ рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛрд░ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
public void Execute(ArchetypeChunk chunk, int chunkIndex, int firstEntityIndex) { var chunkPositionData = chunk.GetNativeArray(PositionDataType); var chunkHeadingData = chunk.GetNativeArray(HeadingDataType); var chunkTargetPositionData = chunk.GetNativeArray(TargetPositionDataType); for (int i = 0; i < chunk.Count; i++) { var target = chunkTargetPositionData[i]; var positionData = chunkPositionData[i]; var headingData = chunkHeadingData[i]; float2 toTarget = target.TargetPosition - positionData.Position; float distance = math.length(toTarget); headingData.Heading = math.select( headingData.Heading, math.lerp(headingData.Heading, math.normalize(toTarget), math.mul(DeltaTime, RotationLerpSpeed)), distance > 0.008 ); positionData.Position = math.select( target.TargetPosition, math.lerp( positionData.Position, target.TargetPosition, math.mul(DeltaTime, MovementLerpSpeed)), distance <= 1 ); chunkPositionData[i] = positionData; chunkHeadingData[i] = headingData; } }
тАЬрдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдмреНрд░рд╛рдВрдЪрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЪреБрдирд┐рдВрджрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд╕реЗ рд╣рдо рдЧрд▓рдд рд╢рд╛рдЦрд╛ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдирд╛рдордХ рдкреНрд░рднрд╛рд╡ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЪрдпрдирд┐рдд рдлрд╝рдВрдХреНрд╢рди рджреЛрдиреЛрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛ рдФрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдкрдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдЧрдгрдирд╛ рдХрд░рдиреЗ рдореЗрдВ рдЗрддрдиреА рдХрдард┐рди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдореИрдВ рдЪрдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╕реАрдкреАрдпреВ рдХреЗ рдЧрд▓рдд рд╢рд╛рдЦрд╛ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рд╕реЗ рдЙрдмрд░рдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЕрдХреНрд╕рд░ рд╕рд╕реНрддрд╛ рд╣реЛрддрд╛ рд╣реИред " рдРрдиреНрдбрд░реНрд╕ред
рдлрдЯ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдПрдБ
рдбреАрдУрдЯреАрдПрд╕ рдХреЛ рджреБрд╢реНрдорди рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рдкреНрд░рдХреНрд╖реЗрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рдмрд░реНрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рд╣реИред рдпрд╣ рдХрд╛рд░реНрдп рдПрдВрдбрд░реНрд╕ рдХреЛ рдХрд╛рдлреА рд╕рд░рд▓ рд▓рдЧ рд░рд╣рд╛ рдерд╛: "рдЪреВрдВрдХрд┐ рдбреЗрдЯрд╛ рд╕рдореАрдкрд╡рд░реНрддреА рд╕рд░рдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдПрдХрддрд╛ рд╕реЗ рдирдИ рдЧрдгрд┐рдд рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдмрд╕ рдЗрддрдирд╛ рдХрд░рдирд╛ рдерд╛ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдореЗрдВ
рдмрд░реНрд╕реНрдЯрдХрдордкрд╛рдЗрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЬреЛрдбрд╝
рджреЗрдВ ред"
[BurstCompile] public struct UpdatePositionAndHeadingJob : IJobChunk { public ArchetypeChunkComponentType<PositionData2D> PositionDataType; public ArchetypeChunkComponentType<HeadingData2D> HeadingDataType; [ReadOnly] public ArchetypeChunkComponentType<TargetPositionData> TargetPositionDataType; [ReadOnly] public float DeltaTime; [ReadOnly] public float RotationLerpSpeed; [ReadOnly] public float MovementLerpSpeed; }
рдж рдмрд░реНрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣рдореЗрдВ рд╕рд┐рдВрдЧрд▓ рдЗрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдорд▓реНрдЯреАрдкрд▓ рдбреЗрдЯрд╛ (SIMD) рджреЗрддрд╛ рд╣реИ; рдорд╢реАрди рдирд┐рд░реНрджреЗрд╢ рдЬреЛ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рд░реНрдл рдПрдХ рдирд┐рд░реНрджреЗрд╢ рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдбреЗрдЯрд╛ рдХреЗ рдХрдИ рд╕реЗрдЯ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣рдореЗрдВ рд╕рд╣реА рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде 128-рдмрд┐рдЯ рдХреИрд╢ рдмрд╕ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реНрдерд╛рдиреЛрдВ рдХреЛ рднрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдмрд░реНрд╕реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░, рдХреИрд╢-рдлреНрд░реЗрдВрдбрд▓реА рдбреЗрдЯрд╛ рдХрдВрдкреЛрдЬрд╝рд┐рд╢рди рдФрд░ рдЬреЙрдм рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдорд┐рд▓рдХрд░ рдЯреАрдо рдХреЛ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╡рд╣ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдкреНрд░рддреНрдпреЗрдХ рд░реВрдкрд╛рдВрддрд░рдг рдЪрд░рдг рдХреЗ рдмрд╛рдж рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИред

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