PDA

Просмотр полной версии : Игростроение: отделение игровой логики от вывода на экран.



moroz1999
08.10.2006, 18:52
Пишу кой-какие заготовки, потенциально для игрушки, вот думаю, насколько целесообразно будет сделать так:
Повесить всю логику (опрос клавы, примитивный AI, игровую физику) на перерывания, а основной вывод на экран и копирование инфы между банками памяти реализовывать в основное время.
Что это даст? независимость хода игры от скорости процессора и, при продуманной реализации, так сказать, fps-систему.

У меня мало опыта в игростроении, поэтому требуются ваши мнения. Что вы можете сказать по этому поводу? какие могут быть минусы у такой системы?

вывод идёт в оба экрана, не через стек, а используя таблицу предварительно смещенных байтов.

captain cobalt
08.10.2006, 20:27
IG#6/code/Игровой цикл

Robus
09.10.2006, 00:22
У меня мало опыта в игростроении, поэтому требуются ваши мнения. Что вы можете сказать по этому поводу? какие могут быть минусы у такой системы?

Очень сложно оценить данную схему, ведь всё зависит от того какая именно графика, нужно ли синхронное изменение бордюра с экраном ... Вообщем множество факторов, которые могут повлиять на строение кода. Я всегда стараюсь всё, что работает с изображением делать только на прерываниях, это хоть и заставляет постоянно искать выходы из тупиков, но в итоге приводит к оптимальному коду, или близком к идеалу. А вне прерывания делаю всяческие депакенги и декранченги ... Кстати, опрос клавиш я так же практически всегда делаю на прерываниях. Однако, когда-то у меня была клавиатура с кабелем длиной 1 метр, уж очень я любил выложить ноги и программировать в развалку. И длина кабеля очень влияла на проверку дребезга клавиатуры. Поэтому есть у меня один очень дивный ONE-FRAME редактор текста с необычным опросом клавиш. Но всего в этом мире не учтёшь. Хотя это я со своим асмовским взглядом на "ВОРЛД" !!!

psndcj
09.10.2006, 19:46
отделять игровую логику от вывода на экран конечно надо - но это не обязательно делать так уж жестоко - это на прерываниях, а это нет. как бы попонятнее пояснить свою мысль...

ну например вот наша старая игра moorhuhn:
// на прерываниях опрос клавы, мышки и проигрывание музыки
// вывод курсора (каждый фрейм на новом месте =)

// в основное время обработка данных от органов управления (кадр строится и выводится за 2 фрейма
// следующие процедуры:
// движение петухов (кто, где, когда, как)
// обработка выстрела (если был, то что произошло - убиваем петуха?, вычитаем пулю?, обсчет "комбо"
// управление выстрелом
// вывод на экран

последняя процедура обрабатывает очередь спрайтов, где указаны координаты спрайтов и номера анимаций. она абсолютно (ну теоретически=) не зависит от остальных блоков, и опять же теоретически ее можно в любой момент поменять и/или переписать...