рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд╡рд░реНрд╖ рдореЗрдВ рдПрдХ рдЧреЗрдо рдЗрдВрдЬрди рд▓рд┐рдЦрдирд╛: рдЖрд╕рд╛рди! (рд▓рдЧрднрдЧ)

рдирдорд╕реНрдХрд╛рд░! рдореЗрд░рд╛ рдирд╛рдо рдЬреАрд▓реЗрдм рдореИрд░реАрди рд╣реИ, рдореИрдВ рд╕реЗрдВрдЯ рдкреАрдЯрд░реНрд╕рдмрд░реНрдЧ рдПрдЪрдПрд╕рдИ рдореЗрдВ рд╕реНрдирд╛рддрдХ "рдПрдкреНрд▓рд╛рдЗрдб рдЧрдгрд┐рдд рдФрд░ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди" рдХреЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд╡рд░реНрд╖ рдореЗрдВ рд╣реВрдВред рджреВрд╕рд░реЗ рд╕реЗрдореЗрд╕реНрдЯрд░ рдореЗрдВ, рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд╕рднреА рдирдП рд▓реЛрдЧ C ++ рдореЗрдВ рдЯреАрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд╕рд╛рдерд┐рдпреЛрдВ рдФрд░ рдореИрдВрдиреЗ рдПрдХ рдЦреЗрд▓ рдЗрдВрдЬрди рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред 

рдкрдврд╝реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИред


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

рд╣рд░ рдХреЛрдИ рдЬреЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ - рдкрдврд╝рдиреЗ рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВ!

рд▓рд▓рд┐рдд рдХрд▓рд╛рдПрдВ


рдкрд╣рд▓реА рд╡рд┐рдВрдбреЛ, рдорд╛рдЙрд╕ рдФрд░ рдХреАрдмреЛрд░реНрдб


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

рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рдКрдкрд░ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЖрд╡рд░рдг рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдерд╛ рддрд╛рдХрд┐ рдЖрдк рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛ рд╕рдХреЗрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реЗрдВ рдЬреИрд╕реЗ рдХрд┐ рдХрд░реНрд╕рд░ рдХреЛ рд▓реЗ рдЬрд╛рдирд╛ рдФрд░ рдлреБрд▓-рд╕реНрдХреНрд░реАрди рдореЛрдб рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛ рдФрд░ рдИрд╡реЗрдВрдЯ рдХреЛ рд╣реИрдВрдбрд▓ рдХрд░рдирд╛: рдХреАрд╕реНрдЯреНрд░реЛрдХ, рдХрд░реНрд╕рд░ рдореВрд╡рдореЗрдВрдЯред рдХрд╛рд░реНрдп рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рдерд╛: рд╣рдордиреЗ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдмрдирд╛рдпрд╛ рдЬреЛ рд╡рд┐рдВрдбреЛ рдХреЛ рдмрдВрдж рдФрд░ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдЖрдк рдЖрд░рдПрдордмреА рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ "рд╣реИрд▓реЛ, рд╡рд░реНрд▓реНрдб!" рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред 

рддрдм рдореБрдЦреНрдп рдЦреЗрд▓ рдЪрдХреНрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛:

Event ev;
bool running = true;
while (running):
	ev = pullEvent();
	for handler in handlers[ev.type]:
		handler.handleEvent(ev);

рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рд╕рдВрд▓рдЧреНрди - handlersрдЬреИрд╕реЗ handlers[QUIT] = {QuitHandler()}ред рдЙрдирдХрд╛ рдХрд╛рд░реНрдп рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдирд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИред QuitHandlerрдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ running = false, рдЬрд┐рд╕рд╕реЗ рдЦреЗрд▓ рд░реБрдХ рдЬрд╛рдПрдЧрд╛ред

рдирдорд╕реНрддреЗ рджреБрдирд┐рдпрд╛


рдЗрдВрдЬрди рдореЗрдВ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЗ рд▓рд┐рдП рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ OpenGLред рдкрд╣рд▓рд╛ Hello World, рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдПрдХ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХреА рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдПрдХ рд╕рдлреЗрдж рд╡рд░реНрдЧ рдерд╛: 

glBegin(GL_QUADS);
glVertex2f(-1.0f, 1.0f);
glVertex2f(1.0f, 1.0f);
glVertex2f(1.0f, -1.0f);
glVertex2f(-1.0f, -1.0f);
glEnd();


рдлрд┐рд░ рд╣рдо рдХреИрд╕реЗ рдПрдХ рджреЛ рдЖрдпрд╛рдореА рдмрд╣реБрднреБрдЬ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдЦрд╛ рд╣реИ рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рдЖрдВрдХрдбрд╝реЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ GraphicalObject2dрдЙрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рд░реА рдмрд╛рд░реА рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ glRotate, рдХреЗ рд╕рд╛рде рдХрджрдо glTranslateрдФрд░ рд╕рд╛рде рдЦрд┐рдВрдЪрд╛рд╡ glScaleред рд╣рдо рдЪрд╛рд░ рдЪреИрдирд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд░рдВрдЧ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ glColor4f(r, g, b, a)ред

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



рдХреИрдорд░рд╛


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

рд╣рдо рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рдПрдХ рд╢реАрд░реНрд╖ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЗ рдХреЗрдВрджреНрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЬрд╛рдирддреЗ рд╣реБрдП рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред

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

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

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

Model = Translate * Scale * Rotate. 

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


glm::mat4 View = glm::lookAt(cameraPosition, objectPosition, up);

рд╢рд╛рдмреНрджрд┐рдХ: objectPositionрдПрдХ рд╕реНрдерд┐рддрд┐ рд╕реЗ рджреЗрдЦреЛ cameraPosition, рдФрд░ рдКрдкрд░ рдХреА рджрд┐рд╢рд╛ "рдКрдкрд░" рд╣реИред рдпрд╣ рджрд┐рд╢рд╛ рдХреНрдпреЛрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдПрдХ рдЪрд╛рдпрджрд╛рдиреА рдлреЛрдЯреЛ рдЦрд┐рдВрдЪрд╡рд╛рдиреЗ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЛред рдЖрдк рдЙрд╕ рдкрд░ рдХреИрдорд░реЗ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХреЗрддрд▓реА рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рдЖрдк рдмрд┐рд▓реНрдХреБрд▓ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдлреНрд░реЗрдо рд╢реАрд░реНрд╖ рдкрд░ рдХрд╣рд╛рдВ рд╣реИ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдХреЗрддрд▓реА рдореЗрдВ рдврдХреНрдХрди рд╣реИ)ред рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдлреНрд░реЗрдо рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рдФрд░ рдЗрд╕реАрд▓рд┐рдП "рдЕрдк" рд╡реЗрдХреНрдЯрд░ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

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

рд╕реНрдХреНрд░реАрди рдкрд░ рд╡рд░реНрдЯреЗрдХреНрд╕ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрдо рд╕реЗ рдХрдо рдкрд╛рдВрдЪ рдмрд╛рд░ рдореИрдЯреНрд░рд┐рдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡реЗрдХреНрдЯрд░ рдХреЛ рдЧреБрдгрд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рднреА рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рд╕рд╛рдЗрдЬрд╝ 4 рдмрд╛рдИ 4 рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдХрд╛рдлреА рдЧреБрдгрд╛ рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛрд░ рдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдЖрд╡рд╢реНрдпрдХ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рд╡рд╛рд▓реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдмреЗрд╣рддрд░ рд╣реИред рддреЛ, рдЖрдкрдХреЛ рдПрдХ shader рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдирд┐рд░реНрджреЗрд╢ред OpenGL рдореЗрдВ C рдХреЗ рд╕рдорд╛рди рдПрдХ рд╡рд┐рд╢реЗрд╖ GLSL рд╢реЗрдбрд░ рднрд╛рд╖рд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧреАред рдЖрдЗрдП рдПрдХ shader рд▓рд┐рдЦрдиреЗ рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рди рдЬрд╛рдПрдВ, рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рд╣реБрдЖ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ, рдпрд╣ рджреЗрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛:


рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рджрд╕ рд╡рд░реНрдЧ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рдкреАрдЫреЗ рдереЛрдбрд╝реА рджреВрд░реА рдкрд░ рд╣реИрдВред рдЙрдирдХреЗ рджрд╛рдИрдВ рдУрд░ рдПрдХ рдЦрд┐рд▓рд╛рдбрд╝реА рд╣реИ рдЬреЛ рдШреВрдорддрд╛ рд╣реИ рдФрд░ рдХреИрдорд░рд╛ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред 

рднреМрддрд┐рдХ рд╡рд┐рдЬреНрдЮрд╛рди


рднреМрддрд┐рдХреА рдХреЗ рдмрд┐рдирд╛ рдЦреЗрд▓ рдХреНрдпрд╛ рд╣реИ? рднреМрддрд┐рдХ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ Box2d рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдФрд░ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдпрд╛, WorldObject2dрдЬреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ GraphicalObject2dред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, Box2d рдиреЗ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдмрд╣рд╛рджреБрд░ рдЗрд▓реНрдпрд╛ рдиреЗ b2Body рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡рд░рдг рдФрд░ рд╕рднреА рднреМрддрд┐рдХ рдХрдиреЗрдХреНрд╢рди рд▓рд┐рдЦреЗ рдЬреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╣реИрдВред


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

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



рдмрдирд╛рд╡рдЯ


рд╣рдордиреЗ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрдкрд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд┐рд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред рдкреНрд░рддреНрдпреЗрдХ GraphicalObject2dрд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрди рдЧрдпрд╛ GraphicalPolygon- рд╡рд╕реНрддреБ рдХрд╛ рдЕрдЧрд▓рд╛ рднрд╛рдЧ - рдФрд░ GraphicalEdge- рджреВрд╕рд░рд╛ рднрд╛рдЧред рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рдЖрдк рдЕрдкрдиреА рдмрдирд╛рд╡рдЯ рдХреЛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдкрд╣рд▓рд╛ рдкрд░рд┐рдгрд╛рдо:


рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рд╡рд╣ рддреИрдпрд╛рд░ рд╣реИ: рдбреНрд░рд╛рдЗрдВрдЧ, рдПрдХ рдкреНрд░рдХрд╛рд╢ рд╕реНрд░реЛрдд рдФрд░ рдмрдирд╛рд╡рдЯред рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ - рдпрд╣ рдЕрдм рдХреЗ рд▓рд┐рдП рд╣реИред

рд░рд╛рдЬреНрдп рдорд╢реАрди, рд╡рд╕реНрддреБ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛


рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ, рдЬреЛ рдХреБрдЫ рднреА рд╣реЛ - рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рдореЗрдВ рдПрдХ рд░рд╛рдЬреНрдп, рдЧреНрд░рд╛рдлрд┐рдХ рдпрд╛ рднреМрддрд┐рдХ - "рдЯрд┐рдХ" рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рдЧреЗрдо рд▓реВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

void loop():
    onAwake();
    awake = true;
    while (awake):
        onStart();
        running = true
        while (running):
            onActive();
        onStop();
    onDestroy();

рдЕрднреА рдХреЗ рд▓рд┐рдП running == true, рдХреЛрдИ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рдХрд╣ рд╕рдХрддрд╛ рд╣реИ pause()рдЬреЛ рдХрд░рддрд╛ рд╣реИ running = falseред рдпрджрд┐ рдХреЛрдИ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ kill(), рддреЛ awake, рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ runningрдЪрд╛рд▓реВ рдХрд░реЗрдВ falseред

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

рд╕рдорд╛рдзрд╛рди: рд╕рднреА рдХреЗ Behaviorрдкрд╛рд╕ рдПрдХ рд╕рд░рдгреА subBehaviorsрд╣реЛрдЧреА рдЬрд┐рд╕реЗ рд╡рд╣ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реИ:

void onStart():
	onStart() 		//     
	for sb in subBehaviors:
		sb.onStart()	//       Behavior
void onActive():
	onActive()
	for sb in subBehaviors:
		sb.onActive()

рдФрд░ рдЗрддрдиреЗ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдПред

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

bool isTransitionActivated(): 		//  idle_walk->attack
	return canSee(enemy);

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

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

рд╕рдВрд░рдХреНрд╖рдг


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

рдПрдХ рд╕реЗрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ dump()рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдмрд╕ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ ред рд▓реЛрдбрд┐рдВрдЧ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИред рдбрд╛рдЙрдирд▓реЛрдб рддрдм рдкреВрд░рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред 

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

рдЬреАрдпреВрдЖрдИ


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

рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдЙрд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА Game2dрдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ onActive, рдФрд░ рдХрдХреНрд╖рд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди, рд╡рд╣ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ рд╡рд╣ рдХреНрдпрд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЙрд╕реЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдФрд░ рд╣рдорд╛рд░реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╕рдВрдХрд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдбрд░рд╛рд╡рдиреА! рдкреНрд▓рд╕рд╕ рд╣реЛрдВрдЧреЗ - рдХреЛрдИ рднреА рдРрд╕реЗ рдЬрдЯрд┐рд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдХреЛрдИ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЗ рдЬреАрд╡рди рдореЗрдВ рднреВрдорд┐ рдХреЗ рдмреНрд▓реЙрдХ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпреВрд░реЗрдирд╕ рдирдХреНрд╖рддреНрд░ рд╡реГрд╖рдн рдореЗрдВ рд╣реЛ рдФрд░ рдпреВрд░реЛ рд╕реЗ рдЕрдзрд┐рдХ рди рд╣реЛ 40 рд░реВрдмрд▓ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдордиреЗ рдЕрднреА рднреА рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИред

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

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

рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЖрд▓реЗрдЦ рдХреЗ рдЬрд╛рд░реА рд╣реЛрдиреЗ рдХреЗ рд╕рдордп GUI рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:


рд╕реНрддрд░ рд╕рдВрдкрд╛рджрдХ


рд╕реНрдЯреЗрдЯ рдорд╢реАрди рдПрдбрд┐рдЯрд░

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


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

рдЕрднреА рднреА рдмрд╣реБрдд рдХрд╛рдо рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЗрд╕ рд╕рдордп рдЬреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИрдВ рдЙрд╕рд╕реЗ рдЦреБрд╢ рд╣реИрдВред 

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

рдЬрд┐рд╣рдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд▓рд┐рдВрдХ: github.com/Glebanister/ample

All Articles