Bosh sahifa Wiki Game loop

Game loop

Game loop (o’yin tsikli) — har qanday video o’yinning yurak urishi hisoblangan asosiy dasturiy tsikl bo’lib, u o’yin ishga tushgandan yopilgungacha uzluksiz takrorlanadi. Bu tsikl o’yinchi kiritgan buyruqlarni qayta ishlash, o’yin holatini yangilash va natijani ekranga chiqarishni izchil tartibda bajaradi.

Asosiy tsikl sifatidagi vazifasi

Oddiy dasturlardan farqli o’laroq, o’yin foydalanuvchi harakatini kutib o’tirmaydi — u doimiy ravishda, sekundiga o’nlab marta o’zini yangilab, natijani ko’rsatib turishi kerak. Game loop aynan shu uzluksiz jarayonni tashkil etadi, u o’yin ishlab turgan butun davomida to’xtovsiz aylanadi.

Kirish, yangilash, render qilish bosqichlari

Klassik game loop uchta asosiy bosqichdan iborat: avval foydalanuvchi kiritgan buyruqlar (klaviatura, sichqoncha, joystik) qayta ishlanadi, so’ngra o’yin dunyosining holati (personajlar pozitsiyasi, jismlar harakati) yangilanadi, va nihoyat, yangilangan holat ekranga chiqariladi (render qilinadi). Bu uchta bosqich har bir “kadr”da takrorlanadi.

Kadr tezligidan mustaqil yangilash muammosi

Agar o’yin holati har kadrda bir xil miqdorda o’zgartirilsa, tezroq kompyuterlarda o’yin tezroq, sekinroq kompyuterlarda esa sekinroq harakat qiladi — bu jiddiy muammo hisoblanadi. Bu muammoni hal qilish uchun zamonaviy dvigatellar kadrlar orasidagi haqiqiy vaqt farqini (delta time) hisobga olib, harakatni vaqtga proportsional ravishda yangilaydi.

Fixed va variable timestep yondashuvlari

“Fixed timestep” yondashuvida o’yin holati har doim bir xil, sobit vaqt oralig’ida yangilanadi, bu esa fizika simulyatsiyasi uchun izchillik va bashorat qilinadigan natija beradi. “Variable timestep” esa har bir kadrning haqiqiy davomiyligiga moslashadi, bu render qilishni silliqroq qilishi mumkin, ammo fizika hisob-kitoblarida noaniqlik keltirib chiqarishi mumkin.

Ko’p ipli zamonaviy dvigatellardagi o’rni

Zamonaviy o’yin dvigatellari game loop‘ning turli qismlarini (render qilish, fizika, sun’iy intellekt) alohida protsessor iplarida parallel bajarishga harakat qiladi, bu esa ko’p yadroli protsessorlardan samaraliroq foydalanish va yuqoriroq kadr tezligiga erishish imkonini beradi.

Bog’liq tushunchalar

Frame rate, Rendering, Game engine, Delta time, Physics engine, Input handling