Obrigado a Milanote por patrocinar este vídeo! Inscreva-se no Milanote gratuitamente e comece seu próximo projeto criativo: milanote.com/andrezitos0823
André, aproveita que tem gente te mandando dinheiro e faz um vídeo em cima disso mostrando quanto dinheiro você ganhou com as doações, fazendo assim dinheiro em cima do vídeo que você pediu dinheiro. Transformando isso em uma série , onde seus inscritos vão te doar dinheiro pra aparecer na série. Após isso, é possível fazer uma tierlist de quais subs você quebraria em uma luta até a morte (com a condição de ambos estarem pelados e em uma rua sem movimento). Isso seria literalmente uma série infinita. Com isso você teria conteudo infinito. Se gostarem da ideia respondam up e se quiserem copiem esse comentario e comentem ele novamente.dia 08/365
Esse é o primeiro canal que realmente me fez ir atrás de um produto, eu estava buscando alguma forma de organizar um projeto de jogo que eu tenho e eu nao encontrava nenhuma ferramenta que fosse realmente bom, eu estava usando figjam pra fazer um mapa mental de como ia funcionar as coisas, mas agora por causa do andrezitos que apresentou o milanote, com toda certeza os meus projetos vão ficar mais organizado, e eu não to falando isso só pra promover mais ainda esse aplicativo, eu to falando isso porque é realmente algo muito útil e que vai ajudar quem está criando um projeto de jogo
12:20 Uma forma que eu conheço que é melhor do que uma cadeia gigante de IF e Else IF é usar o Design Pattern de Object Literal. Você cria um objeto e a chave dele vai ser, nesse caso do André, o ID do poder, e o valor do dessa chave é o que o poder deveria fazer. Usando Object Literal o código fica mais legível, bonito e pode até dar um melhor desempenho, porque uma cadeia de IF é testada uma a uma, linha a linha; já para achar as propriedades de um objeto as linguagens de programação usam algoritmos de busca específicos pra isso. aiii que nerdisse 🤓☝️
@grandepedeo nerdisse super válida kkkk tem outros nomes pra essa pattern também, como Mapping e Dictionary. Muito bom ver outro dev nos comentários. Fica de lição de casa pro André refatorar kkk
No caso criaria uma classe pai para o Poder, dai a classe filho herdaria algumas características mas só mudando o tipo de poder? eu não entendi muito bem, sou iniciante nesse assunto
Pensei nisso tbm, ate comentei, so que comentei mais sobre hashing mesmo, essa é a melhor forma que eu vejo pra essa questão, pq fica até mais organizado Tem claro a opção do switch case, que resolveria a questão da performance do if, diferente do if, o switch ja pula direto pro valor true, e não precisa checar condicional por condicional
@@SergioPires-tn3wl sim sim, acho que o que eu queria dizer era mais essa parte de estrutura de key-value pair com leitura de O(1) e tals Não manjo dessa parte de object literal e tals, mas associei com hash maps pq, por essa explicação, são semelhantes nessa parte
Cara, eu também sou programador, mas sou programador web, e achei sensacional o escopo do projeto, para as variáveis de 'buffs' eu definiria um array com todos os nomes, e outro array com os cases, para se cruzarem posteriormente em um retorno com o valor final, acho que ficaria melhor visualmente em relação a organização do código sem os break points que vc colocou, mas é como vc disse, a gente tem que pensar no escopo do projeto final, às vezes vc nem quer evoluir ou usar pra outros propósitos mesmo, top!
12:00 Tem uma maneira mais fácil sim André. Ao invés de usar Switch Case, utilize a estratégia de criar Mappings/Dictionarys, assim você consegue mapear as propriedades e aplicar de acordo com o status/index. Utilizo esse macete frequentemente no trabalho (JavaScript) e é uma maravilha.
@@ottao8125famoso "faz um hashMap com 200 runnable e cabo fi kkkk" Tem tanto derivado de runnable e classes com funções assim fora e dentro das libs do próprio Java que a escolha é escolher qual deles vai usar
Vamos com tudo, André! Hoje completa 258 dias que eu te peço para JOGAR "The Complex: Found Footage", o jogo gratuito, mais "fiel ao criador", sobre as BACKROOMS. Atualização: Lançaram a continuação, "The Complex: Expedition".
André, você podia tentar abrir uma workshop pro seraph's, ia ajudar o jogo a durar mais tempo, e ia dar pra tu ganhar mais dinheiros com ele, já que mais gente iria comprar o jogo por conta da workshop
André, faz um vídeo falando sobre a criação de jogos de carta na unity. Tenho uma ideia de cardgame, e acho que é muito promissora, porém testar ela é sempre um saco, e acho que funcionaria melhor de maneira digital. Se puder compartilhar sua visão sobre o assunto cards na unity, ou até mesmo jogos similares em mecânicas etc, seria muito bacana! Adoro seu canal, abraços!
ele de fato fez da pior forma possível, além da cadeia de ifs ele não colocou nenhuma forma de saber qual número representa cada upgrade sem ler o comentário, só deixou o valor hardcode. Não faço ideia o que tem no c# pra usar, mas era só usar algum chave-valor o id como a chave e o valor com a informação que vai ser alterada (se o c# permitir referenciar uma função como o valor melhor ainda, da pra fazer upgrades muito mais customizados facilmente)
Seria top vc fazer um react de todos os vídeos dele referente ao seu jogo. Essa versão resumida foi top. Mas fiquei com um gostinho de "quero mais". Isso por que eu nem penso em fazer jogo, ou entender de programação. Mas ficar por dentro do passo a passo do processo criativo e produção do game é viciante. Está ai um nicho que vc pode explorar no seu canal. E nem precisa ser referente aos seu jogos. Pode fazer isso com jogos simples de terceiros.
Cara, acho incrível o tanto q esse jogo do André serve de base pra aprender o básico de programação de jogos Pq apesar do jogo ser simples, vc "replicar" o código do jogo meio q te ensina a fazer um pouco de tudo da forma mais tranquila possível Ainda acho q esse jogo foi eu vai ser porta de entrada pra muita gente no cenário de gamedev
@@johntitor1103 Não, daria quase no mesmo. Existem diversas formas de fazer isso, mas o melhor seria se a própria carta contivesse essa lógica, encapsulado (já que estamos lidando com OO, nesse caso). Então, esse método seria uma linha apenas, que chamaria a lógica de dentro da carta.
Outra coisa problemática é ele estar alterando os valores "on the fly". Em vez disso, ele deveria ter uma lista de "cartas escolhidas" e derivar o status do personagem dessa lista. Imagine uma função pura F que recebe uma lista de cartas e retorna um estado. Isso poderia ser custoso em alguns casos, o que poderia ser resolvido com um cache. Considerando que você não pode eliminar cartas, mas apenas adicionar, uma forma barata de invalidar o cachê seria pelo número de cartas
@@mateusfccpcriar uma classe abstrata carta ou interface e pra cada carta sobre escrever o método seria uma boa ou mesmo ter uma classe que tem todas as funções de todas as cartas e cada carta chama uma função dessa classe. Outro forma que eu não diria que é boa mas é útil pra quem não gosta de fazer classe pra cada carta kkkkk é criar uma única classe carta que recebe como argumento no construtor uma função e armazena essa função em um campo do objeto Assim a pessoa pode só instância vários objetos e ter funções diferentes para cada um não é uma boa escolha mas ela existi.
fala andré blz ? to desenvolvendo uma game a um bom tempo já, é um plataforma 3d que vai ter até coop com tela dividida (nada de network por enquanto.) e só queria dizer que essa tua dica de usar tags ao invés de encontrar objetos pelo nome me ajudou bastante, ainda não sei quanto ganhei em fps com isso, mas é nitido que o game ficou mais suave, enfim vlw ai argentino gostoso.
amigo meu lançou um jogo e no dia seguinte saiu no torrent (nem baixei pq nao gosto deste estilo de jogo, alem de ser sacanagem com ele trr pegado pirata)
Com 11 carta escudo (ignora o primeiro hit) e 17 da imortalidade (fica imortal por um tempo depois de tomar um hit) o tempo de ativação delas retorna igual, os dois vão durar mais ou menos 1 segundo, com isso vc pega a carta que dá dano em porcentagem nós alvos e faz dano crit até ficar one hit pra cada monstro, e agora vc é imortal com dano infinito
Único canal que eu não pulo as propagandas. Inclusive tô usando o milanote graças ao Andrezitos. Reunião com cliente, eu beubo, os clientes beubos, e eu desenhando as coisas na hora pra definirmos layout do site, bom demais. Só acho que poderiam melhorar o app porque tentei fazer o invite pro board e não achei a opção no app. Se tem, deve estar de forma não tão intuitiva.
A melhor descrição pro andré é multifuncional, o cara é biólogo, programador e muito gente boa. (Um dia ele ainda vai virar astronauta e fazer uns vlogs pra gente)
As descrições das cartas do Tower Of Combo me lembram muito as do jogo Monster Train, que é um jogo bem divertido. Se você fizer algo parecido, com certeza vou querer jogar!
Aos 12:00 Switch é muito melhor do que fazer If com certeza, mas não tem muito pra onde fugir. A não ser que você queira entrar em alguns designs mais complexos (que não tem necessidade pra algo desse tipo), o switch acaba sendo a melhor opção
André, já parou pra pensar que esse jogo te daria uma puta grana no Gamepass? Esse tipo de jogo faz muito sucesso lá pq é o tipo de jogo que o pessoal mais vicia e não para nunca de jogar
Sobre aquela parte dos vários ifs pras cartas e tals O jeito que eu faria para melhorar esse código seria usando um hash map ou hash table (o equivalente a um dicionário no python) Eu faria algo tipo cartas["aumentar_dano"] = function (player) { dano++; } Para todas as cartas E pra rodar o código seria algo do tipo cartas[escolhaDoPlayer](player); Ficaria mias organizado pq da pra separar a lógica da execução, diminuiria os ifs, e acho que até seria mais performático (em um caso como esse não faria uma diferença significativa kkkkkkkk) Enfim, sou fã de hashs, melhor estrutura de dados ❤
Adrezitos vc e um dos poucos RU-vidres que continua com a mesma viper boa não mudou nada que bom 😂❤ os gringos tão até ter roubando só falta levar os seus DVDs 📀 dos barquinhos e dos carrinhos kkkkkkk
Bom, sendo um pouco chato aqui, vou contar uma curiosidade sobre as variáveis que você disse no minuto 1:34. Pode parecer que cada pessoa faz de um jeito, mas existe realmente um senso comum para cada linguagem, a linguagem C# que é a da Unity segue praticamente o mesmo padrão de formatação de variáveis da linguagem Java, que é da forma que o Swipe fez, já Python normalmente se utiliza o padrão do André. Mas no fim nada disso importa, você é livre para fazer como quiser, não há regra.
Da uma estudada em arquitetura de software pro unity se for de seu interesse, ajudaria a fazer games maiores mais rápidos, parabens pelos games cara, já joguei e curto mt
Andrezão vc podia criar um cardgame tipo Yu-Gi-Oh ou Magic só q baseado no Seraph's pra espandir universo, sei lá na minha cabeça faz sentido. Vlw kkkk
Na minha opinião como desenvolvedor, o certo para os upgrades era ter uma classe UpgradeManager que será o núcleo dos upgrades e a ponte entre o jogador e as alterações necessárias na vida, velocidade etc .. e então você cria uma classe para cada upgrade que é registrada no UpgradeManager e então o UpgradeManager teria um tick que iria emitir um callback para todos os upgrades ativos atualizar. Essa é uma concepção que eu tirei do Minecraft, toda poção tem sua própria classe que herda a classe base Potion que tem métodos abstratos como "ao consumir", "atualizar" etc.. e essa classe é registrada no jogo, então o jogador tem uma lista de poções ativas que atualiza a cada tick
12:27, tu podia ter uma array de dicionários com todas modificações, a posição do array corresponde com id, e o seu conteúdo é as modificações necessárias, tu consegue evitar todos esses IFs e fica mais simples
Daria para usar Map também, porém ia gastar mais memória (se for algo pequeno, tipo uns 10.000 itens, nem faz tanta diferença na real), a vantagem é seria mais fácil a manutenção, caso tu precise tirar item do meio, o outros não seram afetados (já no array, para manter 1:1, a parte removida teria que ser algo vazio), já que nesse caso está usando keys para salvar as coisas
Que mancada, merece um processo mesmo, além de toda a dificuldade que encontramos no Brasil ainda vem um desgraçado piratear algo que custa extremamente barato.
chamar um objeto pela tag é anti-performático no Unity. Isso ocorre porque o Unity precisa percorrer toda a hierarquia de objetos para encontrar o objeto com a tag desejada. Isso pode ser um processo lento, especialmente em jogos com muitos objetos.