Как видеоигры попадают на мой экран? - PullRequest
3 голосов
/ 27 июля 2010

Когда я играю в видеоигру (любую старую игру, такую ​​как гоночная игра или сборщик или что-то еще), как все отображается на экране с точки зрения того, что происходит в программе? Есть ли какой-нибудь большой метод RenderEverything, который выполняется один раз за кадр? хотя мне кажется, что это довольно медленный путь к подобным вещам.

РЕДАКТИРОВАТЬ: в качестве дополнительного вопроса: Как компьютер, выполняющий рендеринг, определяет фрейм как для рендеринга графиков, так и для действий в игре, таких как медленный ход персонажа по комнате. Например, есть ли часы t, которые продолжают увеличиваться, и каждый рендер и каждое движение происходят как функция от t? Если да, то как определяется t относительно системы, в которой он работает?

Я хочу, чтобы этот вопрос был несколько синонимичен: когда мой курсор на экране мигает дважды каждую секунду, как он узнает, что такое секунда? Также в Java, как я могу сделать программу, которая отображает строку текста, затем ждет секунду и отображает другую строку? (perahps это становится слишком пространным)

Ответы [ 3 ]

1 голос
/ 27 июля 2010

Когда я играю в видеоигру (любую старую игру, такую ​​как гоночная игра или сборщик или что-то еще), как все отображается на экране с точки зрения того, что происходит в программе?Есть ли какой-нибудь большой метод RenderEverything, который выполняется один раз за кадр?

Зависит от игры.2D-игры могут сохранять часть сцен, отрисованных в предыдущих кадрах, особенно старые игры без прокрутки экранов.3D игра скорее всего перерисовывает весь экран.Также хорошая игра никогда не рендерит все - только видимые объекты.Поскольку рендеринг выполняется медленно, в то время как рендеринг только видимых объектов значительно быстрее.

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

Вы можете попытаться найти другой путь.Обычная игра перерисовывает каждый видимый объект.Игра без аппаратного ускорения может отслеживать неизмененные области экрана и перерисовывать только те объекты, которые были изменены, перемещены и т. Д. В игре с аппаратным ускорением этого делать не нужно - она ​​может перерисовывать все на экране каждый кадр.Поскольку сложность игры / кадра / сцены увеличивается, гораздо проще просто перекрашивать каждый видимый объект в каждом кадре, а не отслеживать вещи, которые изменились по сравнению с предыдущим кадром.

1 голос
/ 27 июля 2010

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

Это то, что вы спросили?

Вопросы по разработке игр следует задавать здесь: https://gamedev.stackexchange.com/:)

0 голосов
/ 27 июля 2010

Вот и все. «Видеоигра» - это по сути большой конечный автомат, в котором все состояние обновляется в соответствии с частотой кадров. Пользовательский ввод в сочетании с правилами игры и искусственным интеллектом противника влияет на состояние игры. После того, как в каждом кадре отображается вид игрока, а не полный вид игры,

Загрузите источник землетрясения , это дает возможность для интересного прочтения в комментариях, а также дает отличное представление о том, как устроена игра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...