[tutorial] Criando Água ao estilo Minecraft

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

[tutorial] Criando Água ao estilo Minecraft

Mensagem por Tedi Ripper em Seg 06 Fev 2012, 17:37

Criando Água ao estilo Minecraft
Estilosa


Detalhes
Criador: Tedi
Idéia Base: Minecraft e Terraria
Versão do GM: GM Lite e Pro
Dificuldade: Depende
Introdução
O que vai ser ensinado:
A idéia aqui é fazer um sistema de água como a do Minecraft, na qual a água escorre por objetos sólidos, mas quando não há nada a baixo, ou aos lados, ela cai, o sistema funcionou perfeitamente aqui no PC, só ocorreu um pequeno lag quando muitos objetos água se criaram.... {OPS, LAG CORRIGIDO}

Imagens:




O que realmente acontece aqui:
A idéia é:
-Checar se existe algum objeto abaixo do objeto água
Se não existir:
-Criar um objeto abaixo
Se Existir:
-Checar se existe algum objeto ao lado esquerdo
Se não existir
-Criar água ao lado esquerdo

-Checar se existe algum objeto ao lado direito
Se não existir
-Criar água ao lado direito

Let it rip:
Bem começamos criando as sprites:
Sprites
Crie 2 sprites:
spr_solido

spr_agua


Pronto, isso é bem simples...

Objetos
Crie 2 objetos
obj_solido

obj_agua




No obj_solido, apenas marque-o como Solid e coloque a sprite spr_solido



No obj_agua, coloque a sprite spr_agua
E no Create Event coloque o seguinte código:
(o codigo esta um pouco grande, mas é necessário para não ocorrer lag)

Código:
cima_solido=place_meeting(x,y-1,ob_solido)
baixo_solido=place_meeting(x,y+1,ob_solido)
esquerda_solido=place_meeting(x-1,y,ob_solido)
direita_solido=place_meeting(x+1,y,ob_solido)

cima_agua=place_meeting(x,y-1,ob_agua)
baixo_agua=place_meeting(x,y+1,ob_agua)
esquerda_agua=place_meeting(x-1,y,ob_agua)
direita_agua=place_meeting(x+1,y,ob_agua)

Explicação:
Aqui nós criamos 8 variáveis para nos auxiliar mais tarde.
place_meeting: Retorna True(verdadeiro) se houver um objeto na posição x e y indicada, ou False se não houver

Bem, agora vamos fazer a mágica da coisa, vamos fazer o script para checar espaços livres e criar objetos, mas, não será possível colocar no create event, pois:
O create event executa seus códigos ao iniciar o jogo, e se colocarmos nele, o jogo vai travar, pois estará criando e criando e criando objetos sem parar...

