sevenx_engine 0.2.11

Engine de jogos 2D/3D completa com suporte Android, física, áudio, partículas, tilemap, UI, eventos e sistema 3D avançado com PBR.
Documentation
# **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.

[English]README.md | **Português**

## **✨ 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**