Como arredondar Boardas durante o jogo

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

Como arredondar Boardas durante o jogo

Mensagem por Philippe Alves Lepletier em Qui 12 Abr 2012, 01:17

galera, gostaria de saber se alguém aqui na comunidade sabe como criar o acabamento parecido com o jogo Tripple Town.
As bordas dos tiles do chão ficam arredondadas e se adequam conforme novas peças são criadas deixando o visual muito bonito! alguém sabe como fazer isso!?


Philippe Alves Lepletier

Número de Mensagens : 5
Data de inscrição : 24/11/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como arredondar Boardas durante o jogo

Mensagem por saim em Qui 12 Abr 2012, 08:12

Oi, Philippe Alves Lepletier!

O que eu suponho que seja feito é o seguinte:
Ao se criar um objeto, ele checa os objetos vizinhos e, dependendo de quais vizinhos existem, adota uma sprite diferente, obrigando os vizinhos a fazerem o mesmo procedimento. Cada sprite teria uma conformação adequada em função do número de vizinhos desse ou daquele tipo.
Se você usar matemática binária (operadores bitwise), isso fica muito mais fácil de se fazer, mas aí, você vai ter que pedir ajuda ao ninja8086 (ele é muito bom com binários, tem até alguns tutoriais a respeito que eu recomendo).

Se você não quer cria uma sprite pra cada situação, suponho que seja possível criar alguns tiles e, ao invés de desenhar uma sprite inteira, desenha-se um conjunto de tiles, formando uma sprite.

Um método pega mais pesado na arte e o outro, na programação. Acredito que investir na arte seja mais leve pra máquina (afinal, usa muito menos código na hora de desenhar).

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: Como arredondar Boardas durante o jogo

Mensagem por Philippe Alves Lepletier em Qui 12 Abr 2012, 13:51

Foi o que imaginei, cada tile verificar o que tem ao seu lado e dependendo ele muda e se adéqua. Mas seria muitas verificações! achei que existia alguma coisa como um shader que arredonda-se automaticamente. Por exemplo, tem emuladores que fazem os jogos antigos arredondarem algumas bordas deixando mais bonito o acabamento. Achie que poderia existir algo assim no GM.

O que eu estava analisando no jogo Tripple Town é que parece que a parte aonde se pode colocar as peças (o chão de concreto claro) são tiles que estão acima do tile de grama verde e quando coloca uma peça o tile é destruídos e os demais se adequam arredondando-se. Será que é isso?!

Philippe Alves Lepletier

Número de Mensagens : 5
Data de inscrição : 24/11/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como arredondar Boardas durante o jogo

Mensagem por saim em Qui 12 Abr 2012, 14:37

Acho que é quase isso. A menos que o chão tenha propriedades diferentes da grama, não há utilidade em se destruir um tile e recriar outro, então o mais rápido seria simplesmente mudar a sprite do objeto, sem destruir nem criar nada.

Num jogo ortogonal, como o da imagem, seriam, no máximo, 8 verificações por tile. Como fica tudo alinhado numa grid, dá pra checar todos os vizinhos usando o mesmo loop. Daí, define-se o sprite e manda-se cada vizinho realizar o mesmo loop. Se você usar um trigger, pode mandar o vizinho (que é feito do mesmo objeto ou de um mesmo parent e, portanto, tem os mesmos eventos na programação) realizar o trigger dele com event_perform.

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: Como arredondar Boardas durante o jogo

Mensagem por Kabeção em Qui 12 Abr 2012, 15:04

Por exemplo, tem emuladores que fazem os jogos antigos arredondarem algumas bordas deixando mais bonito o acabamento. Achie que poderia existir algo assim no GM.
Esses emuladores não arredondam bordas, eles filtram os pixels dando impressão de arredondamento com algoritmos apenas para melhorar a imagem.
É tecnicamente muito diferente do caso desse jogo.

