Jump to content

Bem vindo à Unidev
Registre para ter acesso a todos os recursos do site. Uma vez registrado e logado, você poderá criar tópicos, postar em tópicos já existentes, gerenciar seu perfil e muito mais. Se você já tem uma conta, faça login aqui - ou então crie aqui uma conta agora mesmo!
Photo

Dungeon crawler project - com Lua


  • Please log in to reply
20 replies to this topic

#1
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Olá povo da comunidade, comecei esse tópico com finalidade indireta de apresentar meu projeto ( e com a finalidade direta de ter um lugar onde concentrar as dúvidas que surgirem, assim quem acompanhar pode ajudar mais facilmente hehe).

 

Sem muita embromação é o seguinte:

 

1º - é um Dungeon crawler-RPG- roguelike, ou seja não consegui definir bem qual dos 3 gêneros tem maior parcela para dizer um texto bonito como "é um dungeon crawler com elementos de RPG e roguelike..." 

2º - é desenvolvido em LUA, usando a engine LOVE2D.

3º - está sendo desenvolvido para uso em mobiles ( o que deve gerar a pergunta: por que love2d então?. Simples por que roda sem eu ter que instalar o que me deixa testar onde quer que eu esteja, depois vou portar para alguma outra engine legal de mobile)

 

Projeto apresentado , agora em que estamos?

 

-Já fiz um RDG, simples e próprio, depois de olhar muita coisa na net não gostei de nada por ser difícil abeça e outros porques de ordem verosemelhantescos.

-Já implementei um pathfinder com movimento em diagonal

-Já tem uma escada funcional ( que lindo, quando vc chega nela o andar muda :D)

 

Próximos passos?

 

Entre muitas coisas citarei coisas que sinto que falta, mas não necessariamente é no que estou trabalhando agora( posso empacar e mudar de foco)

- preciso fazer os monstros entenderem quando o caminho está obstruído e contornar ( estranho para quem já tem um pathfinder, mas como nem todo monstro será um obstáculo to tentando não coloca-los como obstáculos atualmente)

- neblina de guerra e luz ( preciso implementar isso)

- magia (preciso de um sistema de magia simples, tipo projéteis e area de efeito, barreiras)

 

A coisa está andando mega devagar mas está andando :D

 

é isso por enquanto... 

 

  • Daryaer likes this

#2
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Legal, consegui fazer os monstros contornarem uns aos outros em busca de posição para atacar o jogador e também coloquei um timer no Pathfinder, se demorar mais de 100ms ele passa a vez para outro... isso é bom, mas ao colocar isso em palavras percebi que isso pode dar problema quando o inimigo tiver opção de atacar a distância.

 

Me preocuparei com isso quando chegar a hora de implementar magia e ataques a distâncias.



#3
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil
function EffectCreation(name,x,y,duration)
  
  effect = {}
  effect.name = name
  effect.x = x
  effect.y = y
  effect.time = 0
  effect.duration = duration
  
  table.insert(effectlist,effect)
  
end

function EffectUpdate(t)
  
  if effectlist ~= nil then
    for i=1,#effectlist do
      
        effectlist[i].time = effectlist[i].time + t*400 -- aqui que o problema acusa
        effectlist[i].y = effectlist[i].y - 1
      
      if effectlist[i].time > effectlist[i].duration then
        table.remove(effectlist, i)
      end
      
    end
  end
end 

ok estou travado num problema, se alguém souber como resolver agradeço.

 

O problema acusa sendo index nil, o que muito me estranha,pois botei um filtro para evitar que faça qualquer coisa se não existir elementos na lista effectlist.

outra informação interessante é que se eu atacar numa cadência bem lenta, dando tempo para o efeito sumir, não acusa index nil, mas se eu atacar numa cadência mais acelerada o problema surge.

 

Alguém tem alguma idéia?



#4
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

acabei resolvendo com a ajuda do pessoal do forum da love2d, mas acabei dando meus retoques mesmo e ficou assim:

if effectlist ~= nil then

      for i = #effectlist, 1, -1 do  --  SO FUNCIONOU POR QUE USEI A TABELA REVERSA ENTENDER ISSO RAPIDO
        if effectlist[i].time > effectlist[i].duration then
          table.remove(effectlist, i)
        else
          effectlist[i].time = effectlist[i].time + t*400
          effectlist[i].y = effectlist[i].y - 1
        end
      end
      
  end

estou intrigado por que tem horas que os ataques acontecem com uma cadencia maior e outras com uma cadencia menor, vou tentar criar um tipo de animação para controlar melhor o intervalo e conseguir visualmente saber se o inimigos estão atacando na ordem correta.



