Projeto: X - Jogo de Cartas

  1. Criei a carta do mago;
  2. Pesquisei muito sobre como usar melhor os ScriptableObjects, tudo começou quando vi esse vídeo no Youtube, um claro presente do destino: https://www.youtube.com/watch?v=PVOVIxNxxeQ ele fala justamente sobre uma coisa que venho procurando há alguns dias. Isso porque eu estou tentando criar jeitos mais eficientes da arquitetura do jogo funcionar. Isso me levou até esse projeto no git: https://github.com/ciro-unity/UnityRoyale-Public?utm_source=YouTube&utm_medium=social&utm_campaign=evangelism_global_generalpromo_2020-09-21_better-data-scriptable-unity-royale que é uma espécie de Clash Royale. Esse por sua vez me levou até este artigo: https://blogs.unity3d.com/2017/11/20/making-cool-stuff-with-scriptableobjects/?utm_source=YouTube&utm_medium=social&utm_campaign=evangelism_global_generalpromo_2020-09-21_better-data-scriptable-objects-blog que me levou até este curso gratuito da Unity que pretendo fazer nos próximos dias ao menos pra entender como ele fez o jogo dele funcionar: https://learn.unity.com/tutorial/recorded-video-session-text-adventure-game-part-1#
1 Curtida

Quinta-feira, 24 de Setembro de 2020

  1. Coloquei o DeckBehaviour dentro de um objeto vazio. Antes disso ele estava na UI;
  2. Melhorei o método FinishBattle e criei uma função para embaralhar as cartas do cemitério no deck;
  3. Coloquei uma linha pra atualizar os pontos de ação do jogador na tela logo que a batalha começa;
  4. Criei um script MapBehaviour e coloquei em um objeto vazio chamado MapManager para controlar cada lugar e se vai estar disponível viajar para ele ou não, além de mudar a visibilidade das sprites;

Com todas essas modificações, estou conseguindo transicionar a tela de batalha e a do mapa normalmente, assim eu consigo entrar em uma fase e entrar em outra sem ter problemas.

AMANHÃ: Quero fazer os pontos do mapa ficarem disponíveis ou indisponíveis para viajar progressivamente, além de fazer algumas sprites simples para indicar os lugares do mapa.

1 Curtida

Sexta-feira, 25 de Setembro de 2020

  1. Escondi algumas várias que são públicas mas não precisam de referências pelo Inspector;
  2. Criei um MapSetup que vai guardar os dados dos vários tipos de mapa na tela;
  3. Tornei o lugar do mapa para um botão. No fim de tudo, consegui fazer uma coisa híbrida. As funções continuam nos botões, mas as referências para objetos ficam no MapManager. Os lugares tem referência ao MapManager mas essa referência é feita automaticamente através do FindGameObjectWithTag;
  4. Agora está funcionando melhor, fiz até um Prefab com o BattlePlace, assim eu posso instanciar vários botões;
1 Curtida

Sábado, 26 de Setembro de 2020

  1. Continuei trabalhando em gerar um mapa na tela com lugares para entrar e consegui gerar esse mapa, no entanto agora eu estou reconstruindo a maneira que eu fiz isso pra poder ativar e desativar os lugares pelos quais eu ainda não posso entrar.
1 Curtida

Domingo, 27 de Setembro de 2020

  1. Consegui fazer um código onde conforme o jogador passa pelas batalhas as portas seguintes vão se abrindo, mas ele ainda não funciona perfeitamente bem caso eu faça vários tipos de mapa, preciso melhorar o código amanhã.
1 Curtida

Segunda-feira, 28 de Setembro de 2020

  1. Terminei o código que ativa as próximas salas e desativa aquelas onde não é mais possível entrar. O código está funcionando normalmente.
1 Curtida

Terça-feira, 29 de Setembro de 2020

  1. Melhorei o protótipo do primeiro mapa;
  2. Criei mais um setup de batalha;
  3. Mudei o código do Place e do MapSetup para que o ScriptableObject com os dados do tipo de batalha que vai acontecer ficasse na definição dos dados do mapa ao invés de ficar no prefab de batalha;
  4. Agora os TargetedInitialPosition são destruídos no fim da batalha;
  5. Criei uma nova paleta de cores pra testar depois em alguns personagens;
  6. Testei a paleta de cores do Super Mario World no Cavaleiro de Elite e achei que ficou bem bonito;
1 Curtida

Quarta-feira, 30 de Setembro de 2020

  1. Mudei o código do IDragger porque não estou mais usando ScreenToWorldPoint porque agora o Canvas está como Screen Space - Camera;
  2. Fiz uma nova build para o meu celular e o jogo funcionou bem;
  3. Agora o jogador tem moedas e elas aparecem na ui do mapa, o jogador ganha um determinado número de moedas de acordo com o que está definido em cada batalha;
  4. Comecei a fazer um sistema de ganhar XP;
1 Curtida

Quinta-feira, 01 de Outubro de 2020

  1. Terminei o sistema de ganhar xp com as batalhas e atualizar isso na interface do mapa;
  2. Criei parte da interação com o baú, ele tem uma imagem e quando você clica ele abre e instancia uma carta na tela. Nisso eu criei o ChestManager e o ChestBehaviour;
  3. Criei um script GameManager, ele tem estados de jogo. O drag da carta e tudo mais do IDragger não é ativado se o estado do jogo não for batalha. Preciso definir os estados em outros códigos amanhã;
1 Curtida

Sexta-feira, 02 de Outubro de 2020

  1. Otimização de várias partes do código. Li ontem nesse link https://docs.microsoft.com/en-us/windows/mixed-reality/develop/unity/performance-recommendations-for-unity algo sobre o qual eu já suspeitava e estava me incomodando no meu código, que é o fato de estar usando muito o GetComponent().FazerAlgumaCoisa ao invés de usar uma referência direta através do editor e usar um objeto comp.FazerAlgumaCoisa(), nessa última ele só pega um ponteiro de onde está localizado o que eu preciso, o que é muito mais rápido, principalmente em métodos que são chamados muitas vezes, como o OnDrag(). Enfim, estou mudando várias partes do código e acredito que ele vai ficar muito melhor depois disso.
  2. Fiz o item acima no código do IDragger, além de organizar as variáveis de um jeito melhor usando os [Header()]. Senti a necessidade de fazer isso porque conforme o jogo vai crescendo preciso que a base esteja bem construída e organizada pra facilitar o desenvolvimento das outras features;
  3. Configurei o Unity Remote pra testar o jogo no celular sem precisar buildar, mas vou fechar a Unity e abrir de novo pra ver se deu certo;
1 Curtida

Sábado, 03 de Outubro de 2020

  1. Organizei a planilha com os efeitos sonoros que precisam ser feitos, não tem tudo lá mas tem o suficiente pra começar;
  2. O baú não instancia mais cartas infinitamente, só quando é aberto na primeira vez;
  3. Apaguei o Update() padrão de funções que não precisam dele, porque vi que mesmo não tendo nada dentro, ele vai ser chamada sempre;
  4. Para adicionar a carta do baú no deck do jogador eu preciso alterar o formato de como o deck é atualmente, porque ele é só um array com 9 cartas, posso aumentar o tamanho do array e deixar um limite de cartas ou posso usar uma lista, mas vou precisar alterar outras partes do código. Não terminei isso hoje, quero continuar amanhã.
1 Curtida

Domingo, 04 de Outubro de 2020

  1. Aprendi a usar o básico do Profile pra medir a performance do meu jogo na Unity;
  2. Criei a lista do deck e fiz ela ser embaralhada;
1 Curtida

Segunda-feira, 05 de Outubro de 2020

  1. Agora o jogador consegue pegar a carta na tela de Chest e um prefab daquela carta é adicionado na lista do deck do jogador, além disso a carta pegada é destruída;
  2. Criei um prefab do lugar do baú e agora consigo entrar neles pelo mapa;
  3. Criei o GameUIManager e estou centralizando algumas funcionalidades nele;
  4. Consegui integrar a tela do Chest no jogo, estou conseguindo entrar no mapa, lutar uma batalha, sair, entrar na tela de baú, pegar uma carta, sair e entrar em outra batalha;
1 Curtida

Terça-feira, 06 de Outubro de 2020

  1. Adicionei um botão de Deck na tela do mapa mas ele ainda não faz nada;
  2. Coloquei o ícone da moeda na tela e fiz a animação na Unity;
  3. Descobri como instalar fontes no windows pra poder usar no aseprite;
1 Curtida

Quarta-feira, 07 de Outubro de 2020

  1. Trabalhei em desenvolver um melhor sistema de batalha para o jogo, estou definindo algumas coisas na planilha;
  2. Comecei a fazer uma transição de cena mas ainda não terminei;
1 Curtida

Quinta-feira, 08 de Outubro de 2020

  1. Fiz um monte de coisa pra melhorar o OnDrag que tem um delay irritante na Unity quando eu testo o jogo no celular, deve ser uns 100 ou 200 milissegundos. Procurei esse problema na internet e vi um trilhão de discussões em fóruns e alguns vídeos no Youtube. Preciso tentar o novo input system da Unity e o touch ao invés do OnDrag, mas isso só amanhã.
1 Curtida

Sexta-feira, 09 de Outubro de 2020

  1. Continuei aprendendo a mexer no novo Input System da Unity, ele é bem diferente do antigo, então está sendo complicado, mas consegui fazer algo simples funcionar no Android, vamos ver se vai funcionar melhor quando eu tentar deixar a posição da carta como sendo a posição do touch, espero que tenha uma resposta melhor do que o sistema antigo, porque está dando muito mais trabalho pra aprender esse sistema;
  2. Sobre o delay que está acontecendo, percebi que em uma build antiga ele estava melhor do que atualmente, tava mais smooth, acredito que o sistema de iluminação do jogo possa estar atrapalhando a performance, vou testar isso depois. No computador não dá nenhum problema, mas o celular é mais lento;
1 Curtida

Sábado, 10 de Outubro de 2020

  1. Continuei mexendo na scene onde estou testando o novo Input System usando touchscreen, mas ainda não consegui fazer funcionar direito, como ele é novo tem poquíssimos tutoriais sobre como usar ele na internet, além de poucas soluções em foruns, mas ta indo.
1 Curtida

Domingo, 11 de Outubro de 2020

  1. Consegui baixar umas scenes de exemplo que a Unity fez pra entender melhor a implementação do novo Input System pra tentar usar o touch. Tem um exemplo de desenhar usando o touch que vai me ajudar a implementar o drag da carta;
  2. Isso aqui vai me ajudar amanhã na tentativa de reproduzir o modelo de exemplo: https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/ActionBindings.html na parte “Writing custom Composites”;
1 Curtida

Segunda-feira, 12 de Outubro de 2020

  1. Retornei o patch do jogo para o anterior de antes de começar a tentar implementar o novo Input System;
  2. Fiz duas implementações diferentes usando touch.count em uma scene de teste e parece um pouco melhor, mas não testei ainda em alguma scene com iluminação. A primeira eu só transformo a posição na posição do touch, na segunda eu adiciono uma velocidade eu um RigidBody2D. A segunda buga se a velocidade for muito alta, como 90 ou principalmente acima de 100, mas parece funcionar bem se a velocidade for 50. A primeira já funciona de forma bem parecida com a implementação usando Drag, mas talvez um pouco melhor. De qualquer forma, vou tentar não usar iluminação no jogo por enquanto;
1 Curtida