Desenvolvimento de um Jogo com SDL e Box2D

Experiência e Aprendizado

Autores

  • Allan F. Oliveira de Andrade Autor
  • Eduardo H. M. da Cruz Autor
  • Helio T. Kamakawa Autor

Palavras-chave:

Desenvolvimento de Jogos 2D, C++ e SDL, Box2D

Resumo

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

12-12-2024

Como Citar

Desenvolvimento de um Jogo com SDL e Box2D: Experiência e Aprendizado. (2024). Semana De Tecnologia Da Informação Do IFPR Campus Paranavaí, 1(1). https://tecnoif.com.br/periodicos/index.php/setif/article/view/260

Artigos Semelhantes

1-10 de 134

Você também pode iniciar uma pesquisa avançada por similaridade para este artigo.

Artigos mais lidos pelo mesmo(s) autor(es)