· . · Vamos . iluminar · . · » Surfaces :)

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

· . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Gabreel em Sab 20 Nov 2010, 23:08

Ultimamente andei pesquisando maneiras legais de se criar um efeito de iluminação, e achei um bem legal usando surfaces.
A vantagem desse efeito é que você pode iluminar quantos elementos quiser sem usar nenhuma sprite. Além de ficar muito profissional, pois o resultado não é apenas um círculo com alpha 0, rodiado de preto alpha 255.

Mas a desvantagem desse efeito é que se não for usado corretamente, pode ocasionar lags, também, só pode ser usado por usuários com GM 6/7/8 PRO.

Só quero ressaltar que esse efeito não foi criado por mim, mais eu editei tanto que é como se fosse meu.. O_O
Engine no 64digits: http://64digits.com/games/index.php?cmd=view_game&id=4530
Criador original: Theodore III

O que é necessário?
- Dois objetos.
- Um heroi.

Vamos ao efeito!
É muito simples, primeiro você pode começando com um objeto chamado "ctrlLuz". Pode ser que se você colocar em um outro controle que ocasionalmente você já tenha possa ocorrer algum conflito.. (como já ocorreu comigo, custei muito para concertar).
Vamos ao CREATE:
Código:
Alpha=0.92; //é o alpha da parte preta da luz, ou seja, a escuridão.
Noite=surface_create(view_wview[0],view_hview[0]); //cria a suface chamada "Noite". Ela terá o tamanho da sua view. Se a sua room for relativamente pequena, ou ainda, se você não tiver uma view, troque os valores view_wview[0] para room_width e view_hview[0] para room_height.
Agora, evento STEP > BEGIN STEP
Código:
global.Darkest=merge_color(c_black,c_white,Alpha); //Cria um efeito degrade do preto para o tranparente, com o Alpha de 0.92
surface_set_target(Noite); //Nada de especial.
draw_clear(global.Darkest); //Desenha a noite na surface
draw_set_blend_mode(bm_subtract); //Vai "tirar" uma parte da surface
with (objLuz)
{draw_circle_color(objHeroi.x-view_xview[0],objHeroi.y-view_yview[0],100,global.Darkest,c_black,0);}
//Cria um circulo em volta do seu heroi com a iluminação. Os  primeiros argumentos foi um hack que eu criei.. O terceiro é o raio do círculo, a partir daí não a nada que precise a ser mexido.
draw_set_blend_mode(bm_normal);//Volta ao normal
surface_reset_target();//Isso eu não sei explicar O_O
Agora coloque um evento DRAW. Vamos por a surface na tela.
Código:
if surface_exists(Noite)=0 //caso a surface não seja criada ao chegar nesse evento
then exit //"cancela" o resto
draw_set_blend_mode(bm_subtract);
draw_surface(Noite,view_xview[0],view_yview[0]); //Desenha a surface na tela
draw_set_blend_mode(bm_normal)

Crie um objeto chamado "objLuz", coloque todos os objetos na room (inclusive o heroi), e manda F5!

Bom, algumas partes dos códigos não ficaram bem explicados, ou eu não soube explicar. Peço desculpas, mas se puder contribuir, fico agradecido.

Há, no caso de você querer ver como fica:

Concerteza, muito bom.. Cool

Engine:
http://www.mediafire.com/?an15blf5ell05fr


Última edição por ·ßieL em Dom 21 Nov 2010, 00:17, editado 8 vez(es)

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Luca$ em Sab 20 Nov 2010, 23:37

Mano, podia postar uma enginezinha para quem nao gosta de ler isso tudo né? ;)

Edit:
Aqui nao deu certo man :s


Última edição por GMLucas em Sab 20 Nov 2010, 23:48, editado 1 vez(es)

Luca$

Ranking : Nota D
Número de Mensagens : 582
Data de inscrição : 10/10/2010
Notas recebidas : D-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Gabreel em Sab 20 Nov 2010, 23:39

GMLucas escreveu:Mano, podia postar uma enginezinha para quem nao gosta de ler isso tudo né? ;)
É, não.. Pois você lendo e entendendo você vai aprender, certo? E esse é objetivo prático dos tutoriais.

Quando o 64Digits "entrar" no ar, posto a engine do autor original como referência, mas os códigos que eu postei aqui estão bastante modificados, mais o princípio é o mesmo, vlw?

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por donte em Sab 20 Nov 2010, 23:48

o.o deixou meu ZSS com efeito invertido(cor) e travado o.o... e aki a 64Digitos ta on...
edit:
eu que esqueci de trocar o nome das sprites e dos objetos pensando que é vars...
fico muitobom o tutorial... nota 8 por não ser lanterna xD(to atraz muito disso e tudo que achei são coisas que não tao funfando no meu GM8)


