Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Scripter Studio - что это такое

Автор: Daddy
WEB-сайт: http://daddy.mirgames.ru

Эта статья ориентирована, в первую очередь, на создателей "кустарных" игр средних и больших размеров.

Попробуем подойти издалека. Предположим, что мы решили создать игру, что-то наподобие RPG. Большие пространства, города, множество людей, существ, объектов. Все это должно взаимодействовать между собой, придавая происходящему определенный реализм. Соответственно, на плечи программиста ложиться задача по программированию поведения самых разнообразных объектов.

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

Вот в этом случае и приходим мы к понятию "внешних скриптов". Внешние скрипты - это кусок кода, существующий вне основного кода программы (в отдельном файле, например), и исполняемый по мере необходимости модулем-интерпретатором. Представьте - у каждого дерева есть код, привязывающий объект к некоему внешнему скрипту. Для большинства деревьев этот код - избыточная информация в размере всего лишь 4 байт (максимум). Между тем, для нашего "умного" дерева мы ставим код, соответствующий определенному внешнему скрипту, и именно для нашего дерева этот скрипт и выполнится (разумеется, выполнение скрипта тоже надо запрограммировать). В результате - минимальные накладные расходы на каждом "обычном" дереве, а в противопоставлении - возможность создавать сколь угодно большое множество разновидностей "поведения" деревьев. В добавление к вышесказанному следует упомянуть еще одно достоинство внешних скриптов - это простота их правки. То есть часть ошибок в Вашей игре Вы сможете исправлять без перекомпиляции всего проекта, а лишь подправив текстовый файл со скриптом.

Когда передо мной встала проблема добавления внешних скриптов в игру, я начал рассматривать различные варианты реализации этой затеи. Собственно, вариантов только два: писать язык и интерпретатор для него самому, или взять все готовое. Мои попытки создать скриптовый язык, подходящий под мои нужды, не принес положительных результатов, и в результате я утешил себя тем, что не стоит изобретать велосипед. Тогда настала пора поисков. Покопавшись в Inet'е я нашел несколько бесплатных и платных интерпретаторов. Бесплатные поражали своей ограниченностью, а платные, как всегда, сулили должность Властелина Скриптов за NNN$. И все же именно на одном из платных вариантов я решил остановится. Точнее - на пакете Scripter Studio (http://www.tmssoftware.com). Описание преимуществ пакета подразумевает сравнение его с конкурентами, а в задачу данной статьи это не входит. Потому - опишу его возможности.

В первую очередь - это поддержка двух языков, на которых могут быть написаны внешние скрипты - Object Pascal и Basic. Причем синтаксис, применительно к Pascal практически не отличается от стандартного. Имеется поддержка процедур, функций, областей CONST и VAR, всех видов циклов. С помощью определенных методов, о которых пойдет речь в следующих статьях, можно добавить в скрипты поддержку объектов собственных, сугубо игровых, классов. При этом вы сможете обращаться и к методам этого объекта и к его свойствам. Кроме того, в пакете уже существует описание многих стандартных классов (Формы, потоки, визуальные компоненты). Так же уже описано множество стандартных функций (вывод сообщений, преобразования типов). А в версии v.2.4.6 добавлена поддержка генерации HTML страниц посредством кода, как в ASP или PHP, где в качестве скриптового языка могут выступать и Pascal и Basic.

У всего вышеперечисленного есть одно НО. Пакет условно-бесплатный, и условность эта заключается в том, что все модули распространяются в виде DCU файлов. И хотя есть возможность не таскать с собой код интерпретатора Basic скриптов, если они не используются, возможность править код и убирать описания лишних возможностей вам предоставлена не будет. Если вы еще не определились - лицензия на одну копию стоит 95$, на неограниченное количество копий у группы разработчиков - 395$.

В следующей статье будут рассмотрены особенности Pascal синтаксиса в скриптах и его отличия от стандартного.

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.