@saim
Mas não precisaria checar todo o mapa, apenas aqueles perto do que você esta criando.
Também não precisam ser objetos, há funções para trabalhar com tiles e assim melhoraria a performance do jogo.
No caso de um loop checando as 8 direções a partir do mouse (se o jogador for criar o mapa com o mouse é claro), você pode achar a id dos tile com tile_layer_find e as funções tile_get para definir qual o tile correto para o local.

Se a imagem do tile for bem feito e estruturado mudar apenas o que se esta colocando na hora é o suficiente.
Da pra ver pela screenshot que os cantos dos próximos tiles também mudam, mas mais recursos é igual a mais trabalho.

Kabeção

Ranking : Sem avaliações
Número de Mensagens : 2314
Data de inscrição : 08/06/2008
Reputação : 100
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 3
   : 0
   : 1

http://blackcapapps.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Como arredondar Boardas durante o jogo

Mensagem por Philippe Alves Lepletier em Qui 12 Abr 2012, 16:42

A ideia seria o jogo começar com algumas peças só e o chão estar formado...de acorodo com o jogador colocando coisas no cenário vai modificando os tiles do chão. Vou tentar fazer estes testes propostos aqui no fórum de verificações e depois falo o que aconteceu ok?! Vlw!!

Philippe Alves Lepletier

Número de Mensagens : 5
Data de inscrição : 24/11/2010
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Como arredondar Boardas durante o jogo

Mensagem por saim em Sex 13 Abr 2012, 09:04

Kabeção escreveu:Mas não precisaria checar todo o mapa, apenas aqueles perto do que você esta criando.
Sim, foi o que eu disse. Mas lembre-se que aquele seu vizinho tembém vai precisar mudar de imagem, então rode o código nele também. Na verdade, eu tentaria fazer o seguinte: criar uma rotina que verifica se será preciso mudar a imagem e, se for preciso (ao colocar um novo piso sempre será), rodar essa mesma rotina nos vizinhos, até que não seja mais preciso mudar a imagem de ninguém.
Kabeção escreveu:Também não precisam ser objetos, há funções para trabalhar com tiles e assim melhoraria a performance do jogo.
Não tinha pensado nisso, pode melhorar muito, mesmo. É que nunca usei tiles ou mesmo backgrounds de verdade. Vou pesquisar a respeito.
Kabeção escreveu:No caso de um loop checando as 8 direções a partir do mouse (se o jogador for criar o mapa com o mouse é claro), você pode achar a id dos tile com tile_layer_find e as funções tile_get para definir qual o tile correto para o local.
Qunato ao comentário do mouse, acho que não depende de como o jogador for mudar o terreno, mas sim de QUANDO ele for mudar o terreno. Nesse evento, executa-se a rotina mencionada.
Kabeção escreveu:Se a imagem do tile for bem feito e estruturado mudar apenas o que se esta colocando na hora é o suficiente.
Da pra ver pela screenshot que os cantos dos próximos tiles também mudam, mas mais recursos é igual a mais trabalho.
Isso é verdade, também! Uma melhoradinha nos gráficos, ali, custou uma grande melhoria nos códigos. Mas embora não seja trivial, não deve ser um absurdo de dificuldade criar a tal rotina (pra ser sincero, até já estou pensando em COMO fazer isso).
Difícil, mesmo, seria criar os gráficos pra cada uma das situações possíveis (no exemplo só existem dois tipos de terrenos e temos cerca de 40 22 possibilidades, e o crescimento do número de possibilidades é exponencial). Na verdade, estou até pensando em sugerir a criação das tiles ou sprites durante a execução do jogo, usando surfaces. Se forem tomados os devidos cuidados, isso pode não pesar tanto na memória. Não sei se sugiro criar a imagem ao modificar o terreno ou criar imagens pra todas as possibilidades ao iniciar a room.

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: Como arredondar Boardas durante o jogo

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


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