Преимущества использования низкоуровневых языков в разработке современных игр - Студенческий научный форум

XIII Международная студенческая научная конференция Студенческий научный форум - 2021

Преимущества использования низкоуровневых языков в разработке современных игр

Нарыжный В.А. 1, Абрамова О.Ф. 1
1ВПИ (филиал) ВолгГТУ
 Комментарии
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

Введение

В наше время, в 2020 году, индустрия разработки компьютерных видеоигр развилась до такой степени, что порой графику современной компьютерной игры очень трудно отличить от графики в современном фильме. Некоторые компании-разработчики игр создают настолько реалистичные игры с фантастической графикой, что человек, играя в них, зачастую не видит ощутимой разницы с реальным миром. Так, в далёких 2000-х, в эру Counter-Strike 1.6, Diablo II, Quake, люди даже и представить не могли, что в относительно ближайшее время видеоигры будут иметь графику, настолько сильно отличающуюся от игр тех времён.

Counter-Strike 1.6 – эталон графики 2000 года

Cyberpunk 2077 – одна из самых рейтинговых игр 2020 года

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

Языки программирования и производительность

Производительность и количество ресурсов, которые нужны компьютеру для обработки данных в играх, сильно зависят от выбранного компанией языка программирования. Используя языки программирования высокого уровня, такие как Python, JS, вряд ли получится сделать хорошую игру с приемлемой графикой. Как правило, данные языки программирования уступают низкоуровневым языкам в плане скорости, так как они требуют предварительной компиляции или интерпретации, и затрата памяти для работы программы. Python, являясь интерпретируемым языком программирования, построчно анализируется и обрабатывается, что значительно снижает его быстродействие. Современные игры, написанные на языках высокого уровня, будут затрачивать память компьютера в огромном количестве.

Именно поэтому компании, занимающиеся разработкой игр, используют языки, которые максимально приближенны к языкам машинного уровня (низкоуровневые), например, С/С++. Машинно-зависимые языки (Assembler) имеют в данной сфере огромное преимущество перед языками высокого уровня за счёт своей возможности напрямую обращаться к регистрам и памяти, что значительно снижает потребление ОЗУ и повышает производительность благодаря отсутствию предварительной компиляции. Но у многих возникнет вопрос: почему нельзя писать игры на чистом ассемблере? Как и все языки программирования, он имеет и определённые недостатки. Как правило, код игры на том же С++ занимает несколько миллионов строк. Что же тогда будет с кодом на ассемблере? Так как код на ассемблере представляет набор машинных команд, где каждая команда должна быть написана на новой строке, можно предположить, что данный код игры займёт примерно в 100 раз больше строк нежели на том же С++. О читаемости кода в таком огромном проекте можно и вовсе забыть. Также существенным минусом машинно-зависимого языка является отсутствие возможности перенести программу на другую архитектуру процессора и отсутствие значимых библиотек, которые необходимы при создании видеоигр и работы с графикой.

С++ - король разработки видеоигр

Эти минусы или даже нюансы использования машинно-зависимого языка (без которого в данной индустрии почти не обойтись) могут отпугнуть многих людей, заинтересовавшихся разработкой игр. Но стоит вернуться к ранее названному С++. Как было сказано, данный язык является низкоуровневым и перед запуском компилируется, преобразуется в машинный код, и ассемблируется, что значительно повышает производительность написанных на нём программ. Возможность использовать ассемблерные вставки в данном языке значительно увеличивает производительность в важных моментах игры, где быстродействие является главным приоритетом. Непосредственное управление памятью также значительно экономит ресурсы ОЗУ, используемые на обработку сцен, данных в игре. Именно поэтому разработчики игр используют именно его. Почти все игровые движки, например, Unreal Engine 4, Rage (GTA5 от Rockstar Games), REDengine (Cyberpunk 2077), написаны на С++. Использование движков решает проблему сложного рефакторинга кода на машинно-зависимом языке. Благодаря движкам можно с лёгкостью вносить изменения в игру, добавлять аддоны и прочее, а также создавать другие игры на данном движке без каких-либо лишних затрат, изменений и усилий

Заключение

Подводя итоги, можно сказать лишь одно: в индустрии разработки видеоигр создание качественной игры с хорошей графикой, оптимизацией, производительностью, где на обработку данных необходимо затратить минимальное количество ресурсов, без использования языков низкого уровня и машинно-зависимых языков почти невозможно из-за больших затрат ресурсов языками программирования высокого уровня. Непосредственное обращение к процессору, быстрота, минимальные затраты памяти, в чём и заключается превосходство низкоуровневых языков, в разработке современных игр являются более значимыми аспектами нежели компактность и читаемость кода.

Библиографический список

Айсин Д.В. Исследование и анализ использования низкоуровневых языков в разработке современных компьютерных игр / Д.В. Айсин, О.Ф. Абрамова // Студенческий научный форум – 2020 : доклады XII Международной студенческой научной конференции. Направление «Технические науки» (секция «Актуальные проблемы компьютерной визуализации») / Российская академия естествознания (РАЕ). - Москва, 2020. - URL : https://scienceforum.ru/2020/article/2018018048.

Клетсков Р.А. Исследование возможностей для работы с графикой у процессоров различного типа / Р.А. Клетсков, О.Ф. Абрамова // Студенческий научный форум – 2020 : доклады XII Международной студенческой научной конференции. Направление «Технические науки» (секция «Актуальные проблемы компьютерной визуализации») / Российская академия естествознания (РАЕ). - Москва, 2020. - URL : https://scienceforum.ru/2020/article/2018018049.

Game Engine Architecture / Архитектураигровогодвижка. Джейсон Грегори. 2018г.

Просмотров работы: 13