[tutorial] Iluminação
em Qui 23 Ago 2012, 01:01
Iluminação 2d por Esaucm98
No caso oque eu vou fazer e seu jogo ficar com uma certa escuridão e com apenas uma luz seja no jogador ou no mouse etc.. depois você pode adicionar luzes aonde quiser tipo postes, lampadas ...
pra entender bem e necessario saber oque é uma surface.
Primeiro criamos uma surface... então faça um objeto chame de por exemplo obj_surface e no create
no step:
no draw
agora importante coloque o sprite da luz no seu jogo
A função blend mode e uma "mistura de cores"ela tem varias funções que fazem papeis diferentes, por exemplo bm_subtract subtrai a cor atual, tipo que inverte a cor, se o sprite da nossa iluminação e preto ficou branco etc.. tem tambem outros tipo o bm_add o bm_max, todos influem nas cores, se alguem se interessar e so apertar F1 que tem no manual ou no site da yoyo wikia. no caso ele reage com a função draw_clear_alpha que limpa o "alpha" ou a transparencia pela cor e o alpha especificado, assim sendo ele subtrai o valor da cor do sprite com o alpha que esta setado na região ai ele faz ficar parcialmente transparente a area da luz.
problemas ou duvidas me avise
Download de um exemploNo caso oque eu vou fazer e seu jogo ficar com uma certa escuridão e com apenas uma luz seja no jogador ou no mouse etc.. depois você pode adicionar luzes aonde quiser tipo postes, lampadas ...
pra entender bem e necessario saber oque é uma surface.
Primeiro criamos uma surface... então faça um objeto chame de por exemplo obj_surface e no create
- Código:
//isso deve criar uma surface do tamanho da room
Surf = surface_create(room_width,room_height);
no step:
- Código:
surface_set_target(Surf)
//focaliza na surface criada anteriormente
draw_clear_alpha(c_black,0.9);
//limpa o "alpha" ou a transparencia por uma cor preta (c_black) e com uma transparencia muito pequena (0.9) isso fara o //efeito do escuro.
draw_set_blend_mode(bm_subtract)
//seta o "blend mode" para subtrair. veja no final do tutorial
draw_sprite(spr_light,image_index,mouse_x,mouse_y);
//desenha o sprite da luz, lembrando que o blend mode esta subtraindo
draw_set_blend_mode(bm_normal);
//seta o blend mode para normal
surface_reset_target();
//desfocaliza na surface e atualiza já que esta no step
no draw
- Código:
draw_surface(Surf,0,0)
//vai desenhar a surface criada nas coordenadas x=0 e y=0 que ficam na parte superior esquerda da room
agora importante coloque o sprite da luz no seu jogo
- Spoiler:
A função blend mode e uma "mistura de cores"ela tem varias funções que fazem papeis diferentes, por exemplo bm_subtract subtrai a cor atual, tipo que inverte a cor, se o sprite da nossa iluminação e preto ficou branco etc.. tem tambem outros tipo o bm_add o bm_max, todos influem nas cores, se alguem se interessar e so apertar F1 que tem no manual ou no site da yoyo wikia. no caso ele reage com a função draw_clear_alpha que limpa o "alpha" ou a transparencia pela cor e o alpha especificado, assim sendo ele subtrai o valor da cor do sprite com o alpha que esta setado na região ai ele faz ficar parcialmente transparente a area da luz.
problemas ou duvidas me avise
- Ranking :
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :x 0
x 1
x 0
Reputação : 52
Prêmios: 0
: 2
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 09:37
Excelente tutorial muito útil, e seria bem interessante se explicasse o funcionamento do draw_set_blend_mode(bm_subtract) isso seria muito importante para entender todo o processo pois ele é a chave de tudo.
Flws!
Flws!
- Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Número de Mensagens : 359
Insígnias de JAM :x 0
x 0
x 0
Reputação : 15
Prêmios: 0
: 1
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 11:06
Cara esse tuto é interessante mas nao consegui conclui-lo, ta muito confuso e tem muitos erros explica melhor oque cada funcao faz e o lugar dde coloca os codigos e talz , aguardo a atualizacao pois to muito interessado no tuto.Concerta ai cara vale apena flws
- Ranking :
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :x 0
x 0
x 1
Reputação : 80
Prêmios: 2
: 2
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 11:46
Seu code está errado, Nestas Partes:
e aqui:
Gostei Muito do Efeito, Já procurei isto a algum Tempo, mas achei estranho uma coisa:
Coloquei no Meu Jogo 'EscoraBall' para ver como ficava, funcionou legal,mas só que a Bolinha ficou aparecendo no Escuro, e em Outra fase(que existia Portas e Chavez) ficou aparecendo mais coisas:
Editado logo após ver que eu estava errado.
O Problema era que o Depth do Surface era Maior de que aqueles objetos!
Vou usar Este Efeito no EscoraBall Versão 2.0, Obrigado.
- Código:
draw_sprite(mouse_x,mouse_y,obj_light);
- Código:
draw_sprite(spr_luz,-1,mouse_x,mouse_y);
e aqui:
- Código:
Surf = surface_create(room_widith,room_height);
- Código:
Surf = surface_create(room_width,room_height);
Gostei Muito do Efeito, Já procurei isto a algum Tempo, mas achei estranho uma coisa:
Coloquei no Meu Jogo 'EscoraBall' para ver como ficava, funcionou legal,mas só que a Bolinha ficou aparecendo no Escuro, e em Outra fase(que existia Portas e Chavez) ficou aparecendo mais coisas:
- Spoiler:
Editado logo após ver que eu estava errado.
O Problema era que o Depth do Surface era Maior de que aqueles objetos!
Vou usar Este Efeito no EscoraBall Versão 2.0, Obrigado.
- Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :x 0
x 0
x 0
Reputação : 14
Prêmios:
:
:
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 14:45
Eu consegui!
Erros acontecem mesmo quebrei a cuca um pouco e só adaptei! Ó só:

