Зальцман М.
Компьютерные игры: как это делается
стр. 180

Некоторые движки позволяют создавать игровые объекты, а затем добавляют или удаляют их при прорисовке. Другие предпочитают, чтобы объекты сами себя рисовали с помощью класса screen. Третьи движки одновременно прорисовывают несколько сцен, используя систему окон. Наконец, некоторые программы накладывают объекты на сцену слоями в особом порядке, оставляя основной экран интерфейса самым последним, чтобы он всегда был виден.

Ряд игровых компаний открыли доступ к исходным кодам своих старых игр. Хотя вас, скорее всего, не заинтересует прямое использование их архаичных и потерявших блеск движков, вы можете захотеть исследовать основной цикл игры, механизмы ввода данных, передачу сообщений внутри игры, обработчик объектов, инструменты отладки и систему прорисовки игрового мира.

Один из примеров предложения исходного кода игры через Интернет - продукция компаний Raven Software и Activision, опубликовавших исходные тексты Heretic и Hexen для бесплатного использования. Загрузить их можно с узла www2.ravensoft.com/source. Не стала прятать свои исходные коды и id Software, выложившая в Интернет код Quake.

Избегайте статических классов и переменных

Аллен Джексон предостерегает от опасности попадания в «ловушку памяти» при использовании статических классов и приводит пример программы, демонстрирующей альтернативный способ обойти это часто встречающееся программистам препятствие.

Статические переменные подобны глобальным, так как они доступны из большинства классов, но одновременно может существовать только один экземпляр такой переменной. Существует несколько классов, таких как ClassOperatingSystem, ClassGameSound и ClassFileSystem, которые действительно подразумевают наличие единственного экземпляра класса. Некоторые другие классы выглядят так, будто для них тоже должен существовать только один экземпляр, хотя иногда допускается наличие и нескольких экземпляров. Классический пример подобного статического класса - ClassGameWorld:

class ClassGameWorld {

public:

// статические данные игрового мира static void* m_GameWorldData;

// статические компоненты-функции

static bool Install(void);

static bool Remove(void);

static bool AddObject(GameObject& _obj);

};

После определения класса программист мог использовать функцию World: :AddObject() в любом месте в своих модулях, что удобно, но позволяет


Новости
В погоне за Telegram Роскомнадзор заблокировал доступ к играм Blizzard
Пользователи предположили, что IP-адреса Blizzard были включены в выгрузку Роскомнадзора, который исполняет решение суда о блокировке сервиса Telegram в России.
God of War вернулся на вершину британского чарта
Топ-10 самых популярных игр в Великобритании за период с 9 по 16 июня выглядит следующим образом: God of War (2018); FIFA 18; Fallout 4; Detroit: Become Human; PlayStation VR Worlds; Grand Theft Auto V; Mario Kart 8 Deluxe; Vampyr; Assassin's Creed Origins; Call of Duty: WWII.