Jass

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
JASS
Класс языка:

скриптовый, событийно-ориентированный

Тип исполнения:

интерпретируемый

Появился в:

2001 г.

Автор(ы):

Blizzard Entertainment

Типизация данных:

статическая

Диалекты:

vJASS, cJASS

JASS (англ. Just Another Scripting Syntax) — событийно-ориентированный скриптовый язык программирования, созданный компанией Blizzard Entertainment. Используется в играх, таких как Warcraft и Starcraft.

Содержание

Описание

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

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

Файл:W3RusEditorTriggerGUI.png
Типичный триггер в Редакторе Триггеров (GUI).

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

Официальной документации от Blizzard Entertainment к этому языку нет, однако, существует множество любительских ресурсов, посвящённых написанию скриптов для сценариев на этом языке.

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

Файл:W3RusEditorJassNewGen.png
Тот же самый триггер, но в виде скрипта в редакторе JASS New Gen Pack c подсветкой синтаксиса.

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

В сфере модостроителей Warcraft III с 2007 года имеет бешенную популярность масштабная любительская надстройка для редактора Warcraft III — JASS New Gen Pack. В него, помимо множества других полезных возможностей, включены подсветка и проверка синтаксиса, а также альтернативный интерпретатор языка JASS. В купе с другими возможностями, это сделало его практически стандартом «де-факто» в мире картостроя.

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

Файлы скриптов 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.

Ссылки

  • Официальный раздел игры WarCraft III на сайте разработчика
  • XGM.ru — крупный русскоязычный ресурс модмейкеров по играм Blizzard и не только
  • Warcraft 3 Download Area — база ресурсов, карт и статей для модмейкинга в WarCraft III (международное сообщество создателей карт)
  • WC3Campaigns — крупный англоязычный сайт JASS-направленностиen:JASS

id:JASS it:JASS

Источник — «http://www.sbup.com/wiki/Jass»
Личные инструменты

Served in 0.350 secs.