Desenvolvimento de um Jogo com SDL e Box2D
Experiência e Aprendizado
Palavras-chave:
Desenvolvimento de Jogos 2D, C++ e SDL, Box2DResumo
1. Introdução
O mercado de desenvolvimento de jogos eletrônicos é uma das indústrias de mais rápido crescimento e impacto na economia global, movimentando bilhões de dólares anualmente [Ohashi and Tanaka 2020]. Este setor proporciona experiências interativas e educacionais, além de entretenimento, o que o torna uma área de interesse tanto para o público em geral quanto para profissionais e acadêmicos de computação e design.
A complexidade técnica envolvida na criação de jogos, que combina programação, design e física, torna o desenvolvimento de jogos uma área desafiadora e enriquecedora para estudantes e desenvolvedores iniciantes. Este trabalho tem como objetivo apresentar o processo de desenvolvimento de um jogo 2D, explorando a integração de SDL e Box2D em uma arquitetura hexagonal, e discutir os desafios enfrentados, as soluções implementadas e o aprendizado adquirido ao longo do projeto.
2. Descrição do Jogo
Foi desenvolvido um jogo 2D cujo personagem principal é um gato que escala coqueiros em busca de pássaros,utilizando-se de uma mecânica baseada em habilidades de voo e escalada. O jogador utiliza as setas direcionais para movimentar o gato, enquanto a tecla “Espaço” permite ao personagem bater as asas e “B” ativa uma habilidade de planar. Com a tecla “Enter”, o gato pode segurar-se nas laterais dos coqueiros. Cada pássaro capturado confere ao jogador 10 pontos, e as aves são programadas para fugir do gato quando ele se aproxima. Essa dinâmica cria uma experiência de jogo que exige reflexos e planejamento dos movimentos.
3. Metodologia de Desenvolvimento
O projeto teve início nas matérias: Tópicos em Computação e Projeto de Software Avançado, do 4º ano do curso de Eng. de Software do Instituto Federal do Paraná campus Paranavaí, o desenvolvimento se deu nas respectivas aulas. O ambiente de desenvolvimento do projeto foi configurado inicialmente no sistema operacional Windows,utilizando o editor Visual Studio Code [Microsoft Corporation 2024]. Contudo, a migração para o sistema Linux[Canonical Ltd. 2024] possibilitou o uso de ferramentas como o CMake para o gerenciamento de builds, facilitando a organização de dependências e a configuração do projeto. Essa mudança também permitiu a execução direta em um ambiente mais próximo dos sistemas onde jogos em SDL e Box2D são frequentemente testados, oferecendo suporte consistente para bibliotecas open-source.
O GitHub [GitHub, Inc. 2024] foi utilizado para o versionamento de código durante o projeto, que foi desenvolvido em C++, com SDL [Lantinga 2024] desacoplada para renderização e Box2D [Catto 2024] como motor de física. Box2D é uma biblioteca de simulação de corpo rígido 2D para jogos. Os programadores podem usá-lo em seus jogos para fazer os objetos se moverem de maneira realista e tornar o mundo do jogo mais interativo. Do ponto de vista do motor de jogo, um motor de física é apenas um sistema para animação processual. Já o SDL (Simple DirectMedia Layer) é uma biblioteca de desenvolvimento multiplataforma projetada para fornecer acesso de baixo nível a áudio, teclado, mouse, joystick e hardware gráfico via OpenGL e Direct3D. Ele é usado por softwares de reprodução de vídeo, emuladores e jogos populares, incluindo o premiado catálogo da Valve e muitos jogos Humble Bundle.
Ambos foram integrados a uma arquitetura hexagonal, implementação que permitiu a divisão do código em camadas independentes, melhorando a modularidade e facilitando a manutenção [Vernon 2013]. Durante as aulas,foram realizadas sessões de desenvolvimento e avaliação que permitiram ajustes na mecânica do jogo, como a implementação da câmera para seguir o jogador, a criação de movimentos específicos (como planar e bater asas), e o refinamento das interações com o ambiente.
4. Demonstração do Jogo
Na Figura 1(a), observa-se o gato escalando um coqueiro, pronto para capturar um pássaro. Na Figura 1(b), o gato se encontra em voo. Na Figura 2, o gato está andando. Todas as artes foram criadas manualmente, utilizando um iPad e uma caneta digital para desenho.
(a) Gato escalando coqueiro. (b) Gato voando.Figura 1. Imagens do personagem Gato em diferentes ações.
Figura 2. Imagem do personagem Gato andando.
5. Conclusão
O desenvolvimento deste jogo proporcionou um aprendizado prático e aprofundado sobre C++ e a utilização de bibliotecas como SDL e Box2D, além de uma compreensão mais completa da arquitetura hexagonal e sua aplicação ao desenvolvimento de jogos. A experiência foi enriquecedora, pois exigiu a aplicação de conceitos de física, estruturação de código modular e design de mecânicas de jogo, resultando em um avanço significativo em habilidades técnicas e profissionais.
Adicionalmente, o processo de desenvolvimento também trouxe insights valiosos sobre gerenciamento de memória, incluindo alocação e desalocação de recursos, o que é crucial em projetos que demandam desempenho otimizado e eficiência. Esses aprendizados são fundamentais para o desenvolvimento de jogos e aplicações de software mais complexas.
Referências
Canonical Ltd. (2024). Ubuntu: The open-source operating system for Linux-based systems. Disponível em: https://ubuntu.com. Acesso em: 2024-10-26.
Catto, E. (2024). Box2D Documentation. Box2D. Disponível em: https://box2d.org/documentation/. Acesso em: 2024-10-26.
GitHub, Inc. (2024). Github: A platform for version control and collaboration. Disponível em: https://github.com/. Acesso em: 2024-10-26.
Lantinga, S. (2024). Simple DirectMedia Layer (SDL) Documentation. SDL Development Team. Disponível em: https://www.libsdl.org. Acesso em: 2024-10-26.
Microsoft Corporation (2024). Visual Studio. Microsoft. Disponível em: https://visualstudio.microsoft.com. Acesso em: 2024-10-26.
Ohashi, Y. and Tanaka, R. (2020). Game development: Challenges and innovations. In Nakamura, K. S., editor, Advances in Game Development, pages 123–134. Game Press.
Vernon, V. (2013). Implementing Domain-Driven Design. Addison-Wesley Professional, Boston, MA.
Downloads
Publicado
Edição
Seção
Licença

Este trabalho está licenciado sob uma licenç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.