Desenvolvimento de Archero Clone
Um Jogo de Ação 2D em C++ utilizando SDL2
Keywords:
Desenvolvimento de Jogos 2D, C++ e SDL2, Gerenciamento de MemóriaAbstract
1. Introdução
O mercado de jogos eletrônicos tem se destacado como um dos setores mais dinâmicos da indústria de entretenimento global, gerando bilhões em receita e impulsionando inovações tecnológicas significativas [Telang et al. 2023]. Além do entretenimento, os jogos expandiram sua influência para educação, treinamento profissional e terapias de saúde [Hernandez and Ortega 2010]. A indústria tem sido um catalisador para avanços em computação gráfica e realidade virtual, criando milhões de empregos e formando comunidades globais de jogadores [Pavleas et al. 2013]. O impacto cultural dos jogos é igualmente notável, influenciando a arte, a música e a narrativa contemporânea, além de formar comunidades globais de jogadores que compartilham experiências e conhecimentos.
Este trabalho apresenta o desenvolvimento do “Archero Clone”, um jogo de ação 2D em C++ utilizando SDL2. O projeto implementa mecânicas de tiro e movimentação integradas, sistemas de colisão e comportamento de inimigos. O objetivo foi criar uma base sólida para desenvolvimento de jogos, demonstrando boas práticas de programação e servindo como referência para futuros projetos na área. A escolha do desenvolvimento de um jogo inspirado em um título existente permite focar nos aspectos técnicos e de implementação, utilizando um design de jogo já validado pelo mercado.
2. Metodologia
O desenvolvimento foi realizado sem o uso de Engines em C++ utilizando a biblioteca SDL2 para o gerenciamento de janelas e eventos, complementada pelo SDL2_image para manipulação de texturas e sprites, e SDL2_mixer para o sistema de áudio. Essa combinação de tecnologias foi escolhida por sua eficiência e amplo suporte no desenvolvimento de jogos 2D, oferecendo controle de baixo nível necessário para a implementação de mecânicas precisas de jogo. A arquitetura do jogo foi estruturada utilizando padrões de design comuns na indústria de jogos, como Singleton para gerenciadores globais e State para controle dos diferentes estados do jogo (menu, jogo, pausa).
O sistema de física do jogo foi implementado de forma simplificada, focando nas colisões entre personagens e projéteis, além de garantir movimentação fluida dos personagens através de um sistema de vetores. A renderizaçãodos elementos visuais utiliza um sistema de camadas para correta ordenação dos elementos em tela, e o gerenciamento de recursos foi otimizado para manter boa performance durante o jogo. A interface do usuário foi desenvolvida com foco em minimalismo e clareza, garantindo que o jogador tenha sempre acesso às informações necessárias sem poluição visual excessiva.
3. Desenvolvimento
O “Archero Clone” é um jogo de ação 2D inspirado no título mobile Archero, incorporando mecânicas de tiro dinâmicas em um ambiente desafiador. O jogador controla um arqueiro que deve enfrentar inimigos em um nível de combate, onde cada decisão de movimento e posicionamento é crucial para a sobrevivência. A mecânica principal implementa um sistema onde tanto o protagonista quanto os inimigos disparam projéteis automaticamente quando estacionários, criando uma dinâmica única de “atirar ou mover” que força o jogador a tomar decisões táticas constantes sobre posicionamento e timing.
Durante o desenvolvimento, um dos principais desafios técnicos enfrentados foi a implementação do sistema de colisão. A solução adotada priorizou a simplicidade e eficiência, utilizando uma abordagem de verificação direta entre objetos. O sistema compara as posições e dimensões dos elementos para determinar se um objeto está contidodentro do espaço de outro, oferecendo um equilíbrio adequado entre precisão e performance para as necessidades do jogo.
Outro desafio significativo encontrado foi no gerenciamento de memória, particularmente no carregamento e manipulação de sprites. A implementação inicial carregava e montava as sprites a cada nova animação, resultando em uso excessivo de memória e processamento. Para resolver este problema, foi implementado um sistema de pré-carregamento de sprites utilizando unique_ptr do C++, um ponteiro inteligente que garante propriedade exclusiva do recurso.
Os inimigos foram projetados em duas categorias principais: estáticos, que permanecem em posições fixas atirando em intervalos regulares, e móveis, que alternam entre movimentação e ataques. Esta variedade cria situações de combate dinâmicas que exigem diferentes estratégias do jogador. O design visual adota estilo cartoon 2D, priorizando clareza durante o combate, com interface minimalista e informativa. O sistema de combate incentiva o pensamento estratégico, pois o jogador deve constantemente avaliar quando é mais vantajoso atacar ou se movimentar, considerando múltiplos inimigos simultaneamente.
4. Resultados
O projeto resultou em um jogo que reproduz as mecânicas principais do Archero original com foco na jogabilidade e performance. A implementação do sistema de gerenciamento de sprites com unique_ptr demonstrou-se altamente eficaz, pois este ponteiro inteligente gerencia automaticamente a liberação de memória quando o objeto não é mais necessário. Esta abordagem não apenas reduziu significativamente o consumo de memória, mas também melhorou a performance geral do jogo ao evitar carregamentos redundantes de recursos. O sistema de colisão simplificadoprovou-se adequado para as necessidades do projeto, proporcionando detecção funcional de interações entre objetos sem comprometer a performance.
A interface do jogo foi projetada com foco em simplicidade e clareza, com um menu principal (Figura 1(a)) contendo opções como novo jogo, melhores pontuações, créditos e saída. O layout de gameplay (Figura 1(b)) foi estruturadode forma a garantir uma navegação intuitiva e fácil compreensão dos elementos visuais, priorizando a usabilidade e a minimização da poluição visual.
Os testes realizados pelo desenvolvedor e alunos de outras instituições que participaram do evento do IFTECH, demonstraram que as otimizações implementadas resultaram em uma experiência fluida e responsiva. A separação adequada de recursos e o gerenciamento eficiente de memória contribuíram para um desempenho consistentedurante as sessões de jogo, mesmo em situações com múltiplos inimigos e projéteis na tela.
5. Conclusão
O desenvolvimento do “Archero Clone” foi bem-sucedido tanto técnica quanto educacionalmente, permitindo aplicação prática de conceitos de engenharia de software e desenvolvimento de jogos. Os principais desafios superados incluíram a implementação do sistema de física próprio e o comportamento dos inimigos. A escolha de desenvolver um jogo inspirado em um título existente provou-se uma estratégia eficaz de aprendizado, permitindo focar nos aspectos técnicos da implementação. Como trabalhos futuros, identificamos possibilidades de expansãocomo novos tipos de inimigos, múltiplos níveis e mecânicas de progressão.
References
Hernandez, F. and Ortega, F. (2010). Eberos GML2D: a graphical domain-specific language for modeling 2D video games. In Proceedings of the 2010 ACM Conference on Computer Graphics and Interactive Techniques, page 4:1.
Pavleas, J., Chang, J., Sung, K., and Zhu, R. (2013). Learn 2D Game Development with C#. Apress.
Telang, S., Patki, A., Kale, A., Jadhav, P., and Mujumdar, G. (2023). Shooting game using Unreal Engine. International Journal for Research in Applied Science and Engineering Technology.
Downloads
Published
Issue
Section
License

This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Os autores mantêm os direitos autorais sobre os trabalhos publicados nesta revista, concedendo à SETIF o direito de primeira publicação. O conteúdo está licenciado sob uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional (CC BY-SA 4.0), que permite copiar, redistribuir, remixar, transformar e criar a partir do material para qualquer finalidade, inclusive comercial, desde que seja atribuída a autoria e feita referência à publicação original nesta revista.
Os autores concordam que qualquer reutilização de seu trabalho por terceiros deve incluir o nome dos autores, o título do artigo, o nome da revista, o DOI (quando disponível) e o link para a licença.
É permitido e incentivado que os autores disponibilizem a versão publicada do trabalho em repositórios institucionais, sites pessoais ou redes acadêmicas imediatamente após a publicação, com menção à publicação inicial nesta revista.