Game SDK

↓ Скачать SDK 0.3.0

Внутренняя разработка VORIVOX. Пакет preview: оставшиеся проверки обозначены в разделе совместимости.

Попадания и координаты

target.hit содержит физическую точку: x_mm, y_mm. Начало координат — снизу слева.

Нормализация

HTML5 SDK добавляет nx и ny: миллиметры делятся на width_mm и height_mm из manifest, затем ограничиваются диапазоном 0…1. Исходные x_mm и y_mm остаются доступными. Идентификатор shot_id нужен для защиты игровой механики от повторного начисления. source и demo сохраняют происхождение события.

Canvas и WebGL

Canvas использует верхний левый угол, поэтому Y преобразуется как 1−ny. Функция toCanvasPoint принимает явный viewport в логических единицах отрисовки. CSS-размер, canvas.width и devicePixelRatio — разные величины; выберите одну систему единиц для viewport и рисования. Для WebGL NDC: X=2nx−1, Y=2ny−1.

Активная область

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

Ограничения измерения

Событие означает зарегистрированный удар по полотну. SDK не знает о выстреле мимо полотна и не определяет стрелка по акустической координате. Не называйте число событий общим количеством нажатий на спуск.

Пример кода

Фрагмент интеграции: переменные игрового проекта задаются приложением. Полный запускаемый пример — в Playground.

const point = toCanvasPoint(hit, {width: canvas.width, height: canvas.height});
const ndc = {x: hit.nx * 2 - 1, y: hit.ny * 2 - 1};