<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Patrik Malta</title>
    <description>The latest articles on DEV Community by Patrik Malta (@patrik_malta_7b819da6a37a).</description>
    <link>https://dev.to/patrik_malta_7b819da6a37a</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3700776%2F3e66ebee-748d-410f-a45b-4b6538b8489e.png</url>
      <title>DEV Community: Patrik Malta</title>
      <link>https://dev.to/patrik_malta_7b819da6a37a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/patrik_malta_7b819da6a37a"/>
    <language>en</language>
    <item>
      <title>Dá pra fazer jogos usando JS/TS sem game engine?</title>
      <dc:creator>Patrik Malta</dc:creator>
      <pubDate>Thu, 16 Jul 2026 19:57:44 +0000</pubDate>
      <link>https://dev.to/patrik_malta_7b819da6a37a/da-pra-fazer-jogos-usando-jsts-sem-game-engine-48ah</link>
      <guid>https://dev.to/patrik_malta_7b819da6a37a/da-pra-fazer-jogos-usando-jsts-sem-game-engine-48ah</guid>
      <description>&lt;p&gt;Bom, essa era minha dúvida um tempo atrás... Mas antes de mostrar como coloquei isso à prova, deixe-me apresentar.&lt;/p&gt;

&lt;p&gt;Olá, me chamo Patrik e atualmente trabalho como desenvolvedor Frontend. Comecei na programação em meados de 2018, através do desenvolvimento de jogos com a falecida linguagem Flash, e logo depois comecei a estudar C# na Game Engine Unity.&lt;/p&gt;

&lt;p&gt;Meu sonho sempre foi ser programador. Mesmo morando em uma fazenda, sempre fazia de tudo para estudar, e na maioria das vezes, quando ia na cidade fazer compras, eu baixava tutoriais de GameDev para poder assistir em casa, já que não tinha internet. Devido às dificuldades, tanto de internet quanto de ter que ajudar na roça, acabei não conseguindo focar no meu sonho, e logo também vi que o GameDev no Brasil é uma profissão injusta e difícil.&lt;/p&gt;

&lt;p&gt;Então fui parando de programar aos poucos, até que em 2024 conheci o desenvolvimento web e fui estudando aos poucos, porque eu já não morava mais no interior e já tinha um pouco mais de estrutura. Mas foi em 2025 que tudo mudou, quando vi a vaga para a empresa que trabalho hoje e decidi me candidatar e me dedicar — e no fim deu certo! Hoje tô realizando meu sonho de adolescente.&lt;/p&gt;

&lt;p&gt;Agora que já me conhece um pouco, posso continuar contando como consegui desenvolver um pequeno projeto de jogo (uma cópia de Pong) com TypeScript sem game engine.&lt;/p&gt;

&lt;p&gt;Como tive a ideia&lt;br&gt;
Essa questão surgiu quando eu estava estudando POO (Programação Orientada a Objetos) em TypeScript, e acabei vendo um vídeo no YouTube de um rapaz que fez um jogo só com Java sem game engine, e fui atrás de tentar fazer algo parecido.&lt;/p&gt;

&lt;p&gt;Durante minhas pesquisas, acabei encontrando um porte para JavaScript de uma biblioteca feita para a linguagem C, chamada Raylib. A Raylib se trata de uma biblioteca que permite a criação de aplicações gráficas utilizando OpenGL por baixo dos panos.&lt;/p&gt;

&lt;p&gt;Desafios&lt;br&gt;
A primeira coisa que fiz foi procurar a documentação da biblioteca para C para ver os métodos e funções que tinha nela. E, digamos que a documentação oficial funciona, mas para procurar coisas específicas tinha que ficar usando o CTRL + F.&lt;/p&gt;

&lt;p&gt;Link da documentação oficial: &lt;a href="https://www.raylib.com/" rel="noopener noreferrer"&gt;https://www.raylib.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Então decidi usar a Inteligência Artificial a meu favor. Como não tinha nenhuma documentação, a não ser algumas informações no GitHub do porte para Node.js, decidi pegar todos os módulos da documentação oficial, criar arquivos .md e pedir para o Claude criar para mim uma documentação com informações traduzidas (não está muito boa a tradução, mas funciona) e com a função que eu mais queria, que era a pesquisa simplificada.&lt;/p&gt;

&lt;p&gt;E acabou que gostei bastante, mesmo não ficando tão profissional. Aliás, foi tudo "vibecodado" essa parte da documentação, então dá para relevar. Você pode ver ela através deste link: &lt;a href="https://github.com/PatrikMaltacm/raylib-documentation" rel="noopener noreferrer"&gt;https://github.com/PatrikMaltacm/raylib-documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Desenvolvimento&lt;br&gt;
Até então eu não sabia o que realmente queria fazer, só sabia que queria praticar POO e fazer algum joguinho simples, então comecei criando a classe principal, que é a "Game". Ela é responsável por controlar a janela do jogo e as instâncias das outras classes (como a da bola e as raquetes), e também detectar colisões e finalizar/reiniciar o jogo.&lt;/p&gt;

&lt;p&gt;Como a Raylib se trata de uma biblioteca gráfica, eu tive que desenvolver todos os outros sistemas que o jogo precisava, como a colisão que eu já comentei, física, e renderizar e mapear os elementos visuais.&lt;/p&gt;

&lt;p&gt;A pequena "Game Engine" que fiz para o jogo não segue as melhores práticas, acredito eu, e nem o projeto em si segue os melhores padrões de arquitetura, mas para mim o que importou foi que eu consegui matar minha curiosidade e ainda praticar POO com TS, que era o que eu estava buscando no momento.&lt;/p&gt;

&lt;p&gt;Finalização&lt;br&gt;
Esse projeto me fez enxergar que o JS/TS é uma linguagem que, mesmo que não tenha sido feita para coisas como essa, consegue ser versátil e dá para extrair coisas muito interessantes dela.&lt;/p&gt;

&lt;p&gt;No projeto do jogo em si, não foi utilizada Inteligência Artificial para desenvolver, pois eu queria provar a mim mesmo se era realmente capaz de fazer algo, mesmo que simples, apenas com a documentação e paciência. A IA foi utilizada apenas para o desenvolvimento da documentação alternativa!&lt;/p&gt;

&lt;p&gt;Veja uma pequena demonstração do projeto rodando:&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://github-production-user-asset-6210df.s3.amazonaws.com/151024404/622882966-6a8221bb-7980-4823-bf19-c43ca45779b0.gif?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;amp;X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20260716%2Fus-east-1%2Fs3%2Faws4_request&amp;amp;X-Amz-Date=20260716T195903Z&amp;amp;X-Amz-Expires=300&amp;amp;X-Amz-Signature=886693530a79f9f3cf76ee3ec05fcfdf4fbf30f1c063f675a754ca68437d29f5&amp;amp;X-Amz-SignedHeaders=host&amp;amp;response-content-type=image%2Fgif" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;github-production-user-asset-6210df.s3.amazonaws.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;O link para o projeto do GitHub é este: &lt;a href="https://github.com/PatrikMaltacm/pong-ts/tree/main" rel="noopener noreferrer"&gt;https://github.com/PatrikMaltacm/pong-ts/tree/main&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Caso queira estudar e dar sugestões no projeto, fique à vontade. Só não garanto que irei atualizar o projeto porque estou focado em outras coisas no momento kkkk.&lt;/p&gt;

&lt;p&gt;Obrigado pela sua leitura e espero que tenha gostado do conteúdo! Curti muito desenvolver e escrever sobre esse projeto, e este foi o primeiro artigo "completo" que escrevi.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>typescript</category>
      <category>braziliandevs</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
