УРОК 1
В котором мы узнаем, как делать gameflow скрипты и диалоги.
Этот файл - образец исходного файла сценария для использования в написании скриптов для игры Anachronox.
Для того, чтобы создать небольшую APE-игру, обычно начинают с определения окна и
его содержания. Для этого надо определить размер окна, используемый шрифт, и т.д.
Почти все вышеперечисленные значения являються опциональными и если они не указаны, то используются значения по умолчанию. Однако в основном мы будем определять явно большинство окон.
Для доступа к скрипту в игре должно выполниться одно из следующих условий:
(1) Скрипт находится в файле "Global.txt" - по определению это глобальный исходный файл игрового процесса, что означает что триггеры и диалоги определенные в нём, будут всегда загружаться в игровой движок. В нашем случае, это очевидно неверно, так как мы находимся в Lesson1.txt!
(2) Скрипт находится в файле <apefilename>.txt - который имеет то же название (без расширения файла) как и карта, которую Вы загружаете. Всякий раз, когда мы в игре переходим на новый уровень (т.е. карту), все операторы с предыдущей карты выгружаются, и Anachronox будет пытатся загрузить новые из <apefilename>.ape, если он существует.
(3) команда LOADAPE <apefilename> выполнена в консоли, которая предполагается быть скрытой от пользователя. Если Вы делаете так, то Вы должны тогда вызвать команду INVOKE 1000:1 или каким там bank:entry number Ваше главное окно или триггер оперирует. Я здесь не подразумеваю 1000:1 буквально, конечно!
(4) Скрипт находится в каталоге Gameflow, и добавляется в APE Arcade, как только Вы получите в игре один картридж этой игры. После этого он доступен для любого профиля устанавленной данной копии игры.
В любом случае, файл-исходник (.txt) никогда не считывается движком игры. Сначала он должен быть скомпилирован утилитой dparse, которая генерирует двоичный файл с расширением .ape. А файл .ape уже считывается непосредственно движком игры, основываясь на двух вышеперечисленных критериях.
Пример: я хочу сделать файл скрипта сугубо для определенной карты "House". Это конечно означает, что должен быть файл карты House.bsp в каталоге Anoxdata\Maps. Я создаю новый текстовый файл, названный House.txt, в каталоге Anoxdata\Gameflow. После создания моего скрипта, я запускаю командную строку (cmd), перехожу в каталог Anoxdata\Gameflow, и запускаю команду "DPARSE HOUSE". Ваш файл скрипта (House.txt) будет просмотрен, и если есть любые ошибки, они будут выведены.
Если ошибок НЕТ, dparse скажет Вам, что всё ок и создаст файл House.ape в том же каталоге. Это скомпилированный файл скрипта, который Anachronox загрузит в память, когда Вы войдете на карту House.
Операторы: Окна и Триггеры
Скрипты игрового процесса состоят из двух разных типов конкретных операторов:
ОКНА - окна диалога, которые появляются, обычно с текстом, названием, графическими границами, фоном, графикой, или списком выбора. Они обычно остаются открытыми пока вы не щелкнете мышкой или сделаете выбор). Они могут иметь либо определенный текст, либо содержание, основанное на наборе переменных вне определения окна. Это - не программа, но кое-что, что определяет то, что будет показано.
ТРИГГЕРЫ - "узлы", которые управляют логикой выполнения скрипта.
Они выполняются немедленно, в отличие от окон, которые остаются открытыми пока они ждут пользовательского ввода. Триггеры могут использоваться не только для выполнение выбора последовательности окон, но также и для любого вида контроля событий в любом из плагинов/модулей Anachronox (включая События сражений, магазины, характеристики персонажей, скрипты камеры, скрипты актеров, что угодно).
Окна могут иметь
- "стартовую" функцию (настраивает переменные перед показом окна)
- "мыслительную" фунцкию (которая постоянно запущена и определяет через переменные, что отображается в окне)
- "финишную" функцию (которая очищает что - нибудь, что нужно очистить, и может содержать значения глобальных переменных, которые будут сохранены в сейв-файле позже).
Правила, форматы, и примеры о том, как использовать оба типа операторов можна увидеть ниже. Вы можете создать столько окон и триггеров в файле, сколько Вам нужно.
Определение BANK:ENTRY NUMBER
Каждый оператор - Окно или Триггер - должен иметь уникальный идентификатор связанный с ним для контроля процесса. Этот идентификатор дается в форме двух чисел разделенных двоеточием, типа "30:4". Это значит "банк 30, вхождение 4", который лучше запомнить как "глава 30, стих 4".
Диапазон для Банка: 1 - 200 000, диапазон для Вхождения: 1 - 9 899.
Anachronox, главным образом использует банки 1 - 200.
Компилятор генерирует уникальное ID число для каждого оператора, основываясь на следующей формуле:
ID = (БАНК * 10000) + ВХОЖДЕНИЕ
Формат # : # служит исключительно для удобозримости. Оператор "0:0" зарезервирован чтобы означать "нет действия", или "конец процесса" (так что Вы можете сказать "goto 0:0", но Вы никогда не можете определить ваш собственный "#window 0:0").
ОБРАТИТЕ ВНИМАНИЕ: Неофициально принято использовать одно число банка в карте (или в одной из её подобластей), а не делить банки между картами. Также по стандарту практикуют чтобы всегда использовать для вхождений четырехзначную цифру, где первые две цифры идентифицируют актера, и последние две используются для уникальности.
Например, "14:0302" означает "карта № 14", "нпс № 3", "диалог № 2". Примеры в этом файле следуют этим стандартам.
(Для личного использования рекомендуется использовать число банка от 50000 и выше.
Давайте освоим нашу первую GameFlow команду. Она называется "body". Body определяет, какой текст мы хотим чтоб был напечатан в окне. Мы будем учиться больше об этом чуть позже, а пока - простое определение окна:
#window 1:1
body "Hello world."
Так, если Вы скомпилировали этот файл, загрузили его в Anachronox, и вызвали это окно, то Вы увидите "Hello world.", напечатанный в обычном окне Anachronox.
Что? Вы хотите сделать это? Хорошо, тогда запустите cmd, и перейдите в каталог где установлен Anachronox. Перейдите в Anoxdata\Gameflow. Здесь находятся скрипты. Поместите сюда программу по имени "dparse", которая находится в паке инструментов Anachrodox.
Так, чтобы скомпилировать файл скрипта, напечатайте: dparse Имяфайла
Вы не должны добавлять .txt, потому что программа знает, что это должен быть файл текста. И, конечно, Имяфайла - это название Вашего текстового файла.
После того, как Вы скомпилировали файл (без ошибок), dparse создаст файл по имени Имяфайла.
Чтобы вызвать файл, запустите Anachronox. Когда загрузится лого, нажмите "~", чтобы открыть консоль. (Дальше будет сложнее).
Наберите:
map test
(Чтобы видеть окно, должна быть загружена какая-нибуть карта, а эта - самая маленькая.)
Теперь наберите:
loadape lesson1
Команда loadape загрузит любой скомпилированный файл .ape. Вы можете загрузить любое количество файлов .ape в одно и то же время.
Теперь наберите:
invoke 1:1
Эта команда вызовет окно.
Нажмите "~" снова, чтобы закрыть консоль.
А вот и Ваше окно! Оно использует шрифт, фон и оконную рамку по умолчанию.
Как нам их изменить?
Продолжение в следующем уроке!
Назад