#5
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Mudanças menores no código e um arquivo lua só para gerenciar os gráficos, foram as mudanças que fiz de ontem para hoje, para ficar minimamente um joguinho de dungeon crawler teria que implementar algum tipo de loot, drop de itens, porém para ser se adequar melhor ao tipo RPG precisamos de algum tipo de magia, afinal queremos opções de personagens variedade de inimigos.

 

A proxima etapa que vou estar focalizando será algum tipo de ataque a distancia, esse seria um bom começo para fazer magias, olhando a distância por agora acredito que para ter um sistema de magia melhorzinho mudanças na estrutura dos personagens deve ser requerida, para ter magias de Buffs e deBuffs além da clássica magia de dano... mas vamos passo a passo primeiro com o sistema de ataque a distancia e algum tipo de sub maquina de estados para controlar o fim do turno onde se ataca com um projetil. 



#6
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

O sistema de turno simples até que funciona, mas to com dificuldade para garantir um intervalo entre cada inimigo que ataca...depois de muito penar sem solução me ocorreu que eu tenho que implementar um lerp de posição da camera para o elemento que estiver no turn, acho que vou usar isso como gatilho para garantir um intervalo mais contante entre ações. além de, é claro, mostrar claramente ao player quem esta na vez de atacar.

 

Edit: e ainda nem comecei os projeteis que eu queria o vida...



#7
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

comecei a pensar em implementar os projeteis e com isso o sistema de magia, notei que vou ter que reestruturar o código principalmente na parte do player. Gostaria de alguns tutoriais sobre esse tipo de magia nem precisa ser em lua, se alguém conhece algum bom tutorial por favor indique. lembrando que o game é 2D do tipo TILE GRID então basicamente seriam 3 tipos de magia, summoning ( criar alguma coisa tipo item ou monstro num lugar) , missiles ( misseis mágicos e bolas de fogo, explosões) e barriers( cria barreiras no mapa) as outras formas de magias tipo buff e debuff acredito que posso dar conta de desenvolver, mas estou de braços abertos caso tenham um tuto por ai :D



#8
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Com algum tempo sem postar, retornei, realmente um tópico sem movimento algum hehehe, mas tudo bem a idéia principal era mesmo me obrigar a fazer um diário do progresso onde eu tivesse meio que levar o projeto até o fim, uma vez que em outubro de 2014 eu conclui o que gosto de chamar de "minha fase de iniciação". 

 

Indo ao que interessa, implementei um sistema isométrico no jogo, está simples mas funcional e está até ordenando os elementos baseado no y e uma variável de critério de desempate, penso em usar o ID como esse critério mas ainda não implementei assim, por enquanto estou usando o X mesmo.

 

agora preciso voltar a me concentrar nos projéteis e no sistema de magia( mais especificamente me refiro a magia de área de efeito e barreiras).

 

Por enquanto é isso.



#9
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

De volta as postagens, um pouco atrasado mas de volta, fiz uma explosão ta mais ou menos, mas ainda estou com dificuldades de inserir ela no sistema ja implementado de maquina de estados que controla o turno, to quebrando um pouco a cabeça.

Paralelamente estou lendo um livro de desenvolvimento Mobile para Gideros, parece um pouco mais complicado que o corona, eu estou usando por enquanto love2d engine, mas futuramente terei que pensar em migrar para uma engine que suporte outras plataformas como mobile. Gideros parece melhor que corona por que tem mais plataformas mas corona parece ter uma comunidade mais solida e mais investimento em treinamento/tutoriais.

 

Bora dessamarar esse nó ... preciso passar para fase de implementação de itens e equipamentos.  



#10
daniwing

daniwing

    Membro

  • Membro
  • PipPip
  • 231 posts
  • LocationBahia

Massa filipe, nunca tinha visto essa biblioteca LOVE2D, vou dar uma procurada.

Pra desenvolvimento em Lua para mobile tem também a Cocos2d-x,

Estava dando uma olhada nela, mas acabei não seguindo em frente.


http://cafecomengine.blogspot.com.br/

 

"Se algum de vós tem falta de sabedoria, peça-a a Deus,

que a todos dá liberalmente, e o não lança em rosto, e ser-lhe-á dada."

(Tg 1.5)


#11
tronix

tronix

    Membro

  • Membro
  • PipPip
  • 217 posts
  • LocationBrasil

filipe, posta umas imagens para que nos possamos ver o andamento do projeto :) 


Página do jogo devak - https://www.facebook.com/devakgame


#12
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Então pessoal eu estava de férias por isso deixei de lado um pouco, além do mais é um projeto a ser desenvolvido quando eu estou embarcado, por isso acabo trabalhando nisso a cada 15 dias.

 

