Em quase todos os jogos que deparei com uma situação sombria projetada para mudar a maneira como um usuário interage com o ambiente, sempre existem jogadores que aumentam a correção de gama de seus monitores para negar o efeito desejado.
Existe uma maneira de impedir que os usuários ajustem sua correção de gama para "enganar" a saída de um desafio? (a escuridão)
Eu imagino que, se você puder recuperar com segurança a correção gama atual do monitor do usuário, poderá usá-la para evitar mais ou menos a vantagem que ela concederia sem causar aos usuários normais qualquer inconveniente.
rendering
anti-cheat
Athix
fonte
fonte
Respostas:
Se você absolutamente precisar controlar se o jogador pode ver algo ou não, possivelmente para anti-fraude para vários jogadores ou se é a chave para a mecânica do seu jogo, obscurece-o completamente . Dessa forma, nenhuma quantidade de correção gama os tornará visíveis.
Não é o melhor exemplo, mas em Closure , as áreas que não estão sendo iluminadas estão em completa escuridão:
Por favor, não siga este caminho; existem muitas razões - além da trapaça - para corrigir a gama; talvez o jogador tenha uma visão ruim ou um monitor ruim ou esteja jogando durante o dia. Por favor, respeite seus usuários! Não deixe que alguns trapaceiros / piratas / o que você tem arruinem a experiência de todos os outros.
fonte
O que eu sugeriria é adicionar uma pequena quantidade de ruído branco à saída renderizada. Em cenas brilhantes, isso não será visível; em cenas escuras com configuração gama comum, é semelhante ao que as câmeras ou o olho humano realmente fazem na realidade. Mas para alguém que aumenta a gama, esse barulho seria um forte incômodo. Não apenas os objetos escuros não se tornam adequadamente visíveis, como o aumento do ruído de baixo alcance também distrai os objetos brilhantes; portanto, deve desencorajar suficientemente as pessoas a fazer isso.
(É claro que caras muito inteligentes ainda podem criar técnicas sofisticadas de redução de ruído, mas essas pelo menos não estão disponíveis em monitores comuns)
fonte
Existem algumas funções da API do Windows que podem ajudar: SetMonitorBrightness e SetDeviceGammaRamp . No entanto, isso depende do hardware; provavelmente nem todos os monitores suportam a configuração do brilho programaticamente, e monitores diferentes podem produzir resultados diferentes etc.
Além disso, não parece uma boa ideia. Travar a gama / brilho a algum valor fixo certamente incomodará os seus jogadores e provavelmente tornará o jogo impossível de jogar para alguns, porque acontece que fica muito escuro (ou muito claro) na configuração deles.
Por fim, se é um jogo para um jogador e o jogador quer facilitar o jogo para si, é isso mesmo. Por que você deveria detê-los? Se for um jogo multiplayer, são necessárias outras estratégias, como enviar apenas ao jogador informações sobre eventos próximos o suficiente para que eles vejam ou dentro do raio da lanterna, ou algo dessa natureza.
fonte
Dado o brilho aleatório / contraste / gama das telas do usuário, sem mencionar a iluminação da sala onde o usuário está sentado, não há maneira confiável de fazer algo que será "apenas suficientemente visível" ou "apenas suficientemente invisível". Se você deseja que algo fique invisível, faça-o preto. Se você deseja tornar algo ambiguamente perceptível, você deve aceitar que alguns jogadores terão uma oportunidade melhor de vê-lo.
fonte
Se for um jogador único, isso realmente não importa.
No multiplayer, que tal apenas ter uma caixa de colisão mostrando o que eles podem ver. Se eles estiverem em uma área escura, diga ao cliente para não desenhar outros jogadores / objetos de palco / etc até que estejam na caixa de colisão de exibição em campo.
fonte