Por isso vamos fazer isso em um evento alarm (até fará o efeito parecido com o próprio minecraft, pois ele demora um pouco para criar a água (principalmente a lava)

Então, no create event ainda, coloque:

Código:
alarm[0]+=room_speed

Explicação:
Alarm[0] - chama o evento alarm 0
Room_speed - é equivalente a 1 segundo (padrão são 30 frames)

Agora vamos a mágica da coisa, no evento Alarm 0 coloque:

Código:
if baixo_solido=false and baixo_agua=false    //Se não houver nenhum objeto abaixo
{
instance_create(x,y+32,ob_agua)   //Cria um objeto agua
}
else
{
if esquerda_solido=false and esquerda_agua=false   //Se não houver nenhum objeto a esquerda
{
instance_create(x-32,y,ob_agua)    //Cria um objeto agua
}
if direita_solido=false and direita_agua=false   //Se não houver nenhum objeto a direita
{
instance_create(x+32,y,ob_agua)    //Cria um objeto agua
}
}

Explicação no próprio código

Pronto, agora é só mapear sua room e ver o resultado =D


VOCEIS: PERAAEEEEEE, isso ta lagado pra caramba!!!!
TEDI: Claro (é porque eu sou um troll mesmo) É porque a agua, se sair da room, continua a se criar, lagando tudo ;D

Pra isso vc só precisa fazer:


Pronto, agora sim, mapeie a room, de os créditos a mim kkk
DUVIDAS, COMO SEMPRE, POSTE AQUI OK?!
Flws flw
Abre o spoiler
SE VC QUER A AGUA MAIS REALISTA, CLICA AQUI!:

Bem, depois de alguns minutos tentando, alguns 5 minutinhos, terminei um efeitosinho pra agua...

EDiçOes nos objetos:
-Na sprite da Agua, adicione mais 2 subimages, pra fazer a agua caindo, desta forma:

(image 0 - agua normal
image 1 - agua caindo pra direita
image 2 - agua caindo pra esquerda)

-No objeto agua, acrecente o seguinte codigo ao create:
Código:
image_speed=0
descida=false
Aqui fazemos com que a velocidade da sprite fique parada e criamos a variavel descida (fica true quando o objeto cria a agua em baixo dele)

-No Alarm 0, mudamos a primeira parte do codigo:
Código:
if baixo_solido=false and baixo_agua=false
{
instance_create(x,y+32,ob_agua)
descida=true //Acrecenta isso aqui
}
else
{
...

-E no evento Step, colocamos isto:
Código:
if descida=true //Se criar um objeto agua em baixo dele, ou seja, a agua descer
{
if direita_agua=true and esquerda_agua=false and cima_agua=false //se vier agua só da direita
{image_index=2}

if direita_agua=false and esquerda_agua=true and cima_agua=false //se vier agua só da esquerda
{image_index=1}
if direita_agua=true and esquerda_agua=true//se vier agua dos 2 lados
{image_index=0}
}

Pronto, o resultado é esse akI:
Flws² flw


Última edição por Tedi Ripper em Ter 07 Fev 2012, 08:01, editado 1 vez(es)

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Lauro em Seg 06 Fev 2012, 17:58

, cara, tava precisando disso á muito tempo, este tutorial está perfeito, e ainda não vi nenhum outro que fale disso. Muito obrigado camarada!

Lauro

Ranking : Nota D
Número de Mensagens : 854
Idade : 19
Data de inscrição : 09/11/2010
Notas recebidas : C+D
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.google.com

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Black Studio em Seg 06 Fev 2012, 18:46

Funcionou perfeitamente, além de ser muito Util, está bem explicado, parabéns,continue assim Very Happy, só acho que a agua ficaria muito mais liquida, se dependendo da posicao dela, ela trocasse de Sprite, fazendo que com que parecesse que a agua está caindo mesmo Very Happy

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Tedi Ripper em Ter 07 Fev 2012, 07:39

Vlw ai galera

só acho que a agua ficaria muito mais liquida, se dependendo da posicao dela, ela trocasse de Sprite, fazendo que com que parecesse que a agua está caindo mesmo
Cara, ai vai da pessoa, eu fiz minha parte xD
mas acho que a ideia é simples e complexa ao mesmo tempo.
vc tem que checar de onde vem a agua pelos lados, ou de que lado ela vem, se vier só de um lado, ai ela fica com grafico de queda e talz.
talvez eu faço isso, mas tenho que ta com muita vontade xD
flws

--EDIT--
consegui fazer (é mais facil do que parece)
vo posta no tutorial

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por gabrielsch em Ter 07 Fev 2012, 08:03

 
Bem... não diria que é ao estilo Minecraft, porque o sistema da água/lava procura o bloco mais próximo pra cair (3D), diria que está mais para Terraria, mesmo assim a água do Terraria é mais rápida... vamos dizer que é uma mistura dos 2! Happy'

Ótimo tutorial!
Uma sugestão é fazer um limite em que a água vai para a horizontal, que nem a do Minecraft que, se não me engano são 7 blocos!

Flw! sorrindo2

___________


Acesse: http://foxen.com.br/



gabrielsch

Ranking : Nota A
Número de Mensagens : 1229
Idade : 21
Data de inscrição : 06/12/2009
Notas recebidas : D + A + A
Reputação : 28
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Tedi Ripper em Ter 07 Fev 2012, 08:11

bem, ai ja é outra historia xD
ah, achei varios bugs no tutorial, n sei como resolver e tbm nao quero resolve-los xD
ex:


Isso acontece pq no codigo, verifica-se se existe um objeto solido, ou agua, se existir, ele nao cria ali, entao, ai buga, pq se eu tirar isso, ele vai criar em cima da propria agua, ai vai lagando, pq fica diverços objetos agua na room, mas isso é muuiiitooo chato de arruma, tipo, precisaria checar se ja existe um objeto agua, ai se existir, calcular os objetos ao redor pra ver ser pode ser criado ou nao, ai se der.....
flw flw

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por saim em Ter 07 Fev 2012, 08:39

Talvez você devesse mudar a água de posição ao invés de criar água. Ficar criando água indefinidamente vai acabar por inundar todo o jogo. Acho que uma máquina de estados finitos cairia bem, aqui: você usaria estados como "água parada", "água caindo", "água correndo" e pra sair do estado "água parada", usaria o create e eventos em outros objetos (como a destruição de uma represa, por exemplo).

Por outro lado, você pode QUERER inundar o jogo. Nesse caso, eu sugiro usar um novo objeto "fonte d'água", que criaria instâncias de água por um tempo determinado (ou ad eternum, ficaria a critério do desenvolvedor).

Vou ver se consigo bolar alguma coisa e, se conseguir, retorno.

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Black Studio em Ter 07 Fev 2012, 16:17

O resultado ficou muito bom, com a Agua mais realistica, mas eu encontrei um Bug.

Se dois objetos agua, estiverem para criar um obj de agua no mesmo lugar, o lugar vai ter 2 objetos, como eu usei uma sprite transparente, dá para ver que ficou bugado.



Bom tutorial, mesmo tendo alguns Bugs, acho que deveria ir para o índice. Cool

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

BUG

Mensagem por Benjamim_M em Sab 10 Mar 2012, 15:42

no meu deu o mesmo bug do Funkbuster, se dois objetos agua se colidirem eles ficam mais claros tip



Benjamim_M

Ranking : Nota D
Número de Mensagens : 57
Idade : 26
Data de inscrição : 16/02/2012
Notas recebidas : D
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.minegamesb.blogspot.com

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por jharik em Ter 20 Mar 2012, 19:22

aki n deu
ta dando isso

___________________________________________
ERROR in
action number 1
of Create Event
for object obj_agua:

Error in code at line 1:
cima_solido=place_meeting(x,y-1,ob_solido)
^
at position 33: Unknown variable ob_solido

jharik

Número de Mensagens : 25
Data de inscrição : 19/03/2012
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: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Guisão em Ter 20 Mar 2012, 19:53

jharik escreveu:aki n deu
ta dando isso

___________________________________________
ERROR in
action number 1
of Create Event
for object obj_agua:

Error in code at line 1:
cima_solido=place_meeting(x,y-1,ob_solido)
^
at position 33: Unknown variable ob_solido

alguem escreveu obj errado, ta ob_solido ao invez de obj_solido

Guisão

Número de Mensagens : 398
Idade : 19
Data de inscrição : 25/04/2011
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por henriquebr em Ter 20 Mar 2012, 19:54

talvez vc trocou os nomes dos objetos....
edit: opss, o guisao postou antes Razz

henriquebr

Ranking : Nota D
Número de Mensagens : 421
Data de inscrição : 03/10/2011
Notas recebidas : D+B+D
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Mixer em Dom 08 Abr 2012, 14:34

Pô cara , ficou bem legal , mas no meu aqui ficou bugando pra valer , deu um lag tremendo aqui o personagem do meu jogo andava em câmera lenta por causa do Lag , se tiver uma solução para parar de lagar seria legal . agradeço flw Exclamation

Mixer

Número de Mensagens : 5
Data de inscrição : 08/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Black Studio em Dom 08 Abr 2012, 16:26

Você colocou o evento do "Outside Room" e um instance_destroy() depois?

Event Other Outside Room
Action Destroy Destroy Instance

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Mixer em Dom 08 Abr 2012, 22:09

não mas vou tentar , qualquer coisa eu comento de novo lol!

Mixer

Número de Mensagens : 5
Data de inscrição : 08/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por RodrigoOak em Qua 25 Abr 2012, 16:36

ah
eu tenho uma pergunta,como eu faço para ele agir em outros objetos,como por exemplo uma caixa ou objetos de formas não quadradas mais geometricas como objeto de forma em L ou um triangulo?

RodrigoOak

Ranking : Nota D
Número de Mensagens : 231
Data de inscrição : 09/09/2011
Notas recebidas : C+D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Tedi Ripper em Qua 25 Abr 2012, 17:20

Hehehe, meu amigo, ai tem que pensar bem, eu fiz um sistema bem simples, algo mais complexo necessitaria pelo menos, uma correçao de bugs basicos...
até mais

Tedi Ripper

Ranking : Nota C
Número de Mensagens : 765
Idade : 19
Data de inscrição : 21/11/2010
Notas recebidas : C
Reputação : 24
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por RodrigoOak em Qua 25 Abr 2012, 17:24

Tedi Ripper escreveu:Hehehe, meu amigo, ai tem que pensar bem, eu fiz um sistema bem simples, algo mais complexo necessitaria pelo menos, uma correçao de bugs basicos...
até mais


¬¬ parece que não entendeu
isso somente serve para o ob_solido
caso ao contrario ultrapassa o objeto
e quero saber isso,quero que o ob_agua tenha o mesmo efeito com outros objetos,não somente ao ob_solido entendeu?

RodrigoOak

Ranking : Nota D
Número de Mensagens : 231
Data de inscrição : 09/09/2011
Notas recebidas : C+D
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 2

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Akrashi em Qua 25 Abr 2012, 18:11

Olha o respeito rapáz!Descobri a segunda intenção!
*Risos* Estou brincando mas olha:

Entendestes?
Haha
Brincadeiras sempre são bem vindas...(Ou não)
Até! Happy

Akrashi

Número de Mensagens : 13
Idade : 24
Data de inscrição : 23/04/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Black Studio em Qua 25 Abr 2012, 19:21

Rodrigo, coloque o objeto que você quer, com que ele seja Parente do solido.

Até! flw

Black Studio

Ranking : Nota C
Número de Mensagens : 337
Idade : 18
Data de inscrição : 19/10/2011
Notas recebidas : C + C
Reputação : 9
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por anth201 em Sab 25 Maio 2013, 19:29

cara como eu faso meu personagem perder a gravidade e quando eu apertar o botao de subir ele comeca a nadar na agua para cima?

anth201

Número de Mensagens : 17
Data de inscrição : 21/05/2013
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: [tutorial] Criando Água ao estilo Minecraft

Mensagem por Conteúdo patrocinado Hoje à(s) 06:35


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