Inferno #06
03 декабря 2004

Gamedev - Игровой цикл - цикл, внутри которого вызываются все подпрограммы игры.

              Игровой цикл.
 

   Вот пример краткого сообщения (заметки)
для  Info Guide. Такую  коротенькую статью 
написать  ничего не стоит, в ней вы можете 
зафиксировать  для себя и остальных какую- 
либо информацию, которая иначе бы забылась 
и была бы открыта снова,гораздо позже,кем- 
нибудь другим. Время людей,сами понимаете, 
нужно беречь. 
 

   Под игровым циклом понимают либо насто-
ящий  цикл, внутри которого вызываются все 
крупные  подпрограммы игры (от опроса кла- 
виш до построения экрана),либо время испо- 
лнения  определённой регулярной последова- 
тельности  действий, например, относящейся 
к логике врагов. 

   Чтобы  игра бегала с одинаковой скорос-
тью  вне зависимости от скорости процессо-
ра,время игрового цикла следует зафиксиро-
вать с помощью прерываний. Если с прерыва-
ниями не синхронизироваться,то в турбо-ре-
жиме персонажи будут носиться как бешеные.
Хочется же,чтобы они ходили с обычной ско-
ростью,но экран перестраивался почаще. Что
из этого следует? То,что построение экрана
следует оторвать от обсчёта логики.

   Логика  либо  1) висит  на  прерывании,
либо 2) вызывается  off-int с определённой
частотой, зависящей  от флажков/счётчиков, 
которые должен формировать обработчик, ли- 
бо 3) вызывается однократно  в цикле пост-
роения  экрана, но  с учётом того, сколько 
прерываний  прошло от прошлого раза - ска- 
жем, менять шаг движения персонажей. 
   Третий вариант опасен,поскольку при ме-
дленном  построении экрана (много фреймов)
персонажи  рискуют  своими большими шагами
(накопились  за много фреймов) начать сре-
зать углы. В любом случае,их траектории на
быстром  и медленном компьютере будут раз-
личаться, что не даст, например,записывать
ролики  в demo-режиме. Третий  вариант был
забракован  в нашем Wolf где-то в 2002 го-
ду. Ещё раньше синхронизации вообще не бы-
ло.К сожалению,демо-режим сделать не успе-
ли. Одна процедура логики персонажей (пре-
вращение раненого в труп) осталась снаружи
прерывания,и времени это исправить до кон-
курса уже не было. На играбельность это не
влияет и вообще игроку не заметно,но нару-
шалась предсказуемость ролика при проигры-
вании  даже  на том компьютере, где он был
записан.

A. Coder 




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Сеть - Сетевые новости. Список BBS: ZX-Net 095, Независимые BBS.
О разном - как искать в интернете спектрумовских софт и переносить его на спектрум.
Scene - Interview with Yerzmyey/Hooy-Programm.

В этот день...   19 ноября