# **SevenX Engine v0.2.8** 🎮
Uma engine de jogos **2D/3D** completa e moderna, baseada em pixels, feita em Rust. Perfeita para aprendizado, prototipagem rápida e desenvolvimento de jogos indie profissionais.
## **✨ Novidades v0.2.8** 🚀
### 🚀 **Otimizações 3D Avançadas**
- **Frustum Culling**: Não renderiza objetos fora da câmera (até 90% de economia)
- **LOD System**: 5 níveis de detalhe automáticos baseados em distância
- **Bounding Volumes**: BoundingBox e BoundingSphere para colisões rápidas
- **Culling Stats**: Estatísticas em tempo real de otimização
### 🌅 **Sistema de Skybox**
- **Cubemap**: Suporte a 6 texturas (frente, trás, esquerda, direita, topo, base)
- **Procedural**: Céu gerado por código com gradientes
- **Presets**: day_sky(), night_sky(), sunset_sky()
- **Dinâmico**: Rotação e brilho ajustáveis
- **Estrelas**: Sistema de estrelas para céu noturno
### 🔧 **Mesh 3D Avançado**
- **subdivide()**: Aumenta detalhes da mesh
- **smooth()**: Suaviza normais (smooth shading)
- **mirror()**: Espelha mesh em X, Y ou Z
- **extrude()**: Extrude faces ao longo das normais
- **apply_noise()**: Adiciona ruído para terrenos procedurais
- **optimize()**: Remove vértices duplicados
- **surface_area()**: Calcula área de superfície
- **volume()**: Calcula volume de meshes fechadas
---
## **✨ Características Principais**
### 🎯 **Sistema Completo de Componentes**
- Transform, Physics, Collider
- Arquitetura ECS-lite flexível e escalável
- Z-index para ordenação de renderização
### 🎨 **Renderização e Gráficos**
- Renderização 2D baseada em pixels
- Sistema de câmera com zoom e scroll
- Sprite sheets com animações
- Sistema de partículas completo
- Tilemap para níveis baseados em grid
### ⚡ **Física e Colisão**
- Sistema de física 2D (velocidade, aceleração, gravidade)
- Detecção de colisão AABB
- Triggers para áreas de detecção
- Gravidade global configurável
### 🔊 **Áudio**
- Reprodução de música e efeitos sonoros
- Controle de volume independente
- Sistema de cache de sons
### 🎮 **Input**
- Suporte completo a teclado
- Suporte a gamepad (botões e eixos analógicos)
- Deadzone configurável
### 🖼️ **UI**
- Botões interativos
- Renderização de texto bitmap
- Primitivas de desenho (retângulos, bordas)
### 📡 **Sistema de Eventos**
- Eventos customizáveis
- Sistema de callbacks
- Fila de eventos assíncrona
### 💾 **Serialização**
- Salvar/carregar níveis em JSON ou TOML
- Editor de níveis incluído
- Propriedades customizáveis
### 🎲 **Sistema 3D v0.1.1** (Release Oficial)
- **14 Primitivas 3D**: Cube, Sphere, Cylinder, Cone, Pyramid, Capsule, Torus, Icosphere, Prism, Plane, Quad, Grid, Ring, Star
- **7 Shaders 3D**: Phong, Toon, Fresnel, Normal Map, Reflection, Fog, Wireframe
- **Skybox**: Cubemap e procedural com presets (dia, noite, pôr do sol)
- **LOD System**: 5 níveis de detalhe automáticos
- **Frustum Culling**: Até 90% de economia de performance
- **Manipulação Avançada**: 8 métodos (subdivide, smooth, mirror, extrude, etc)
- **Carregamento de Modelos**: Suporte a OBJ
### 💡 **Iluminação 2D** NOVO v0.2.6
- Point Lights (luzes pontuais)
- Spot Lights (luzes direcionais)
- Directional Lights (iluminação uniforme)
- Luzes coloridas com intensidade
- Luz ambiente configurável
- Sistema de múltiplas luzes dinâmicas
### 🎨 **Post-Processing** NOVO v0.2.6
- Bloom (brilho intenso)
- Vignette (escurecimento nas bordas)
- Color Grading (contraste, saturação, brilho)
- Motion Blur (preparado)
- Chromatic Aberration (preparado)
- Múltiplos efeitos simultâneos
### 🗺️ **Pathfinding** NOVO v0.2.6
- Algoritmo A* otimizado
- Navegação em grid com obstáculos
- Movimento diagonal opcional
- Obstáculos dinâmicos
- Heurísticas Manhattan e Euclidiana
## **🚀 Instalação Rápida**
```toml
[dependencies]
sevenx_engine = "0.2.8"
```
Com áudio:
```toml
[dependencies]
sevenx_engine = { version = "0.2.8", features = ["audio"] }
```
Com multiplayer:
```toml
[dependencies]
sevenx_engine = { version = "0.2.8", features = ["multiplayer"] }
```
## **📖 Exemplo Mínimo**
```rust
use sevenx_engine::*;
struct MeuJogo {
player_x: f32,
player_y: f32,
}
impl GameState for MeuJogo {
fn new() -> Self {
Self { player_x: 400.0, player_y: 300.0 }
}
fn update(&mut self, dt: f32, input: &InputHandler, _world: &mut World) {
// Movimento com WASD
let (axis_x, axis_y) = input.get_movement_vector();
let speed = 200.0;
self.player_x += axis_x * speed * dt;
self.player_y += axis_y * speed * dt;
}
fn draw(&mut self, _world: &World, pixels: &mut [u8]) {
// Limpa tela
for pixel in pixels.chunks_exact_mut(4) {
pixel.copy_from_slice(&[20, 25, 35, 255]);
}
// Desenha player
let mut prims = Primitives2D::new(pixels, 800, 600);
prims.draw_circle_filled(
self.player_x as i32,
self.player_y as i32,
20,
[100, 200, 255, 255]
);
}
}
fn main() {
let config = EngineConfig {
window_title: "Meu Jogo".to_string(),
window_width: 800,
window_height: 600,
..Default::default()
};
Engine::with_config(config).run::<MeuJogo>();
}
```
## **🎮 Exemplos Incluídos**
```bash
# Básicos
cargo run --example jogo_teste # Exemplo básico
cargo run --example physics_demo # Física e gravidade
cargo run --example tilemap_demo # Sistema de tilemap
cargo run --example particles_demo # Partículas e efeitos
# 3D
cargo run --example advanced_3d_demo # LOD, Frustum Culling, Skybox
cargo run --example fps_3d_game # FPS 3D completo
cargo run --example platformer_3d # Plataforma 3D
cargo run --example lighting_demo # Sistema de iluminação
# Avançados
cargo run --example custom_shaders_demo # Shaders customizáveis
cargo run --example graphics_settings_demo # Configurações gráficas
cargo run --example multiplayer_demo # Multiplayer
cargo run --example complete_game # Jogo completo
cargo run --example level_editor # Editor de níveis
```
## **📚 Documentação**
- [Guia Completo](GUIDE.md) - Tutorial detalhado
- [Padrões de Design](PATTERNS.md) - Soluções e boas práticas
- [Changelog](CHANGELOG.md) - Histórico de versões
## **🎯 Casos de Uso**
- ✅ Jogos de plataforma 2D
- ✅ Top-down shooters
- ✅ Puzzle games
- ✅ Roguelikes
- ✅ Prototipagem rápida
- ✅ Game jams
- ✅ Aprendizado de desenvolvimento de jogos
## **🛠️ Tecnologias**
- **Rust** - Linguagem segura e performática
- **pixels** - Renderização de pixels
- **winit** - Gerenciamento de janelas
- **serde** - Serialização
- **image** - Carregamento de imagens
## **🗺️ Roadmap**
- [x] Sistema de componentes ✅
- [x] Física 2D ✅
- [x] Sistema de câmera ✅
- [x] Áudio ✅
- [x] Partículas ✅
- [x] Tilemap ✅
- [x] UI avançado ✅
- [x] Gamepad ✅
- [x] Eventos ✅
- [x] Serialização ✅
- [x] Networking multiplayer ✅
- [x] Shaders customizáveis ✅
- [x] Sistema 3D completo ✅
- [x] LOD e Frustum Culling ✅
- [x] Skybox ✅
- [ ] Sistema de diálogos avançado
- [ ] Editor visual de níveis
- [ ] Física 3D
- [ ] Animações 3D (skeletal)
## **🤝 Contribuindo**
Contribuições são muito bem-vindas! Veja como ajudar:
1. Fork o projeto
2. Crie uma branch (`git checkout -b feature/MinhaFeature`)
3. Commit suas mudanças (`git commit -m 'Adiciona MinhaFeature'`)
4. Push para a branch (`git push origin feature/MinhaFeature`)
5. Abra um Pull Request
## **📄 Licença**
Dual-licensed sob MIT ou Apache 2.0, à sua escolha.
## **🌟 Showcase**
Fez algo legal com a SevenX Engine? Abra uma issue para adicionar seu projeto aqui!
## **💬 Comunidade**
- GitHub Issues: Bugs e sugestões
- Discussions: Perguntas e discussões
- Discord: [Em breve]
## **🙏 Agradecimentos**
Obrigado a todos que contribuíram e testaram a engine!
---
**Feito com ❤️ em Rust**