[HTML5][Minilib] Movimento, sprites, colisão

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

[HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Dom 13 Maio 2012, 11:45

Estou desenvolvendo uma simples biblioteca para uso posterior.
Vou disponibilizá-la aqui no fórum para ajudar a quem precisar.

Ela conta com alguns sistemas simples até o momento:

- Movimento simples
- Pulo
- Sprite estática (vou adicionar animação posteriormente)
- Matemática simples
- Checagem de espaço livre (place_free)
- Checagem de colisão com certo objeto (place_meeting)
- Mapa de teclas (vk_left, vk_a, vk_b, vk_1, vk_n3)
- Checagem de várias teclas ao mesmo tempo
- Text input (get_string)
- Text output (show_message)
- Show question (show_question)
- Evento Draw e Step
- Destruir instância (incompleto)

Você precisa de uma noção de javascript para usar a mini-biblioteca. Ou pelo menos ter lógica de programação (GML ajuda bastante) e consultar uma referência.

Para rodar, basta executar o index.html. Para editar, abra o arquivo game.js.
Você pode criar sprites bmp e usar no jogo.
Nem adianta reclamar do formato ser bmp. O tamanho final do jogo é leve.



Se você já baixou os arquivo, basta substituir o js:


* Novas funções disponíveis: Matemática (ver post abaixo para uma lista)

* Postem suas dicas e observações.
* O arquivo js está mais atualizado que o arquivo zip.

Progresso: 33%

Até mais!


Última edição por PedroX em Qui 29 Nov 2012, 17:13, editado 8 vez(es)

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por luiz_eldorado em Dom 13 Maio 2012, 12:56

Legal, gostei da "engine". Só tem alguns problemas:
- A colisão parece não estar funcionando. Ela só funciona quando você está EXATAMENTE no eixo X ou Y do outro objeto, e mesmo assim não está muito bem.
- O FPS está muito baixo. Recomendo que em vez de usar um valor de 40, use um valor de 20 ou 15 (dá uma suavilizada melhor.). O problema de usar um FPS baixo no JavaScript é que entre cada "step" a imagem anterior vai se arrastando pela tela, não fica "travada" a imagem anterior, e no "step" ele só apaga as imagens arrastadas pela tela.
- A forma para a pessoa programar poderia ser melhor. Por exemplo, em vez de "col_Rect", use "collison_rectangle".
Desculpe pelos contras serem maiores que os prós xD
Ah, e GML ajuda bastante pra entender JavaScript!

Até mais!

OFF: Meu Deus! Descobri uma função no BBCode! Cliquem na ultima função doa barra de ferramentas! \o/

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 18
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Dom 13 Maio 2012, 14:11

Achei o erro. Agora funciona.

O FPS foi aumentado e a função col_Rect foi substituida por collision_rectangle.

A função draw_sprite foi adicionada.

Obs: caso não pegue, aperte F5. É o bug do cache.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por Super Maker em Dom 13 Maio 2012, 15:05

Dei um colaborada mínima que fez com que melhorasse a colisão.
Só falta aproximar mais uns pixels.
Link: http://dl.dropbox.com/u/70151484/Game.rar

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Dom 13 Maio 2012, 15:27

Não entendi o que você fez...
O else é inútil no código, creio.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por Super Maker em Dom 13 Maio 2012, 16:22

Pedrø escreveu:Não entendi o que você fez...
O else é inútil no código, creio.
A colisão tava com bug, então coloquei o else vazio pra optar em fazer nada caso a condição não seja falsa. Entende?
Se não é pra fazer nada naquele ponto, ele fica parado sem fazer nada mesmo, impossível de atravessar o bloco.
Vimos então que neste caso e desta forma, o else não é inútil.
Até mais!

Super Maker

Número de Mensagens : 646
Idade : 33
Data de inscrição : 09/07/2011
Reputação : 6
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Ter 15 Maio 2012, 23:35

Entendo. Porém, aquilo é para ver se tem colisão, não para parar o player.
Durante a execução da função, ele verifica se qualquer coisa prova que não existe colisão e sai. Mas ao chegar ao término, conclui-se que houve colisão e ele retorna 1. Assim, nesse contexto, concluo que o else não serviria. Mas deixemos esse assunto de lado e voltemos ao restante.

----------------------------------

Nova atualização disponível. (Versão 0.2)
Conta com algumas funções novas.



Lembrem-se que isso serve mais para um tutorial.
Por isso, estou postando sempre de pouco em pouco.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por luiz_eldorado em Qua 16 Maio 2012, 22:10

Nossa, baixei essa nova versão, está muito boa! Só tenho uma duvida:
Código:
/////Número total de instâncias/////
var a = new Array(5);
"5" é o número de instâncias, mas que eu saiba só tem 3. Na verdade eu só quero saber isso pois estou criando tentando criar um criador de jogos JavaScript. Já falo isso aqui pra patentear minha ideia...
Uma sugestão: coloque funções de usar o mouse.

Até mais!

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 18
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Sex 18 Maio 2012, 14:48

(Post atualizado)

Nova atualização

Terminei o básico da gravidade.

Baixem pelo post principal ou pelo link:
http://dl.dropbox.com/u/38888521/Platform.zip

Ele já colide com o chão e consegue pular.

Dentre todas as funções, as mais novas são:

  • instance_create(x, y, objeto, sprite)
    É igual no GM, mas você pode colocar um sprite.
  • place_free(this, x, y)
    Ele verifica se há um espaço livre na posição indicada.
  • place_meeting(this, objeto, x, y)
    Similar ao place_free, com a diferença que verifica uma colisão com certo objeto.
    Você não deve por o id da instância, mas sim o nome do objeto.
    Retorna o id da instância com a qual colidiu.
  • gravity(valor)
    Faz o sistema de gravidade automaticamente.
    Ou seja, ele verifica se há espaço livre abaixo, adiciona um valor na vspeed e na posição y. Para ver como pular, baixe o exemplo e confira.


* Os valores negrito não devem ser mudados, a menos que você saiba o que está fazendo.
* Por favor, comentem. Só assim saberei o que corrigir, melhorar ou adicionar. E também saberei se estão gostando.
* Estou tomando o máximo de cuidado para gerar um sistema rápido, com uma boa performance.

------

Luiz_Eldorado: se você quis dizer "plagiar", isso não existe. Qualquer um pode fazer o que bem entender, nesse contexto. Veja que a ideia dessa biblioteca se assemelha com um motor de jogos. É perfeitamente possível criar um editor de códigos que gere esses códigos.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por Golpe Baixo em Sex 18 Maio 2012, 16:03

Bem que você poderia criar uma versão com nomes de funções sem underline, por exemplo, um "instance_create" ficaria "instanceCreate", ou "instance.Create", sendo no último, o "Create" como membro da classe dos objetos (se estiver fazendo por classes) responsável para criar instâncias.

Sobre a versão atual em que se encontra (Platform) não consegui testar o exemplo. Quando executo o html não aparece nada além de uma tela cinza sem nada.

Golpe Baixo

Ranking : Sem avaliações
Número de Mensagens : 284
Data de inscrição : 01/10/2011
Notas recebidas : A
Reputação : 4
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://caiqueluzsilva.wordpress.com/

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Sex 18 Maio 2012, 19:31

Você está usando o Firefox?
Eu uso ele para os testes e roda normalmente.

Agora vou testar no Chrome.
Realmente, não roda no Chrome.
Deve ser uma incompatibilidade.
Vou vericar o que pode ser.

Sobre sua sugestão, no término da minilib vou ver qual é a melhor forma.

------

Nova atualização!

Novas funções:
Constante pi - 3.14...

Array

ArraySum(array) - retorna a soma todos os elementos da array
ArrayMax(array) - retorna o maior valor da array
ArrayMin(array) - retorna o menor valor da array

Manipulação de números

round(n) - arredonda o número n
floor(n) - arredonda o número n para baixo
ceil(n) - arredonda o número n para cima
frac(n) - retorna a parte decimal do número n
sqrt(n) - retorna a raiz quadrada de n
sqr(n) - retorna o quadrado de n
power(n1, n2) - eleva o número n1 à potência n2

Matemática trigonométrica

Os retornos são dados em graus.

sin(n em graus) - retorna o seno do número n
cos(n em graus) - retorna o cosseno do número n
tan(n em graus) - retorna o tangente do número n
degtorad(n em graus) - converte e retorna graus em radianos
radtodeg(n em radianos) - converte e retorna radianos em graus

Matemática - Utilidades
min(1, 2, 3, ...) - retorna o mínimo entre os números (1 no caso)
max(1, 2, 3, ...) - retorna o máximo entre os números (3 no caso)
mean(1, 2, 3, ...) - retorna a média dos números (2 no caso)
abs(n) - retorna o módulo do número
point_distance(x1,y1,x2,y2) - retorna a distância entre dois pontos
point_direction(x1,y1,x2,y2) - retorna a direção entre dois pontos
log(n, b) - retorna o log de n na base b

Números aleatórios

random(n) - retorna um número aleatório entre 0 e n (não inclue n)
irandom(n) - retorna um número aleatório inteiro entre 0 e n (inclue n)
random_range(n1, n2) - retorna um número aleatório entre n1 e n2
choose(1, 2, 3, 4, ...) - retorna um dos números colocados
sign(n) - retorna o sinal do número (-1, 0, 1)

Matemática - Funções futuras
/*
lengthdir_x(len,dir)
lengthdir_y(len,dir)
is_real(x)
is_string(x)
*/

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por CodemonkeyVoid() em Sex 18 Maio 2012, 19:47

choose(1, 2, 3, 4, ...) - retorna um dos números colocados
O limite de entradas no caso é igual do GM?

Edit
Off: Não testei isso pois uso Chrome e como já disseram, não roda.

CodemonkeyVoid()

Número de Mensagens : 144
Idade : 17
Data de inscrição : 15/04/2012
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.apple.com/br/

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Sex 18 Maio 2012, 20:03

Não há relação com o GM nessa parte.

O máximo de argumentos é o máximo de argumentos aceitos numa função javascript. Como os argumentos são passados como uma array, suponho que o limite seria o limite de uma array. Como o limite de uma array é 2^32 - 1, suponho que o limite seja 4294967295.

Isso tudo é suposição. Mas você pode ter certeza que não é igual ao do GM.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por CodemonkeyVoid() em Sex 18 Maio 2012, 20:09

Bom, em todo caso seria bem mais cômodo que os poucos argumentos aceitos no choose do GM, principalmente quando a necessidade é aleatorizar algo dentro de valores específicos não lineares.

CodemonkeyVoid()

Número de Mensagens : 144
Idade : 17
Data de inscrição : 15/04/2012
Reputação : 7
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.apple.com/br/

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Sex 18 Maio 2012, 21:16

Dei uma lida aqui e estou bem mais certo daquela suposição.

Sobre o problema no Chrome, achei um site que mostra as funções compatíveis com os navegadores. Vou verificar as mais duvidosas para tentar contornar o problema.

Edit: preciso de testadores/avaliadores para ajudar no projeto. Quem puder ajudar nessa questão, terá o nome nos créditos indicando que ajudou.

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por Jiraya em Sex 18 Maio 2012, 21:24

esta ficando boa.
porem o problema de compatibilidade deve ser resolvido como prioridade.
o sistema de Input ficou perfeito

foi uma boa ideia usar sintaxe inline no show_question, vc deveria aproveitar muito mais desse recurso, para aumentar o desempenho de execução

quanto a função EvCreate, vc deveria subistituila por EvGameStart, ja que inicia só quando a pagina é carregada certo?

permitir o programador escolher a função de loop tbm seria muito bom.

e outra coisa, tente transformar sua biblioteca em uma espécie de "recurso externo", ou seja, um biblioteca que pode ser incluida no código, ao inves do programador ter que fazer o jogo por cima da biblioteca.

pois o usuario pode ficar com receio de editar algo que n devia, e o jogo todo parar de funcionar.

a ideia é mais ou menos essa

Código:

<script src="minilib.js"/>//Inclui a biblioteca

<script>

obj=instance_create(...);
MainLoop()
{
//motor do jogo
};
</script>

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por PedroX em Qua 19 Set 2012, 17:29

Atualização
* Agora funciona no Chrome.
* Vários bugs corrigidos.
* Função: instance_destroy(). Serve para destruir uma instância (mas ainda é rudimentar).
* Entre outros (não lembro muito das atualizações).

Até mais!

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por peixoto em Sab 24 Nov 2012, 21:26

Esse tutorial me foi muito útil para aprender umas coisinhas sobre o Game Maker Studio.

Eu usaria mais o GMS, mas com esse negocio que botaram para evitar que ele seja crackeado, não to conseguindo copilar meus projetos ..

peixoto

Ranking : Nota D
Número de Mensagens : 911
Idade : 21
Data de inscrição : 14/02/2010
Notas recebidas : D
Reputação : 3
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: [HTML5][Minilib] Movimento, sprites, colisão

Mensagem por Conteúdo patrocinado Hoje à(s) 08:00


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