Jogador maluco, problemático, olho parado.
- Juntou-se
- 21 de Julho de 2015
- Postagens
- 570
- Soluções
- 3
- Bravecoins
- 2.833
- Área
- Programação
- Motor de jogo
- RPG Maker 2003
EDITOR DE PALETAS
by Dr.XGB
Autor: Dr.XGB
Plataforma: RPG Maker 2000
Nível: Avançado
Outras Ferramentas: Destiny Patcher 2.0
E aí, galera?
Agora eu trouxe uma engine bem cabulosa, me deu um pouco de trabalho para desenvolver um sistema desses em 3 dias. Utilizei um dos recursos do Destiny Patcher para fazer esse sistema, permitindo que eu altere as cores do charset da maneira que desejar e aplicá-lo ao seu jogo.
Para mexer na paleta de uma imagem através do Destiny Script, é muito impotante que você tenha uma noção básica sobre números hexadecimais e o conhecimento dos operadores lógicos binários (And, Or, Not, Shift Left, Shift Right...).
Como os arquivos gráficos que o RPG_RT lê são do tipo Cores Indexadas (onde tem um valor alocado em um byte, representando a cor), o Destiny consegue ler a paleta dos mesmos e editá-los alterando o seu valor numérico. Na verdade as cores são geradas por código binário, onde cada bit representa uma cor e sua tonalidade, porém a leitura se torna mais compreensível quando geramos através do sistema Hexadecimal. Quando fizemos isso, o interpretador lê o código hexadecimal, passa para o binário, gera a cor e retorna com o valor decimal:
Agora eu trouxe uma engine bem cabulosa, me deu um pouco de trabalho para desenvolver um sistema desses em 3 dias. Utilizei um dos recursos do Destiny Patcher para fazer esse sistema, permitindo que eu altere as cores do charset da maneira que desejar e aplicá-lo ao seu jogo.
Para mexer na paleta de uma imagem através do Destiny Script, é muito impotante que você tenha uma noção básica sobre números hexadecimais e o conhecimento dos operadores lógicos binários (And, Or, Not, Shift Left, Shift Right...).
Como os arquivos gráficos que o RPG_RT lê são do tipo Cores Indexadas (onde tem um valor alocado em um byte, representando a cor), o Destiny consegue ler a paleta dos mesmos e editá-los alterando o seu valor numérico. Na verdade as cores são geradas por código binário, onde cada bit representa uma cor e sua tonalidade, porém a leitura se torna mais compreensível quando geramos através do sistema Hexadecimal. Quando fizemos isso, o interpretador lê o código hexadecimal, passa para o binário, gera a cor e retorna com o valor decimal:
Ao fazer isso, você pode perceber que as cores podem ser criadas através do sistema RGB, onde você define os valores das cores primárias de 0 até 255.
Vamos fazer um teste?
Abra o RPG Maker 2000, em um evento qualquer, digite este código:
Vamos fazer um teste?
Abra o RPG Maker 2000, em um evento qualquer, digite este código:
Agora teste o seu jogo e verá que vai gerar um quadrado branco de 128x128 pixels. Isso porque criamos uma picture toda preta e mudamos a primeira cor da paleta para branco (0xFFFFFF). Lembre-se que quando você quer escrever um número hexadecimal, você tem que digitar 0x antes do número para que o interpretador reconheça que aquele número está no formato hexadecimal.
Agora, altere a terceira linha do código (Picture[].AuroraSheet.Palette[]) para o seguinte valor:
Agora, altere a terceira linha do código (Picture[].AuroraSheet.Palette[]) para o seguinte valor:
Ao testar o jogo, verá que agora o quadrado está vermelho. Agora tente mudar a primeira cor da paleta desta maneira:
Teremos agora um quadrado verde. E, por fim, tente este:
Agora o quadrado gerado na tela ficou azul. Com isso, você chegará a conclusão que a cada duas casas numéricas representa uma cor primária. São elas, respectivamente: Azul, Verde e Vermelho (neste caso é ao contrário do que a gente costuma ver num editor de imagens onde o vermelho vem primeiro)
Relembrando o primeiro exemplo deste tópico onde 0xFF equivale a 255, podemos notar que num editor de imagens qualquer também funciona dessa forma, só que eles mostram cada cor primária em número decimal, mas provavelmente são convertidos em hexadecimal e feita a leitura através do código binário, retornando a cor de acordo com o que estava configurado. Assim então eu usei alguns cálculos para que o jogador possa definir cada cor primária, retornando uma nova cor para a paleta do Charset. Veja os cálculos que usei para editar cada uma das cores primárias. Antes vamos considerar as seguintes variáveis:
Colocando estas variáveis para serem determinadas cada cor primária, ou seja, o grupo de 2 duas casas do valor hexadecimal da cor, usei os seguintes cálculos:
Volte ao seu projeto, onde a gente testou o quadrado na tela e aplique estes 3 cáculos acima. Teste o jogo e aperte F9 quando o quadrado aparecer e teremos a mágica:
Agora tente alterar a primeira cor da paleta lá em cima para um valor qualquer para ver como as cores são distribuídas para a variável. Caso você não tenha ideia de como gerar outras cores, deixarei algumas sugestões para você testar:
Além dessas cores, tente outras combinações, procure descobrir novas cores e vai testando no projeto para ver como funciona. Da mesma forma que os número decimais são contados: 1, 2, 3, 4, 5, 6, 7, 8 e 9; no sistema hexadecimal tem mais seis algarismos antes de chegar a 10. Então a contagem ficaria: 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12...
Na dúvida, abra a calculadora do Windows no modo de exibição "Programador", digite um número de 0 a 255 na forma decimal, converta para hexadecimal e teremos o valor. Mas faça isso de 2 em 2, se você colocar o número todo o cálculo vai dar errado pois as cores são contadas em bits.
[box class=catbg3]Na dúvida, abra a calculadora do Windows no modo de exibição "Programador", digite um número de 0 a 255 na forma decimal, converta para hexadecimal e teremos o valor. Mas faça isso de 2 em 2, se você colocar o número todo o cálculo vai dar errado pois as cores são contadas em bits.
Sempre que você alterar a cor da paleta, finalize o código chamando a função Picture[id].AuroraSheet.FlushPalette(). Fazendo isso, as alterações da paleta serão aplicadas à picture selecionada pela Id que você colocou nesta função. Se não colocá-la, a paleta da sua imagem não sofrerá nenhuma alteração.[/box]
Depois de separar as cores primárias, hora de mudar o valor das 3 variáveis e enviar de volta para a paleta da imagem. Neste caso, como se trata de um cálculo binário, fazer o reverso não vai adiantar. Portanto fiz mais alguns cálculos para retornar cada um deles para suas devidas casas, formando uma nova cor:
E assim eu desenvolvi o sistema para alterar a cor da imagem através das cores primárias.
Para mostrar como tudo isso funciona, eu montei um aplicativo que lhe permite alterar a cor dos charsets da maneira que você quiser. Não use apenas os que estão na pasta do jogo, mas coloque outros charsets que você tem na pasta e veja como deve ser aplicado o sistema às imagens. Por enquanto não coloque charsets com acento porque eu ainda não terminei a fonte do aplicativo, senão vai dar erro na hora de ler os nomes dos arquivos. Considere, por enquanto, como um teste. Aos poucos farei atualizações, aprimorando o aplicativo.
Também fiz com que criasse um faceset para o charset com cada um deles na hora que você testar o jogo no editor. Espero que gostem e que utilizem este beta para o conhecimento de vocês.
Também fiz com que criasse um faceset para o charset com cada um deles na hora que você testar o jogo no editor. Espero que gostem e que utilizem este beta para o conhecimento de vocês.
Imagens
Disponibilizei 2 versões diferentes, seria recomendável que você tenha um bom processador e uma memória de, no mínimo 4GB para um funcionamento completo. Caso contrário, baixe a versão minimal que limpa os lags ocorridos durante o editor com um Wait.
Este aplicativo está sujeito a alterações e também estará aberta às sugestões para que eu possa acrescentar a ele. Até mais k:
Log das versões: