Pular para o conteúdo

Início Rápido para Programadores de Jogos

Se é um programador de jogos e gostaria de uma forma fácil de integrar efeitos do SignalRGB para os seus utilizadores, seja bem-vindo ao guia de início rápido. Os nossos programadores são especializados em fazer efeitos funcionarem com interfaces que geralmente não são concebidas para os nossos propósitos. Os utilizadores gostam de funcionalidades como gradientes de cor, UI transparente, interface de habilidades personalizável, elementos HUD que saltam ou tremem — todas inconsistências que precisamos de ter em conta no acionamento de efeitos. Quanto mais difícil for a UI, menos podemos fazer pelo jogo e pela experiência do utilizador. Com alguma colaboração entre si e os nossos programadores, estes 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 programadores analisarem informações visuais. Em termos simples, podemos capturar dados RGB precisos de qualquer píxel ou grupo de píxeis e usar mudanças em valores estáveis para acionar efeitos. Por exemplo, uma barra de vida a diminuir, um menu a abrir ou um ícone de habilidade a desaturar — qualquer elemento de UI consistente pode ser usado para acionar um efeito nos periféricos do utilizador.

Este método é considerado comunicação indireta e vem com vários desafios que os nossos programadores têm em conta em cada integração. As secções seguintes exploram ideias para comunicação direta, que são atualmente teóricas (programadores de jogos, contactem-nos).

O 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, isto é chamado de bit, e um grupo de oito bits forma um byte, que pode representar até 256 estados possíveis.

Na prática, fornece as coordenadas de píxeis fixos no ecrã (visíveis em todas as resoluções). Estes píxeis podem ser agrupados ou espalhados, e podem ser de qualquer cor — desde que a localização de cada píxel nunca mude no jogo e a sua cor de ativação permaneça consistente. Quando a cor de um píxel corresponde à cor de ativação, regista-se como “1” no array. Se for qualquer outra cor, regista-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 definiu.

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

E os meus três píxeis:

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

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

Defini cada um como rgb(0, 0, 0), que não passa. No entanto, grandes diferenças como esta podem ser percetíveis ao utilizador. No próximo exemplo, seremos mais subtis.

Então, digamos que estabelecemos que estamos no jogo e a manter um estado base. A sua personagem lançou a sua primeira habilidade, e queremos registar 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 isto, edito ligeiramente as cores base dos píxeis 1 e 2 (da esquerda) para criar o 001.

Pode não parecer muito, mas o píxel 1 teve a sua luminosidade reduzida em cerca de 30%, e o píxel 2 ganhou 50% de saturação. Como o nosso sistema pode detetar facilmente estas mudanças, o estado mudará de forma fiável para “1” e o efeito de habilidade será acionado. Habilidades com durações definidas podem terminar por si próprias, 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” ativá-lo-ia, e o estado “2” poderia encerrá-lo com base em entradas adicionais do utilizador. Alguns efeitos são muito analógicos e ainda precisariam de ser tratados individualmente pelos nossos programadores, mas para os restantes, este sistema tende a ser fiável. A principal limitação é a visibilidade dos “píxeis”, que precisará de ser constante durante o estado de gameplay e provavelmente deve ser maior do que qualquer píxel do estado “1”.