Executando verificação de segurança...
1

Portfolio usando React & Three.js com o jogo do mário

Olá camaradas programadores!

Depois de dois longos meses, meu portfolio está pronto.

Escolhi como nome de portfolio: NightmareFolio, porque foi um "pesadelo" criá-lo.

Se você deseja apenas vê-lo, clique aqui.

Vou contar a história de como tive essa ideia, mas você pode ver esse spoiler:
Start

Voltando ao início dessa ideia, chegamos num sonho, sim, um sonho.

Sonhei que estava num jogo, no qual havia um gato e um assassino (sim! alguém estava querendo matar um gato!!), o pior disso: eu era o gato! meow

Quando "fui morto" tornei-me o assassino.

Fiquei intrigado com o sonho.

De fato, estava jogando no meu sonho, e olha que até alí nunca tinha jogado Stray.

Contei para meus colegas de trabalho e eles me sugeriram criar um jogo em React JS.

No início foi uma brincadeira.

Mas comecei a estudar sobre o assunto e deparei-me com uma biblioteca chamada Enable3D, que faz um monte de abstrações do Three.JS.

O enable3d é inspirado nesse outro projeto, chamado Sketchbook, que virou um arquivo público no GitHub, ou seja, você pode fazer qualquer coisa, até mesmo vender o código, loco né?

Tudo massa até agora, massss e como faria os mapas? Nunca fui bom em desenhos...

Daí descobri o SketchFab, onde o pessoal disponibiliza inúmeros sketches for free, é claro, desde de que citados; ou, se você quiser fazer algo mais sério, pode comprar uma licença.

No meu caso, sempre foi apenas por diversão e para aprender algo novo (e olha como aprendi 😼)

Na primeira ideia peguei um gato estranho (mas de grátis).

Estava decidido a fazer como no sonho, mas pelo jeito você pode ver que não foi meu projeto final >﹏<

Isso, pois é muito difícil animar ... ou eu não tenho tempo/paciência para isso

Para a maioria das animação é preciso "riggar" um personagem, por isso aquelas poses em T, como essa:
Start

Ou seja, o RIG é o processo de adicionar um monte de pontos no personagem que, no final, passam a ideia de animação.

Nesse ponto, eu tinha a pose em T do gato e nem sabia o que RIG significava.

Com a ajuda do YouTube, vi que teria que usar o Blender para animar, oh tristeza.

Para nossa sorte, caros amigos, há uma ferramenta que faz o rig gratuito.

. . . rufem os tambores . . .

É o Mixamo da Adobe, há várias e várias animações, só basta ter a pose em T de um personagem em formato FBX (a maioria dos sketches vem em FBX ou é só converter no Blender):

Mixamo

Pronto!

Isso deve ter levado umas três semanas para eu descobrir e muitooos erros huehueu

Nesse momento, eu tinha o gato e uma ideia.

Tentei criar o meu próprio cenário no Blender.

É...

Nesse momento percebi que não tinha muita criatividade.

Criei um quarto e... OFM!

O que seria isso? out of memory ou... deu ruim rapazes!

Nesse instante, pensei: KISS ou keep it simple, stupid! (ou, como minha mãe diria, não dá o passo maior do que a calça, guri!)

Estava muito complexo e pesado.

Seria mais fácil copiar algo já feito e com mapas no SketchFab.

Jogo da cobrinha? Nhá

GTA? Muita mão

Mario 3d? Why not

E assim peguei o mapa desse carinha.
Mario 3d

O maior problema era de o mapa ser muito largo, ou seja o Mario poderia burlar o sistema muito facilmente!

Então tive que voltar ao Blender e quebrar a cabeça pra cortar o chão (em JS seria bem mais fácil...)

Aliás, quando eu tive de passar as animações do arquivo do Mixamo para o Enable3d, perdi muito tempo tentando juntar as animações no Blender.

Como um bom programador faria, dei console.log em todos os objetos e types que o Enable3d disponibilizava.

Até que achei uma maneira de mesclar as animações (maior alegria que senti no dia haahahah)

Ótimo, agora pude criar o Mário num componente do React, meta de vida realizada.

Nesse momento, faltava adicionar colisões, ou seja, deveria ter o Goomba (bixinho fofinho - ou não - que tenta matar o mário).

Então quando o Mário bate no Goomba, ele aprende a voar.

Ótimo, mas tá faltando algo...

Sim, um nível do React!

O React, meu melhor amigo, mas por que não transformá-lo num vilão!

Então criei uma fase inicial, para o usuário escolher entre qual game quer jogar (primeira imagem do post).

E depois me baseei num exemplo do Enable3d para tiros em primeira pessoa. (recomendo ir jogar isso clique aqui

Você pode derrotar o React, mas ele chega seus amigos haahh (sem spoiler aqui, vai jogar).

Estamos quase no final, mas faltava alguma coisa no Mário, sim!

moedas e pontos

Então adicionei um sistema de detecção de pontos e estrelas.

E agora tô morrendo de sono mas não paro de escreve aqui hahah

Conclusão

Foi algo divertido, sobretudo, aprender novas coisas e me desafiar.

Tenho certeza que sou um dev muito melhor depois desse projeto.

Não está perfeito, há muiiitas coisas para melhorar, mas, às vezes, é necessário saber a hora de parar.

Vou continuar atualizando ele? Sim, paulatinamente, mas sim.

Uma das coisas que me irrita, é que no deploy, ele fica bem mais lento do que no local, algum dia, tenho que migrar do vercel free para a aws, mas deixo isso para o meu eu do futuro heheh.

dá uma estrelinha no meu projetinho se leste até o finalzinho?

https://github.com/gabrieldeavila/nightmare-folio

thank you sir!

1

Que maneiro cara! Confesso que fiquei bem impressionado com o resultado, nem sabia que tinha como fazer isso com React. Não sei se seria o ideal para SER um portfolio (até porque recrutadores são bem chatinhos kkkk), mas pra INTEGRAR um portfolio é maravilhoso, sem dúvidas. Uma clara demonstração da sua dedicação e potencial.

Parabéns!

1

Cara, parabéns! Ficou bem legal. No de tiro essa arma de bolinhas é gostoso de jogar(joguei mais de uma vez hehe), e também boa trilha sonora durante o jogo e o clássico no final.