Перейти к содержимому

Как работает SDK

SDK не заменяет API игры. Он добавляет два вида удобств:

  1. короткие вызовы вроде agents.local() и camera.main(), которые компилируются в нативное свойство или метод;
  2. небольшие сгенерированные вспомогательные методы — выборки, scopes и интервалы, реализующие повторяющийся безопасный паттерн.

Возвращаемые значения остаются нативными Agent, Camera, EventSubscription и другими объектами игры. Их документированные поля и методы можно использовать сразу.

import { agents, camera, time } from "@killscript/sdk/client";
const local = agents.local(); // Agents.GetLocalAgent()
const view = camera.main(); // Cameras.Main
const currentTick = time.tick(); // Time.Tick
if (local !== undefined) {
const position = local.Movement.Position; // Дальше нативный API.
const viewport = view.WorldToViewportPoint(position);
print(`${currentTick}: ${viewport}`);
}

Если готового сокращения нет, вызывайте типизированный глобальный API игры:

const hit = Physics.Raycast(
Cameras.Main.Position,
Vector3.forward,
100,
);

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

Клиентские сокращения для камер намеренно невелики:

МетодНативная операция
camera.main()Читает Cameras.Main
camera.create()Вызывает Cameras.CreateCamera() и может вернуть undefined
camera.remove(value)Вызывает Cameras.RemoveCamera(value)

Все прямые запросы agents перечислены в выборках игроков, а методы time, векторов и кватернионов — в разделе математики и времени.

ВозможностьКлиентReflexНазначение
agentsЧастые запросы Agents и выборки
arraysЦиклы по нативным коллекциям от единицы
loggerКонсоль с префиксами и ограничением повторов
schedulerКлиентские кадры или серверные тики и задержки
scopeОчистка принадлежащих компоненту подписок и обработчиков
timeНативное время и безопасный перевод в тики
defineSettingsГенерация и чтение конфигурации модуля
defineNetworkТипизированный пакетный транспорт Reflex
cameraОсновная и дополнительные камеры
defineControls и inputПереназначаемые игроком действия модуля
visualsКлиентские линии и отметки в мире

Средозависимые возможности импортируйте из @killscript/sdk/client или @killscript/sdk/server. Компилятор отклоняет клиентскую реализацию в серверном коде и наоборот.

Простые сокращения заменяются нативным выражением. Объявления только для компилятора вроде defineSettings() исчезают после генерации JSON. Более сложные методы добавляют только те небольшие функции среды выполнения, которые реально использует собранный скрипт.

Поэтому в исходниках можно использовать читаемые абстракции, не упаковывая тяжёлый фреймворк в каждый .KillScript.

Полный API за пределами вспомогательных методов описан в разделе API игры и типы.