Если вы говорите с самого начала, и обратите внимание, что очень немногие основные игровые движки больше кодируются с нуля, и обратите внимание, что это пример, а не обязательно, как он всегда работает. , ,
Оказание:
Начните с рендеринга плоского куба. Добавьте основные световые эффекты к нему. Добавьте способ перемещения камеры. Теперь вы можете летать вокруг скучного куба, подвешенного в бесконечной черной пустоте. Ура.
Далее, вы, вероятно, хотите импортировать модель. По крайней мере, ваш художник может создать демонстрационную модель (чайник на удивление традиционен), но у него может быть настоящая игровая модель, которую он может вам вручить. Опять же, сейчас мы придерживаемся плоской штриховки, поэтому она будет выглядеть так, как будто она сделана из. , , ну, не реалистичная субстанция, а нечто вроде матового пластика и фарфора. Это , но без хорошего освещения. И мы все еще находимся в точке, где это абсолютно неподвижно.
Следующие три основных шага могут быть выполнены в любом порядке.
Во-первых, вам понадобится местность. В большинстве современных игр рендеринг делится на «статическую геометрию» и «актеров», где статическая геометрия включает в себя вещи, которые не меняются (стены, земля, фонарные столбы), а актеры - вещи, которые меняются (игроки, транспортные средства, разрушаемые фонарные столбы). Базовая концепция рендеринга одинакова для обоих, есть оптимизации, которые вы можете сделать для статической геометрии, которые вы не можете сделать для актеров. Вам понадобится местность, чтобы инженеры геймплея действительно начали работу, поэтому, если они ждут вас, пришло время настроить хотя бы базовый рендеринг местности.
Во-вторых, вы хотите текстурирование. Это огромная тема, и есть вероятность, что вы достигнете вехи, будете делать что-то более критическое, а потом возвращаться к нему неоднократно. Ваш первый проход может просто добавить текстуры в модель. Ваш второй проход может добавить улучшенное освещение и поведение поверхности. Ваш третий проход может добавить тени (я мог бы заполнить весь ответ, говоря о тенях). В зависимости от того, какую игру вы делаете, это может быть произвольно сложным. Где-то здесь вы также можете переключить весь игровой движок на отложенный рендеринг.
В-третьих, вам понадобится анимация. Ваши аниматоры (предположим, вы не живете в 1995 году) настроят анимационные буровые установки для своих моделей, состоящие из костей, проходящих через модель, и информации о том, как кости движутся во время определенных анимаций. Вероятно, вы начнете с возможности проигрывать анимации по требованию, а затем добавите возможность смешивать анимации вместе.
Как только все это будет сделано, пришло время поработать над совместимостью. Если вы работаете над игрой ААА, у вас есть какой-то способ протестировать свой код на множестве разных типов оборудования - может быть, это собственное дело, может быть, вы заключите контракт с фирмой по тестированию, что угодно. Большая часть вашего кода сломается на определенных видеокартах или определенных версиях драйверов, и вы сможете исправить столько, сколько сможете.
Пришло время подумать об оптимизации. Рендеринг - это большая, большая проблема со скоростью, поэтому теперь вам нужно выяснить, как использовать оборудование на самом глубоком уровне, чтобы работать как можно быстрее. Если вы думаете, что это может противоречить «совместимости», вы правы! Это полностью делает! Вы найдете, что лучшие оптимизации просто не будут работать на некоторых картах. Вы можете сбалансировать все эти факторы.
С этого момента ваши художники будут нуждаться в новых инструментах текстурирования или новых функциях анимации, а ваши дизайнеры уровней будут нуждаться в новых методах рендеринга ландшафта. Вернитесь к «следующие три основных шага можно выполнить в любом порядке» и повторяйте, пока игра не будет завершена.
Игровой процесс:
Я собираюсь пропустить части, которые не очень визуально заметны. Во-первых, вам нужно подождать, пока не начнется рендеринг ландшафта, хотя до этого вы можете сделать много бэкэнда.
Как только вы это получите, вы создадите несколько базовых коллизий. Скорее всего, это примет форму полета в игровое место и нажатия кнопки, которая опускает куб. Куб падает и падает на землю. Как только куб последовательно приземлится на землю, вы можете начать настраивать движение игрока, чтобы вы могли бегать по миру так же, как и игрок.
Как только вы освоите базовую физику движения, вы снова попадаете в один из этих сегментов «это можно сделать одновременно»:
Бой должен быть реализован. Вам нужны вещи, которые могут стрелять в вещи, и все эти вещи должны вести себя соответствующим образом.
Физика должна быть реализована. У вас работают коллизии, но коллизии - это всего лишь маленький сегмент физики. Когда кто-то сбивает джип с танка, все должно вести себя примерно так, как задумано.
Игровая механика должна быть реализована. Как вы знаете, когда вы выиграли или проиграли? Как часто появляются вещи, и что контролирует это? Если коммунисты завоевывают точку возрождения, почему она продолжает порождать анархистские машины? Что-то в этом роде.
Все это может занять, опять же, произвольное время, в зависимости от того, сколько вещей ваши дизайнеры хотят, чтобы вы делали. Вы также будете тратить кучу времени на поиск ошибок («эй, посмотри, что произойдет, когда я подвезу танк к крылу этого реактивного истребителя»). Обратите внимание, что многое из этого произойдет с нетекстурированным миром, или с моделями, бегающими вокруг в положении персонажа , или с танками, которые являются просто большими коробками с неуклюжимым окрасом словом «ТАНК».
UI:
Пользовательский интерфейс действительно может запуститься до того, как поступит основной код рендеринга, поскольку рендеринг пользовательского интерфейса и игрового мира, как правило, использует совершенно разные пути кода. Вместо того, чтобы начинать с куба, вы начнете с блока, затем добавите текстуры в блок, а затем добавите текст в блок.
На этом этапе ваша жизнь потрачена на то, чтобы получить достаточно времени для написания виджетов общего назначения, при этом затрачивая достаточно времени для пользовательского интерфейса, чтобы дизайнеры и разработчики игровой механики могли протестировать игру в смутном подобии реализма. В какой-то момент ваши художники пользовательского интерфейса придут к согласованному восприятию пользовательского интерфейса, а затем вы начнете работать над завершенными элементами пользовательского интерфейса, одновременно тестируя эти элементы пользовательского интерфейса на реальных игроках, чтобы убедиться, что они понятны и применимы.
Я могу больше говорить об этом по мере необходимости, но если я это сделаю, то это превратится в мегареспондент, так что пока не буду :)