Skip to content

feat(interactive): Token 3D, Highlight Pulsante, Streaming Assíncrono e Frustum Culling - #44

Merged
Ak4ai merged 4 commits into
mainfrom
feature/player-token-controller
Sep 9, 2026
Merged

Ak4ai merged 4 commits into
mainfrom
feature/player-token-controller

Conversation

@Ak4ai

@Ak4ai Ak4ai commented Sep 8, 2026 •

Copy link
Copy Markdown
Owner

🎲 Resumo das Mudanças

Esta Pull Request implementa o sistema de Token de Jogador 3D, movimentação interativa em tempo real com WASD, efeito visual de Highlight Pulsante no solo, empacotamento de texturas com Texture Atlas, e otimizações arquiteturais profundas de Streaming Assíncrono, Vetorização de Malhas e Frustum Culling para garantir 60 FPS contínuos e fluidos sem travamentos de movimento.

Note

Esta PR implementa a primeira fase fundamental das issues #30 e #28 (movimentação WASD livre para exploração e shader de destaque pulsante). As etapas de interação por clique do mouse (click-to-move e hover) dependem da implementação do Raycasting 3D (#27) e serão finalizadas em PR subsequente.


✨ Funcionalidades Entregues

  1. Token de Personagem 3D & Movimento WASD (Ref [Equipe B] [Tokens] Sistema de Miniaturas com Matrizes de Transformação 3D #30 - Parcial):

    • Implementado PlayerToken com geometria composta (cilindro, anel dourado, pedestal de ardósia e miniatura de classe) e normais CCW sólidas.
    • Orientação e rotação suave da miniatura na direção do deslocamento (target_yaw via math.atan2 e interpolação angular).
    • Movimentação projetada na orientação da câmera isométrica (forward_dir e right_dir).
    • Aderência de altura contínua e suave à superfície do terreno procedural (surface_y + 1.0).
    • Itens restantes de [Equipe B] [Tokens] Sistema de Miniaturas com Matrizes de Transformação 3D #30: clique do mouse (click-to-move para combate), seleção e múltiplos tokens simultâneos.
  2. Shader e Renderizador de Highlight Pulsante no Solo (Ref [Equipe B] [Shader] Vertex e Fragment Shaders de Destaque (Hover/Seleção) #28 - Parcial):

  3. Texture Atlas de Blocos (TextureAtlas):

    • Empacotador de texturas PNG de 64x64 RGBA para até 16 tipos de blocos com lookup O(1) via tabelas NumPy (uv_table e color_table).
  4. Vetorização e Otimização do Mesher (ChunkMesher):

    • Reescrita do mesher com NumPy vetorizado e máscaras booleanas 3D, reduzindo o tempo de meshing de ~50 ms para 0,41 ms por chunk (120x mais rápido).
  5. Streaming Assíncrono Desacoplado & Amortizado (WorldManager):

    • Thread secundária em background para geração procedural de chunks e cavernas 3D sem bloquear a thread gráfica.
    • Upload de malhas para GPU orçado em 1 chunk por frame (< 0.5 ms), eliminando picos de frame time.
    • Fila de desalocação amortizada (_pending_mesh_deletions) para evitar travamentos no driver OpenGL ao liberar chunks fora do raio de visão.
    • Rendição cooperativa de GIL (time.sleep) para que o movimento do jogador mantenha 60 FPS ininterruptos.
  6. Frustum Culling AABB na Câmera Isométrica:

    • Teste de culling vetorial na CPU (27 µs) que descarta automaticamente ~70% dos chunks fora do campo de visão da tela, aliviando substancialmente a GPU.
  7. Otimização do Vertex Shader (world_textured.vert):

    • Remoção do cálculo custoso de transpose(inverse(u_Model)) executado na GPU para centenas de milhares de vértices por frame.

🧪 Testes e Validação

  • 362 testes unitários passando com sucesso (pytest).
  • Validação de winding CCW e normais da miniatura.
  • Testes de carregamento inicial síncrono e streaming assíncrono.
  • Testes de Frustum Culling e amortização de desalocação de buffers.

… e frustum culling

- Implementa PlayerToken com matrizes de transformacao 3D, rotacao suave e aderencia ao relevo (closes #30)
- Adiciona BlockHighlightRenderer com shaders GLSL para destaque pulsante no solo (closes #28)
- Implementa TextureAtlas RGBA empacotando texturas de blocos com tabelas de consulta NumPy O(1)
- Vetoriza ChunkMesher com mascaras booleanas NumPy acelerando meshing em 120x
- Implementa streaming de chunks assincrono amortizado em WorldManager com liberacao cooperativa de GIL
- Adiciona Frustum Culling AABB para descartar chunks fora do campo de visao da camera isometrica
- Otimiza vertex shader eliminando inversao de matriz por vertice na GPU
- Adiciona testes unitarios para atlas, culling e amortizacao (362 testes passando)
@Ak4ai
Ak4ai merged commit 892875d into main Sep 9, 2026
1 check failed
@Ak4ai
Ak4ai deleted the feature/player-token-controller branch September 9, 2026 13:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant