🤔 Para Refletir :
"De pixel a pixel, os tiles compõem o Mapa."
- Core32

RPG Tático Hexagonal no Unity

Pretty-Belle

Cidadão
Membro
Membro
Juntou-se
18 de Junho de 2015
Postagens
155
Bravecoins
112
Rally-ho :3 :meow:
Vim aqui encher o saco pra pedir opiniões, sugestões e testes para o sistema de batalha que tô fazendo pro Unity. É um tático convencional, no estilo FFT e Trails in the Sky. A diferença é que esse usa hexágonos em vez de quadrados/losangos. E usa ATB tbm.

OQQybEN.png


Ainda não tem habilidades, embora estejam implementadas no código (só tô com preguiça de criar o database mesmo, lol). Os itens não estão implementados.

Aqui está o link se quiserem testar no navegador: Unity WebGL Player | TRPG. Dá pra jogar tanto no mouse quanto no teclado (sugiro no mouse).
Reparem que nada tira HP ali, então... não dá pra ganhar nem perder :B

Quanta às animações dos sprites, estou muito na dúvida de como fazê-las... o ideal é que tivesse um "template" geral para animações e que todos os battlers seguissem o mesmo padrão (por exemplo, só há duas animações de ataque para cada um, uma para ataque normal e outra para qualquer habilidade), para poupar trabalho de arte e código. Mas também talvez fique feião se todas as habilidades de um battler tiverem a mesma damn animação. Num sei, tô refletindo.

Tirando as partes que claramente não implementei, cês têm alguma sugestão ou encontraram algum bug? E se alguém estiver interessando em saber também como eu tô fazendo o código podem perguntar à vontade :3
 
Última edição:
Hm...very interesting here.
Eu já vi TBS com hexágono, e quem são esses aliens verdes/azuis?
Fora isso, acho que dá um bom Tactical RPG no Unity 5.3.
 
Estrela Cadente  :awesome: BraveCoins em dobro.
Primeiramente Parabéns pelo seu trabalho, o jogo já esta bem divertido, mesmo que ninguém morra. E fiquei muito curioso para saber como você fez isso, na verdade queria devorar todo o código fonte  :ksksks:
mas me contento em saber as seguintes questões.
Os Inimigos irão atras do personagem mais próximo, então queria saber como isso foi feito, se utilizou o raycast e se teria como mostrar como essa parte foi feita.
Outra questão que fiquei curioso é a da movimentação das personagens, por isso queria saber como você fez para o boneco ir de um ponto a outro quando você clica ou pressiona enter.
E parabéns novamente
ficou muito show,
espero por novidades.
OBS: Depois que faz sua movimentação, não podendo andar mais  nenhum quadrado, e manda ele atacar alguém que esta fora do seu alcance ele simplesmente passa a vez.

 
Curti a ideia, Pretty.
Estou vendo que evoluiu bastante!
Pq tem tem uma parte do chão que fica flutuando (quando vai andar) ?
E acho que seria legal que esses hexágonos fossem fixos no chão, apenas a linha bem fraquinho. Acho que daria um ar mais tático. Ou então o cenário ser feito por quadradinhos, como Wakfu.
Eu acho legal padronagem nos movimentos, não vai ficar feio não. Muitos jogos fazem isso. Só que você irá adaptar dependendo do inimigo. Digamos que uma slime ataque, certamente ela não terá uma mão ;-; (ou terá? kk)
Achei também que o jogo tá muito pequeno, tipo, seria legal poder dar um zoom ou o jogo fosse um pouco mais próximo (bem, isso é mais opinião pessoal mesmo).

Revox comentou:
Estrela Cadente  :awesome: BraveCoins em dobro.

Tá surtando? Viaja não.
 
Obrigada pelo feedback, povinho simpático  :Okay_fix:

[member=124]AGS[/member]
Thank you  :awesome: Eles são os inimigos, é que eu fiquei sem saco pra fazer roupinhas para eles :x Então decidi que os inimigos seriam aliens mesmo lols

[member=92]Revox[/member]
Muito obrigada  :Vergonha: Sobre suas perguntinhas...
Não sei o que é raycast lol Na verdade acho que já sei usei isso, mas em outro projeto. Para determinar o inimigo mais próximo, eu só faço rodar um algoritmo de pathfinding para cada um dos inimigos e ver qual tem o menor custo (eu uso o algoritmo A*).
Para a movimentação eu uso o componente Ridigbody2D próprio do Unity e controlo a velocidade dele via script. Aqui tá o trecho de código pra faz isso:

Código:
	public float Move(Vector3 d) {
		Turn(GetAngle(d));
		return DirectMove(d);
	}

	public float DirectMove(Vector3 d) {
		if (d != Vector3.zero) {
			UpdateMoveAnim ();
			float duration = d.magnitude / moveSpeed;
			rb2D.velocity = d / duration;
			return duration;
		}
		return 0;
	}

	public void UpdateMoveAnim() {
		if (moveSpeed >= dashSpeed && currentAnim != "Dash") {
			PlayAnimation ("Dash");
		} else if (moveSpeed < dashSpeed && currentAnim != "Walk") {
			PlayAnimation ("Walk");
		}
	}

	public virtual void OnMoveEnd() {
		rb2D.velocity = Vector2.zero;
		PlayAnimation ("Idle");
	}
O retorno em float é para saber quanto tempo o movimento vai durar, para saber por quanto tempo o processamento deve pausar. [eu mostraria o resto do code pra ti, mas tá tão bagunçado que fico com vergonha  :Vergonha:]
Sobre sua observação, de fato ele faz isso quanto não consegue alcançar o alvo. Eu não pensei em outra coisa que ele poderia fazer em vez de passar a vez. O que sugere? :3

[member=3]RyanKamos[/member]
Thanks, Ryan  :XD:
Aquela parte é só para testar altura dos tiles mesmo. Numa versão mais "séria" eu varia um cenário com elevação pra representar isso xD
Eu até pensei em fazer uns tiles à la FFT, mas é que eu acho tão feinho aqueles cubinhos D: E o jogo em si (fora da batalha) não é em tiles, então achei que faria sentido o cenário da batalha também não ser.
Cê chegou a jogar ou só viu a imagem? Na imagem tá com zoom out, talvez seja isso xD O problema é que para deixar o jogo maior eu teria que multiplicar tudo por 2 (por causa da falta de anti-aliasing pros pixels, tem que ser inteiro), e aí fica grande demais D:
Acho que vou fazer sempre com a mesma animação então, talvez no máximo umas duas possíveis. Thankies x3
 
Ah sim, só a batalha será tática né? Achei que o jogo inteiro era tático KKKK sorry, erro meu.
Eu joguei sim e achei pequeno, mesmo assim xD Sei lá, é que eu curto ver os personagens de perto. Como eu disse, é coisa pessoal KKKKK
Esse anti-aliasing por pixels é o que os jogos pixelados usam pra caso aumente a tela não transforme o pixel em tipo pintura? (estica ele e começa a quebrar os pixels)
 
  Pretty, ele parece muito bom! O estilo dos gráficos tá be leve e agradável, a gameplay também é bem intuitiva e funcional...Parece que tem tudo pra ser um bom Tatical  :Okay_fix:

  Só algumas coisinhas que eu acho que podem melhorar:
- O sistema de "zoom in/zoom out" toda vez que alguém realiza um movimento é bacana, mas quando há muitos inimigos/personagens atacando fica repetindo várias vezes seguidas, o que incomoda um pouco.
  - Depois que o personagem executar toda a movimentação possível no turno dele, tirar a opção "move" do menu, deixando só o "wait/attack". Aconteceu de eu clicar em "move" de novo, não haver mais pra onde andar e, ao clicar com o botão direito e depois o esquerdo, ficar preso num loop de selecionar "move" de novo (mas foi porque eu fui meio mongo e demorei pra perceber que tinha que segurar o botão direito pra selecionar uma nova opção heheh  :^^': )
 
[member=3]RyanKamos[/member]
Sim, esqueci de mencionar esse detalhe também xD E anti-aliasing - se eu interpretei certo o que você disse - é isso mesmo. O Unity ou não tem, ou eu não achei :x (provavelmente o segundo mesmo, lols) Mas de qualquer forma, eu não gosto de usar porque tira a qualidade do pixel (além de gastar muito processamento). Por isso se eu for aumentar a tela tem que ser num fator inteiro. Bem, eu vou tentar aumentar em 2x pra ver como fica, qualquer coisa eu ajusto o tamanho da tela.

[member=225]Lord Wallace[/member]
Thank you, my Lord ~
- Notei isso, concordo contigo. A outra possibilidade que eu tenho é tirar o zoom-out e deixar sempre no tamanho normal (que é o mais perto). Só vai ser chato porque não vai ter como visualizar o campo todo de uma só vez D: Tem alguma outra sugestão?
- Eu não entendi, você não consegui selecionar as outras opções, é isso? xD Ou você não percebeu que tinha como cancelar a ação selecionada? No teclado você tem esse mesmo problema aí?
Enfim, obrigada pelas observações :3
 
Creio que o Sr Wallace diz, que após executar uma ação, que não poderá mais ser executada (como mover todos os hexágonos possíveis) bloquear a opção, como nos FFT da vida, que após o movimento a opção fica "apagada"

final-fantasy-tactics-the-war-of-the-lions-20110708040748781-000.jpg


Bem minhas falas quanto ao projeto.

Primeiramente, ficou um charme, adorei o estilo, tanto que fiquei andando no mapa com o menininho um tempão e deixando os aliens correrem atrás huehue. Gostaria muito de ver um game no estilo.

Uma coisa que notei, é que o ataque dos inimigos são passáveis entre eles, seria legal bloquear a ação, ou acaso a mesma seja feita causar o dano no primeiro objeto que estiver na linha de ataque e não passar sobre o inimigo e acertar o player.
O zoom, comigo ficou meio desorganizadinho, nas ações dos inimigos ele aproximava, nas minhas ele distanciava, acho que isso não era pra acontecer era?

Creio que você vai mexer muito nas HUD's e talz, mas posso dar uma sugestão, mostrar só o Hp/Mp do personagem quando for o turno do mesmo, e as carinhas lá embaixo, poderiam ser diminuídas (ou não) e deixar apenas a barrinha de ATB, creio que ficaria bem agradável assim.

Fora isso apenas um apelo para continuar desenvolvendo, adorei muito ! huehue
 
Miss. Pretty, quanto ao zoom acho que é bom manter sim, ele ajuda a dar um dinamismo na batalha (além de permitir uma visão mais ampla do campo, como você disse). Acho que seria melhor então você deixar o "zoom in/out" só quando os personagens aliados agissem - até porque são eles os mais importantes pro player - e tirar essa opção durante o ataque dos inimigos, deixando o campo em zoom out no turno inimigo para que o jogador possa ter uma visão mais ampla da batalha até que chegue sua vez de agir.
  Quanto à outra parte, o [member=407]Rhit[/member] disse exatamente o que eu tava pensando. Eu conseguia selecionar "move" mesmo não podendo mais me mexer, e daí fiquei preso num loop e não conseguia selecionar outra opção (mas isso for porque me embananei com os controles, depois tudo deu certo  :^^': ).
 
  Continue com o bom trabalho que vem fazendo, e poste as updates do jogo aqui no fórum pra gente acompanhar!  :^-^:
 
[member=407]Rhit[/member]
Thank you :3
O lance do ataque passável que cê fala é só do ataque à distância, certo? Se for o que eu tô pensando, acredite, é mais complicado do que você imagina D: Do jeito que tá, o "alcance" de uma habilidade é dada em tiles, usando um simples cálculo aritmético com as coordenadas, ou seja, não considera quando tem obstáculos no meio. Se eu tivesse que determinar quando tem obstáculos, o algoritmo para encontrar o caminho ia aumentar muito o custo de processamento ;-; Mas se você reparar, os ataques à distância não são projéteis, eles praticamente já invocam uma explosão logo na cara da pessoa, então vamos só fingir que o ataque não pode ser barrado por obstáculos e dá tudo certo, shhh ~ (mas eu pretendo fazer algum algoritmo eficiente para isso um dia xD).

O zoom na verdade funciona do mesmo jeito para todos os personagens, mas como a ação dos inimigos é instantânea (não passa pela etapa de selecionar ação no menu), então não chega a dar zoom-out quando é a vez deles (e quando dá zoom out na sua vez, ele não dá zoom in de volta). Eu tinha tentado dar esse zoom-in de volta quando o jogador terminava de escolher a ação, mas ficou tanto zoom-out/in seguido que acabou me dando é dor de cabeça shuaidhsui. Também pode acontecer de a câmera não se mover porque caso contrário ela passa do cenário (e aparece um vácuo preto na borda, lol).

Sobre a HUD, cê sugere esconder o HP/EP quando não for turno de ninguém, é isso? Sei não, às vezes é muito útil saber como estão os outros personagens para escolher uma ação... Hm, cê tá sugerindo isso porque acha que as faces lá em baixo tão ocupando muito espaço da tela? Eu pensei em tirar o ATB dali e colocar perto de cada sprite, isso ajudaria? xD (embora acho que ficaria feinho aquela barrinha em baixo do char)

Enfim, obrigada pelos elogios e pelas sugestões, vou considerá-las  :Okay_fix: agora que percebi que ficou um textão, sorry

[member=225]Lord Wallace[/member]
Hm, isso é simples de mudar. Eu vou tentar aqui pra ver como fica, obrigada :3
Ah, quando cê disse que "entrou num loop" eu pensei que tinha dado algum bug cabuloso aí hduishdiede Mas tá, eu ainda não implementei nada que possibilitasse o "bloqueio" de uma opção no menu, mas não deve ser complicado. Desabilitar opção de mover quando acabar os passos, *anota*. Desabilita a de atacar também se não tiver ninguém alcançável, ou deixa do jeito que tá?

Obrigada também pelo apoio  :XD:
 
[member=28]Pretty-Belle[/member]
Pretty-Belle comentou:
Desabilita a de atacar também se não tiver ninguém alcançável, ou deixa do jeito que tá?
  Acho uma boa sim também bloquear qualquer tipo de ação que o personagem não possa fazer naquele turno, porque isso vai deixar a gameplay mais fluida e direta. (Considere habilitar esse bloqueio até pro "wait", vai que um inimigo tem uma habilidade especial do tipo "taunt" que obriga o personagem a atacar alguém naquele turno  :Okay_fix:).

  Quanto à questão do range dos ataques, levantada pelo [member=407]Rhit[/member], acho que tem um jeito relativamente simples de fazer: limitar os ataques corporais (espada, machado, etc) a apenas 1-2 hex de distância da personagem - pois assim não há como obstáculos se interporem no caminho - e deixar os ataques à distância (magia, flechas e afins) do jeito que está agora. Normalmente jogos nesse esquema de batalha em turnos não consideram ataques como projéteis, então não acho que seja necessário quebrar a cabeça com isso nesse primeiro momento, Pretty.  :Okay_fix:

EDIT: Vi agora que esse já é o sistema vigente no jogo. Então é só manter, mas colocando umas animações em formato de parábola pros ataques à distância para que pareçam projéteis, mesmo não sendo.
Pretty-Belle comentou:
Obrigada também pelo apoio  :XD:
De nada, fico feliz em ajudar  :^-^:
 
Pretty-Belle comentou:
Desabilita a de atacar também se não tiver ninguém alcançável, ou deixa do jeito que tá?
Acho que podia deixar isso, vamos supor que mais pra frente você implemente algumas skills de "contra ataque"

Eu utilizava uma técnica em FFT, que consistia colocar um aliado com alto hp e alto ataque e uma habilidade de conter em área mágico, atacava ele com um aliado fraquinho com o status "shell" que anula magia, e ele contra atacava o fraquinho com sua força fodona, não tirava dano do fraquinho por causa do shell, mas tirava dano de  todos os que estavam perto do meu fraquinho, no caso os inimigos. Dessa forma eu "utilizava" meus personagens mais fortes, diversas vezes em um único turno.

Outra era para recuperar o hp de aliados, eu os atacava atirando pedras, que retiravam 10 de hp exemplo, ai alguns deles possuíam counters que recuperavam 60~80 hp, saía no lucro.

Se você retirar o ataque em alvos "válidos" pode acabar comprometendo, ou retirando alguns recursos do jogador, e até mesmo seus na hora de programar! Como por exemplo uma arma que quando utilizada cause um buff no jogador, o jogador poderia atacar o ar apenas para ter o buff, uma "manobra" que ele teria que testar e descobrir, dando mais conteúdo e imersão ao seu jogo.

Pretty-Belle comentou:
[...]
eles praticamente já invocam uma explosão logo na cara da pessoa, então vamos só fingir que o ataque não pode ser barrado por obstáculos e dá tudo certo
[...]
Quanto os ataques a distância, eu joguei novamente e é verdade, eu acabei confundindo os ataques de distância com os físicos huebr, então tá perfeito assim mesmo, não precisa mudar nada não, foi desatenção minha mesmo!



Dando sugestões, pois realmente adorei o sistema, sou apaixonado por jogos no estilo (creio que o Sr Wallace também) e quando aparece um sistema que pode se tornar outra obra de arte tática eu fico muito animado!
 
Mds eu ficou muito feliz em saber que teve gente que gostou do sistema *u*

[member=407]Rhit[/member]
atacar o ar shAUSHAU
No caso seria bloquear só quando não houver alvos válidos mesmo. Se der para atacar o ar ou um aliado, então seriam alvos válidos, aí não bloqueia.
A princípio só para atacar contra inimigos mesmo, porque não há vantagem em atacar outra coisa. Mas se de repente eu inventar alguma habilidade aí que deixe vantajoso atacar ar/aliado, então eu habilito essa opção xD

[member=225]Lord Wallace[/member]
Sobre bloquear a ação de ataque, eu tava pensando... se eu bloquear sempre que não houver alvo atingíveis (todos muito distantes, por ex), então, mesmo que ele tiver passos para gastar, ele não vai poder usar a ação para poder chegar automaticamente mais perto do alvo (mesmo que no fim não o alcance). Entendes? xD Resta então bloquear só quanto tiver com os passos zerados mesmo. Será que fica confuso?
 
[member=28]Pretty-Belle[/member]  Hmmmm, entendi... É, por enquanto melhor deixar o bloqueio só quando não houverem mais opções de movimentação mesmo. Não sei como vão ser as mecânicas do jogo mais pra frente, talvez com a adição de skills e afins hajam opções disponíveis mesmo quando o personagem já fez todos os movimentos do turno, então bloquear tudo pode não ser uma boa ideia heheh

Ps: Perdão pela demora, final de ano cheio de coisa dá nisso. Ah, e estou no aguardo para as próximas versões  :^-^:
 
[member=225]Lord Wallace[/member]
[ tbm tava bem ocupada com esse fim de ano :x ]
Eu vou bloquear então o Move e Attack, mas só quando tiver 0 passos mesmo (e não tiver ninguém atingível no caso de ataque à distância). Thanks aí pelas sugestões ~

Não sei quando vou fazer uma nova versão, porque programar isso tudo dá muito trabalho ;-; Então um código enorme que levo uma semana pra fazer, sem parar, pode acabar fazendo pouca diferença in-game. Além de que estou, ao mesmo tempo, fazendo os sprites tbm D:
 
Já joguei o Wild Arms V xD Sinceramente não gostei muito não, nem do sistema de batalha nem da história (embora eu tenha gostado um pouco da jogabilidade meio puxada para aventura, e do vilão tbm lol, ele é badass~). O sistema dele realmente é hexagonal tbm, mas tem uma lógica bem diferente. Tinha um bom potencial, acho que só ficou meio desbalanceado mesmo.
Esse XF parece ser mais similar com o meu, vou dar uma olhada nele, thanks c:

[OFF: A propósito, feliz aniversário, Shade xD o/]
 
Oi :B Faz um bom tempo que não posto aqui né. Eu passei muito tempo implementando partes que não estão na batalha, mas consegui finalmente fazer uma versão nova.

Dentre as diferenças com relação à demo anterior, temos (até onde eu lembro xD):
- Eliminei o zoom-out, agora está sempre em zoom normal (que é uma resolução de 2x em relação ao tamanho original da arte);
- Como forma alternativa para visualizar todo o campo, é possível dar Cancel na janela principal de batalha para que vá para o modo de cursor livre, onde também dá para checar status dos inimigos;
- Agora não precisa esperar o ATB carregar, o próximo turno é calculado no mesmo frame;
- Opção de chamar aliado;
- Opção de fugir [diferença dos Escapes normais: aqui só foge um char por vez. Na versão final eu vou colocar para fugir de vez da batalha quando todos os chars saírem, mas ainda não implementei isso (por enquanto a ação tá bloqueada para quando só tem um personagem restante)];
- Skill em área (só fiz uma, que está no personagem Test 2);
- Botões desabilitados para quando não faz sentido realizar a ação;
- Animações de batalha dos sprites (tão meio feinhas ainda, eu sei, mas sascaralha dão um trabalho desgraçado :x);
- Pequena modificação no path-finder para fazer o personagem preferir um caminho que não tiver char no meio (na vdd num muda porra nenhuma, é só frescurinha mesmo);
- Diferentes cores de tiles para diferentes ações (azul para os tiles para onde o char pode andar, vermelho para os quais ele não anda mas pode usar a skill selecionada (range dela), cinza para os quais ele não alcança mesmo que ande);
- É possível jogar tanto só com o mouse quanto só com o teclado, ou até com os dois (embora eu não recomende);
- Dá para jogar em fullscreen, mas não recomendo tbm, porque a arte fica feiona por falta de anti-aliasing e porque muito provavelmente a resolução de sua tela não é múltipla de 400x225.

=> OBS: A opção de Trade por enquanto não faz nada, mas futuramente vai servir para trocar itens dos inventários dos personagens
=> OBS2: Desculpa aí pelos desenhos horríveis das faces afeiudhyudhsusah tive que fazer no touchpad
=> OBS3: mais um pedido de desculpas para caso vocês não consigam diferenciar bem qual char é seu e qual é inimigo, eu tive que tirar as imagens dos personagens pq o template mudou e eu não tive tempo de refazê-los ><
=> OBS4: Isso pode ser importante para alguns - o Unity não está mais dando suporte ao plugin Unity Web Player, e no lugar estão todos usando o WebGL para colocar no navegador. O WebGL tem um lado muito bom, que é o de poder rodar em praticamente qualquer navegador, mas tem um lado ruim que é a maior demora para carregar e, principalmente, compilar (embora isso seja mais problema meu de desenvolvedora do que dos jogadores :x )

Enfim, aqui está o link:
https://dl.dropboxusercontent.com/u/191219221/Tactics/WebGL/index.html
Como eu refatorei um monte de código, é provável que apareça uns bug cabuloso aí, então estejam preparados para o jogo travar do nada (eu corrigi todos que eu achei, mas nunca se sabe né). E se acontecer, avise-me pfv xD
 
Voltar
Topo Inferior