Entrar
Últimos assuntos
» player não consegue andarpor lovn7 Qui 21 Nov 2024, 13:33
» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56
» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22
» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31
» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23
» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49
» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58
» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36
» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36
» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33
» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51
» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28
» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18
» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08
» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10
» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16
» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40
» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01
» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45
» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34
» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28
» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48
» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54
» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14
» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50
Manipulação binária de arquivos/memória (Game Maker)
5 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 2
Página 1 de 2 • 1, 2
Re: Manipulação binária de arquivos/memória (Game Maker)
Essa questão das linhas brancas eu realmente não entendi. Ainda acho que é alguma treta de surfaces... Em todos as vezes aqui abriu normal.
A questão do exemplo.... Eu tava falando "bitmap de 12 bits" só pra especificar qual é qual, mas na família do bitmap mesmo não existem "bitmaps de 12 bits" , no fim a gente acabou criando nosso próprio arquivo de imagem, mesmo que tenha ficado meio tosco, mas não deixa de ser interessante...
Aquele último exemplo que eu postei, pode jogar ele fora! Eu errei em um cálculo lá, mas já arrumei e fiz upload de novo. Agora sim a conversão tá nota 10! Um negócio legal é que reduzir pra 12 bits por pixel dá o mesmo resultado de posterizar a imagem no Photoshop usando 16 níveis! Nesse caso da posterização, o arquivo não vai reduzir o tamanho, mas o impacto de conversão das cores é exatamente igual ao esquema que a gente criou!
Agora a redução de cores tá ótima, olha só:
Nosso arquivo com 12 bits por pixel:
Arquivo bitmap real de 24 bits:
Nem dá pra notar diferença nas cores agora! Valeu!
A questão do exemplo.... Eu tava falando "bitmap de 12 bits" só pra especificar qual é qual, mas na família do bitmap mesmo não existem "bitmaps de 12 bits" , no fim a gente acabou criando nosso próprio arquivo de imagem, mesmo que tenha ficado meio tosco, mas não deixa de ser interessante...
Aquele último exemplo que eu postei, pode jogar ele fora! Eu errei em um cálculo lá, mas já arrumei e fiz upload de novo. Agora sim a conversão tá nota 10! Um negócio legal é que reduzir pra 12 bits por pixel dá o mesmo resultado de posterizar a imagem no Photoshop usando 16 níveis! Nesse caso da posterização, o arquivo não vai reduzir o tamanho, mas o impacto de conversão das cores é exatamente igual ao esquema que a gente criou!
Agora a redução de cores tá ótima, olha só:
Nosso arquivo com 12 bits por pixel:
Arquivo bitmap real de 24 bits:
Nem dá pra notar diferença nas cores agora! Valeu!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Manipulação binária de arquivos/memória (Game Maker)
Caramba, ficou muito igual.
Nem dá para perceber diferenças.
Muito bom. Você criou um novo formato de imagem super leve (metade do peso).
Eu também vou tentar algo para resolver o problema das linhas brancas, o ideal seria outra pessoa baixar (de preferência com um pc não muito bom) e falar se acontece ou nao.
Até mais!
Nem dá para perceber diferenças.
Muito bom. Você criou um novo formato de imagem super leve (metade do peso).
Eu também vou tentar algo para resolver o problema das linhas brancas, o ideal seria outra pessoa baixar (de preferência com um pc não muito bom) e falar se acontece ou nao.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Manipulação binária de arquivos/memória (Game Maker)
Vamos ver se a gente consegue resolver esse problema das linhas.
Bom, se caso a imagem ficar distorcida, é só mudar essa linha do código:
por essa:
(já refiz o upload com a correção)
Realmente a imagem fica mais leve, não é tão leve ainda, mas a gente tá manipulando um bitmap... Se a imagem usasse menos cores ainda daria pra reduzir cada pixel pra 3 bits ou até 2 bits. Valeu!
Bom, se caso a imagem ficar distorcida, é só mudar essa linha do código:
- Código:
extrabyte := min(incup - bmpw, bmpw - incdown); // Múltiplo mais próximo
por essa:
- Código:
extrabyte := max(incup - bmpw, bmpw - incdown); // Múltiplo mais próximo
(já refiz o upload com a correção)
Realmente a imagem fica mais leve, não é tão leve ainda, mas a gente tá manipulando um bitmap... Se a imagem usasse menos cores ainda daria pra reduzir cada pixel pra 3 bits ou até 2 bits. Valeu!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Manipulação binária de arquivos/memória (Game Maker)
Na hora que caiu a ficha eu percebi que o tamanho do arquivo externo é menor, mas a memória ram ocupada no jogo/programa é a mesma.
Será que, se for usado 9 bits / pixel, a qualidade vai ficar muito menor?
Meu pc tá demorando uns 2~3 segundos para carregar a imagem. Tá bem lento mesmo. O seu carrega em quanto tempo?
Até mais!
Será que, se for usado 9 bits / pixel, a qualidade vai ficar muito menor?
Meu pc tá demorando uns 2~3 segundos para carregar a imagem. Tá bem lento mesmo. O seu carrega em quanto tempo?
Até mais!
Última edição por Pedrø em Dom 29 Jul 2012, 13:10, editado 1 vez(es)
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Manipulação binária de arquivos/memória (Game Maker)
A memória que é usada é sempre a mesma, independente de tipo de arquivo, porque quando a imagem tá na memória, ela não tem "formato" (já foi decodificada), ela é só um mapa de bits.
A questão da demora para abrir é porque estamos usando o Game Maker, surface e lendo o arquivo byte a byte, por isso que demora mesmo. No meu PC leva uns 2 segundos.
A perda de qualidade é muito variada, porque depende muito do número de cores que a imagem usa:
Sem perda (24) e com pouca perda (12)
12 bits = 2^12 = 4096 cores
As que sofrem perdas mais bruscas, e redução de tamanho (usando o nosso sistema do script, dividindo a o valor da cor, ficaria assim):
9 bits (3 bits por canal) = 2^9 = 512 cores
6 bits (2 bits por canal) = 2^6 = 64 cores
3 bits (1 bit por canal) - 2^3 = 8 cores
Essas aqui são as mesmas condições, porém com dithering ( http://pt.wikipedia.org/wiki/Dither ) feito no Photoshop. As que sofreram dither tem o mesmo tamanho de arquivo que as que não sofreram. É um algoritmo pra otimizar a redução de cores:
Pra fazer o cálculo de quanto espaço cada uma ocupa é só fazer:
([altura] * [largura] * [bits por pixel])/8 = número de bytes que a imagem usa
Uma imagem 320x240, por exemplo...
24 bits = 230400 bytes = 225 KB
12 bits = 115200 bytes = 112 KB
9 bits = 86400 bytes = 84 KB
6 bits = 57600 bytes = 56 KB
3 bits = 28800 bytes = 28 KB
Esse dither eu não tenho ideia de como fazer em programação. Nunca peguei um algoritmo pra ver como é... Essas imagens aí eu fiz no Photoshop. Dá pra reduzir o número de cores no Photoshop como eu fiz e depois usar aquele esquema nosso em GML, aí funciona também. Mas o dithering programado no braço com certeza deve ser bem mais complicado!
Falou!
A questão da demora para abrir é porque estamos usando o Game Maker, surface e lendo o arquivo byte a byte, por isso que demora mesmo. No meu PC leva uns 2 segundos.
A perda de qualidade é muito variada, porque depende muito do número de cores que a imagem usa:
Sem perda (24) e com pouca perda (12)
12 bits = 2^12 = 4096 cores
24 bits por pixel: | 12 Bits por pixel: |
As que sofrem perdas mais bruscas, e redução de tamanho (usando o nosso sistema do script, dividindo a o valor da cor, ficaria assim):
9 bits (3 bits por canal) = 2^9 = 512 cores
6 bits (2 bits por canal) = 2^6 = 64 cores
3 bits (1 bit por canal) - 2^3 = 8 cores
9 bits por pixel: | 6 bits por pixel: | 3 bits por pixel: |
Essas aqui são as mesmas condições, porém com dithering ( http://pt.wikipedia.org/wiki/Dither ) feito no Photoshop. As que sofreram dither tem o mesmo tamanho de arquivo que as que não sofreram. É um algoritmo pra otimizar a redução de cores:
9 bits por pixel com dither: | 6 bits por pixel com dither: | 3 bits por pixel com dither: |
Pra fazer o cálculo de quanto espaço cada uma ocupa é só fazer:
([altura] * [largura] * [bits por pixel])/8 = número de bytes que a imagem usa
Uma imagem 320x240, por exemplo...
24 bits = 230400 bytes = 225 KB
12 bits = 115200 bytes = 112 KB
9 bits = 86400 bytes = 84 KB
6 bits = 57600 bytes = 56 KB
3 bits = 28800 bytes = 28 KB
Esse dither eu não tenho ideia de como fazer em programação. Nunca peguei um algoritmo pra ver como é... Essas imagens aí eu fiz no Photoshop. Dá pra reduzir o número de cores no Photoshop como eu fiz e depois usar aquele esquema nosso em GML, aí funciona também. Mas o dithering programado no braço com certeza deve ser bem mais complicado!
Falou!
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Manipulação binária de arquivos/memória (Game Maker)
sei que o Tópico já tem um Tempo, mas o Usuário entrou ontem mesmo no Fórum, mostrando ainda estar ativo.
As Imagens que são feitas por seu Programa Simplesmente não funcionam, mas não é só isso, queria saber se você me saberia dizer porque se eu abrir uma Imagem 'digamos no Bloco de notas' e salvá-la, ela não irá abrir! não sei se é só no Meu computador, já tentei fazer um programa no GM que soltava arquivos, mas devido a esse problema de você abrir o arquivo e salvar e ele não abrir mais, parei com o Projeto.
Você tem idéia do que seja?
As Imagens que são feitas por seu Programa Simplesmente não funcionam, mas não é só isso, queria saber se você me saberia dizer porque se eu abrir uma Imagem 'digamos no Bloco de notas' e salvá-la, ela não irá abrir! não sei se é só no Meu computador, já tentei fazer um programa no GM que soltava arquivos, mas devido a esse problema de você abrir o arquivo e salvar e ele não abrir mais, parei com o Projeto.
Você tem idéia do que seja?
Re: Manipulação binária de arquivos/memória (Game Maker)
Aqui funcionam.As Imagens que são feitas por seu Programa Simplesmente não funcionam
O problema é que o Bloco de Notas não lê bytes. Se você quiser editar uma imagem modificando seus bytes, você precisa de um editor apropriado. Assim quando você salvar, ele vai escrever todos os bytes corretamente.mas não é só isso, queria saber se você me saberia dizer porque se eu abrir uma Imagem 'digamos no Bloco de notas' e salvá-la, ela não irá abrir! não sei se é só no Meu computador, já tentei fazer um programa no GM que soltava arquivos, mas devido a esse problema de você abrir o arquivo e salvar e ele não abrir mais, parei com o Projeto.
Até mais!
Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.
Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.
Aprenda a calcular a velocidade de suas animações
Entre para o Clube do Inglês:
Re: Manipulação binária de arquivos/memória (Game Maker)
PedroX escreveu:Aqui funcionam.As Imagens que são feitas por seu Programa Simplesmente não funcionamO problema é que o Bloco de Notas não lê bytes. Se você quiser editar uma imagem modificando seus bytes, você precisa de um editor apropriado. Assim quando você salvar, ele vai escrever todos os bytes corretamente.mas não é só isso, queria saber se você me saberia dizer porque se eu abrir uma Imagem 'digamos no Bloco de notas' e salvá-la, ela não irá abrir! não sei se é só no Meu computador, já tentei fazer um programa no GM que soltava arquivos, mas devido a esse problema de você abrir o arquivo e salvar e ele não abrir mais, parei com o Projeto.
Até mais!
O bloco de notas só lê os bytes correspondentes a tabela ASCII, os que ele não reconhece coloca um caractere especial ou um espaço.
Quando você abri uma imagem no bloco de notas e salva, o blocos de notas salva como documento de texto e não mais como imagem.
Re: Manipulação binária de arquivos/memória (Game Maker)
Na verdade, sim e não. Dependendo do conteúdo do arquivo, tanto o bloco de notas como qualquer outro editor de texto plano podem salvar o conteúdo binário de um arquivo. O programa não "se importa" com o conteúdo de texto porque ele não tem cabeçalho nem campo apropriado, exceto quando o texto usar Unicode que, se não me engano, o cabeçalho começa com dois bytes predefinidos...
Como o valor do ASCII corresponde a cada valor de byte no arquivo, mesmo que o notepad abra, você ainda vai conseguir salvar o binário. Só que vai depender do conteúdo. Como o amigo falou aí em cima, tem alguns códigos que não são impressos na tela, mas eu não sei se o notepad coloca espaços no lugar.
Aqui o script também funciona. Se você quiser hospedar a imagem gerada aí e colocar o link pra download aqui, eu baixo e tento ver o que aconteceu. Se puder, coloque também a original.
Como o valor do ASCII corresponde a cada valor de byte no arquivo, mesmo que o notepad abra, você ainda vai conseguir salvar o binário. Só que vai depender do conteúdo. Como o amigo falou aí em cima, tem alguns códigos que não são impressos na tela, mas eu não sei se o notepad coloca espaços no lugar.
Aqui o script também funciona. Se você quiser hospedar a imagem gerada aí e colocar o link pra download aqui, eu baixo e tento ver o que aconteceu. Se puder, coloque também a original.
GameMakerTutoriais- Data de inscrição : 29/01/2011
Reputação : 26
Número de Mensagens : 800
Prêmios :
x 0 x 4 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Página 1 de 2 • 1, 2
Tópicos semelhantes
» Juntar arquivos GML no Game Maker
» [Engine] Incluindo arquivos no game maker
» Game Maker Studio ler arquivos externos
» Tem como criar arquivos DAT no Game Maker?
» adicionar arquivos externos no game maker
» [Engine] Incluindo arquivos no game maker
» Game Maker Studio ler arquivos externos
» Tem como criar arquivos DAT no Game Maker?
» adicionar arquivos externos no game maker
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 2
Permissões neste sub-fórum
Não podes responder a tópicos