Создание 2D-игр с Tiniest2D
Справочник API движка
Lesson 8 of 11 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
API Reference
Полная справка по API
Также доступна в сокращённой форме внутри самого редактора:

Конструкторы ресурсов
Конструкторы создают основные типы ресурсов, используемые редактором. Когда вы присваиваете один из них переменной, редактор распознает его и позволяет вам открыть соответствующий редактор ресурса с помощью Ctrl+Click.
| Функция | Описание |
|---|---|
Sprite(width, height) |
Создает ресурс спрайта с заданными размерами |
Scene() или Scene(name) |
Создает ресурс сцены |
Audio() |
Создает звук в стиле маленького трекера |
Object() или Object(name) |
Создает игровой объект |
Методы списков
Создайте списки с помощью [] или [value1, value2, ...]. Читайте и перезаписывайте элементы с помощью list[index], и итерируйте с помощью for (var i = 0; i < list.length(); i = i + 1).
| Функция | Описание |
|---|---|
list.add(value) |
Добавляет значение в конец списка |
list.length() |
Возвращает количество элементов в списке |
list.remove(index) |
Удаляет элемент по заданному индексу |
list.clear() |
Удаляет все элементы из списка |
Операторы
Операторы — это небольшие символы, которые выполняют общие вычисления. Оператор модуля особенно полезен для обёртки таймеров, индексов, шагов анимации или повторяющихся шаблонов.
| Оператор | Описание |
|---|---|
% |
Модуль. Возвращает остаток после деления |
Свойства объектов
Объекты — это те вещи, которые ваш скрипт обычно перемещает и изменяет во время игры. Эти функции читают или обновляют положение объекта, спрайт, поведение при столкновении, слой и визуальный оттенок.
| Функция | Описание |
|---|---|
getX(obj) |
Возвращает X-положение объекта |
setX(obj, x) |
Устанавливает X-положение объекта |
getY(obj) |
Возвращает Y-положение объекта |
setY(obj, y) |
Устанавливает Y-положение объекта |
getVelocityX(obj) |
Возвращает X-скорость объекта |
setVelocityX(obj, vx) |
Устанавливает X-скорость объекта |
getVelocityY(obj) |
Возвращает Y-скорость объекта |
setVelocityY(obj, vy) |
Устанавливает Y-скорость объекта |
getName(obj) |
Возвращает имя объекта |
setName(obj, name) |
Устанавливает имя объекта |
getSprite(obj) |
Возвращает спрайт объекта |
setSprite(obj, sprite) |
Присваивает спрайт объекту (сбрасывает анимацию на кадр 0) |
getLayer(obj) |
Возвращает слой рисования объекта |
setLayer(obj, layer) |
Устанавливает слой рисования объекта (больше = рисуется позже) |
getTint(obj) |
Возвращает оттенок как список [r, g, b, a] |
setTint(obj, r, g, b, a) |
Устанавливает цветовой оттенок объекта (0-255 каждый) |
getCollisionType(obj) |
Возвращает номер типа столкновения |
setCollisionType(obj, type) |
Устанавливает тип столкновения |
Функции спрайтов
Функции спрайтов позволяют коду проверять или изменять данные пикселей спрайта и скорость анимации. Большинство игр рисуют спрайты в редакторе, но эти функции полезны для процедурных эффектов, отладки или простых изменений во время исполнения.
| Функция | Описание |
|---|---|
fillSprite(sprite, r, g, b, a) |
Заполняет все пиксели всех кадров сплошным RGBA цветом (0-255) |
getPixel(sprite, frame, x, y) |
Возвращает [r,g,b,a] пикселя в (x,y) в заданном кадре, или null, если вне пределов |
setPixel(sprite, frame, x, y, r, g, b, a) |
Устанавливает цвет пикселя в (x,y) в заданном кадре. Ничего не делает, если вне пределов |
getAnimationFPS(sprite) |
Возвращает скорость анимации спрайта в кадрах в секунду |
setAnimationFPS(sprite, fps) |
Устанавливает скорость анимации спрайта в кадрах в секунду |
Функции анимации
Функции анимации работают с объектами, использующими спрайты с несколькими кадрами. Используйте их, когда хотите, чтобы код проверил или принудительно изменил текущий кадр анимации.
| Функция | Описание |
|---|---|
getFrame(obj) |
Возвращает индекс текущего кадра анимации объекта |
setFrame(obj, frameIndex) |
Устанавливает кадр анимации объекта (сбрасывает таймер) |
getFrameCount(obj) |
Возвращает количество кадров в спрайте объекта |
Функции трансформации (Отзеркаливание/Поворот)
Функции трансформации изменяют, как спрайт объекта рисуется, не редактируя сам спрайт. Они хороши для повторного использования одного спрайта в разных направлениях.
| Функция | Описание |
|---|---|
getFlipX(obj) |
Возвращает, перевёрнут ли объект по горизонтали |
setFlipX(obj, flip) |
Устанавливает горизонтальное отражение. true = перевёрнут, false = нормальный |
getFlipY(obj) |
Возвращает, перевёрнут ли объект по вертикали |
setFlipY(obj, flip) |
Устанавливает вертикальное отражение. true = перевёрнут, false = нормальный |
getRotation(obj) |
Возвращает угол поворота объекта по часовой стрелке в градусах |
setRotation(obj, degrees) |
Устанавливает угол поворота объекта по часовой стрелке в градусах |
move(obj, x, y) |
Перемещает объект по его локальным повёрнутым осям. Положительный X перемещает вправо, положительный Y перемещает вниз |
getCenterOffset(obj) |
Возвращает нормализованный центр поворота как [x, y] |
setCenterOffset(obj, x, y) |
Устанавливает нормализованный центр поворота. Значения обрезаются от 0 до 1 |
getCenterOffsetX(obj) |
Возвращает нормализованный центр X |
setCenterOffsetX(obj, x) |
Устанавливает нормализованный центр X |
getCenterOffsetY(obj) |
Возвращает нормализованный центр Y |
setCenterOffsetY(obj, y) |
Устанавливает нормализованный центр Y |
getCenter(obj) |
Возвращает мировую позицию центра поворота как [x, y] |
setCenter(obj, x, y) |
Перемещает объект так, чтобы его центр поворота находился в мировой позиции (x, y) |
getCenterX(obj) |
Возвращает мировую X позицию центра поворота |
setCenterX(obj, x) |
Перемещает объект так, чтобы его центр находился в мировой X x |
getCenterY(obj) |
Возвращает мировую Y позицию центра поворота |
setCenterY(obj, y) |
Перемещает объект так, чтобы его центр находился в мировой Y y |
getDirectionRight(obj) |
Возвращает повернутое вправо направление объекта как [x, y] |
getDirectionDown(obj) |
Возвращает повернутое вниз направление объекта как [x, y] |
getDirectionLeft(obj) |
Возвращает повернутое влево направление объекта как [x, y] |
getDirectionUp(obj) |
Возвращает повернутое вверх направление объекта как [x, y] |
Стандартный центр смещения — [0.5, 0.5], что вращает вокруг центра спрайта. [0, 0] вращает вокруг верхнего левого угла объекта, и [1, 1] вращает вокруг location + (width, height).
Внимание для более старых проектов: Начиная с Tiniest2D 1.8, getRotation() и setRotation() используют углы в градусах вместо значений четверти поворота. Вращаемые коллайдеры объектов теперь влияют на физику и запросы сцены.
Типы столкновений
Типы столкновения определяют, как объект участвует в проверках столкновения. Выбирайте тип в зависимости от роли объекта: стены обычно статические, игроки обычно динамические, а предметы обычно триггеры.
| Константа | Значение | Описание |
|---|---|---|
COLLISION_NONE() |
0 | Нет обнаружения столкновений |
COLLISION_STATIC() |
1 | Сталкивается, но не движется |
COLLISION_DYNAMIC() |
2 | Сталкивается и отталкивается |
COLLISION_TRIGGER() |
3 | Обнаруживает столкновение, но не блокирует |
Функции сцены
Функции сцены управляют тем, какая сцена активна, какие объекты находятся в ней и настройками, такими как цвет фона и гравитация. Они также предоставляют вспомогательные функции для поиска объектов по позициям или именам.
| Функция | Описание |
|---|---|
addObject(scene, obj) |
Добавляет объект в сцену |
removeObject(scene, obj) |
Удаляет объект из сцены |
setScene(scene) |
Устанавливает активную сцену |
getScene() |
Возвращает текущую активную сцену |
resetScene(scene) |
Сбрасывает сцену в её начальное состояние (как задумано в редакторе) |
setBackgroundColor(scene, r, g, b) |
Устанавливает цвет фона сцены (RGB 0-255) |
getBackgroundColor(scene) |
Возвращает цвет фона как список [r, g, b] |
getGravityX(scene) |
Возвращает компонент гравитации по оси X сцены |
setGravityX(scene, gx) |
Устанавливает компонент гравитации по оси X сцены |
getGravityY(scene) |
Возвращает компонент гравитации по оси Y сцены |
setGravityY(scene, gy) |
Устанавливает компонент гравитации по оси Y сцены (положительный = вниз) |
getObjectAt(scene, x, y) |
Возвращает первый объект в точке (x,y), или null |
getObjectsAt(scene, x, y) |
Возвращает список всех объектов в точке (x,y) |
getObjectsInBox(scene, x, y, w, h) |
Возвращает все объекты, перекрывающие прямоугольник |
getObjectByName(scene, name) |
Находит объект по имени, или null, если не найден |
getObjectCount(scene) |
Возвращает количество объектов в сцене |
getAllObjects(scene) |
Возвращает список всех объектов в сцене |
isObjectInScene(scene, obj) |
Возвращает true, если объект находится в сцене |
getObjectsBySprite(scene, sprite) |
Возвращает все объекты, использующие данный спрайт |
getObjectsByCollisionType(scene, type) |
Возвращает все объекты с данным типом столкновения |
Воспроизведение звука
Функции воспроизведения звука запускают и останавливают аудиоресурсы из скрипта. playAudio() возвращает дескриптор, чтобы вы могли позже остановить или проверить конкретный экземпляр воспроизведения.
| Функция | Описание |
|---|---|
playAudio(audio) |
Запускает аудиоресурс и возвращает идентификатор дескриптора воспроизведения |
stopAudio(handle) |
Останавливает дескриптор воспроизведения, возвращенный playAudio() |
isAudioPlaying(handle) |
Возвращает true, пока дескриптор воспроизведения всё ещё активен |
Функции экрана
Функции экрана помогают, когда вам нужно узнать размер окна или преобразовать координаты экрана и мировые позиции. Это полезно для нацеливания мыши, обнаружения кликов и UI, учитывающего камеру.
| Функция | Описание |
|---|---|
getScreenWidth() |
Возвращает ширину экрана/окна в пикселях |
getScreenHeight() |
Возвращает высоту экрана/окна в пикселях |
screenToWorld(screenX, screenY) |
Преобразует координаты пикселей экрана в мировые координаты. Возвращает [worldX, worldY] |
worldToScreen(worldX, worldY) |
Преобразует мировые координаты в пиксели экрана. Возвращает [screenX, screenY] |
Режим окна
Управляет режимом окна для экспортированных игр. Эти функции не имеют эффекта при игре в редакторе (редактор имеет более высокий приоритет над состоянием окна).
| Константа | Значение | Описание |
|---|---|---|
WINDOW_WINDOWED() |
0 | Обычный оконный режим |
WINDOW_MAXIMIZED() |
1 | Максимизированное окно (по умолчанию) |
WINDOW_FULLSCREEN() |
2 | Полноэкранный режим без границ |
| Функция | Описание |
|---|---|
getWindowMode() |
Возвращает текущую константу режима окна |
setWindowMode(mode) |
Устанавливает режим окна. Работает только в экспортированных играх |
Пример:
func start() {
// Установить режим окна (WINDOW_MAXIMIZED является значением по умолчанию для экспортированных игр)
setWindowMode(WINDOW_MAXIMIZED())
}
Примечание: Если setWindowMode() никогда не вызывается в экспортированной игре, по умолчанию используется WINDOW_MAXIMIZED.
UI Функции
UI использует виртуальное разрешение экранного пространства. Обычное пространство UI — 100 x 100.
Размер шрифта можно установить для последующих текстовых виджетов с помощью uiPushFontSize(size) и восстановить его с помощью uiPopFontSize(). Цвета шрифта могут быть установлены с помощью uiPushFontColor(r, g, b[, a]), а заливки элементов UI могут быть установлены с помощью uiPushElementColor(r, g, b[, a]). Как и весь остальной UI с немедленным режимом, эти переопределения применяются при построении UI текущего кадра. Если установленный размер равен 0 или меньше, движок использует автоматическое изменение размера.
| Функция | Описание |
|---|---|
getUIResolutionX() |
Возвращает текущее виртуальное разрешение UI по ширине |
setUIResolutionX(width) |
Устанавливает виртуальное разрешение UI по ширине для последующих вызовов UI |
getUIResolutionY() |
Возвращает текущее виртуальное разрешение UI по высоте |
setUIResolutionY(height) |
Устанавливает виртуальное разрешение UI по высоте для последующих вызовов UI |
uiPushFontSize(size) |
Устанавливает масштаб размера шрифта для последующего UI текста. Значения <= 0 используют автоматическое изменение размера |
uiPopFontSize() |
Убирает последнее переопределение размера шрифта UI |
uiPushFontColor(r, g, b) или uiPushFontColor(r, g, b, a) |
Устанавливает переопределение цвета шрифта для последующего UI текста |
uiPopFontColor() |
Убирает последнее переопределение цвета шрифта UI |
uiPushElementColor(r, g, b) или uiPushElementColor(r, g, b, a) |
Устанавливает переопределение цвета заливки для боксов, кнопок, переключателей, ползунков и кнопок изображений |
uiPopElementColor() |
Убирает последнее переопределение цвета элемента UI |
uiLabel(text, x, y) |
Рисует текст в экранном пространстве по виртуальным координатам UI |
uiBox(x, y, w, h) |
Рисует простой панельный бок |
uiButton(text, x, y, w, h) |
Рисует кнопку и возвращает одно из констант состояния UI_*() |
uiToggle(text, value, x, y, w, h) |
Рисует переключатель и возвращает обновленное логическое значение |
uiSlider(text, value, min, max, x, y, w, h) |
Рисует ползунок и возвращает обновленное числовое значение |
uiSprite(sprite, x, y) |
Рисует спрайт в пространстве UI, используя естественный размер спрайта в единицах UI |
uiSprite(sprite, x, y, w, h) |
Рисует спрайт в пространстве UI с явным размером |
uiImageButton(sprite, x, y, w, h) |
Рисует спрайт-кнопку и возвращает одно из констант состояния UI_*() |
Константы состояния UI
Функции UI возвращают константы состояния, чтобы ваш скрипт мог определить, является ли виджет неактивным, наводимым, зажатым или нажатием. Обычно UI_CLICKED() — это значение, которое вы проверяете для действий кнопки.
| Константа | Значение | Описание |
|---|---|---|
UI_IDLE() |
0 | Виджет не наведён и не зажат |
UI_HOVERED() |
1 | Мышь наводится на виджет |
UI_HELD() |
2 | Кнопка мыши нажата на виджете |
UI_CLICKED() |
3 | Виджет был нажат в этом кадре |
Функции камеры
Положение камеры представляет собой центр просмотра. Масштаб поддерживает постоянное вертикальное представление мира независимо от размера экрана.
| Функция | Описание |
|---|---|
getCameraX(scene) |
Возвращает X позицию камеры (центр просмотра) |
setCameraX(scene, x) |
Устанавливает X позицию камеры |
getCameraY(scene) |
Возвращает Y позицию камеры (центр просмотра) |
setCameraY(scene, y) |
Устанавливает Y позицию камеры |
getCameraZoom(scene) |
Возвращает уровень масштабирования камеры |
setCameraZoom(scene, zoom) |
Устанавливает масштабирование камеры. Масштаб 1.0 показывает 720 мировых единиц вертикально, 3.0 показывает 240 единиц. |
Поведение зума: Масштаб поддерживает постоянное вертикальное представление мира независимо от размера окна или соотношения сторон. Широкие экраны показывают больше горизонтально, но такое же количество вертикально.
Функции ввода
Функции ввода позволяют игре реагировать на состояние клавиатуры и мыши. Используйте Pressed для одноразовых действий, Held для непрерывного движения и Released для действий, которые происходят, когда кнопка отпущена.
| Функция | Описание |
|---|---|
isKeyPressed(key) |
Истинно только в кадре, когда клавиша была нажата |
isKeyHeld(key) |
Истинно, пока клавиша удерживается |
isKeyReleased(key) |
Истинно только в кадре, когда клавиша была освобождена |
getMouseX() |
Возвращает X курсора в экранных координатах |
getMouseY() |
Возвращает Y курсора в экранных координатах |
getMouseDeltaX() |
Возвращает движение X курсора за этот кадр |
getMouseDeltaY() |
Возвращает движение Y курсора за этот кадр |
isMouseButtonPressed(button) |
Истинно только в кадре, когда кнопка мыши была нажата |
isMouseButtonHeld(button) |
Истинно, пока кнопка мыши удерживается |
isMouseButtonReleased(button) |
Истинно только в кадре, когда кнопка мыши была освобождена |
getFPS() |
Возвращает текущее количество кадров в секунду |
Константы кнопки мыши
Константы кнопок мыши передаются в функции ввода мыши. Они делают код более читабельным, чем сырые числа.
| Константа | Описание |
|---|---|
MOUSE_LEFT() |
Левая кнопка мыши |
MOUSE_RIGHT() |
Правая кнопка мыши |
MOUSE_MIDDLE() |
Средняя кнопка мыши |
Константы клавиш
Константы клавиш передаются в функции ввода с клавиатуры. Движок поддерживает буквы, цифры, функциональные клавиши, стрелки и небольшой набор обычных специальных клавиш.
Буквы: KEY_A() до KEY_Z()
Цифры: KEY_0() до KEY_9()
Функциональные клавиши: KEY_F1() до KEY_F12()
Специальные клавиши:
| Константа | Клавиша |
|----------|-----|
| KEY_SPACE() | Пробел |
| KEY_ENTER() | Ввод/Возврат |
| KEY_ESCAPE() | Эскейп |
| KEY_TAB() | Таб |
| KEY_BACKSPACE() | Backspace |
| KEY_DELETE() | Удалить |
| KEY_SHIFT() | Shift |
| KEY_CTRL() | Control |
| KEY_ALT() | Alt |
| KEY_LEFT() | Левая стрелка |
| KEY_RIGHT() | Правая стрелка |
| KEY_UP() | Верхняя стрелка |
| KEY_DOWN() | Нижняя стрелка |
| KEY_HOME() | Home |
| KEY_END() | End |
Математические функции
Помощники по математике охватывают общие расчеты, используемые в движении, анимации, случайности и ограничениях значений. Они делают скрипты короче и проще для чтения.
| Функция | Описание |
|---|---|
abs(n) |
Абсолютное значение |
min(a, b) |
Возвращает меньшее из двух чисел |
max(a, b) |
Возвращает большее из двух чисел |
clamp(value, min, max) |
Ограничивает значение между min и max |
lerp(a, b, t) |
Линейно интерполирует от a к b, используя t |
floor(n) |
Округляет вниз до ближайшего целого |
ceil(n) |
Округляет вверх до ближайшего целого |
round(n) |
Округляет до ближайшего целого |
sign(n) |
Возвращает -1, 0 или 1 в зависимости от знака входных данных |
sqrt(n) |
Квадратный корень |
pow(base, exponent) |
Возводит основание в степень |
sin(radians) |
Синус угла в радианах |
cos(radians) |
Косинус угла в радианах |
tan(radians) |
Тангенс угла в радианах |
random() |
Возвращает случайное число с плавающей запятой между 0.0 и 1.0 |
randomRange(min, max) |
Возвращает случайное число с плавающей запятой между min и max |
randomInt(min, max) |
Возвращает случайное целое число между min и max (включительно) |
PI() |
Возвращает число пи (3.14159...) |
TAU() |
Возвращает число тау (2 * π = 6.28318...) |
TWOPI() |
Возвращает 2 * π (такое же значение, как и TAU) |
E() |
Возвращает число Эйлера e (2.71828...) |
deg2rad(degrees) |
Преобразует градусы в радианы |
rad2deg(radians) |
Преобразует радианы в градусы |
Утилиты
Утилиты — это общие помощники, которые не принадлежат какому-либо типу актива. print() особенно полезен во время обучения, поскольку показывает, что делает ваш скрипт.
| Функция | Описание |
|---|---|
print(value) |
Печатает в выходные данные отладки (показано в игре) |
quitGame() |
Закрывает игру. В редакторе останавливает игровой режим. В экспортированных играх закрывает приложение |
Строковые функции
Строковые функции работают с текстовыми значениями. На данный момент этот раздел намеренно маленький.
| Функция | Описание |
|---|---|
strlen(string) |
Возвращает длину строки (количество символов) |
Функции хранения
Сохранение и загрузка игровых данных в файлы. Поддерживает числа, строки, логические значения и списки (включая вложенные списки). Не поддерживает значения Sprite, Scene, Object или Audio.
| Функция | Описание |
|---|---|
save(path, data) |
Сохраняет данные в файл в бинарном формате. Возвращает true при успешном сохранении |
save(path, data, format) |
Сохраняет данные в указанном формате: "binary" или "text" |
save(path, data, format, key) |
Сохраняет данные с шифрованием, используя предоставленную строку ключа |
load(path) |
Загружает данные из файла. Возвращает данные или null при неудаче |
load(path, key) |
Загружает зашифрованные данные, используя предоставленную строку ключа |
fileExists(path) |
Возвращает true, если файл существует по указанному пути |
deleteFile(path) |
Удаляет файл по указанному пути. Возвращает true при успехе |
getAppDataPath() |
Возвращает путь к папке AppData/Tiniest2D (создает, если необходимо) |
getDocumentsPath() |
Возвращает путь к папке Документы пользователя |
getGamePath() |
Возвращает директорию, где находится исполняемый файл игры |
Пример: Сохранение и загрузка прогресса игрока
// Сохранение данных игрока
var playerData = [100, "Player1", true, [1, 2, 3]]
var savePath = getAppDataPath() + "/MyGame/save.dat"
if (save(savePath, playerData)) {
print("Игра сохранена!")
}
// Загрузка данных игрока
if (fileExists(savePath)) {
var loaded = load(savePath)
if (loaded != null) {
var health = loaded[0]
var name = loaded[1]
var hasKey = loaded[2]
var inventory = loaded[3]
}
}
// Зашифрованное сохранение (для скрытия данных от случайного просмотра)
var secretData = ["secret", 12345]
save(getAppDataPath() + "/MyGame/config.dat", secretData, "binary", "mySecretKey")
var decrypted = load(getAppDataPath() + "/MyGame/config.dat", "mySecretKey")
// Текстовый формат (читаемый человеком, полезен для отладки)
save(getAppDataPath() + "/MyGame/debug.txt", playerData, "text")
Заметки:
- Бинарный формат (по умолчанию) компактный и быстрее
- Текстовый формат читаемый человеком, полезен для отладки
- Неправильный ключ шифрования возвращает
null(данные будут мусором) - Директории создаются автоматически при сохранении