Pular para o conteúdo

Início Rápido para Desenvolvedores de Jogos

Se você é um desenvolvedor de jogos e gostaria de uma maneira fácil de integrar efeitos do SignalRGB para seus usuários, seja bem-vindo ao guia de início rápido. Nossos desenvolvedores são especializados em fazer efeitos funcionarem com interfaces que geralmente não são projetadas para nossos propósitos. Os usuários gostam de recursos como gradientes de cor, UI transparente, interface de habilidades personalizável, elementos HUD que saltam ou tremem — todas inconsistências que precisamos levar em conta no acionamento de efeitos. Quanto mais difícil for a UI, menos podemos fazer pelo jogo e pela experiência do usuário. Com alguma colaboração entre você e nossos devs, esses problemas podem ser removidos e as integrações de jogos podem ser levadas ao próximo nível.

A API do SignalRGB oferece ferramentas únicas e poderosas para os desenvolvedores analisarem informações visuais. Em termos simples, podemos capturar dados RGB precisos de qualquer pixel ou grupo de pixels e usar mudanças em valores estáveis para acionar efeitos. Por exemplo, uma barra de vida diminuindo, um menu abrindo ou um ícone de habilidade dessaturando — qualquer elemento de UI consistente pode ser usado para acionar um efeito nos periféricos do usuário.

Este método é considerado comunicação indireta e vem com vários desafios que nossos desenvolvedores levam em conta em cada integração. As seções a seguir exploram ideias para comunicação direta, que são atualmente teóricas (desenvolvedores de jogos, entre em contato conosco).

Nosso acionador mais simples verifica um intervalo de cor específico e retorna “sim” se corresponder, ou “não” se não corresponder. Em termos de dados, isso é chamado de bit, e um grupo de oito bits forma um byte, que pode representar até 256 estados possíveis.

Na prática, você fornece as coordenadas de pixels fixos na tela (visíveis em todas as resoluções). Esses pixels podem ser agrupados ou espalhados, e podem ser de qualquer cor — desde que a localização de cada pixel nunca mude no jogo e sua cor de ativação permaneça consistente. Quando a cor de um pixel corresponde à cor de ativação, registra-se como “1” no array. Se for qualquer outra cor, registra-se como “0”. A cada frame, a integração calcula o inteiro resultante desta sequência binária e mantém o estado correspondente que você definiu.

Aqui está um exemplo simplificado usando apenas três pixels, que produz seis estados únicos. O elemento de UI neste exemplo é o canto de um minimapa de um jogo popular.

E meus três pixels:

Escolhi as cores originais como a cor de ativação, então esse arranjo de bits é igual a 111, ou “6”. Nenhum passando, ou 000, seria “0”.

A primeira coisa que precisamos estabelecer é um estado “idle” no jogo, que simplesmente mantém tudo mais acontecendo enquanto aguardamos mais entrada. Este será o estado “0” e poderia ser representado pelos seguintes valores de pixel:

Defini cada um como rgb(0, 0, 0), que não passa. No entanto, grandes diferenças como essa podem ser perceptíveis ao usuário. No próximo exemplo, seremos mais sutis.

Então, digamos que estabelecemos que estamos no jogo e mantendo um estado base. Seu personagem lançou sua primeira habilidade, e queremos registrar essa mudança como um efeito. O efeito para “Habilidade 1 lançada” foi designado como estado “1” e será ativado quando comunicarmos o estado “1” à nossa integração. Para fazer isso, edito levemente as cores base dos pixels 1 e 2 (da esquerda) para criar o 001.

Pode não parecer muito, mas o pixel 1 teve sua luminosidade reduzida em cerca de 30%, e o pixel 2 ganhou 50% de saturação. Como nosso sistema pode detectar facilmente essas mudanças, o estado mudará de forma confiável para “1” e o efeito de habilidade será acionado. Habilidades com durações definidas podem se encerrar sozinhas, mas digamos também que esta se ativa com um toque de botão e termina com outro. Para manter um efeito indefinido, o estado “1” o ativaria, e o estado “2” poderia encerrá-lo com base em entradas adicionais do usuário. Alguns efeitos são muito analógicos e ainda precisariam ser tratados individualmente pelos nossos desenvolvedores, mas para os demais, este sistema tende a ser confiável. A principal limitação é a visibilidade dos “pixels”, que precisará ser constante durante o estado de gameplay e provavelmente deve ser maior do que qualquer pixel do estado “1”.