ක්රීඩා ලූපයක් ස්ථාවර හෝ විචල්ය කාල පියවර මත පදනම් විය යුතුද? යමෙක් සෑම විටම උසස්ද, නැතහොත් ක්රීඩාව අනුව නිවැරදි තේරීම වෙනස් වේද?
විචල්ය කාල පියවර
භෞතික විද්යාත්මක යාවත්කාලීනයන් "අවසන් යාවත්කාලීනයේ සිට ගත වූ කාලය" යන තර්කය සම්මත කර ඇති අතර එබැවින් ඒවා රාමු මත රඳා පවතී. මෙයින් අදහස් කරන්නේ ගණනය කිරීම් සිදු position += distancePerSecond * timeElapsed
කිරීමයි.
වාසි : සුමට, කේත කිරීමට පහසුය
අවාසි : නිර්ණය කළ නොහැකි, ඉතා කුඩා හෝ විශාල පියවර වලින් අනාවැකි කිව නොහැක
deWiTTERS උදාහරණය:
while( game_is_running ) {
prev_frame_tick = curr_frame_tick;
curr_frame_tick = GetTickCount();
update( curr_frame_tick - prev_frame_tick );
render();
}
ස්ථාවර කාල පියවර
සෑම යාවත්කාලීනයක්ම නිශ්චිත කාල සීමාවක් සඳහා යැයි උපකල්පනය කරන බැවින් යාවත්කාල කිරීම් "ගත වූ කාලය" පවා පිළිගන්නේ නැත. ගණනය කිරීම් එසේ කළ හැකිය position += distancePerUpdate
. උදාහරණයට විදැහුම්කරණය අතරතුර අන්තර් මැදිහත්වීමක් ඇතුළත් වේ.
කිහිප දෙනකුගේ හොඳ : අනාවැකි කිව හැකි අයනික (ජාලය සමමුහුර්ත කිරීමට පහසු?), පැහැදිලි ගණනය කේතය
අවාසි : මොනිටරය v-සමමුහුර්ත වෙත සමමුහුර්ත නොවේ (ඔබ සටහන් මිස කලබැගෑනියට රූප හේතු), උපරිම රාමු ෙව්ගය සීමා (ඔබ සටහන් නම්), ඒ රාමුව තුල වැඩ කිරීමට අපහසු විචල්ය කාල පියවර උපකල්පනය කරන්න ( පිග්ලට් හෝ ෆ්ලික්සෙල් වැනි )
deWiTTERS උදාහරණය:
while( game_is_running ) {
while( GetTickCount() > next_game_tick ) {
update();
next_game_tick += SKIP_TICKS;
}
interpolation = float( GetTickCount() + SKIP_TICKS - next_game_tick )
/ float( SKIP_TICKS );
render( interpolation );
}
සමහර සම්පත්
- ක්රීඩා පිළිබඳ ගාෆර්: ඔබේ වේලාව නිවැරදි කරන්න!
- ඩිවිටර් ගේම් ලූප් ලිපිය
- ක්වේක් 3 හි එෆ්පීඑස් පැනීමේ භෞතික විද්යාවට බලපායි - බොහෝදුරට ඩූම් 3 රාමු අගුළු 60fps දක්වා අගුළු දමා තිබේද?
- ෆ්ලික්සෙල්ට විචල්ය කාලසටහනක් අවශ්ය වේ (මම හිතන්නේ මෙය ෆ්ලෑෂ් විසින් තීරණය කරනු ලැබේ) ෆ්ලෑෂ්පන්ක් වර්ග දෙකටම ඉඩ දෙයි.
- බොක්ස් 2 ඩී හි අත්පොත Box බොක්ස් 2 ඩී ලෝකය අනුකරණය කිරීම යෝජනා කරන්නේ එය නියත කාල පියවර භාවිතා කරන බවයි.