Главная » Документация » Использование языка скриптов в играх

RSS

Использование языка скриптов в играх

Сборка всего вместе

Законченный синтаксический анализатор, разработанный с использованием бесплатных инструментальных средств, упомянутых выше, невероятно быстр и гибок. В типичном уровне JEDI KNIGHT, имеются приблизительно 50 различных файлов сценария, которые должны анализироваться и компилироваться в наш формат кода. На типичной машине, все эти сценарии компилируются, приблизительно, за одну секунду. По этой причине, мы решили использовать не внешний компилятор, а загружать исходники непосредственно при загрузке уровня. Это уменьшает время на тестирование изменений в сценарии, так как дизайнер может быстро редактировать код сценария и перезагружать уровень, чтобы увидеть изменения.

Еще один аспект системы создания сценария, который был критичен для нашего проекта, это интеграция сценариев и редактора уровня. Редактор уровня не только позволяет дизайнеру помещать сценарии в уровень, но также и гарантирует, что различные связи в сценарие правильно назначены и остаются правильно связанными при изменении уровня. Когда дизайнер помещает ресурс сценария в уровень, редактор сканирует заголовок сценария, чтобы определить то что переменные могут быть инизиализированны из-вне и помещает графическое представление ресурса сценария в уровень. Эта иконка имеет пространственное расположение в уровне, хотя расположение не важно для сценария. Обычно, проектировщики помещают сценарии близко от объектов, с которыми они компонуются. Как только сценарий помещен, дизайнер может вызвать диалог значений для этого сценария и просматривать или изменять значения. Если сценарий содержит связи с другими обектами или поверхностями, они назначаются, нажимая на правильный тип предмета в уровне и нажимая кнопку линковки. Связи между сценариями COG и глобальными объектами показываются графически в редакторе, соединяя их линиями. Если сценарий содержит ресурсы типа звуков или битмапов, опускающееся меню отображает возможные выборы.

На что еще хотелось бы обратить Ваше внимание, так это на отладку. Здесь имеются две основные проблемы – отладка синтаксиса, которую обычно решают, добавляя сообщения об ошибках и код восстановления в синтаксический анализатор, и отладку времени выполнения, которая может быть весьм разнообразной. Один из возможных методов отладки времени выполнения состоит в том, чтобы позволить пользователю отслеживать (трассировать) выполнение скрипта. В JEDI KNIGHT, дизайнер может вводить команду с клавиатуры, чтобы запустить трассировку для специфического сценария, которая заставит этот сценарий выводить информацию об отладке, каждый раз когда он будет выполняется. Более полная система учла бы пошаговую отладку сценария. Реальный вызов, который еще не был адресован в COG, должен учесть отладку «исходного уровня», где пользователи могут наблюдать, как их переменные изменяются, и видеть следующий шаг сценария в исходном коде. Эта возможность может показаться ненужной работой, но это была главная просьба, сделанный нашими проектировщиками в конце проекта.

«Как Вы делали все это?»

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

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

Возможно наиболее важный эффект, который язык имел на JEDI, иллюстрируется таким примером. Однажды, большая группа собралась вокруг стола одного из дизайнеров уровня на проекте. Кажется, что он сделал сценарий с загадкой, где пользователь нажимает переключатель на стенке, вызывающей медленное поднятие уровня воды в комнате, что-бы поднять игрока к верхней части комнаты. Это кажется простым, за исключением того что мы решили не поддерживать перемещающиеся уровни воды в игре. Никто, включая тех, кто работал над энжайном и языком, не могли-бы выяснять, как он это сделал.

Я, кстати, тоже не знаю. Я слишком ленив, чтобы выяснить.

By Robert Huebner
Published in Game Developer Magazine, September, 1997

Robert Huebner является старшим программистом на LucasArts Entertainment, специализирующемся в программировании моделирования и сети. До JEDI KNIGHT, он работал над DESCENT и другими играми Interplay Productions. После JEDI KNIGHT, он будет бездействовать в течение месяца. Его может достать в virtual@lucasarts.com

Copyright © 1997 Robert Huebner

Страницы : 1 2 3 4

Таги: