Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание компьютерных игр


Рассылка "Создание компьютерных игр" (выпуск от 19.12.2006)

Скриптовые языки в программировании игр.

Здравствуйте, друзья!

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

Что такое скриптовые языки, или, как их еще называют, языки сценариев? Это языки-интерпретаторы высокого уровня. Это означает, что, во-первых, в отличие от языков низкого уровня, таких как Ассемблер, эти языки удобны для восприятия человеку, а не компьютеру. Язык С++ также является языком высокого уровня. Но С++ является языком, программы написанные на котором необходимо компилировать, или преобразовывать в машинный код с помощью программы-компилятора (если вы работаете с интегрированной средой разработки, такой как Visual Studio, то наверное знаете, что в ее состав входят компилятор, компоновщик, редактор и многие другие программы). Отличие скриптовых языков заключается в том, что программы, написанные на этих языках, или как их еще называют, сценарии или скрипты, в машинный код не преобразовываются, и поэтому в компиляции не нуждаются. Такие программы исполняются с помощью специальных программ-интерпретаторов.

Вы можете спросить - зачем же может понадобиться использовать такие языки в программировании игр? Можно просто написать игру на С++, Delphi, или другом компилируемом языке программирования, преобразовать исходники в исполняемые файлы и запускать на здоровье. Вопрос справедливый. Действительно, долгое время игры программировались именно так. Но времена меняются, на дворе 21 век, а полномасштабные, "индустриальные" игры уже создаются не небольшими командами, а коллективами из десятков, а иногда и сотен людей. Увеличились в объеме и исходные коды игр, возросла их сложность. И для того, чтобы полностью откомпилировать все исходники, или "построить" игру (сделать build) требуются уже не секунды и минуты, а часы и даже десятки часов.

А теперь представьте, как замедлится работа, если для того, чтобы запустить игру, требуется каждый раз, внеся изменение, заново ее компилировать. Конечно, время компиляции можно сократить, например не делать полный билд проекта. Но уже достаточно давно было найдено эффективное решение, которое хорошо себя зарекомендовало. А именно - разделение игры на движок и логику, и написание движка на С++, а игровой логики на скриптах. Как я уже упоминал, скрипты в компиляции не нуждаются. Достаточно построить движок, и использовать его функции в скриптах, которые будут исполняться с помощью интерпретатора. Кроме того, такое решение позволяет разбивать игру на модули, например, графический движок, звуковой движок, движок искуственного интеллекта, и так далее. И затем эти модули используются в скриптах, где уже описывается игровая логика, взаимодействия объектов, уровни игры. Думаю, основная идея понятна.

Какие же скриптовые языки используются в игровой индустрии? На заре "эпохи скриптов" программисты игр сами придумывали специализированные языки. Так появились Quake C и Unreal Script. Но сейчас уже не принято так делать. Вместо этого хорошо себя зарекомендовали языки общего назначения. Их отличает простота, универсальность и гибкость. К таким языкам относятся Python, Lua и Ruby. Конечно же, у каждого из этих языков есть свои преимущества и недостатки. Как всегда, выбор остается за разработчиком.

Если вас заинтересовала данная тема, то для начала я рекомендую поискать в Интернете информацию обо всех трех упоминаемых мной языках (Python, Lua, Ruby). Конечно, если вы программист-одиночка, и создаете небольшие игры, то сможете прекрасно обойтись без скриптовых языков. Но если вы создаете "индустриальные" игры, то скриптовые языки сильно упростят вам жизнь. Особенно настоятельно рекомендую ознакомиться с такими языками новичкам, нацеленным на получение работы в игровой индустрии. Скриптовые языки весьма просты для освоения и не требуют большого опыта программирования, а работа программистом-скриптовиком может оказаться для вас хорошим стартом.

И пара слов напоследок. С сегодняшнего дня возобновил свою работу сайт "Школа создателей компьютерных игр". Пока что новый сайт состоит из единственной страницы и располагается на бесплатном хостинге. Тем не менее, сайт начинает свою работу, и уже сейчас вы сможете прочитать на нем небольшую статью "Путь создателя игр", в которой я кратко описываю свой собственный путь и историю сайта начиная с 2003 года. Сайт расположен по адресу www.gameschool.nm.ru .

До встречи!

Евгений Казеко.
kazeko@list.ru

Книги, посвященные скриптовым языкам и созданию игр с их использованием:


Р. А. Сузи
Язык программирования Python


Иван ван Лейнингем
Освой самостоятельно Python за 24 часа


Tom Gutschmidt
Game Programming with Python, Lua, and Ruby


Paul Schuytema
Game Development With LUA (Game Development Series)


Sean Riley
Game Programming With Python (Game Development Series)


В избранное