Última edição por donte em Dom 21 Nov 2010, 00:03, editado 1 vez(es)

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Luca$ em Sab 20 Nov 2010, 23:54

hm... mas aqui nao deu certo nao :s

Luca$

Ranking : Nota D
Número de Mensagens : 582
Data de inscrição : 10/10/2010
Notas recebidas : D-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Gabreel em Dom 21 Nov 2010, 00:13

Estranho donte... Testei exatamente o que falei acima.. e aproveitei e salvei a engine ¬¬

http://www.mediafire.com/?an15blf5ell05fr

Controle: Mouse;

64digits voltou... Olha a base deste tutorial: http://64digits.com/games/index.php?cmd=view_game&id=4530
GMLucas, Se não é GMPRO não adianta nada, e ainda por cima, eu sei que você não testou ¬¬

Preguiça....

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por donte em Dom 21 Nov 2010, 21:12

aki funcionou cara só que não era lanterna aquela q inicia numa parte e termina em outra com ângulo(não é xingamento naum)... eu tentei até deu lanterna mais não teve angulo(do mouse)... por que no Zoragüi Space Ship a arma do carinha tem uma lanterna por que na 2ª faze o chefe(subchefe) apaga as luzes para ficar em vantagem por ter infra-vermelho...(se puder postar como definir um angulo com draw...) ...
deixa pra la quando for uma versão mais avançada eu coloco isso Laughing

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Gabreel em Dom 21 Nov 2010, 21:59

Donte.. Não entendi muito bem.. mais você pode tentar trocar o trecho a seguir
Código:
draw_circle_color(objHeroi.x-view_xview[0],objHeroi.y-view_yview[0],100,global.Darkest,c_black,0);
Por um draw de um triangulo.. Agora to jogando Sonic Fan Remix, assim que parar te ajudo com o código.. xD

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Luca$ em Dom 21 Nov 2010, 22:14

Testei, e meu GM8 é pro --'
pra q eu ia mentir?
aiai

Luca$

Ranking : Nota D
Número de Mensagens : 582
Data de inscrição : 10/10/2010
Notas recebidas : D-C
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por wac2007 em Sab 04 Dez 2010, 10:42

Mano sua enginezinha tem um bug...
Essa surface de "escuridao" so eh valida para os objetos que ja estao na room. Se criar um objeto no meio do jogo (como um tiro por exemplo) ele fica por cima do manto negro =/

Sabe como resolver? Flws o/

wac2007

Número de Mensagens : 521
Idade : 23
Data de inscrição : 07/11/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   : 1

http://wac2007.blogspot.com/

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por donte em Sab 04 Dez 2010, 12:07

wac usa depth negativa ao maximo(maior de todos) no obj_surface...

donte

Número de Mensagens : 1164
Idade : 18
Data de inscrição : 22/12/2009
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://nintendocenterbr.forumeiros.com

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Henrique_GJ em Sab 04 Dez 2010, 12:31

como se faz aquela parade de ver o que não tem nada na frente do player o que tiver uma parede, caixa etc na frente ficar escuro (preto mesmo)

tipo eu ja tentei collision line mas tem que ficar enchendo room de objeto e isso não é bom como faz isso?

ou existe uma função/script que crie um objeto na room toda repetidamente? tipo numa grade que eu possa colocar na função/script existe? please eu queria pra fazer um jogo que parei a muuuiiito tempo por esse mesmo problema ia focar legal

Henrique_GJ

Número de Mensagens : 1344
Idade : 19
Data de inscrição : 30/12/2009
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

http://sitedosjogos.forumeiros.com

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por wac2007 em Sab 04 Dez 2010, 12:31

donte escreveu:wac usa depth negativa ao maximo(maior de todos) no obj_surface...

Pode crer mano =)

Sempre me atrapalho com essa porcaria de detpht ¬¬

Vlw Happy

Henrique_GJ escreveu:como se faz aquela parade de ver o que não tem nada na frente do player o que tiver uma parede, caixa etc na frente ficar escuro (preto mesmo)

tipo eu ja tentei collision line mas tem que ficar enchendo room de objeto e isso não é bom como faz isso?

ou existe uma função/script que crie um objeto na room toda repetidamente? tipo numa grade que eu possa colocar na função/script existe? please eu queria pra fazer um jogo que parei a muuuiiito tempo por esse mesmo problema ia focar legal

Da mesma forma que voce faz o tutorial. Mas voce teria que definir a surface pra depois da caixa, criar uma area especifica Happy
Flws

wac2007

Número de Mensagens : 521
Idade : 23
Data de inscrição : 07/11/2008
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   : 1

http://wac2007.blogspot.com/

Voltar ao Topo Ir em baixo

Re: · . · Vamos . iluminar · . · » Surfaces :)

Mensagem por Conteúdo patrocinado Hoje à(s) 16:17


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum