Перейти к основному содержанию

Введение в Catnip (Котомяту)


Введение в Catnip (Котомяту)

Автоматически переведённая страница

К сожалению, на полный ручной перевод у нас не хватает ресурсов.
Если вы увидели ошибку — отправьте пул-риквест с исправлениями (ссылка для редактирования в конце страницы).

Catnip, или Котомята по-русски — это визуальный язык программирования, созданный специально для ct.js. Он похож на Google Blocks или язык Scratch, но при этом имеет множество улучшений для удобства использования по сравнению с этими языками. Он компилируется непосредственно в JavaScript, поэтому он такой же быстрый и мощный. На этой странице мы рассмотрим его функции и как писать скрипты с помощью него.

Совет

Если вы еще не сделали этого, ознакомьтесь с основными концепциями, чтобы познакомиться с различными типами ресурсов в ct.js.

Создание проекта Catnip

При создании проекта вы можете выбрать Catnip в качестве основного языка программирования. После этого у вас будет редактор Catnip вместо обычного кода для каждого шаблона, комнаты и поведения.

Вы также можете использовать Catnip в любом ассете типа Скрипт, так как у них есть настройка используемого языка внутри их редактора.

Написание сценариев для Catnip

Когда вы открываете скриптовый актив (шаблон, поведение или переходите к панели событий комнаты), у вас будет три-четыре колонки:

  1. Колонка с главными настройками ассета, такими как текстура шаблона и список событий в этом ассете;
  2. Главная зона для скриптов, где вы помещаете свои блоки;
  3. Библиотека блоков со всеми блоками, которые вы можете использовать;
  4. В шаблонах есть четвертая колонка с свойствами шаблона. Если вам нужно больше места, вы можете свернуть ее с помощью маленькой кнопки в правом верхнем углу.

Четыре колонки при кодировании шаблонов

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

Вы можете помещать блоки несколькими способами:

  1. Вы можете перетаскивать блоки из библиотеки блоков в зону для скриптов;
  2. Вы также можете переместить курсор мыши между блоками или в верхнюю часть скрипта — появится линия с кнопкой «плюс», которая откроет поле поиска. Вы можете поместить первый блок, нажав Enter или переключиться между ними с помощью клавиши Tab. Помещение любого блока с помощью этого поиска автоматически откроет новое окно поиска, позволяя быстро вводить серию блоков с клавиатуры.

Открытие меню поиска в Catnip
Поиск блоков в Catnip

Аналогичный поиск расположен в верхней части библиотеки блоков, но вы сможете помещать блоки только с помощью перетаскивания (поскольку иначе как узнать, куда нужно их поместить?). Оба поиска будут выводить блоки, если вы вводите имена блоков на английском языке или на языке интерфейса, используемого в Catnip.

Типы блоков

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

Командный блок с одним аргументомВычисляемый блок

Вычисляемые блоки отличаются цветом, а цвет указывает на тип возвращаемого значения:

  • Желтые блоки используются для логических значений, которые могут быть либо true, либо false. Эти значения обычно используются в логических операторах и иногда как переключатели определенных параметров.
  • Зеленые блоки хранят числовые значения, которые могут быть целыми или дробными числами.
  • Розовые блоки хранят строковые значения.
  • Синие блоки хранят цветовые значения.
  • Фиолетовые блоки называются универсальными (или джокерами, с их английского названия wildcard) и могут хранить значения любого типа. Они также могут быть использованы для ссылки на другие копии, хранения сложных структур и данных, которые вы сами определяете.
ЛогическийЧисловойСтроковыйЦветовойУниверсальный

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

Чтобы облегчить преобразования типов (например, при необходимости форматирования строки с динамическим переменной цены), Catnip имеет несколько специальных вычисляемых блоков:

Пример: изменить текст в строку, содержащую число

Свойства и переменные

У Catnip огромное количество блоков для манипуляции внешним видом, положением и движением ваших копий, но чаще всего вам понадобится создать дополнительные значения, чтобы управлять логикой игры. Эти значения называются свойствами и переменными, и их можно рассматривать как помеченные имена с данными. И свойства, и переменные — это вычислительные блоки, которые вы можете использовать везде в Catnip.

В зависимости от того, где и в каком событии вы пишете код, вы можете использовать несколько типов переменных и свойств:

  • Обычные свойства (например, ). Вы можете создавать их в верхней части библиотеки блоков в категории «Свойства». Эти свойства сохраняются непосредственно в копии (или экземпляре комнаты, если вы определяете их в событии комнаты) и не разделяются. Такие переменные полезны для отслеживания очков здоровья единицы.
  • Обычные переменные (например, ). В отличие от свойств, которые существуют, пока существует копия или комната, содержащая их, переменные существуют только в течение события, в котором вы их редактируете. Каждый раз, когда ваше событие начинается снова, значения переменных сбрасываются к ничему. (Чтобы быть более конкретными, они становятся «неопределенными».) Это делает переменные бесполезными в долгосрочной перспективе, но хороши для хранения результатов вычислений или вещей, которые вы не хотите случайно использовать позже, например, ссылку на теперь разрушенную копию.
  • Глобальные переменные (например, ). Это переменные, хранящиеся в самой игре во время ее выполнения. Глобальная переменная хранит одно значение, которое можно читать и записывать из любой точки, и это значение останется до тех пор, пока игра не будет закрыта. (Если вы хотите сохранить переменную между запусками, вам понадобятся блоки «Сохранить/Загрузить из хранилища».)
  • Переменные событий (например, ) могут предоставляться некоторыми событиями для предоставления дополнительных сведений о том, когда событие было запущено.
  • Свойства поведения (например, ) наследуются от поведения, которое вы связываете в своих шаблонах и комнатах, и работают так же, как обычные свойства.

Полезные функции Catnip для написания скриптов

Возвращаемые значения справа

Некоторые блоки команд возвращают значение, подобно вычисляемым значениям. Возвращенные значения могут быть сохранены в переменной или свойстве и использованы позже — но обычно эти слоты являются необязательными. Например, вы можете сохранить экземпляр сыгранной музыки в глобальной переменной и остановить ее позже:

Мутаторы

Щелкнув правой кнопкой мыши по некоторым блокам, вы откроете расширенный контекстный меню с командами, позволяющими заменить выбранный блок на похожий. Значения, которые присутствуют в обоих блоках, будут сохранены. Например, попробуйте щелкнуть правой кнопкой мыши по математическим блокам, логическим блокам или блокам с значениями x/y или ширина/высота.

Исправление ошибки с помощью мутатора путем щелчка правой кнопкой мыши по блоку
Исправление ошибки путем замены блока щелчком правой кнопкой мыши

Что дальше?

Изучите, как использовать условия и циклы If-Else для выполнения скриптов условно и автоматизации повторяющихся действий в следующей главе.