Sobre este proyecto
it-programming / desktop-apps
Abierto
Estamos buscando um especialista em desenvolvimento de engines de jogos e otimização de performance para reestruturar e modernizar profundamente o código fonte de um MMORPG baseado no código 5.2 de MuOnline.
A base atual é aproximadamente: C++, C e Assembly, entre outros. O cliente utiliza OpenGL antigo (cerca de 2007, pipeline fixo), com forte dependência da CPU, pouca modularização e grande parte da lógica (jogo, rede, animação e render) rodando em uma única thread.
Principais problemas de performance hoje:
- Quedas de FPS ao trocar de mapa.
- Queda acentuada de Fps ao usar magias com muitos efeitos gráficos.
- fps abaixo de 20 com ~20+ players equipados com itens pesados (bmd com muitos polígonos, glows intensos).
- Performance degradando proporcionalmente ao número de players, efeitos, itens no chão e partículas.
Objetivo geral do projeto:
- Modernizar o motor gráfico e o pipeline de renderização.
- Reduzir drasticamente o número de draw calls e o custo por frame.
- Transferir a carga de processamento da cpu para a gpu.
- Garantir FPS alto e estável mesmo em mapas cheios, com muitos jogadores, glows e efeitos..
- Organizar e modularizar o código para facilitar manutenção e expansões.
- Preparar a base para futura versão Mobile e operação cross-platform (PC + Mobile).
Escopo técnico resumido:
1. Diagnóstico e profiling
- Mapear gargalos (render, animações, objetos, ui, rede, carregamento de mapas/texturas/bmd).
- Funções críticas de renderização (OpenGL antigo, glBegin/glEnd, etc.).
- Sistemas que mais consomem cpu (cálculo de animações, gerenciamento de objetos, efeitos, ui, rede).
- Medir fps em cenários críticos, uso de cpu/gpu e draw calls.
- Entregar relatório técnico com problemas prioritários e pontos de reestruturação.
2. Organização e modularização
- Separar em módulos claros: Core/Engine, Render/Graphics, Game Logic, UI, Network, Resources.
- Separar responsabilidades (lógica x render), centralizar configurações e reduzir código duplicado, dependências cíclicas e uso desnecessário de Assembly.
3. Motor gráfico e render
- Criar uma camada de abstração de render (ex.: IRenderer/IGraphicsDevice) para permitir trocar a API gráfica.
- Migrar de immediate mode (glBegin/Glend) para vbo/vao, index buffers e batching de personagens, itens e efeitos.
- Avaliar stack moderna: DirectX + NoesisGUI, SDL2 + OpenGL Core / OpenGL ES, ou Vulkan (se fizer sentido).
- Implementar pipeline de shaders modernos, com materiais (textura, cor, glow, transparência) e shaders padronizados para personagens, itens e partículas.
4. Game loop, threads e CPU
- Reestruturar o game loop separando render da lógica.
- Criar job system ou pool de threads para lógica pesada, animações e carregamento assíncrono de recursos.
- Garantir que a thread de render não bloqueie com I/O, rede ou carregamento de mapas.
5. Recursos, cenas e carregamento
- Implementar Resource Manager para texturas, BMD, animações e efeitos, com cache, descarregamento e preload.
- Reestruturar entrada em mapas para reduzir travamentos (carregamento progressivo / telas de loading).
- Implementar LOD para personagens, itens distantes e efeitos complexos.
6. Otimizações específicas
- Players/itens: batching por material/shader, LOD para sets e wings pesados, opção de simplificação visual em mapas cheios.
- Itens no chão: modelos/ícones otimizados à distância e ocultação de itens irrelevantes.
- Magias/partículas: sistema de partículas otimizado, atualização em lotes e limite configurável de efeitos com degradação suave (sem matar o FPS).
7. Ferramentas e testes
- Overlay de debug (FPS, ms/frame, entidades, draw calls).
- Builds de teste com flags para ativar/desativar sistemas e modo benchmark (mapa com muitos players simulados).
- Checklist de aceitação com metas de FPS em cenários definidos.
Preparação para Mobile e cross-platform:
- Uso de bibliotecas cross-platform (ex.: SDL2 para janela, input, áudio).
- Design da camada de render compatível com Desktop (OpenGL/DirectX) e Mobile (OpenGL ES/Vulkan).
- Evitar dependências específicas de Windows.
- Estruturar a base para, no futuro, compilar um cliente Mobile usando o mesmo código C++ com ajustes de UI, resolução e qualidade gráfica.
- Meta final: servidor único com jogadores de PC e Mobile jogando simultaneamente.
Perfil desejado:
- Forte experiência com C++ em jogos.
- Domínio de OpenGL moderno / DirectX / Vulkan / SDL2 / Opengl es, otimização de cpu/gpu e arquitetura de engines.
- Experiência com MMO ou muitos objetos em tela e migração de engines legadas.
- Diferenciais: Noesisgui ou ui moderna para jogos, e desenvolvimento cross-platform (pc + mobile).
Categoría Programación y Tecnología
Subcategoría Aplicaciones de escritorio
¿Cuál es el alcance del proyecto? Cambio mediano
Plazo de Entrega: No definido
Habilidades necesarias