Imagens, screens, realmente eu gostaria de postar algo mas não tenho nada muito apresentável, o que eu fiz de gráfico foi só para poder rodar uns testes, a ideia era alguma coisa em pixel art, mas posso dizer que a coisa começou com uns gráficos como esse do meu avatar e um top view mas nas ultimas atualizações eu coloquei isométrico ai parei para fazer algo isométrico de gráficos pixel art, enfim, bem amador. a ideia era implementar algo isométrico e para isso fiz os gráficos.

Hoje olhando com calma não sei que o publico iria preferir algo isométrico a algo tipo topview, o que me deixa parado em questões de fazer mais gráfico o que nem mesmo era a razão principal do projeto.

 

Assim que eu resolver o problema dos projéteis a coisa vai andar melhor e eu tiro umas screens shoots e posto, depois que eu descobrir como.

 

Retomando: estou estagnado no problema dos tiros/projeteis pois o love2d usa radianos no lugar de graus, apesar de matematicamente ser facil converter tem se mostrado um pé no saco implementar. eu realmente nao queria fazer aquele projetil que simplesmente segue na direção só mudando basicamente o flip de imagem mais adequado, quero fazer algo um pouco melhor. Esses sete dias de embarque vou focar nisso.

 

Obrigado pelos posts daniwing e tronix



#13
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Assim eram os graficos quando estavamos em topview

 

ary86.jpg

 

aqui os inimigos (poucos só para testar o banco de dados de monstros)

 

2vv51d1.jpg

 

aqui é como ficaram os mesmos inimigos em isometrico (depois de concluido aprendi a lição de que em isometrico os graficos acabam menores)

 

20abhqw.jpg

 

falta aplicar cor ao orc e ao esqueleto eles ainda estão em tons de cinza



#14
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

OK de volta a ação, dei uma parada por que estava com extrema dificuldade de achar uma engine que 1º, pudesse distribuir para android e 2º  roda-se sem precisar instalar.

Agora estou me familiarizando com ela ... ainda estou  na dúvida sobre os gráficos ... se isométrico ou não.

   As coisas vão voltar bem devagar, até eu conseguir adaptar os códigos todos deve demorar um pouco.

E é isso ...bem vindo 2016 



#15
J.C.P

J.C.P

    Novato

  • Membro
  • Pip
  • 89 posts

(^.~) vamos q vamos. 2016 promete!


Antigo Usuário - J.C
Projetos em andamento - IGNIA 30% para BETA
http://www.igniaonli...ebsites.com.br/

Projetos Antigos ou Parados - GrupoLança
http://sites.google....grupolanca/home

#16
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

OK depois de refletir sobre o isométrico e o top view ... resolvi abandonar o isométrico por enquanto ... criei novos gráficos do zero ...( legal por que meio que defini um estilo, estava trabalhando num gráfico 4 way, usando o gimp e o inkscape.. mas numa dessas cansadas da vida abri o paint e futuquei e pimba ... surgiu algo que gostei.)

 

   Não vou mais usar o estilo 4 ways de gráficos vou usar o side view mesmo ... vi o jogo NECRODANCER ... muito legal por sinal, e vi que o personagem principal só pula e com duas visões somente o ataque é só a animação do "corte" da arma nem a arma em si aparece ... e isso tirou de mim o penso de consciência de fazer algo assim simplístico demais.  

 

O que resolvi acrescentar são expressões e animações de expressões ...  sabe, para alguns efeitos clássicos de RPG, tipo CHARM, POISON, etc ... 

 

Baixei uma ferramentinha open source ... piskel ... é um paint piorado ... mas tem ferramentas especificas para pixel art ... uma tremenda mão na roda ... e roda do browser ... ou seja vc pode trabalhar em qualquer lugar.

 

Bom vou tentar acabar logo com esses gráficos básicos para voltar a transcrever o código antigo ... na nova engine ... tomara que não demore quero ver logo resultados :D



#17
Sam L.

Sam L.

    Novato

  • Membro
  • Pip
  • 71 posts
  • LocationBrasil

Legal o projeto.

Ainda tá usando Lua? Vou olhar essa love2d.



#18
kin

kin

    Membro

  • Membro
  • PipPip
  • 492 posts
  • LocationBrasil