Pra quem ainda topa com esse tipos de erros, eis aqui minha forma de acha-los e corrigir= tradução:
o resultado foi:
o erro ocorreu no steep do objeto com nome obj_surface e ainda mostrando
a linha e posição além do próprio code com um ^ mostrando onde foi!
resumindo: se deu unknow então é por que não achou ou não existe!
se deu spectate quer dizer que falta algo no proprio code!
Erros acontecem mesmo quebrei a cuca um pouco e só adaptei! Ó só:

Pra quem ainda topa com esse tipos de erros, eis aqui minha forma de acha-los e corrigir= tradução:
- tradução:
- ___________________________________________
ERROR in----------------------------------------=erro em
action number 1---------------------------------=na tentativa
of Step Event-----------------------------------=do evento
for object obj_surface :--------------------------=do objeto
Error in code at line 10:--------------------------=erro do code na linha 10
draw_sprite(spr_lighiiiiit,1,mouse_x,mouse_y)-=esse é o code
^--------------------------------------=ponto exato
at position 14: Unknown variable spr_lighiiiiit------=não encontrado a variável ou outra coisa.
- Ou prefere assim?:
- ___________________________________________
ERRO em
na ação número 1
do Evento Steep
para o objecto obj_surface :
Error no code na linha 10:
draw_sprite(spr_lighiiiiit,1,mouse_x,mouse_y)
^
na posição 14: não encontrado variável spr_lighiiiiit
o resultado foi:
o erro ocorreu no steep do objeto com nome obj_surface e ainda mostrando
a linha e posição além do próprio code com um ^ mostrando onde foi!
resumindo: se deu unknow então é por que não achou ou não existe!
se deu spectate quer dizer que falta algo no proprio code!
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 19:58
Cara esse tuto é interessante mas nao consegui conclui-lo, ta muito confuso e tem muitos erros explica melhor oque cada funcao faz e o lugar dde coloca os codigos e talz , aguardo a atualizacao pois to muito interessado no tuto.Concerta ai cara vale apena flws
Não entendi eu coloquei onde e pra colocar cada coisa, já corrigi os pequenos erros que tinham, se puder especificar melhor qual a parte que esta confusa eu posso melhorar vlw.
Seu code está errado, Nestas Partes:
CODE:
draw_sprite(mouse_x,mouse_y,obj_light);
Seria assim:
CODE:
draw_sprite(spr_luz,-1,mouse_x,mouse_y);
e aqui:
CODE:
Surf = surface_create(room_widith,room_height);
Seria:
CODE:
Surf = surface_create(room_width,room_he
É verdade, foi mal fiz o tutorial com um pouco de pressa porque tava meio tarde, mas ja corrigi, desculpe.
Excelente tutorial muito útil, e seria bem interessante se explicasse o funcionamento do draw_set_blend_mode(bm_subtract) isso seria muito importante para entender todo o processo pois ele é a chave de tudo.
Flws!
Vlw fico feliz que tenha gostado, a função blend mode repare que eu dei uma pequena explicação agora, achei até meio superficial mas e pq eu nao sei explicar direito, e algo que eu aprendi por experiencia propria tentando então eu particulamente acho dificil de explicar.
- Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Número de Mensagens : 359
Insígnias de JAM :x 0
x 0
x 0
Reputação : 15
Prêmios: 0
: 1
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 20:23
Consegui concluir o tutorial,
mas achei um erro Esaucm98, (não sei se é um erro mas axo que sim, se não desculpe-me.)
"então faça um objeto chame de por exemplo obj_surface"
"draw_sprite(obj_light,image_index,mouse_x,mouse_y);"
Bom so consegui concluir o tutorial quando coloquei o mesmo nome nos dois lugares destacados em vermelhor.
Coloque algo assim:
"então faça um objeto chame de obj_surface" sem o por exemplo.
e no codigo coloque:
"draw_sprite(obj_surface,image_index,mouse_x,mouse_y);"
Gostei muito do tutorial Esaucm98, parabens
continue assim!
Flws cara Te+
mas achei um erro Esaucm98, (não sei se é um erro mas axo que sim, se não desculpe-me.)
"então faça um objeto chame de por exemplo obj_surface"
"draw_sprite(obj_light,image_index,mouse_x,mouse_y);"
Bom so consegui concluir o tutorial quando coloquei o mesmo nome nos dois lugares destacados em vermelhor.
Coloque algo assim:
"então faça um objeto chame de obj_surface" sem o por exemplo.
e no codigo coloque:
"draw_sprite(obj_surface,image_index,mouse_x,mouse_y);"
Gostei muito do tutorial Esaucm98, parabens
continue assim!
Flws cara Te+
- Data de inscrição : 24/10/2009
Número de Mensagens : 873
Insígnias de JAM :x 0
x 0
x 0
Reputação : 14
Prêmios:
:
:
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 20:28
Cara, coloca a gmk exemplo(comentados) pra quem não consegui! assim eles aprendem!
sem esquecer de usar o info para dizer pra que serve, o nome do projeto que lembre o que é... e etc!
exemplo de nome: "Tutorial Iluminação (por Esaucm98).gmk"
Não vou dizer: "espero ter ajudado", pois é pensando nisso que postei agora!
Fuiz!
sem esquecer de usar o info para dizer pra que serve, o nome do projeto que lembre o que é... e etc!
exemplo de nome: "Tutorial Iluminação (por Esaucm98).gmk"
Não vou dizer: "espero ter ajudado", pois é pensando nisso que postei agora!
Fuiz!
- Ranking :
Notas recebidas : A
Data de inscrição : 25/02/2012
Número de Mensagens : 359
Insígnias de JAM :x 0
x 0
x 0
Reputação : 15
Prêmios: 0
: 1
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 20:41
Tô com o moisesBR o gmk seria um otimo complemento para o tutorial.
- Ranking :
Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Número de Mensagens : 2490
Insígnias de JAM :x 0
x 1
x 0
Reputação : 52
Prêmios: 0
: 2
: 1
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 20:43
Sempre vi o pessoal dizendo isso e nunca concordei, pois se está postando é claro que "espera que tenha ajudado". Foi ótimo que alguem notou isso tambem!!!!@moisesBR escreveu:
Não vou dizer: "espero ter ajudado", pois é pensando nisso que postei agora!
Fuiz!
(esse post foi meio inútil mas não resisti)
Flws!
Re: [tutorial] Iluminação
em Qui 23 Ago 2012, 20:55
certo então, coloquei ai um exemplo, quem tiver tendo dificuldade e so baixar, mas acho que se seguir o tutorial direitinho fica funcional sim.
quem quiser so baixa...
quem quiser so baixa...
- Ranking :
Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Número de Mensagens : 2964
Insígnias de JAM :x 0
x 0
x 0
Reputação : 121
Prêmios: 1
: 0
: 3
Re: [tutorial] Iluminação
em Sex 24 Ago 2012, 09:22
Eu traduzi um tutorial sobre blend modes. Se quiser dar uma olhada, tem um link na assinatura.@Esaucm98 escreveu:Excelente tutorial muito útil, e seria bem interessante se explicasse o funcionamento do draw_set_blend_mode(bm_subtract) isso seria muito importante para entender todo o processo pois ele é a chave de tudo.
Flws!
Vlw fico feliz que tenha gostado, a função blend mode repare que eu dei uma pequena explicação agora, achei até meio superficial mas e pq eu nao sei explicar direito, e algo que eu aprendi por experiencia propria tentando então eu particulamente acho dificil de explicar.
- Ranking :
Notas recebidas : A - A - A - A - A -A -C
Data de inscrição : 08/12/2011
Número de Mensagens : 1011
Insígnias de JAM :x 0
x 0
x 0
Reputação : 71
Prêmios: 1
: 2
: 1
Re: [tutorial] Iluminação
em Sex 24 Ago 2012, 22:44
Veio em boa hora, eu não estava conseguindo um sitema de iluminação satisfatório pro meu novo jogo pra celular, adaptei o seu código e ficou bem melhor que antes.
O jogo com a iluminação de tutorial:
O jogo com a iluminação de tutorial:
Re: [tutorial] Iluminação
em Seg 17 Dez 2012, 13:09
muito bom o tutorial..do jeito q esta ai ja esta funcionando legal...agora so preciso de adaptar para o meu game...
obrigadao pela ajuda ai com esse tuto...
obrigadao pela ajuda ai com esse tuto...
- Ranking :
Notas recebidas : B
Data de inscrição : 28/02/2012
Número de Mensagens : 1908
Insígnias de JAM :x 0
x 0
x 1
Reputação : 80
Prêmios: 2
: 2
: 1
Re: [tutorial] Iluminação
em Ter 23 Jun 2015, 10:56
Este tutorial já deveria esta aprovado a muito tempo!
Muito bom, sempre uso quando tenho que fazer alguma coisa relacionada a iluminação, ou aponto em tópicos com dúvidas sobre o mesmo.
Simples, explicado, eficiente e muito útil!
Movido para Tutoriais Aprovados.
Muito bom, sempre uso quando tenho que fazer alguma coisa relacionada a iluminação, ou aponto em tópicos com dúvidas sobre o mesmo.
Simples, explicado, eficiente e muito útil!
Movido para Tutoriais Aprovados.
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum