top of page

Pong'0 "Pong clone"

Foto do escritor: Willian MstachWillian Mstach

desenvolvendo um clone de pong {arte, programação e decisões}


Introdução

Nesta segunda postagem do blog, quero compartilhar a experiência de criar um clone do clássico Pong usando a Godot Engine 4.3. Vou detalhar as decisões que tomei ao longo do desenvolvimento, discutir a escolha da arte e abordar os desafios técnicos na programação.



Por que Pong e Godot?

Planejamento Inicial


Por que que escolhi o Pong como projeto inicial para estudo? simples, por que o Pong é um jogo simples e rápido de se fazer, sem muitas mecânicas a serem abordadas, me ajudando a entender melhor como trabalhar com a Engine em si, e não com o foco em uma produção mais completa;


E a partir do desafio inicial do https://20_games_challenge.gitlab.io/challenge/ a ideia era apenas entender a funcionalidade básicas das coisas dentro da Godot; Com objetivos simples, como "Mover uma raquete", "Dar movimento a uma bolinha", "Criar um placar de pontuação" e a arte em si também seria algo bem simples de fazer;


Escolha da Ferramenta: Godot Engine


A escolha da ferramenta foi algo que não surgiu do nada, a algum tempo eu decidi entrar no mundo do Game Dev, da forma errada, mas entrei; e uma das primeiras dores de cabeça que tive foi a de escolher a engine.


Então sobre meu ponto de vista a decisão demorou um pouco a acontecer. O que eu vi sobre as engines que testei;


Game Maker Studio 2, simples, responsiva, muito boa para o que eu queria, que era o 2D, script de facil entendimento. Literalmente a Engine perfeita pra mim
Unreal Engine, achei que com ela eu teria muito poder em mãos, e isso me deu medo, e acredito que o universo 3D nela seja algo incrível de se trabalhar;
Unity, de todas que testei foi a que me pareceu ser menos amigável "visualmente", e assim com a Unreal, acredito que para o 3D ela seja perfeita; Mas ainda muito para o que eu queria;
Godot, a primeira vista me assustou bastante, mas quando entendi como os nós, sinais e scenes funcionavam, criei um carinho muito grande; entre ela e o GameMaker Studio, acredito que ela me daria uma "liberdade" a mais;

Então acredito que a minha escolha pela Godot, se da a 4 pontos, "Liberdade", "Simplicidade", "Visual" e "Produtividade", por que em relação a script eu iria ter dificuldade em todos de qualquer maneira; ainda acho o GDScript mais complicado do que GML, mas estou aqui para aprender não.


Arte, Raquetes e Paredes;

Acredito que nesse primeiro projeto a parte artística vai ser um ponto que não irei me direcionar muito; vou usar sprites simples, um tamanho baseado em 16x16; e o tamanho de tela de 640x360.


Estrutura, Decisões e Programação

Comecei o projeto definindo a alguns pontos que achei importante; então criei algumas cenas.

Uma para a arena, uma para as paredes laterais, uma para mostrar o score, as duas raquetes e a bola; Não sei se são os melhores nós para isso, mas foram os que escolhi;


  1. Movimentação das Pás;

As duas pás inicialmente eu criei da mesma forma; defini um input para a movimentação, defini um limite para ela não tocar no topo da tela; e adicionei a velocidade em um variável global;


2. Movimentação da Bola;

Na parte de mover a bola eu tive alguns problemas, pois não sabia como aplicar um valor corretamente para a velocidade dela; Então descobri que o velocity, precisa tanto de uma direção quanto um valor de velocidade;

Aqui eu criei um input para poder iniciar a partida; definindo assim um ângulo aleatório para o inicio da bola;

Ainda dentro do Process_delta, eu defini a movimentação da bola, uma rotação para ela e o sistema de colisão;

Eu bati a cabeça para entender como colocar alguns valores específicos para um Vector2; então acredito que o caminho que tomei não é o correto, creio que exista uma forma mais simples de se fazer isso; mas foi essa a decisão que tomei;


E na parte da pontuação eu decidi por seguir uma linha simples de variaveis globais;


Que acontecem quando a bola passa por uma dos gols

Daqui pra frente foi apenas querer adicionar um pouco mais de charme, como sons, menus e um desafio para o player jogar contra uma AI;


3. Um Player ou A.I.

Para simular um A.I. jogando contra o jogador. Eu defini uma movimentação utilizando o Lerp, para que a raquete do player 2 não ficasse exatamente sempre na mesma posição Y da bola. É apenas uma ideia de A.I. não existe um mega nível de detalhamento aqui;



4. Considerações Finais;

Fiquei muito feliz com o resultado. Consegui me controlar para não querer encher de coisas, me propus a apenas fazer o básico, do meu jeito, mas o básico. E com toda certeza eu digo que foi uma das minhas melhores escolhas fazer esse desafio; Eu ja tinha feito coisas além do Pong, mas eu não sabia o que estava fazendo, eram apenas tutoriais guiados do youtube;


Se você ta começando, faça isso também. Comece lento, mas sabendo o que tu ta fazendo;


Se quiser testar o meu jogo, aqui esta o link do Itch.io


Obrigado a você que leu até aqui, e pretendo melhorar nos próximos posts.

72 visualizações0 comentário

Posts recentes

Ver tudo

Kommentarer


bottom of page