Меню сайта
Ваш профиль
Прохожий

Сообщения:

Группа:
Гости
Время:09:50

Гость, мы рады вас видеть. Пожалуйста зарегистрируйтесь или авторизуйтесь!
Последние темы
Чат
200
Статистика


Онлайн всего: 1
Гостей: 1
Пользователей: 0


Посетители за сегодня:
Главная » Статьи » Мои статьи

Jass

В игре Warcraft III скрипты на языке JASS используются для контроля над объектами игрового мира и компьютерными соперниками. Данная область применения даёт практически полную свободу контроля над игровым процессом (в рамках игровой вселенной) любителям модов при создании своих собственных сценариев Warcraft III.

В комплекте с игрой поставляется стандартный Редактор Мира Warcraft III (англ. Warcraft III World Editor), в который включён модуль редактирования игровых сценариев под названием «Редактор Триггеров» (англ. Trigger Editor). Данный модуль снабжён неплохим графическим пользовательским интерфейсом для языка JASS, что позволяет создавать нестандартные сценарии для карт, не требуя при этом от создателя мода знаний в области языков и принципов программирования.


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

Стандартный редактор снабжён только базовыми интерпретатором и редактором JASS, в котором, помимо прочего, отсутствует подсветка синтаксиса и удобная проверка синтаксиса, что делает работу с JASS в обычном редакторе достаточно неудобной и трудоёмкой. Это и является одной из основных причин нелюбви новичков модостроения Warcraft III к этому языку.


В сфере модостроителей Warcraft III с 2007 года имеет бешенную популярность масштабная любительская надстройка для редактора Warcraft III — JASS New Gen Pack. В него, помимо множества других полезных возможностей, включены подсветка и проверка синтаксиса, а также альтернативный интерпретатор языка JASS. Вкупе с другими возможностями, это сделало его практически стандартом «де-факто» в мире картостроя.Помимо стандартного редактора, существуют специальные программы, которые упрощают работу с Jass-скриптами. К ним относится JASS Craft (бывший JASS Shop Pro). С помощью этой программы можно создавать шаблоны для триггеров, функций и оптимизировать код. Кроме того, он имеет подсветку и встроенную проверку синтаксиса, позволяющую «на лету» протестировать скрипт на наличие ошибок.

Основные понятия

Файлы скриптов JASS могут иметь расширения .j или .ai.

Язык JASS являет собой язык функций. Функции могут быть пользовательскими и нативными (от англ. native). Пользовательские функции могут быть объявлены самим картоделом(мапмейкером) и находятся непосредственно в скрипте карты. Нативные функции созданы разработчиками, объявляться пользователем не могут и перечислены в 2-ух главных файлах языка JASS — common.j и common.ai. Данные файлы находятся в архивах игры Warcraft III.

(Однако существует статья, в которой описывается добавление собственных native функций в Warcraft- http://xgm.ru/articles.php?name=custom_native) Имеется также созданный разработчиками набор готовых «к употреблению» пользовательских функций — blizzard.j, который являются объектом критики многих картоделов за множество утечек и частую бесполезность отдельно взятых функций. Яркий пример тому — функции с простой перестановкой параметров, не имеющие смысловой нагрузки, но отнимающие время на их выполнение.

Карта Warcraft III представляет собой такой же архив формата MPQ, как и другие архивы игры и имеет расширение .w3m или .w3x. Архив карты всегда содержит файл скрипта карты — war3map.j, но может также содержать несколько файлов с расширениями .ai в том случае, если используется нестандартный искусственный интеллект компьютерных противников.

Информация в файл war3map.j записывается в момент сохранения карты в редакторе, когда интерпретатор языка конвертирует данные из файла триггеров (war3map.wtg) в конечный код JASS, который будет использован игрой.

Файл war3map.wtg в архиве карты содержит данные о GUI триггерах и является необходимым только для редактора. Без него отредактировать стандартными средствами редактора код карты будет невозможно.

Пример кода для отображения «Hello, World!» на Jass:

function HelloWorld takes player p returns nothing
 call DisplayTextToPlayer(p, 0, 0, "Hello World!")
endfunction

Функция HelloWorld принимает локальный параметр типа «player» с именем «p» и ничего не возвращает(«nothing»). В теле вызывается стандартная native -функция «DisplayTextToPlayer». В этой функции указывается индекс (переменная типа integer — целочисленная) сетевого игрока, которому будет отправлено сообщение; экранные координаты (x, y; переменные типа real) — положение строки сообщения; время, через которое исчезнет сообщение.

Основные отличия JASS от GUI

Переход к написанию кода карты на JASS даёт картоделу ряд неоспоримых преимуществ.


Локальные переменные

Стандартный редактор триггеров даёт возможность оперировать только глобальными переменными. Глобальные переменные могут быть использованы в любой функции в скрипте, а локальные — действуют только в пределах одной функции и могут быть использованы во множестве ситуаций.


Более компактный и удобный код

Стандартный редактор триггеров позволяет использовать конструкцию if then else достаточно примитивно, неоправданно раздувая конечный код. На JASS можно сделать тоже самое гораздо более кратко и читаемо, а также использовать недоступный в редакторе триггеров оператор elseif.
Имеются отличия касаемо циклов. Циклы в GUI могут быть выполнены только определённое количество раз, а циклы на JASS могут выполняться бесконечно, пока не будет выполнено указанное пользователем условие выхода из них.


Стандартный код на GUI в большинстве случаев оставляет за собой тонну мусора — неудалённые объекты и утечки локальных переменных (в силу использования функций из файла blizzard.j). Чаще всего, таковыми становятся точки (location). Все они занимают место в памяти и часто вызываемый триггер с большим количеством утечек может очень быстро «уложить на лопатки» компьютер игрока. Со временем мощности компьютеров возрастают и эта проблема потихоньку отступает назад, но тем не менее, границы производительности по-прежнему можно перешагнуть из-за множества неоптимизированных триггеров. JASS располагает средствами для удаления таких объектов.


Дополнительные функции и переменные

Стандартный редактор триггеров имеет достаточно ограниченное число функций и переменных. В руках JASS’ера (сленговое понятие — человека, пишущего на JASS) оказывается весь набор функций и переменных из common.j и blizzard.j. Некоторые функции из common.j попросту не имеют аналогов на GUI.



Категория: Мои статьи | Добавил: BloodY (20.04.2010)
Просмотров: 434 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Все права защищены 2025. Полное или частичное использование материалов сайта возможно только с ссылкой на источник.