o
odinpkg.dev
packages / library / odin-projects

odin-projects

f09f139library

No description provided.

No license · updated 4 months ago

odin-projects Raylib + Odin - 50 Desafios de Jogos Incrementais

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)

  1. Quadrado Controlável

Objetivo: Criar um quadrado que responde às teclas direcionais Conceitos: Input básico, renderização de formas, loop de jogo Dificuldade: ⭐

  1. 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: ⭐

  1. Pulo Simples

Objetivo: Implementar pulo com física de gravidade ao pressionar espaço Conceitos: Física básica, velocidade vertical, aceleração Dificuldade: ⭐⭐

  1. 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: ⭐

  1. Aceleração Gradual

Objetivo: Movimento que acelera e desacelera suavemente (não instantâneo) Conceitos: Interpolação linear, easing, delta time Dificuldade: ⭐⭐

  1. Rotação em Movimento

Objetivo: Objeto que gira enquanto se desloca pela tela Conceitos: Transformações, ângulos, rotação de sprites Dificuldade: ⭐

  1. Animação de Caminhada

Objetivo: Personagem com sprite sheet que anima ao se mover Conceitos: Sprite sheets, frame timing, animação por frames Dificuldade: ⭐⭐

  1. Movimento 8 Direções

Objetivo: Controle direcional completo com velocidade normalizada Conceitos: Vetores 2D, normalização, movimento diagonal Dificuldade: ⭐⭐

  1. Dash/Teleporte

Objetivo: Movimento rápido instantâneo em uma direção ao pressionar tecla Conceitos: Cooldowns, impulso de velocidade, trail effects (opcional) Dificuldade: ⭐⭐

  1. 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)

  1. Coletor

Objetivo: Colete itens que aparecem em posições aleatórias Conceitos: Spawning aleatório, detecção de colisão simples, contador Dificuldade: ⭐⭐

  1. Esquiva

Objetivo: Desvie de objetos que caem do topo da tela Conceitos: Múltiplos objetos, game over, dificuldade progressiva Dificuldade: ⭐⭐

  1. Snake (Cobrinha)

Objetivo: Clone do clássico jogo da cobrinha Conceitos: Arrays/listas, seguimento de cauda, grid movement Dificuldade: ⭐⭐⭐

  1. Pong

Objetivo: Pong contra parede ou IA básica Conceitos: Física de rebatida, IA simples (follow), placar Dificuldade: ⭐⭐

  1. Breakout/Arkanoid

Objetivo: Quebre blocos com uma bola e raquete Conceitos: Grid de objetos, física de ângulos, destruição de objetos Dificuldade: ⭐⭐⭐

  1. Tag (Toque o Alvo)

Objetivo: Toque em alvos que aparecem antes do tempo acabar Conceitos: Timer, score, respawn dinâmico Dificuldade: ⭐⭐

  1. Labirinto

Objetivo: Navegue por um labirinto com colisão em paredes Conceitos: Tilemap, colisão com tiles, level design Dificuldade: ⭐⭐⭐

  1. Flappy Bird

Objetivo: Clone do Flappy Bird com obstáculos Conceitos: Scroll infinito, gap generation, timing preciso Dificuldade: ⭐⭐⭐

  1. Corrida Top-Down

Objetivo: Dirija um carro em uma pista vista de cima Conceitos: Controles de direção, velocidade variável, checkpoints Dificuldade: ⭐⭐⭐

  1. 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)

  1. Clicker Básico

Objetivo: Clique para ganhar pontos e comprar melhorias Conceitos: Sistema de upgrade, valores incrementais, UI simples Dificuldade: ⭐⭐

  1. Cookie Clicker Minimalista

Objetivo: Versão mini do famoso idle game Conceitos: Produção passiva, múltiplos upgrades, grandes números Dificuldade: ⭐⭐⭐

  1. Defesa de Torre Única

Objetivo: Uma torre atira em ondas de inimigos Conceitos: Targeting, ondas programadas, balanceamento Dificuldade: ⭐⭐⭐

  1. Space Invaders

Objetivo: Clone simplificado do clássico arcade Conceitos: Formação de inimigos, padrão de movimento, vidas Dificuldade: ⭐⭐⭐

  1. Fruit Ninja 2D

Objetivo: Corte frutas que aparecem na tela Conceitos: Detecção de linha/arrasto, particle effects, combo system Dificuldade: ⭐⭐⭐

  1. Jogo da Memória

Objetivo: Encontre pares de cartas correspondentes Conceitos: Estados de objetos, comparação, shuffle algorithm Dificuldade: ⭐⭐

  1. 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: ⭐⭐⭐⭐

  1. Match-3 Básico

Objetivo: Combine 3 ou mais peças iguais Conceitos: Grid matching, swap logic, cascade/gravity Dificuldade: ⭐⭐⭐⭐

  1. Minesweeper (Campo Minado)

Objetivo: Clone do clássico jogo de lógica Conceitos: Geração de mapa, flood fill, recursão Dificuldade: ⭐⭐⭐

  1. 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)

  1. Platformer Multi-Níveis

Objetivo: Jogo de plataforma com 3-5 fases distintas Conceitos: Level loading, transições, save de progresso Dificuldade: ⭐⭐⭐⭐

  1. 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: ⭐⭐⭐

  1. Tower Defense 2-3 Torres

Objetivo: TD completo com tipos variados de torres Conceitos: Pathfinding básico, range detection, economia de jogo Dificuldade: ⭐⭐⭐⭐

  1. RPG de Batalha por Turnos

Objetivo: Sistema de combate estilo JRPG clássico Conceitos: Estados de turno, stats, skills, UI complexa Dificuldade: ⭐⭐⭐⭐

  1. Fazenda Incremental

Objetivo: Plante, colha e expanda sua fazenda Conceitos: Sistemas de tempo, crescimento, economia cíclica Dificuldade: ⭐⭐⭐

  1. Corrida com Obstáculos

Objetivo: Jogo de corrida com itens colecionáveis e perigos Conceitos: Parallax scrolling, geração procedural, physics Dificuldade: ⭐⭐⭐

  1. Zelda-like Top-Down

Objetivo: Aventura com combate e exploração Conceitos: Room transitions, sistema de combate, inimigos com IA Dificuldade: ⭐⭐⭐⭐

  1. Metroidvania Miniatura

Objetivo: 2-3 salas interconectadas com backtracking Conceitos: Unlockable abilities, mapa interconectado, gating Dificuldade: ⭐⭐⭐⭐

  1. Bullet Hell

Objetivo: Desvie de padrões complexos de projéteis Conceitos: Padrões matemáticos de tiro, hitbox preciso, performance Dificuldade: ⭐⭐⭐⭐

  1. 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)

  1. Sistema de Inventário Visual

Objetivo: Inventário com drag-and-drop funcional Conceitos: UI avançada, mouse interaction, data structures Dificuldade: ⭐⭐⭐⭐

  1. Jogo de Física

Objetivo: Empilhe e manipule objetos com física realista Conceitos: Physics engine, constraints, stability Dificuldade: ⭐⭐⭐⭐

  1. Sistema de Partículas

Objetivo: Showcase de efeitos: fogo, explosões, magia Conceitos: Particle systems, pooling, performance optimization Dificuldade: ⭐⭐⭐

  1. Simulador de Ecossistema

Objetivo: Predadores caçam presas em ambiente simulado Conceitos: IA comportamental, simulação emergente, balanceamento Dificuldade: ⭐⭐⭐⭐⭐

  1. Estratégia em Grid

Objetivo: Jogo de estratégia por turnos tipo tabuleiro Conceitos: Turn management, fog of war, AI opponent Dificuldade: ⭐⭐⭐⭐⭐

  1. Grappling Hook

Objetivo: Plataformer com gancho para balanço Conceitos: Verlet integration, rope physics, momentum Dificuldade: ⭐⭐⭐⭐⭐

  1. Puzzle de Blocos Deslizantes

Objetivo: Deslize blocos para resolver quebra-cabeças Conceitos: Puzzle logic, move validation, undo system Dificuldade: ⭐⭐⭐⭐

  1. Sistema de Diálogo

Objetivo: Conversas com NPCs e escolhas ramificadas Conceitos: Text parsing, branching narratives, state management Dificuldade: ⭐⭐⭐⭐

  1. Editor de Níveis

Objetivo: Ferramenta para criar níveis do seu próprio jogo Conceitos: Tool development, serialização, UI complexa Dificuldade: ⭐⭐⭐⭐⭐

  1. 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! 🎮