OK depois de refletir sobre o isométrico e o top view ... resolvi abandonar o isométrico por enquanto ... criei novos gráficos do zero ...( legal por que meio que defini um estilo, estava trabalhando num gráfico 4 way, usando o gimp e o inkscape.. mas numa dessas cansadas da vida abri o paint e futuquei e pimba ... surgiu algo que gostei.)

 

   Não vou mais usar o estilo 4 ways de gráficos vou usar o side view mesmo ... vi o jogo NECRODANCER ... muito legal por sinal, e vi que o personagem principal só pula e com duas visões somente o ataque é só a animação do "corte" da arma nem a arma em si aparece ... e isso tirou de mim o penso de consciência de fazer algo assim simplístico demais.  

 

O que resolvi acrescentar são expressões e animações de expressões ...  sabe, para alguns efeitos clássicos de RPG, tipo CHARM, POISON, etc ... 

 

Baixei uma ferramentinha open source ... piskel ... é um paint piorado ... mas tem ferramentas especificas para pixel art ... uma tremenda mão na roda ... e roda do browser ... ou seja vc pode trabalhar em qualquer lugar.

 

Bom vou tentar acabar logo com esses gráficos básicos para voltar a transcrever o código antigo ... na nova engine ... tomara que não demore quero ver logo resultados :D

 

Cara muito bom. Eu também to ligadão na Lua usando Gideros rs.

Quanto a isométrico e top view. Eu num experimento fiz assim... A movimentação e controle de onde ta cada personagem é feita em top view (num minimapa não visivel pro exemplo) ai com continhas eu posiciono os herois e monstros no isométrico com base no que eles movimentam no top view. Pois tradando as colisões e posicionamentos no top fica muito mais facil de controlar e ai só deixar o resultado ser impresso no isométrico.



#19
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Cara ... eu não faço assim, mas é similar, como inicialmente programei tudo em top viu eu simplesmente reposicionei .... tem uma formula básica para isso ... o X cartesiano vira um X isométrico e o mesmo para o Y ... quanto a movimentação ela é controlada pela matrix ... o meu jogo é de turno por isso uso matrix em vez de movimentação livre. basicamente nem faço colisões por que se o quadrado destino estiver ocupado vc nem pode mover para lá ... no maximo atacar.

 

mas valeu a dica. A razão pela qual decidi não ir de isométrico é mais por que questões gráficas só isso. 



#20
filipeamaral

filipeamaral

    Membro

  • Membro
  • PipPip
  • 147 posts
  • LocationBrasil

Então,

 

   O tempos passou (passou muito ) e o projeto estava parado, mas estou me forçando a retomar, forçando sim por que estou meio que bloqueando devido a desmotivação causada pelo problema na minha licença de oficial... que ameaça meu emprego é claro e minha permanência no mercado, contudo, acho que depois de mais de dois anos de estresse intenso o estresse começou a ficar "menor" , na verdade a situação continua uma m**** mas acho que a exposição intensa a ele por um período demasiado grande acabou anestesiando meu ser lol.

 

   Dito isso estou devagar retomando, o grafico "novo" citado anteriormente continua, a ferramente é o corona sdk, a linguagem continua LUA, a novidade é que resolvi a 2 dias atrás exatamente no segundo dia depois de retornar a mexer nisso o problema da FSM que controlava o turno.

 

   Vale salientar que o turno só esta contemplando ataques "melee" obviamente espero que quando implementar magias ou projéteis vai dar problema de novo e vou ter que repensar as coisas.

 

   Novidades no jogo são:  pensei num nome e pensei num universo onde ele se baseia, na verdade reestruturei coisas de cenários que criei quando mais novo jogando RPG  de mesa, MAS O QUE ISSO TEM A VER?

  Bom no primeiro jogo nada dificilmente um jogador vai saber de nada disso, mas criar um cenário me deixou com ideias para continuações hehe.

  De uma maneira geral é isso, lembrei tambem que comprei um curso de desenvolvimento de som para jogos, mas nunca nem abri é uma boa hora de começar.

 

 PRÓXIMOS PASSOS:

 

  1º - (antes de projéteis/magia) fazer um sistema de comportamento dos monstros, isso pode ser complicado por que o pathfinder parte do princípio que o monstro já tem um alto desde sempre, entao preciso de soluções e já de antemão acho que isso inpactara no FSM do turno.

 

  2º - DROPs, quero que os monstros dropem itens ...

 

  3º - Sistema de inventário  / equipar para o heroi.

 

  4º - corrigir um pequeno detalhe no meu sistema de criação de salas em um caso muitissimo raro uma sala é criada numa posição que não tem como criar uma porta e assim mesmo ela fica lá, isso trava o jogo por que o monstro tenta procurar pelo jogador e nunca acha o caminho. Talvez o 1º resolva o problema pois se o monstro nao ve o jogador ele nao vai usar o tracking e nao vai travar, mas acredito que deva efetivamente impedir que salas assim seja criadas.

 

E segue ... 2018...






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users