Um repositório de aprendizado progressivo para desenvolvimento de jogos usando Raylib e Odin. Este projeto contém 50 desafios cuidadosamente organizados para levar você de conceitos básicos a sistemas complexos de jogos. 📋 Sobre o Projeto Este repositório é uma jornada de aprendizado estruturada em 5 níveis de dificuldade crescente. Cada desafio foi projetado para construir sobre os conceitos anteriores, permitindo que você desenvolva habilidades sólidas de programação de jogos de forma gradual e consistente. Por que Raylib + Odin?
Raylib: Biblioteca de jogos simples e direta, perfeita para aprendizado Odin: Linguagem moderna, rápida e com sintaxe clara
🎮 Estrutura dos Desafios 🟢 Nível 1: Jogos Básicos de Movimento (1-10)
- Quadrado Controlável
Objetivo: Criar um quadrado que responde às teclas direcionais Conceitos: Input básico, renderização de formas, loop de jogo Dificuldade: ⭐
- Círculo Seguidor
Objetivo: Fazer um círculo seguir suavemente a posição do mouse Conceitos: Input do mouse, interpolação de movimento, coordenadas Dificuldade: ⭐
- Pulo Simples
Objetivo: Implementar pulo com física de gravidade ao pressionar espaço Conceitos: Física básica, velocidade vertical, aceleração Dificuldade: ⭐⭐
- Ricochete nas Bordas
Objetivo: Sprite que inverte direção ao tocar os limites da tela Conceitos: Detecção de bordas, inversão de vetores Dificuldade: ⭐
- Aceleração Gradual
Objetivo: Movimento que acelera e desacelera suavemente (não instantâneo) Conceitos: Interpolação linear, easing, delta time Dificuldade: ⭐⭐
- Rotação em Movimento
Objetivo: Objeto que gira enquanto se desloca pela tela Conceitos: Transformações, ângulos, rotação de sprites Dificuldade: ⭐
- Animação de Caminhada
Objetivo: Personagem com sprite sheet que anima ao se mover Conceitos: Sprite sheets, frame timing, animação por frames Dificuldade: ⭐⭐
- Movimento 8 Direções
Objetivo: Controle direcional completo com velocidade normalizada Conceitos: Vetores 2D, normalização, movimento diagonal Dificuldade: ⭐⭐
- Dash/Teleporte
Objetivo: Movimento rápido instantâneo em uma direção ao pressionar tecla Conceitos: Cooldowns, impulso de velocidade, trail effects (opcional) Dificuldade: ⭐⭐
- Plataforma Móvel
Objetivo: Plataforma que se move e carrega o jogador junto Conceitos: Movimento relativo, parent-child relationships, colisão Dificuldade: ⭐⭐⭐
🔵 Nível 2: Jogos com Colisão e Objetivos (11-20)
- Coletor
Objetivo: Colete itens que aparecem em posições aleatórias Conceitos: Spawning aleatório, detecção de colisão simples, contador Dificuldade: ⭐⭐
- Esquiva
Objetivo: Desvie de objetos que caem do topo da tela Conceitos: Múltiplos objetos, game over, dificuldade progressiva Dificuldade: ⭐⭐
- Snake (Cobrinha)
Objetivo: Clone do clássico jogo da cobrinha Conceitos: Arrays/listas, seguimento de cauda, grid movement Dificuldade: ⭐⭐⭐
- Pong
Objetivo: Pong contra parede ou IA básica Conceitos: Física de rebatida, IA simples (follow), placar Dificuldade: ⭐⭐
- Breakout/Arkanoid
Objetivo: Quebre blocos com uma bola e raquete Conceitos: Grid de objetos, física de ângulos, destruição de objetos Dificuldade: ⭐⭐⭐
- Tag (Toque o Alvo)
Objetivo: Toque em alvos que aparecem antes do tempo acabar Conceitos: Timer, score, respawn dinâmico Dificuldade: ⭐⭐
- Labirinto
Objetivo: Navegue por um labirinto com colisão em paredes Conceitos: Tilemap, colisão com tiles, level design Dificuldade: ⭐⭐⭐
- Flappy Bird
Objetivo: Clone do Flappy Bird com obstáculos Conceitos: Scroll infinito, gap generation, timing preciso Dificuldade: ⭐⭐⭐
- Corrida Top-Down
Objetivo: Dirija um carro em uma pista vista de cima Conceitos: Controles de direção, velocidade variável, checkpoints Dificuldade: ⭐⭐⭐
- Asteroids
Objetivo: Versão simplificada do clássico Asteroids Conceitos: Rotação de nave, tiro direcional, wrapping de tela Dificuldade: ⭐⭐⭐
🟡 Nível 3: Jogos com Sistema de Pontuação (21-30)
- Clicker Básico
Objetivo: Clique para ganhar pontos e comprar melhorias Conceitos: Sistema de upgrade, valores incrementais, UI simples Dificuldade: ⭐⭐
- Cookie Clicker Minimalista
Objetivo: Versão mini do famoso idle game Conceitos: Produção passiva, múltiplos upgrades, grandes números Dificuldade: ⭐⭐⭐
- Defesa de Torre Única
Objetivo: Uma torre atira em ondas de inimigos Conceitos: Targeting, ondas programadas, balanceamento Dificuldade: ⭐⭐⭐
- Space Invaders
Objetivo: Clone simplificado do clássico arcade Conceitos: Formação de inimigos, padrão de movimento, vidas Dificuldade: ⭐⭐⭐
- Fruit Ninja 2D
Objetivo: Corte frutas que aparecem na tela Conceitos: Detecção de linha/arrasto, particle effects, combo system Dificuldade: ⭐⭐⭐
- Jogo da Memória
Objetivo: Encontre pares de cartas correspondentes Conceitos: Estados de objetos, comparação, shuffle algorithm Dificuldade: ⭐⭐
- Tetris Simplificado
Objetivo: Tetris com 2-3 tipos de peças apenas Conceitos: Grid logic, rotação de peças, detecção de linha completa Dificuldade: ⭐⭐⭐⭐
- Match-3 Básico
Objetivo: Combine 3 ou mais peças iguais Conceitos: Grid matching, swap logic, cascade/gravity Dificuldade: ⭐⭐⭐⭐
- Minesweeper (Campo Minado)
Objetivo: Clone do clássico jogo de lógica Conceitos: Geração de mapa, flood fill, recursão Dificuldade: ⭐⭐⭐
- Jogo de Reação
Objetivo: Pressione a tecla certa quando a cor/símbolo mudar Conceitos: Random timing, input matching, highscore Dificuldade: ⭐⭐
🟠 Nível 4: Jogos com Mecânicas Expandidas (31-40)
- Platformer Multi-Níveis
Objetivo: Jogo de plataforma com 3-5 fases distintas Conceitos: Level loading, transições, save de progresso Dificuldade: ⭐⭐⭐⭐
- Shoot'em Up Vertical
Objetivo: Nave que atira em ondas de inimigos com power-ups Conceitos: Padrões de spawn, sistema de power-ups, boss (opcional) Dificuldade: ⭐⭐⭐
- Tower Defense 2-3 Torres
Objetivo: TD completo com tipos variados de torres Conceitos: Pathfinding básico, range detection, economia de jogo Dificuldade: ⭐⭐⭐⭐
- RPG de Batalha por Turnos
Objetivo: Sistema de combate estilo JRPG clássico Conceitos: Estados de turno, stats, skills, UI complexa Dificuldade: ⭐⭐⭐⭐
- Fazenda Incremental
Objetivo: Plante, colha e expanda sua fazenda Conceitos: Sistemas de tempo, crescimento, economia cíclica Dificuldade: ⭐⭐⭐
- Corrida com Obstáculos
Objetivo: Jogo de corrida com itens colecionáveis e perigos Conceitos: Parallax scrolling, geração procedural, physics Dificuldade: ⭐⭐⭐
- Zelda-like Top-Down
Objetivo: Aventura com combate e exploração Conceitos: Room transitions, sistema de combate, inimigos com IA Dificuldade: ⭐⭐⭐⭐
- Metroidvania Miniatura
Objetivo: 2-3 salas interconectadas com backtracking Conceitos: Unlockable abilities, mapa interconectado, gating Dificuldade: ⭐⭐⭐⭐
- Bullet Hell
Objetivo: Desvie de padrões complexos de projéteis Conceitos: Padrões matemáticos de tiro, hitbox preciso, performance Dificuldade: ⭐⭐⭐⭐
- Roguelike Procedural
Objetivo: Uma sala com geração procedural e morte permanente Conceitos: Algoritmos de geração, randomização, permadeath Dificuldade: ⭐⭐⭐⭐
🔴 Nível 5: Jogos com Sistemas Complexos (41-50)
- Sistema de Inventário Visual
Objetivo: Inventário com drag-and-drop funcional Conceitos: UI avançada, mouse interaction, data structures Dificuldade: ⭐⭐⭐⭐
- Jogo de Física
Objetivo: Empilhe e manipule objetos com física realista Conceitos: Physics engine, constraints, stability Dificuldade: ⭐⭐⭐⭐
- Sistema de Partículas
Objetivo: Showcase de efeitos: fogo, explosões, magia Conceitos: Particle systems, pooling, performance optimization Dificuldade: ⭐⭐⭐
- Simulador de Ecossistema
Objetivo: Predadores caçam presas em ambiente simulado Conceitos: IA comportamental, simulação emergente, balanceamento Dificuldade: ⭐⭐⭐⭐⭐
- Estratégia em Grid
Objetivo: Jogo de estratégia por turnos tipo tabuleiro Conceitos: Turn management, fog of war, AI opponent Dificuldade: ⭐⭐⭐⭐⭐
- Grappling Hook
Objetivo: Plataformer com gancho para balanço Conceitos: Verlet integration, rope physics, momentum Dificuldade: ⭐⭐⭐⭐⭐
- Puzzle de Blocos Deslizantes
Objetivo: Deslize blocos para resolver quebra-cabeças Conceitos: Puzzle logic, move validation, undo system Dificuldade: ⭐⭐⭐⭐
- Sistema de Diálogo
Objetivo: Conversas com NPCs e escolhas ramificadas Conceitos: Text parsing, branching narratives, state management Dificuldade: ⭐⭐⭐⭐
- Editor de Níveis
Objetivo: Ferramenta para criar níveis do seu próprio jogo Conceitos: Tool development, serialização, UI complexa Dificuldade: ⭐⭐⭐⭐⭐
- Mini Engine Completo
Objetivo: Combine várias mecânicas anteriores em um jogo polido Conceitos: Architecture, polish, juice, game design Dificuldade: ⭐⭐⭐⭐⭐
🚀 Como Usar Este Repositório
Clone o repositório
bashgit clone https://github.com/seu-usuario/raylib-odin-50-desafios.git
cd raylib-odin-50-desafios
2. **Comece pelo Desafio 1**
- Cada desafio tem sua própria pasta com README específico
- Tente implementar sem olhar soluções primeiro
- Use a solução de referência apenas se travar
3. **Progresso Linear**
- Complete cada desafio antes de avançar
- Os conceitos são cumulativos
- Não pule desafios - cada um ensina algo importante
## 📚 Recursos de Aprendizado
- [Documentação Raylib](https://www.raylib.com/)
- [Documentação Odin](https://odin-lang.org/docs/)
- [Raylib Cheatsheet](https://www.raylib.com/cheatsheet/cheatsheet.html)
## 💡 Dicas de Desenvolvimento
### Para Cada Desafio:
✅ **Faça funcionar primeiro** - Não se preocupe com código perfeito
✅ **Adicione estados de jogo** - Menu, gameplay, game over, restart
✅ **Reutilize código** - Crie uma biblioteca pessoal de funções úteis
✅ **Use formas geométricas** - Não perca tempo com arte no início
✅ **Foque no "game feel"** - Faça cada mecânica ser satisfatória de jogar
✅ **Comente seu código** - Você voltará a ele depois
✅ **Faça commits frequentes** - Documente sua jornada
### Organização de Código Sugerida:
desafio-XX/ ├── main.odin # Loop principal do jogo ├── game.odin # Lógica do jogo ├── entities.odin # Jogador, inimigos, etc. ├── utils.odin # Funções auxiliares reutilizáveis ├── README.md # Descrição e reflexões sobre o desafio └── assets/ # Sprites, sons (se houver) 🎯 Metas de Aprendizado Ao completar este repositório, você terá:
✅ Domínio de loops de jogo e renderização ✅ Experiência com física e colisões 2D ✅ Conhecimento de estruturas de dados para jogos ✅ Habilidade em implementar IA básica ✅ Compreensão de arquitetura de jogos ✅ Portfolio com 50 projetos jogáveis ✅ Confiança para criar seus próprios jogos
🤝 Contribuindo Contribuições são bem-vindas! Sinta-se livre para:
Adicionar soluções alternativas Melhorar descrições de desafios Reportar bugs nas implementações de referência Sugerir novos desafios
📝 Licença Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes. 🌟 Créditos Criado com ❤️ para ajudar desenvolvedores a aprenderem game dev de forma estruturada e divertida.
Comece agora mesmo com o Desafio #1 e boa jornada! 🎮