Цикл статей по внутреннему устройству Quake-движков: различия между версиями

Материал из CSM Wiki
Перейти к навигации Перейти к поиску
(Новая страница: «Категория:Разработка игровых движков К созданию данного цикла статей (ну или по крайн…»)
 
 
(не показана 1 промежуточная версия этого же участника)
Строка 1: Строка 1:
[[Категория:Разработка игровых движков]]
+
[[Категория:Страницы для удаления]]
К созданию данного цикла статей (ну или по крайней мере первой статьи из цикла) меня подтолкнул тот простой факт, что даже спустя 16 лет подавляющее большинство крайне смутно себе представляет принцип работы Quake-движков. Статей по их внутреннему устройству практически нет, а то что есть - перевод надмозгов о принципе работы BSP. Причем перевод такого рода, что понять чем там вообще идет речь затруднительно, но признаваться в этом как-то стыдно.
 
 
 
Поэтому их мапперы их друг-другу советуют к прочтению, а потом с умным видом спрашивают: ну как, помогло? На сайте gamedev.ru, до сих пор проскакивают упоминания о чрезмерной брутальности кода кваки, а один товарищ два дня искал там класс камеры, но так и не смог найти.
 
 
 
В силу этого представление о том, как пишутся игровые движки у многих строятся исключительно на книжках для начинающих с названием "как самому сделать игру". Эти книжки неплохо помогают провести начальный ликбез, но все примеры в них не являются хоть сколько-нибудь конкурентоспособными. То есть, грубо говоря, в книжке приводится простой пример как можно сделать то-то и то-то, но всегда обходится стороной тот факт, что в реальных условиях этот пример выступит ключевым тормозом перестройки и для серьезной игры он попросту непригоден. При этом литературы о том, как писать серьезные движки по сути не существует в природе. Предполагается что грамотному программисту достаточно лишь обрисовать алгоритм, а он по нему уже сам всё зафигачит.
 
 
 
В результате имеем дефицит информации как раз для того слоя, который имеет о работе 3D движков уже довольно определенное представление, но о самих методах, причем не абстрактных, а тех, которые реально работают и дают приемлемые результаты. Иными словами из всех примеров NeHe полноценный движок не слепить.
 
 
 
Когда-то на gamedev.ru существовал неплохой обучающий проект GUNgine, преследующий аналогичные цели, но к сожалению после 12-го урока он был свернут, а сами уроки-примеры куда-то пропали. Собственно я перед собой цели написать такой движок-пример не ставлю, поскольку до меня с этой задачей справилась Id Software вообще и гражданин Кармак в частности. И да, я полагаю, что изучение внутреннего устройства движка, который был использован в доброй сотне игр и модов, практически без изменения ядра и архитектуры заслуживает того, чтобы посвятить ему цикл статей, где подробно рассмотреть основные механизмы и методы их реализации.
 
 
 
Первое, что хотелось бы осветить, это механизмы отсечения невидимых для игрока объектов и частей уровня, как на клиенте, так и на сервере, поскольку это один из основных механизмов, дающий движку приемлемую производительность даже на слабых машинах. Темы для остальных статей из цикла, я думаю определят наши форумчане, в виде пожеланий- предложений. Основные аспекты будут раскрываться применительно ко всей линейке движков Quake от первого до третьего, поскольку там много схожих механизмов, ну и иногда будет упоминаться Half-Life, если данный механизм там имеет некоторые отличия.
 
 
 
Кроме того будет отдельная статья, посвященная загрузке, отрисовке и коллоизации студиомоделей, которые используются в Half-Life (потому что на эту тему тоже практически нет информации).<br/>
 
Автор: Дядя Миша
 

Текущая версия на 11:42, 17 августа 2019