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
» 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
» 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
[Tuto] Como usar LightEngine
+4
JoaoVanBlizzard
Jiraya
Gabreel
Lukbebalduke
8 participantes
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
[Tuto] Como usar LightEngine
Light Engine
Aprenda a usar a melhor engine de Iluminação do Game Maker !
Vou procurar ensinar a como usar uma ótima engine de iluminação no Game Maker , você que sempre teve problemas em fazer sistema de Iluminação isso vai te resolver muita coisa ! Pra deixar bem claro, você não vai montar uma mega engine de luz, vou te ensinar a usa-la !
Antes de mais nada essa engine não foi feita por mim, foi feita pelo BlinderXpinguin. Então antes de começar eu vou mostrar um print pra vocês verem o nível da parada
Passo 1: Importar os Scripts
Como já disse, vamos aprender a usar a engine e não montá-la do 0, então vocês vão baixar esses scripts
- Código:
http://www.masterxy.bplaced.net/download.php
e importar como na imagem
E o deve ficar assim
Passo 2: Inicializando a engine de luz
Vamos lá, crie o obj_controle e colocar no create
- Código:
lsys_init(1);
alpha = 0.8;
Vamos entender esse código , o lsys_init() serve para iniciar o sistema de luz , o numero dentro dele é a qualidade da iluminação , você pode botar de 0 a 1, quanto mais alto maior a qualidade , nesse caso, qualidade máxima. Já o alpha é uma variável que iremos usar depois, ele vai servir para definir o nível de claridade do ambiente, ela é importante porque nos permite mudar a claridade no meio do jogo, podemos fazer sistemas de dia e noite com isso.
Agora no end_step do nosso obj_controle
- Código:
lsys_update(alpha);
Ai entra a nossa var alpha, isso serve pra atualizar o nível da claridade, no caso o lsys_update() nos devemos botar o alpha de 0 a 1 ali, sendo 0 o mais claro e 1 o mais escuro.
Agora no draw do nosso obj_controle
- Código:
lsys_draw();
Isso serve para desenhar as surfeces na tela, pois é assim que funciona a iluminação da engine, por surfaces. Não precisa botar nada ai.
E por fim no room_end ou game_end ou em qualquer outra ocasião que você for usar isso (não vejo muito utilidade fora essas) do obj_controle coloque
- Código:
lsys_free();
Isso serve pra limpar tudo ! As luzes, as surfaces e os casters. Você simplesmente exclui tudo feito com essa engine.
Passo 3: Adicionando pontos de Luz
Agora vamos adicionar os nossos pontos de luz, a tocha, a lanterna, o Sol etc.. Oque raios você for usar. Vamos criar agora o obj_sol_feliz , no create
- Código:
pl = lsys_light_add(x, y, 350, c_yellow);
Vamos lá, a funciona da seguinte maneira lsys_light_add(x, y, raio da luz, cor) , isso ai vai definir um novo ponto de luz e retornar o ID dele , nesse caso salvamos o ID no pl.
Agora no destroy do obj_sol_feliz bote
- Código:
lsys_light_delete(pl);
Quando o nosso sol morrer daqui a muitos anos, a luz tem que acabar, o lsys_light_delete( id do ponto de luz ) serve pra destruir o ponto de luz, como o nosso ponto de luz é o pl , vamos destruir o pl quando o sol morrer.
Passo 4: Shadow casters
Os shadow casters (Não sei como traduzir isso de uma maneira descente) é o que vai impedir a luz de passar , por exemplo, vamos definir um shadow caster para o nosso obj_parede, porque a luz não vai passar pela nossa parede. E não vamos definir shadow caster para HUD , porque a nossa HUD vai deixa a luz passar.
Então no create do obj_parade vamos botar
- Código:
sc = lsys_caster_add(x, y);
lsys_caster_add_point(sc, 0, 0);
lsys_caster_add_point(sc, sprite_width, 0);
lsys_caster_add_point(sc, sprite_width, sprite_height);
lsys_caster_add_point(sc, 0, sprite_height);
A primeira função lsys_caster_add(x, y) adiciona um shadow caster e retorna o seu ID, que guardamos como sc. Já o lsys_caster_add_point( ID, x, y) serve para adicionar um vértice ao nosso shadow caster, esses quatro vértices vão fechar o quadrado da nossa parede. Como você vê nessa imagem
Lembrando que como usamos sprite_width e sprite_height só vai funcionar se a origin estiver em 0 , 0.
No destroy do obj_parede agora
- Código:
lsys_caster_delete(sc);
O lsys_caster_delete( ID ) serve para deletar um shadow caster , até porque quando nos derrubamos uma parede na vida real, a luz volta a passar por ali, não fica um Void no lugar da parede '-'
Acabamos de finalizar o básico , o sol já emite luz e a parede já esta "impermeável" a luz. Mas e se o nosso Sol feliz andasse ? Afinal ele não é uma estrela comum , ele é um Sol feliz ! Coloque ai para o seu Sol feliz andar no WASD , nas setas , no mouse , onde você quiser. Agora vamos aprender a fazer a luz acompanhar o nosso Sol feliz ! O seu game deve estar assim:
Passo 5: Alterando propriedades do ponto de luz !
Vamos lembrar sempre, o obj_sol_feliz não é o ponto de luz, o ponto de luz é o pl , que está junto com o obj_sol_feliz , mas se o objeto andar, o pl não vai seguir. Então vamos fazer o ponto de luz acompanhar o sol
No step coloque
- Código:
lsys_light_set_position(pl, x, y);
O lsys_light_set_position( ID , x , y) serve para alterar a posição do ponto de luz. Nesse caso, ele vai estar sempre no mesmo lugar do sol feliz !
Mas o sol feliz começou a fica triste... (porque nesse tutorial o sol anda e tem sentimentos , não questione ¬¬) e quando o sol feliz fica triste ele vai perdendo seu brilho e sua cor amarela. Para mudar o raio da luz e fazer nosso sol brilhar menos vamos fazer assim no evento que deixa o sol triste
- Código:
lsys_light_set_radius(pl, 200);
A função lsys_light_set_radius( ID , raio ) Altera o raio do ponto de luz.
Agora vamos tirar esse amarelo e botar uma coisa verde, porque estrelas tristes brilham verde oras ! Então coloque no evento que deixa o nosso sol triste
- Código:
lsys_light_set_color(pl, c_lime);
O lsys_light_set_color( ID , cor ) muda a cor do ponto de luz.
Ok , agora que nosso sol já ta triste, brilha pouco e ta verde vamos deixa-lo de lado, somos maus , vamos supor que você queria criar uma lanterna , as lanternas não emitem uma aura de luz como as magias do Gandalf , elas soltam um feixe de luz. O mais incrível dessa engine é você pode alterar o formato da luz ! Para isso crie uma sprite com o formato da luz, tudo o que vai ser branco representa a luz, lembre-se de fazer um gradient de branco para transparente, pois isso vai fazer a luz ir ficando fraquinha, assim como na vida real. Para fazer a lanterna usarei essa sprite para formar a luz
Baixe ela ai para prosseguir com o tutorial. Agora crie um ponto de luz para a lanterna e tudo aquilo que fizemos com o sol lá no começo. Agora coloque no create da lanterna
- Código:
lsys_light_set_sprite( pl, spr_feixe_luz);
Lembrando que se o ID e o nome da sprite forem diferentes você precisa mudar. A função lsys_light_set_sprite( ID, sprite) faz com que o ponto de luz vire a sprite que você indicou, nesse caso o ponto de luz da nossa lanterna vai virar aquele feixe que apareceu logo a cima.
Certo, agora deixe-me mostrar como essa engine é foda, vamos fazer o feixe mirar para o mouse, para mostrar como mesmo com a sprite de feixe de luz ele ainda funciona super bem. Coloque no step
- Código:
direction = point_direction( x, y, mouse_x, mouse_y);
lsys_light_set_rotation( pl, direction);
image_angle = direction;
Certo, só vou explicar a função da light engine, o resto eu espero que você já saiba o que é. A função lsys_light_set_rotation( ID, angle) muda o angulo da sprite que virou luz, nesse caso, o feixe vai sempre apontar para o mouse.
Espero que tenham curtido esse tutorial, aqui fica o link da engine
- Código:
http://www.mediafire.com/download/2vaa9kf55bmy5ae/TutoLightEngine.zip
- Código:
https://mega.co.nz/#!bR0SwAJJ!bbGrPAa8jbWnfLsPK6DcTwuHEt5rg0s8mCBcbAr5Yn4
Se você também estive interessado na engine original, e não na modificada para este tuto:
- Código:
http://www.masterxy.bplaced.net/download.php
Controles
Sol: use o mouse para mover o sol, e aperte Q para deixa-lo triste ou feliz.
Lanterna: AWDS para mover a lanterna e mouse para mirar
Aperte espaço para trocar entre o sol e a lanterna.
Qualquer duvida ou correção deixe ai nos comentários. Sei que ficou um pouco longo mais vale a pena ler , a engine é muito legal mesmo. Mais uma vez obrigado ao BlinderXpinguin por nos disponibilizar esta engine !
Última edição por Lukbebalduke em Ter 06 Jan 2015, 19:38, editado 4 vez(es)
Lukbebalduke- Games Ranking :
Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Reputação : 30
Número de Mensagens : 765
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 2
x 1 x 0 x 0
Re: [Tuto] Como usar LightEngine
Ótimo tutorial pinpi, consigo imaginar milhares de aplicações!
Gabreel- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Re: [Tuto] Como usar LightEngine
muito bom.
bati o olho e ja aprendi a usar algumas coisas q dessa engine.
parabens pelo tuto pinpi
+ rep
bati o olho e ja aprendi a usar algumas coisas q dessa engine.
parabens pelo tuto pinpi
+ rep
Re: [Tuto] Como usar LightEngine
Uau, essa era justamente a peça que faltava na minha construção, a tempo que eu procurava efeitos assim para meus jogos, que era o principal motivo dos meus jogos demorarem tanto para serem finalizados, mas com esses scripts, eu posso conseguir ajustar a luminosidade de algumas cenas dos meus jogos, diminuindo a quantidade de vezes que preciso ficar recriando cenas para se ajustar aos ambientes dos meus jogos. baixado e aprovado. belo tutorial pimpi, aprovado.
JoaoVanBlizzard- Games Ranking :
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Reputação : 144
Número de Mensagens : 1926
Prêmios :
x 0 x 0 x 0
x 1 x 2 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Unity
Re: [Tuto] Como usar LightEngine
Era tudo que eu precisava, agora quero ver como vai ficar em um jogo feito em pixel art
Re: [Tuto] Como usar LightEngine
Opa ! Obrigado pessoal, trouxe essa engine exatamente porque sabia que ela tem potencial muito alto e o pessoal do fórum saberia aproveita-la, o próprio Cascavelo junto com o molinware, haviam usado ela em um game e ficou show !
Também coloquei a engine original nos downloads , que é aquela engine dos prints iniciais , caso alguém queira dar uma olhada.
Também coloquei a engine original nos downloads , que é aquela engine dos prints iniciais , caso alguém queira dar uma olhada.
Lukbebalduke- Games Ranking :
Notas recebidas : B - B - A - B
Data de inscrição : 06/07/2011
Reputação : 30
Número de Mensagens : 765
Prêmios :
x 0 x 0 x 0
x 1 x 0 x 2
x 1 x 0 x 0
Re: [Tuto] Como usar LightEngine
Fala ai fera blz?
Poderia me dar uma "Luz" aqui?
Eu e uns colegas estamos criando um game plataforma.
Eu gostaria que meu personagem segura-se uma lanterna e dessa lanterna parti-se a luz.
E caso não seja pedir demais, gostaria e o braço dele se movimentaçe junto quando a gente mexe o cursor.
Desde já, agradeço.
Poderia me dar uma "Luz" aqui?
Eu e uns colegas estamos criando um game plataforma.
Eu gostaria que meu personagem segura-se uma lanterna e dessa lanterna parti-se a luz.
E caso não seja pedir demais, gostaria e o braço dele se movimentaçe junto quando a gente mexe o cursor.
Desde já, agradeço.
joaox200- Data de inscrição : 23/12/2014
Reputação : 0
Número de Mensagens : 2
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: [Tuto] Como usar LightEngine
Eu gostei demais dessa função Luk como sempre vc é um cara foda s2. Então como testei e não funcionou para Game Maker Studio eu encontrei na net a versão compatível com o Game Maker Studio, se puder adicioná-lo ao tutorial acho que ajudaria a galera ;D
- Código:
http://www61.zippyshare.com/v/87050067/file.html
Re: [Tuto] Como usar LightEngine
O MEU APARECEU O SEGUINTE ERRO:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_parede:
Push :: Execution Error - Variable Get -5._lsys_casters(100001, -2147483648)
at gml_Script_lsys_caster_add (line 6) - for (i = 0; i < global._lsys_casters; i += 1)
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_lsys_caster_add (line 6)
called from - gml_Object_obj_parede_CreateEvent_1 (line 3) - sc = lsys_caster_add(x, y);
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_parede:
Push :: Execution Error - Variable Get -5._lsys_casters(100001, -2147483648)
at gml_Script_lsys_caster_add (line 6) - for (i = 0; i < global._lsys_casters; i += 1)
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_lsys_caster_add (line 6)
called from - gml_Object_obj_parede_CreateEvent_1 (line 3) - sc = lsys_caster_add(x, y);
ANDREASCRUST- Data de inscrição : 30/04/2012
Reputação : 1
Número de Mensagens : 49
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» [TUTO VICACO] COMO E QUANDO USAR ALARMS
» [Pedido Tuto] Como Usar o Novo debugger
» [Resolvido]como usar sprites como fonte?
» [Mini-TUTO] Como fazer um bom tutorial
» Como usar seu gadget como mesa digitalizadora
» [Pedido Tuto] Como Usar o Novo debugger
» [Resolvido]como usar sprites como fonte?
» [Mini-TUTO] Como fazer um bom tutorial
» Como usar seu gadget como mesa digitalizadora
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos