рдЧреЗрдо рд▓реВрдк рд╣рд░ рдЦреЗрд▓ рдХреА рдирдмреНрдЬ рд╣реИред рдХреЛрдИ рднреА рдЦреЗрд▓ рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╣рд░ рдирдП рдЧреЗрдо рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдзреНрдпрд╛рди рджреЗрдВред рд▓реЗрдХрд┐рди рджреБрдЦреА рдордд рд╣реЛ, рдХреНрдпреЛрдВрдХрд┐ рдЕрднреА-рдЕрднреА рдЖрдкрдХреЛ рдПрдХ-рдПрдХ рддрд░рд╣ рдХрд╛ рд▓реЗрдЦ рдкрдврд╝рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рд╛ рд╣реИ, рдЬреЛ рдЦреЗрд▓ рдЪрдХреНрд░реЛрдВ рдХреЗ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реИред рдбреНрдпреВрдЯреА рдкрд░, рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдЫреЛрдЯреЗ рдореЛрдмрд╛рдЗрд▓ рдЧреЗрдо рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреЛрдб рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдФрд░ рд╣рд░ рдмрд╛рд░ рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рдХрд┐рддрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВред рдЖрдк рднреА рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рд╕рд░рд▓ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдпрд╣ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реИ, рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдФрд░ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЦреЗрд▓ рдЪрдХреНрд░реЛрдВ рдХреЗ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд░рд╛рдп рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХрд╛ рднреА рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛ред
(рдХрд╛рдУ рдХрд╛рд░реНрдбрд╕реЛ рдлреЗрд▓рд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдпрд╣ рд▓реЗрдЦ рдмреНрд░рд╛рдЬреАрд▓ рдХреЗ рдкреБрд░реНрддрдЧрд╛рд▓реА рдореЗрдВ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ) (рдореЗрд░реЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд░реВрд╕реА рдореЗрдВ, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)
рдЦреЗрд▓ рдЪрдХреНрд░
рдкреНрд░рддреНрдпреЗрдХ рдЧреЗрдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рдкрдврд╝рдиреЗ, рдЧреЗрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ, рдПрдЖрдИ, рд╕рдВрдЧреАрдд рдФрд░ рдзреНрд╡рдирд┐ рдкреНрд░рднрд╛рд╡ рдЪрд▓рд╛рдиреЗ, рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдХрд╛ рдПрдХ рдХреНрд░рдо рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рдЕрдиреБрдХреНрд░рдо рдЧреЗрдо рд▓реВрдк рдХреЗ рдЕрдВрджрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЯреАрдЬрд╝рд░ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдЦреЗрд▓ рдЪрдХреНрд░ рд╣рд░ рдЦреЗрд▓ рдХреА рдирдмреНрдЬ рд╣реИред рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдЪрдХреНрд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдкрд░ рдкреВрд░реА рддрд░рд╣ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛ред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ, рдореИрдВ рдХрд╛рд░реНрдпреЛрдВ рдХреА рд╕реВрдЪреА рдХреЛ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдХрд░реВрдВрдЧрд╛: рд░рд╛рдЬреНрдп рдЕрджреНрдпрддрди рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрдиред рдиреАрдЪреЗ рдЧреЗрдо рд▓реВрдк рдХреЗ рд╕рд░рд▓рддрдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рд╣реИред
bool game_is_running = true; while( game_is_running ) { update_game(); display_game(); }
рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдЦреЗрд▓ рдмрд╕ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдПрдХ рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░, рдЦреЗрд▓ рдПрдХ рдордЬрдмреВрдд - рддреЗрдЬ рдкрд░, рдзреАрд░реЗ-рдзреАрд░реЗ рдЪрд▓рддрд╛ рд╣реИред рдПрдХ рдмрд╛рд░, рдЬрдм рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдЬреНрдЮрд╛рдд рдерд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╢реАрдиреЛрдВ рдкрд░ рд╕рдорд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рд╣реБрдИрдВред рдЖрдЬ, рдЬрдм рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдХрдИ рдордВрдЪ рд╣реИрдВ, рддреЛ рд╕рдордп рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВред рдореИрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдЗрд╕ рдмреАрдЪ, рдореБрдЭреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗред
рдПрдлрдкреАрдПрд╕рдПрдлрдкреАрдПрд╕ "рдлреНрд░реЗрдореНрд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб" (рдХрд╛рд░реНрдорд┐рдХ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб, рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕рд▓реЗрд╢рдиред) рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдирд╛рдо рд╣реИред рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдЧреЗрдо рд▓реВрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдбрд┐рд╕реНрдкреНрд▓реЗ_рдЧреЗрдо () рдкрд░ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред
рдЦреЗрд▓ рдХреА рдЧрддрд┐рдЧреЗрдо рдХреА рдЧрддрд┐ рдПрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдЧреЗрдо рд╕реНрдЯреЗрдЯ рдЕрдкрдбреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╕рдордп рдХреА рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб update_game () рдХреЛ рдХреЙрд▓ рдХреА рд╕рдВрдЦреНрдпрд╛ред
рдирд┐рд░рдВрддрд░ рдЦреЗрд▓ рдХреА рдЧрддрд┐ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдлрдкреАрдПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рдордп рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╕рдорд╛рдзрд╛рди 25 рдмрд╛рд░ / рд╕реЗрдХрдВрдб рдХреА рдирд┐рд╢реНрдЪрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рдиреАрдЪреЗ рд╣реИред
const int FRAMES_PER_SECOND = 25; const int SKIP_TICKS = 1000 / FRAMES_PER_SECOND; DWORD next_game_tick = GetTickCount(); // GetTickCount() returns the current number of milliseconds // that have elapsed since the system was started int sleep_time = 0; bool game_is_running = true; while( game_is_running ) { update_game(); display_game(); next_game_tick += SKIP_TICKS; sleep_time = next_game_tick - GetTickCount(); if( sleep_time >= 0 ) { Sleep( sleep_time ); } else { // Shit, we are running behind! } }
рдпрд╣ рдПрдХ рдмрдбрд╝реЗ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ: SIMPLICITY! рдЬреИрд╕реЗ рд╣реА рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ update_game () рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрд╛рдХреА рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╕реНрдЯреАрдорд░ рд╢рд▓рдЬрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░рд┐рдкреНрд▓реЗ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдмрди рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЧреЗрдо рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдЦреЗрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреА рдкрд░реАрдХреНрд╖рдг рдорд╢реАрди рдкрд░, рдЖрдк FRAMES_PER_SECOND рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордЭреМрддрд╛ рдореВрд▓реНрдп рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рддреЗрдЬрд╝ рдпрд╛ рдзреАрдореЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдЖрдЗрдП рдЬрд╛рдиреЗрдВред
рдХрдордЬреЛрд░ рд▓реЛрд╣рд╛
рдпрджрд┐ рд▓реЛрд╣рд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП FPS рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИред рдЬрдм рдорд╢реАрди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рдПрдлрдкреАрдПрд╕ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреА рд╣реИ рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреАред рдЦреЗрд▓ рдзреАрдорд╛ рдЪрд▓реЗрдЧрд╛ред рд╕рдмрд╕реЗ рдЦрд░рд╛рдм рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЦреЗрд▓ рдХреБрдЫ рдЕрдВрддрд░рд╛рд▓ рдЦреЛ рджреЗрдЧрд╛, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдореЗрдВ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╕рдордп рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрддрд┐ рд╕реЗ рдмрд╣реЗрдЧрд╛, рдЬреЛ рдЕрдВрдд рдореЗрдВ рдЖрдкрдХреЗ рдЦреЗрд▓ рдХреЛ рдЕрдЬреЗрдп рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред
рдЙрддреНрдкрд╛рджрдХ рд▓реЛрд╣рд╛
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдХрдВрдкреНрдпреВрдЯрд░ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, "рдХреАрдорддреА" (рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рд╡рд┐рдбрдВрдмрдирд╛? - рдмрд░реНрдмрд╛рдж рдХрд░рдирд╛ред рдЕрдиреБрд╡рд╛рджред) рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдордпред 25..30 рдПрдлрдкреАрдПрд╕ рд╕реЗ рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╢рд░реНрдо рдЖрдПрдЧреА, рдЬрдм рдпрд╣ 300 рдХреЗ рд▓рд┐рдП рджреЗ рд╕рдХрддрд╛ рд╣реИ! рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рджрд┐рдЦрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдкрдХрд╛ рдЦреЗрд▓ рдЖрдХрд░реНрд╖рдг рдореЗрдВ рдЦреЛ рдЬрд╛рдПрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдореЛрдмрд╛рдЗрд▓ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдпрд╣ рдмреЗрд╣рддрд░ рдХреЗ рд▓рд┐рдП рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдКрд░реНрдЬрд╛ рдмрдЪрд╛рдПрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдлрдкреАрдПрд╕ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧреЗрдо рд╕реНрдкреАрдб рдореЗрдВ рдмрд╛рдВрдзрдирд╛ рдПрдХ рд╕рд░рд▓ рдЙрдкрд╛рдп рд╣реИ рдЬреЛ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдПрдлрдкреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣рдо рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░реЗрдВрдЧреЗ; рдореВрд▓реНрдп рдХреЛ рдмрд╣реБрдд рдХрдо рдХрд░рдиреЗ рд╕реЗ рдЕрдХреБрд╢рд▓ рд░реВрдк рд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЛрд╣реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрдЧрд╛ред
рдЪрд░ рдПрдлрдкреАрдПрд╕ рдЦреЗрд▓ рдХреА рдЧрддрд┐
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдФрд░ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдЦреЗрд▓ рдХреЛ рдЬрд┐рддрдиреА рдЬрд▓реНрджреА рд╣реЛ рд╕рдХреЗ рдЪрд▓рдиреЗ рджреЗрдВ рдФрд░ рдЦреЗрд▓ рдХреА рдЧрддрд┐ рдХреЛ рд╡рд░реНрддрдорд╛рди рдПрдлрдкреАрдПрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдВред рдкрд┐рдЫрд▓реЗ рдлреНрд░реЗрдо рдХреЛ рдЦреАрдВрдЪрдиреЗ рдореЗрдВ рдмрд┐рддрд╛рдП рдЧрдП рд╕рдордп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЗрдо рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
DWORD prev_frame_tick; DWORD curr_frame_tick = GetTickCount(); bool game_is_running = true; while( game_is_running ) { prev_frame_tick = curr_frame_tick; curr_frame_tick = GetTickCount(); update_game( curr_frame_tick - prev_frame_tick ); display_game(); }
рдХреЛрдб рдЬрдЯрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдм рд╣рдореЗрдВ update_game () рдореЗрдВ рд╕рдордп рдбреЗрд▓реНрдЯрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдХреЛрдб рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдорд╛рд░реНрдЯ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджреЗрдЦрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдкрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдХреНрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдиреАрдЪреЗ рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ (рд╣рд╛рдБ ... рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рднреА) рдкрд░ рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдХрдордЬреЛрд░ рд▓реЛрд╣рд╛
рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХрднреА-рдХрднреА рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рджреЗрд░реА рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЦреЗрд▓ "рднрд╛рд░реА" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ 3 рдбреА рдЧреЗрдо рдореЗрдВ рд╣реЛрдЧрд╛ рдЬрдм рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреЙрд▓реАрдЧреЙрди рдЦреАрдВрдЪреЗ рдЬрд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рдПрдлрдкреАрдПрд╕ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдзреАрдорд╛ рдХрд░ рджреЗрдЧреАред рдЦреЗрд▓ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рд╕реЗ рдПрдлрдкреАрдПрд╕ рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХрд╛ рдЬрд╡рд╛рдм рдорд┐рд▓реЗрдЧрд╛, рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЕрдВрддрд░рд╛рд▓ рдХреЗ рд╕рд╛рде рдмрджрд▓ рдЬрд╛рдПрдЧреАред рдирддреАрдЬрддрди, рдПрдЖрдИ рдХреА рддрд░рд╣, рдЦрд┐рд▓рд╛рдбрд╝реА рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдордп рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЬреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХреЛ рднреА рдЕрд╕рдВрднрд╡ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдорд╛рдиреНрдп рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рджреВрд░ рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдмрд╛рдзрд╛ рдХреЛ рдХрдо рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рджреВрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рднреМрддрд┐рдХреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдФрд░ рднреА рдЧрдВрднреАрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрдВрдЧреАред рднреМрддрд┐рдХреА рдХрд╛ рдЕрдиреБрдХрд░рдг
рдлрдЯ рд╕рдХрддрд╛
рд╣реИ ред
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЛрд╣рд╛
рдЖрдкрдХреЛ рдЖрд╢реНрдЪрд░реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдЦреЗрд▓ рдЪрдХреНрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддреЗрдЬреА рд╕реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдХреНрдпреЛрдВ рджрд┐рдЦрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореБрдЭреЗ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдЧрдгрд┐рдд рдХреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рджреЗрдВред рдлреНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдлреЙрд░реНрдо рдореЗрдВ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рдкрд░рд┐рдорд┐рдд рдмрд┐рдЯ рдЧрд╣рд░рд╛рдИ рдХреЗ рдорджреНрджреЗрдирдЬрд░, рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдорд╛рди 0.1 рдХреЛ рдмрд╛рдЗрдирд░реА рдлреЙрд░реНрдо рдореЗрдВ рдирд╣реАрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдк рдбрдмрд▓ рдХреЗ рдПрдХ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рдЧреЛрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдореИрдВ рдЕрдЬрдЧрд░ рдХрдВрд╕реЛрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реВрдВрдЧрд╛:
>>> 0.1
0.10000000000000001
рдпрд╣ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдирд┐рдбрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд░рдорд┐рдХ рдЧрдгрдирд╛ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЖрддреА рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рддреЛрддреЗ рдореЗрдВ 0.001 (рдореБрдХреНрдд рдЕрдиреБрд╡рд╛рдж, рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рдж) рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░ рд╣реИред 10 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж, рдорд╢реАрди 10.0 рддреЛрддреЛрдВ рдХреА рджреВрд░реА рддрдп рдХрд░реЗрдЧреАред рдпрджрд┐ рд╣рдо рдЗрд╕ рдЧрдгрдирд╛ рдХреЛ рдлреНрд░реЗрдо рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдорд┐рд▓рддреЗ рд╣реИрдВ:
>>> def get_distance( fps ):
... skip_ticks = 1000 / fps
... total_ticks = 0
... distance = 0.0
... speed_per_tick = 0.001
... while total_ticks < 10000:
... distance += speed_per_tick * skip_ticks
... total_ticks += skip_ticks
... return distance
рдФрд░ рдиреБрдХрд╛, рдЪрд▓реЛ 40 рдПрдлрдкреАрдПрд╕ рдХреЗ рд▓рд┐рдП рдпрд╛рддреНрд░рд╛ рдХреА рдЧрдИ рджреВрд░реА рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред
>>> get_distance( 40 )
10.000000000000075
рдПрдХ рдорд┐рдирдЯ рд░реБрдХреЛ! рдпрд╣ 10.0 рддреЛрддреЗ рдирд╣реАрдВ рд╣реИ! рдХреНрдпрд╛ рд╣реБрдЖ? рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рд╣реИ ... рдЪреВрдВрдХрд┐ рд╣рдордиреЗ рдкрде рдЧрдгрдирд╛ рдХреЛ 400 рдлрд╝реНрд░реЗрдореЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорди рдХреЗ рджреМрд░рд╛рди рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐ рд╕рдВрдЪрд┐рдд рд╣реИред рд╕реЛрдЪрд┐рдП, 100 рдПрдлрдкреАрдПрд╕ рдкрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛?
>>> get_distance( 100 )
9.9999999999998312
рд╡рд╛рд╣! рддреНрд░реБрдЯрд┐ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рд╣реИ !!! рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо 100 рдПрдлрдкреАрдПрд╕ рдореЗрдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рдЬреЛрдбрд╝ рдмрдирд╛рддреЗ рд╣реИрдВред рдирддреАрдЬрддрди, рддреНрд░реБрдЯрд┐ рдЕрдзрд┐рдХ рдЬрдорд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЦреЗрд▓ 40 рдПрдлрдкреАрдПрд╕ рдФрд░ 100 рдПрдлрдкреАрдПрд╕ рдкрд░ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
>>> get_distance( 40 ) - get_distance( 100 )
2.4336088699783431e-13
рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдЕрдВрддрд░ рдирдЧрдгреНрдп рд╣реИ рдФрд░ рдЗрд╕реЗ рдЙрдкреЗрдХреНрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЧрдгрдирд╛ рдореЗрдВ рдЗрд╕ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЕрдзрд┐рдХ рдЧрдВрднреАрд░ рд╣реЛрдВрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рдЕрдВрддрд░ рдХрд╛ рдПрдХреАрдХрд░рдг, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рддреНрд░реБрдЯрд┐ рдЗрддрдиреА рдмрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдХрд┐ рдпрд╣ рдЬрдХреНрдХрд╛рдкрд┐рдЯ (рдореВрд▓, рдЕрдиреБрдорд╛рдирд┐рдд рд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реЗрдВрд╕рд░ рд╣реЛред рдЕрдиреБрд╡рд╛рдж) рдмрдбрд╝реЗ рдПрдлрдкреАрдПрд╕ рдкрд░ рдЖрдкрдХрд╛ рдЙрддреНрдкрд╛рджред рдЖрдк рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рддрдиреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ? рд╢рд╛рдпрдж рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдХ рдЦреЗрд▓ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореНрдорд╛рдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕реЗ рдмрдбрд╝реЗ рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдереАред рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЧреЗрдо рдХреЛрдб рдХреЗ рдореВрд▓ рдореЗрдВ "рдХреБрддреНрддреЗ рдХреЛ рджрдлрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ", рдпрд╣ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯрди рдХреЛрдб рдХреЛ рд░рд┐рдлрд▓реЗрдХреНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗ рдЧрдпрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЦреЗрд▓ рдЪрдХреНрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВред рдХрдордЬреЛрд░ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рджреЛрдиреЛрдВ рддрд░рд╣ рдХреЗ рд▓реЛрд╣реЗ рд╕рдорд╕реНрдпрд╛ рдкреИрджрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд░рд╛рдЬреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред рддреЛ рдЗрд╕рдХреЗ рднрдЯреНрдЯреА рдореЗрдВ рд╣реЛ?
рд▓рдЧрд╛рддрд╛рд░ рдЦреЗрд▓ рдХреА рдЧрддрд┐ рдФрд░ рдЕрдзрд┐рдХрддрдо рдПрдлрдкреАрдПрд╕
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, "FPS рдбрд┐рдкреЗрдВрдбреЗрдВрдЯ рдСрди рдП рдХрд╛рдВрд╕реНрдЯреЗрдВрдЯ рдЧреЗрдо рд╕реНрдкреАрдб", рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣ FPS рдФрд░ рдЧреЗрдо рд╕реНрдЯреЗрдЯрд╕ рдЕрдкрдбреЗрдЯ рджреЛрдиреЛрдВ рдХреЗ рд▓реИрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдкрд░ рд░рд╛рдЬреНрдп рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рддрд┐рдкрд╛рджрди рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдХрдо рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛрдб рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
const int TICKS_PER_SECOND = 50; const int SKIP_TICKS = 1000 / TICKS_PER_SECOND; const int MAX_FRAMESKIP = 10; DWORD next_game_tick = GetTickCount(); int loops; bool game_is_running = true; while( game_is_running ) { loops = 0; while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) { update_game(); next_game_tick += SKIP_TICKS; loops++; } display_game(); }
рдЦреЗрд▓ рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 50 рдмрд╛рд░ рдХреА рдирд┐рд╢реНрдЪрд┐рдд рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдХреБрдЫ рдЖрд╕рдиреНрди рдлреНрд░реЗрдо рд╕рдорд╛рди рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЗрдо рд╕реНрдЯреЗрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдЕрдзрд┐рдХрддрдо рдПрдлрдкреАрдПрд╕ рдореВрд▓реНрдп рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ред рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░, рд╕реНрдерд┐рддрд┐ рдЕрджреНрдпрддрди рдЪрдХреНрд░ MAX_FRAMESKIP рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рддрдХ FPS рдШрдЯ рдЬрд╛рдПрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЦреЗрд▓ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рддрднреА рдзреАрдорд╛ рд╣реЛрдирд╛ рд╢реБрд░реВ рд╣реЛрдЧрд╛ рдЬрдм рдкреНрд░рддрд┐рдкрд╛рджрди рдПрдлрдкреАрдПрд╕ 5 рд╕реЗ рдиреАрдЪреЗ рдЖ рдЬрд╛рддрд╛ рд╣реИ (= FRAMES_PER_SECOND / MAX_FRAMESKIP)ред
рдХрдордЬреЛрд░ рд▓реЛрд╣рд╛
рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░, рдПрдлрдкреАрдПрд╕ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЧреЗрдо рд╕реНрд╡рдпрдВ рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐ рд╕реЗ рдЙрдЪреНрдЪ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рд▓реЛрд╣рд╛ рдиреНрдпреВрдирддрдо рдПрдлрдкреАрдПрд╕ рдХрд╛ рд╕рд╛рдордирд╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп рдЕрдкрдбреЗрдЯ рднреА рдзреАрдорд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдЪрд┐рдХрдиреА рдПрдиреАрдореЗрд╢рди рдХрд╛ рдПрдХ рд╕рдВрдХреЗрдд рднреА рдЦреЛ рджреЗрдЧрд╛ред
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЛрд╣рд╛
рдЧреЗрдо рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд░реВрдк рдореЗрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЛ рдЕрдХреНрд╖рдо рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рддреНрд╡рд░рд┐рдд рдЕрдкрдбреЗрдЯ рдФрд░ рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рдмреАрдЪ рд╕рдВрддреБрд▓рди рдЦреЛрдЬрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдирд┐рд╖реНрдХрд░реНрд╖
рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЦреЗрд▓ рдХреА рдЧрддрд┐ рдФрд░ рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдПрдлрдкреАрдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдФрд░ рдЬреЛ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рд░рдЦрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдХреБрдЫ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реНрдЯреЗрдЯ рдЕрдкрдбреЗрдЯ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрдордЬрд╝реЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕рдорд╕реНрдпрд╛рдПрдБ рдЖрдПрдВрдЧреА (рдпрджреНрдпрдкрд┐ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдЙрддрдирд╛ рдЧрдВрднреАрд░ рдирд╣реАрдВ рд╣реИ), рдФрд░ рдХрдо рд╕реНрдЯреЗрдЯ рдЕрдкрдбреЗрдЯ рдлрд╝реНрд░реАрдХреНрд╡реЗрдВрд╕реА рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдЕрднрд┐рдХрд▓рди рд╢рдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ (рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рдПрдирд┐рдореЗрд╢рди рдХреА рдЪрд┐рдХрдирд╛рдИ рдореЗрдВ рд╡реГрджреНрдзрд┐, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ)ред
рдЪрд░ рдПрдлрдкреАрдПрд╕ рд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдЦреЗрд▓ рдХреА рдЧрддрд┐ рд╕реНрд╡рддрдВрддреНрд░
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдХреНрдпрд╛ рдкрд┐рдЫрд▓реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░реЗ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рдиреЗрддреНрд░рд╣реАрди рдЕрдзрд┐рдХ рдЖрдХрд░реНрд╖рдХ рд╣реЛ? рдЦреИрд░, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП, рд╣рд╛рдБ, рдпрд╣ рд╕рдВрднрд╡ рд╣реИ! рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 60 рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ, AI, рд╕рд╛рде рд╣реА рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ (рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ, рд╣рдореЗрд╢рд╛ рдирд╣реАрдВ, рд▓рдЧрднрдЧред рдЕрдиреБрд╡рд╛рджред)ред рддреЛ рдЪрд▓рд┐рдП update_game рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ () рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░, рдЕрдзрд┐рдХ рдирд╣реАрдВ, рдХрдо рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдЬрдм рддрдХ рд▓реЛрд╣реЗ рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рддрдм рддрдХ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд┐рдпрд╛ рдЬрд╛рдПред рд▓реЗрдХрд┐рди рдзреАрдореА рдЧрддрд┐ рд╕реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рд░рд╛рдЬреНрдп рддрд╛рдЬрд╝рд╛ рджрд░ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
const int TICKS_PER_SECOND = 25; const int SKIP_TICKS = 1000 / TICKS_PER_SECOND; const int MAX_FRAMESKIP = 5; DWORD next_game_tick = GetTickCount(); int loops; float interpolation; bool game_is_running = true; while( game_is_running ) { loops = 0; while( GetTickCount() > next_game_tick && loops < MAX_FRAMESKIP) { update_game(); next_game_tick += SKIP_TICKS; loops++; } interpolation = float( GetTickCount() + SKIP_TICKS - next_game_tick ) / float( SKIP_TICKS ); display_game( interpolation ); }
рдирддреАрдЬрддрди, update_game () рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рд░рд▓ рд░рд╣реЗрдЧрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢, display_game () рдлрд╝рдВрдХреНрд╢рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдкреНрд░рдХреНрд╖реЗрдк рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд▓реЗрдХрд┐рди рдЪрд┐рдВрддрд╛ рдордд рдХрд░реЛ, рдпрд╣ рдЙрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИред рдмрд╛рдж рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдкреНрд░рдХреНрд╖реЗрдк рдФрд░ рдкреВрд░реНрд╡рд╛рдиреБрдорд╛рди рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдореИрдВ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред
рдкреНрд░рдХреНрд╖реЗрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ
рдЦреЗрд▓ рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдкреНрд░рдХреНрд╖реЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдлрд╝реНрд░реЗрдо рдХреЛ рдЕрдзрд┐рдХрддрдо рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ 25 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЙрддрдирд╛ рдзреАрдорд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдХрд┐рд╕реА рдХреЛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд┐рд▓реНрдореЛрдВ рдореЗрдВ, рдлреНрд░реЗрдо 24 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдмрджрд▓рддреЗ рд╣реИрдВред рддреЛ 25 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкрд░реНрдпрд╛рдкреНрдд рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рддреЗрдЬ рдЧрддрд┐ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред рдРрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдЪрд┐рдХрдиреА рдПрдиреАрдореЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╛рдЬреНрдп рдХреА рддрд╛рдЬрд╝рд╛ рджрд░ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдмрдврд╝реА рд╣реБрдИ рддрд╛рдЬрд╝рд╛ рджрд░ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдареАрдХ рдкреНрд░рдХреНрд╖реЗрдк рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд╛ рд╕рдВрдпреЛрдЬрди рд╣реИред
* рдиреЛрдЯ perev ред: рдПрдХ рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП NeoAxis рдХреЗ рдЗрдВрдЬрди рдореЗрдВ рдзреНрд╡рдЬ рдХреЛ рдирд┐рд░рдВрддрд░ рдЯрдХрд░рд╛рд╡ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╕рдВрднрд╡ рд╣реИ; рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рд╣реИ рдЬреЛ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИредрдкреНрд░рдХреНрд╖реЗрдк рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА
рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рд░рд╛рдЬреНрдп рдЕрдкрдиреА рд╕реНрд╡рддрдВрддреНрд░ рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдбреНрд░рд╛рдЗрдВрдЧ рд▓рдЧрд╛рддрд╛рд░ рджреЛ рдЯрд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ 10 рдмрд╛рд░ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рд╣реИред рдлрд┐рд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ 10 рдФрд░ 11 рдЯрд┐рдХреНрд╕ рдХреЗ рдмреАрдЪ рдХрд╣реАрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ 10.3 рдХрд╛ рдЕрд╕рддрдд рд╕рдордп рдорд╛рдирд╛ рдЬрд╛рдПред рдирддреАрдЬрддрди, "рдкреНрд░рдХреНрд╖реЗрдк" рдХрд╛ рдорд╛рди 0.3 рд╣реЛрдЧрд╛ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЪрд▓рддреА рдХрд╛рд░ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ:
position = position + speed;
рдпрджрд┐ рд╕реНрдЯреЗрдЯ рдЕрдкрдбреЗрдЯ рдЪрдХреНрд░ рдХреЗ 10 рд╡реЗрдВ рдЪрд░рдг рдореЗрдВ рд╕реНрдерд┐рддрд┐ 500 тАЛтАЛрд╣реИ, рддреЛ рдЧрддрд┐ 100 рд╣реИ, рддреЛ 11 рд╡реЗрдВ рдЪрд░рдг рдореЗрдВ рд╕реНрдерд┐рддрд┐ 600 рд╣реЛрдЧреАред рдЗрд╕рд▓рд┐рдП рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдорд╢реАрди рдХреА рд╕реНрдерд┐рддрд┐ рдХреНрдпрд╛ рд╣реЛрдЧреА? рдЖрдк рдмрд╕ рдЕрдВрддрд┐рдо рдЪрд░рдг рдореЗрдВ рд╕реНрдерд┐рддрд┐ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред 500. рд▓реЗрдХрд┐рди рдЕрдЧрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░рдирд╛ рдФрд░ рд╕рдордп 10.3 рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рд╣рдореЗрдВ рдлреЙрд░реНрдо рдХрд╛ рдПрдХ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ:
view_position = position + (speed * interpolation)
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдорд╢реАрди 530 рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЦреАрдВрдЪреА рдЬрд╛рдПрдЧреАред рдЪрд░ "рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди" рдореЗрдВ рдЖрдо рддреМрд░ рдкрд░ рд╡рд░реНрддрдорд╛рди рдФрд░ рдЕрдЧрд▓реЗ рдлреНрд░реЗрдо рдХреЗ рдмреАрдЪ 0 рд╕реЗ 1 рд╕рд╛рдкреЗрдХреНрд╖ рд╕реНрдерд┐рддрд┐ рдХрд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ (рдмреЗрд╣рддрд░ рд╕рдордЭ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░, рд▓рдЧрднрдЧред)ред рдЪрд┐рдХрдиреА рдПрдиреАрдореЗрд╢рди рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, рдПрдХ рд╕реНрдерд┐рддрд┐ рд╕рдВрднрд╡ рд╣реИ рдЬрдм рдЯрдХрд░рд╛рд╡ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рд╡рд╕реНрддреБ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдВрддрд░ рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рджреЗрдЦрд╛, рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░ рдЕрдкрдбреЗрдЯ рдХреА рдЬрд╛рддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд░реЗрдВрдбрд░рд┐рдВрдЧ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдВ рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рднрд╛рдЬрд┐рдд рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреА (рдФрд░ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдШрдирддреНрд╡ рдЕрдзрд┐рдХ рд╣реИ рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдЯрдХрд░рд╛рд╡ рд╣реИрдВ? - рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рджред рдФрд░ рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХрдордЬреЛрд░ рд▓реЛрд╣рд╛
рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, update_game () display_game () рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рддреЗрдЬрд╝ рдЪрд▓реЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрдордЬреЛрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рднреА, рдЕрдкрдбреЗрдЯ_ рдЧреЗрдо () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 25 рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдЧреЗрдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдХрд┐рд╕реА рднреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд┐рдирд╛ рднреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдЧрд╛ рдЬрдм рд░реЗрдВрдбрд░ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 15 рдлреНрд░реЗрдо рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЛрд╣рд╛
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░, рдЧреЗрдо рдЕрднреА рднреА 25 рдЯрд┐рдХ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреА рдирд┐рд╢реНрдЪрд┐рдд рдЧрддрд┐ рд╕реЗ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рд░реЗрдВрдбрд░рд┐рдВрдЧ рддреЗрдЬ рд╣реЛрдЧреАред рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди + рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдПрдиреАрдореЗрд╢рди рдЕрдкреАрд▓ рдХреЛ рдЬреЛрдбрд╝ рджреЗрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкреНрд░рддрд┐рдкрд╛рджрди рдПрдХ рдЙрдЪреНрдЪ рдПрдлрдкреАрдПрд╕ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЖрдк рдПрдлрдкреАрдПрд╕ рдХреЗ рд╕рд╛рде рдзреЛрдЦрд╛рдзрдбрд╝реА рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЖрдк рдорд╣рд╛рди рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рддрд╕реНрд╡реАрд░ред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЖрдкрдХреЗ рдЧреЗрдо рдореЗрдВ рдЕрднреА рднреА рдЙрдЪреНрдЪ рдПрдлрдкреАрдПрд╕ рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЕрджреНрдпрддрдиреЛрдВ рдХреЛ рдШрдЯрд╛рдирд╛ рдФрд░ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд▓рдЧрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдбрд┐рд╕реНрдкреНрд▓реЗ_рдЧреЗрдо () рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдк рдФрд░ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╕рдЪ рд╣реИ, рдпрд╣ рдХрд╛рд░реНрдп рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ (рдХреЗрд╡рд▓ рдЖрджрд┐рдо рдпрд╛рдВрддреНрд░рд┐рдХреА, рд╡рд╕реНрддреБ, рд▓рдЧрднрдЧ рдЕрдиреБрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордпред рдЕрдиреБрд╡рд╛рджред)ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЧреЗрдо рд▓реВрдк рдЗрддрдирд╛ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдЖрдк рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ 4 рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЬрд╛рдВрдЪ рдХреАред рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╣реИ (рдЬрд╣рд╛рдВ рд░рд╛рдЬреНрдп рдЕрдкрдбреЗрдЯ рдПрдлрдкреАрдПрд╕ рд╕реЗ рдХрд╕рдХрд░ рдмрдВрдзрд╛ рд╣реБрдЖ рд╣реИ) рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рд╕реНрдерд┐рд░ рдлреНрд░реЗрдо рджрд░ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реЛ рд╕рдХрддреА рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрджрд┐ рдЖрдк рдЧреЗрдо рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд░рд┐рдлреНрд░реЗрд╢ рд░реЗрдЯ рдФрд░ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдлреНрд░рд┐рдХреНрд╡реЗрдВрд╕реА рдХреЛ рдбрд┐рдХреЙрдк рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЗрдВрдЯрд░рдкреЛрд▓реЗрд╢рди рдФрд░ рдкреНрд░реЗрдбрд┐рдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдЖрдк рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдФрд░ рдкреНрд░рдХреНрд╖реЗрдк рдХреЗ рд╕рд╛рде рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдПрдХ рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрдордЬреЛрд░ рдФрд░ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд▓реЛрд╣реЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╖реНрдЯрддрдо рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдм рдЕрдкрдиреЗ <% place_your_game_title_here%> рдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдЪ рдХрд░реЗрдВ!
рд╕рдВрдмрджреНрдз рд▓реЗрдЦ (рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ)
- habrahabr.ru/blogs/silverlight/125037 - SL рдореЗрдВ рдЦреЗрд▓ рдЪрдХреНрд░
- habrahabr.ru/blogs/gdev/112444 - рдПрдХ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ рдпреВрдирд┐рдЯреА 3 рдбреА рдореЗрдВ рдкреНрд░рддрд┐ рдЧреЗрдо рд▓реВрдк рдирд╣реАрдВ рд╣реИ (рдХреНрдпрд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ?)
- habrahabr.ru/blogs/gdev/102930 - рдПрдХ рдЧреЗрдо рдЗрдВрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
- habrahabr.ru/blogs/android_development/136968 - рдирд╛рд░рд┐рдпрд▓ рдкрд░ рдЦреЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
- gafferongames.com/game-physics/fix-your-timestep - рдЦреЗрд▓реЛрдВ рдореЗрдВ рдЕрд╕рддрдд рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рд▓реЗрдЦ