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

Быстрый старт для разработчиков игр

Если вы разработчик игр и хотите обеспечить пользователям лёгкую интеграцию эффектов SignalRGB, добро пожаловать в руководство по быстрому старту. Наши разработчики специализируются на создании эффектов, работающих с интерфейсом, который обычно не предназначен для наших целей. Пользователи ценят такие функции, как цветовые градиенты, прозрачный интерфейс, настраиваемый UI умений, элементы HUD, которые подпрыгивают или трясутся — все несоответствия, которые нам приходится учитывать при запуске эффектов. Чем сложнее интерфейс, тем меньше мы можем сделать для игры и пользовательского опыта. При совместной работе между вами и нашими разработчиками эти проблемы можно устранить и поднять игровые интеграции на новый уровень.

API SignalRGB предлагает уникальные и мощные инструменты для разработчиков для анализа визуальной информации. Проще говоря, мы можем захватывать точные RGB-данные цвета любого пикселя или группы пикселей и использовать изменения в стабильных значениях для запуска эффектов. Например, уменьшение полосы здоровья, открытие меню или десатурация иконки умения — любой последовательный элемент интерфейса можно использовать для запуска эффекта на периферии пользователя.

Этот метод считается непрямой связью и сопряжён с рядом проблем, которые наши разработчики учитывают в каждой интеграции. Следующие разделы рассматривают идеи для прямой связи, которые пока являются теоретическими (разработчики игр, свяжитесь с нами).

Наш простейший триггер проверяет определённый цветовой диапазон и возвращает «да» при совпадении или «нет» в противном случае. В терминах данных это называется битом, а группа из восьми битов образует байт, который может представлять до 256 различных состояний.

На практике: вы предоставляете координаты фиксированных пикселей на экране (видимых при всех разрешениях). Эти пиксели могут быть сгруппированы или разбросаны, и они могут быть любого цвета — главное, чтобы местоположение каждого пикселя никогда не менялось в игре, а его цвет активации оставался постоянным. Когда цвет пикселя совпадает с цветом активации, в массиве регистрируется «1». Если это любой другой цвет — регистрируется «0». При каждом кадре интеграция вычисляет итоговое целое число из этой двоичной последовательности и поддерживает соответствующее состояние, которое вы определили.

Упрощённый пример с тремя пикселями, дающий шесть уникальных состояний. Элемент интерфейса в этом примере — угол миникарты популярной игры.

И три пикселя:

Исходные цвета выбраны как проходные, поэтому такое расположение битов равно 111 или «6». Ни один не проходит, или 000, будет «0».

Первое, что нужно установить — внутриигровое «простаивающее» состояние, которое просто поддерживает всё остальное, пока мы ждём дополнительного ввода. Это будет состояние «0», и его можно представить следующими значениями пикселей:

Каждому задан цвет rgb(0, 0, 0), который не проходит. Однако такие большие различия могут быть заметны пользователю. В следующем примере будем более тонкими.

Предположим, мы установили, что находимся в игре и поддерживаем базовое состояние. Персонаж использовал первое умение, и мы хотим зарегистрировать это изменение как эффект. Эффект для «Умение 1 использовано» обозначен как состояние «1» и активируется при передаче состояния «1» в нашу интеграцию. Для этого немного меняем базовые цвета пикселей 1 и 2 (слева) для создания 001.

Может показаться, что это незначительно, но пиксель 1 имеет яркость, уменьшенную примерно на 30%, а пиксель 2 получил 50% насыщенности. Поскольку наша система легко обнаруживает эти изменения, состояние надёжно переключится на «1» и будет запущен эффект умения. Умения с фиксированной длительностью могут завершать себя сами, но скажем, что это умение активируется одним нажатием кнопки и заканчивается другим. Для поддержания бесконечного эффекта состояние «1» активировало бы его, а состояние «2» могло бы завершать его при дальнейшем пользовательском вводе. Некоторые эффекты очень аналоговые и всё равно придётся обрабатывать индивидуально нашими разработчиками, но для остальных эта система надёжна. Основное ограничение — видимость «пикселей», которая должна быть постоянной во время игрового состояния, и они, вероятно, должны быть крупнее, чем разрешение пикселя состояния «1».