Menu

Trabalhos de engenharia selecionados

Problemas resolvidos. Decisões explicadas.

Uma seleção de trabalhos públicos, com evidências de implementação.

Trabalho confidencial e NDAs

A maior parte do meu trabalho para clientes é confidencial e protegida por acordos de não divulgação (NDAs). Os projetos apresentados aqui são uma seleção de trabalhos públicos e referências aprovadas pelos clientes, não um registro completo da minha atuação.

Detalhes confidenciais, código e assets dos projetos permanecem privados.

Estudos de caso de engenharia

O contexto, as decisões e as evidências públicas por trás de cada trabalho.

Desempenho da Inicialização de Runtime C++ com Integração LuaPR público integrado
Contexto
O OpenTibiaBR Canary é um grande runtime de servidor online em C++/Lua cuja inicialização percorre scripts, dados do mapa, caches de tiles, configuração de spawns e registros de runtime.
Problema
A inicialização tinha caminhos críticos caros que atrasavam a iteração e a subida operacional do servidor.
Solução
Otimizei o carregamento Lua, o parsing do mapa, a construção do cache de tiles, a indexação de zonas e a inicialização de spawns sem alterar o comportamento esperado do runtime.
Impacto
O carregamento de scripts e módulos caiu de cerca de 54 segundos para aproximadamente 1,5–3,0 segundos nas medições públicas do PR.

Minha responsabilidade

  • Profiling e diagnóstico
  • Implementação nos caminhos críticos
  • Preservação de comportamento
  • Documentação de medições e trade-offs

Decisões técnicas

  • Priorizei os caminhos críticos da inicialização antes de alterar a arquitetura mais ampla do runtime
  • Preservei o comportamento esperado de scripts, mapas, tiles, zonas e spawns
  • Usei medições públicas de antes e depois para documentar o impacto

Evidências públicas

TecnologiasC++ · Lua · análise de desempenho · runtime de servidor

Agendamento Justo de Runtime e Computação ParalelaIntegrado e validado em campo
Contexto
Um runtime de servidor C++ de longa duração precisa manter entradas e movimentos visíveis ao jogador responsivos enquanto processa pathfinding, seleção de alvos, preparação de combate, manutenção e trabalhos assíncronos caros em segundo plano.
Problema
Filas amplas do dispatcher permitiam que grandes cargas em segundo plano competissem com tarefas sensíveis a latência. Tarefas assíncronas repetidas, decisões obsoletas, custo de ownership e fanout ilimitado também reduziam a justiça e o uso de múltiplos núcleos.
Solução
Introduzi agendamento consciente de filas, orçamentos adaptativos de runtime, computação multinúcleo limitada, snapshots imutáveis de navegação, promoção baseada em visibilidade, coalescência, telemetria de filas e validação rigorosa de conclusões obsoletas.
Impacto
Melhorei o comportamento do runtime e a responsividade percebida pelos jogadores sob cargas intensas de monstros. A arquitetura passou por 264 testes unitários e de regressão e foi validada em campo em vários servidores OT, enquanto o retorno operacional mais amplo continua sendo coletado.

Minha responsabilidade

  • Arquitetura de filas e modos de execução do dispatcher
  • Agendamento por déficit ponderado e justo entre produtores
  • Admissão limitada, backpressure e telemetria
  • Serviço paralelo de pathfinding e computação de decisões
  • Snapshots imutáveis de navegação e rejeição de resultados obsoletos
  • Validação em runtime, rollout, documentação e testes

Decisões técnicas

  • Mantive mutações do mapa, Lua, RNG, combate, condições, cooldowns e estado visível na rede no dispatcher autoritativo
  • Permiti que workers recebessem apenas valores ou snapshots imutáveis e retornassem sugestões
  • Limitei todas as filas e reservei capacidade de conclusão para requisições aceitas
  • Revalidei geração da entidade, posição, época e revisões de topologia antes de aplicar resultados dos workers
  • Adaptei os orçamentos de segundo plano à latência percebida pelo jogador, preservando a justiça entre produtores
  • Usei backlog exato e sustentado para alertas, sem tratar amostras transitórias de histograma como incidentes

TecnologiasC++ · concorrência · round robin ponderado por déficit · filas limitadas · snapshots imutáveis · telemetria de runtime

Arquitetura de Rede Multiprotocolo em RuntimeIntegrado e validado em campo
Contexto
Um runtime cliente/servidor C++ precisava atender às famílias de clientes modernos 15.x, protocolo antigo 11.00 e compatíveis 8.60 sem binários ou portas separados nem verificações frágeis de versão espalhadas pela pilha de protocolo.
Problema
As famílias de clientes diferem no enquadramento TCP, checksums, layout de criptografia, compactação, handshake, payloads de login, assinaturas de assets, mapeamento de itens e campos de mensagens específicos por versão.
Solução
Implementei codecs de transporte, comportamento da conexão inicial, perfis de protocolo em runtime, indicações de sessão, contratos de payload condicionados por versão, testes de compatibilidade, perfis de exportação de assets legados e empacotamento coordenado de releases do cliente.
Impacto
Três famílias de clientes compartilham agora um runtime C++ e um modelo de implantação validados em campo, sem exigir portas ou builds de servidor separados por versão.

Minha responsabilidade

  • Arquitetura de codecs de transporte e perfis
  • Contratos de perfil de protocolo e feature flags
  • Layouts de login de conta e de jogo
  • Resolução de indicações de sessão entre as conexões de login e jogo
  • Atualizações de compatibilidade do cliente atual e depuração de pacotes
  • Exportação de assets legados e integração de releases versionados do cliente

Decisões técnicas

  • Separei o enquadramento de transporte do comportamento das features de protocolo
  • Mantive o perfil moderno como padrão seguro quando não existe uma indicação legada válida
  • Usei feature flags explícitas no perfil em vez de acumular comparações diretas de versão
  • Permiti que a política bloqueasse um perfil detectado sem deixá-la inferir o enquadramento legado
  • Resolvi perfis compatíveis a partir de indicações de sessão, dados de protocolo e assinaturas de assets
  • Preservei fallbacks legados enquanto corrigia os limites de pacotes do cliente atual

TecnologiasC++ · enquadramento TCP · XTEA · checksums · compactação · perfis de protocolo · feature flags · testes unitários

Otimização do Sistema de Build C++ e do Empacotamento do ProtobufCommit público no upstream
Contexto
Alguns fluxos C++ com gerenciadores de pacotes e builds cruzados usam um protoc do host, enquanto os pacotes de destino precisam apenas de protobuf::libprotobuf-lite.
Problema
O pacote do Protobuf para o destino ainda podia pagar o custo de build e instalação do runtime completo e de artefatos do compilador que o grafo de dependências do destino não utilizava.
Solução
Implementei no upstream do Protobuf o suporte CMake a um build limitado do runtime lite e contribuí com a alteração do port vcpkg que torna libprotoc opcional em builds para destinos não nativos.
Impacto
A alteração no Protobuf foi integrada via Copybara no commit público 7c090172. A PoC local mediu a queda da etapa de build de 508,063s para 55,648s e do espaço instalado de 113.754 KB para 21.579 KB.

Minha responsabilidade

  • Definição do problema para o upstream
  • Implementação em CMake
  • Atualização do pacote vcpkg
  • Iteração com mantenedores
  • Verificação do commit integrado

Decisões técnicas

  • Mantive inalterado o comportamento padrão do Protobuf
  • Adicionei um modo estrito somente lite quando artefatos do compilador, testes, conformidade, exemplos e upb estão desativados
  • Exportei e instalei apenas os targets que realmente existem
  • Interpretei o estado fechado do PR do Protobuf pelo commit público integrado via Copybara, não pelo indicador de merge do GitHub

TecnologiasCMake · vcpkg · Protocol Buffers · gerenciamento de pacotes · builds cruzados

Segurança do Estado de Runtime e da PersistênciaPR público integrado
Contexto
Fluxos de market, inbox e salvamento offline precisam de invariantes fortes para itens e persistência. Pequenos erros podem duplicar ou perder itens e sobrescrever progresso válido do jogador.
Problema
Inboxes cheios, divisão de stacks, inserções parciais, clonagem do market e salvamentos parciais de jogadores offline tinham casos extremos nos quais a ordem das mutações podia corromper o estado.
Solução
Fortaleci os caminhos de inserção do inbox e do market com verificações de capacidade, clonagem e inserção mais seguras, helpers de inserção em lote e proteções no salvamento offline.
Impacto
Reduzi o risco de itens duplicados ou fantasmas, perda de itens e regressões de progresso nos fluxos de economia e persistência.

Minha responsabilidade

  • Lógica de validação de capacidade
  • Tratamento de itens empilháveis e não empilháveis
  • Inserção atômica em lote
  • Proteção do salvamento offline
  • Testes e cobertura de casos extremos

Decisões técnicas

  • Validei a capacidade antes de alterar o estado dos itens
  • Adicionei comportamento de inserção somente para teste e dry-run nas verificações prévias
  • Tratei explicitamente itens empilháveis e não empilháveis
  • Centralizei a inserção para reduzir lógica duplicada de movimentação de itens
  • Evitei salvar estado incompleto de jogadores offline sobre campos persistentes válidos

TecnologiasC++ · persistência SQL · contêineres de inventário · segurança de dados · testes

Auditor de Integridade de Conteúdo Consciente de PerfisPR público integrado
Contexto
Um grande runtime C++/Lua carrega perfis de conteúdo mutuamente exclusivos com scripts Lua, registros XML, definições de itens em Protobuf, storages, actions, movements, weapons, spells, monstros e NPCs.
Problema
Definições entre perfis podiam satisfazer umas às outras incorretamente, expressões Lua dinâmicas podiam ser confundidas com referências autoritativas, intervalos XML inválidos podiam ser ignorados silenciosamente pelo runtime e varreduras ingênuas do repositório inteiro produziam resultados ruidosos ou inseguros.
Solução
Construí um auditor determinístico e consciente de perfis que produz registros tipados de símbolos, relatórios de referências, cobertura de itens não resolvidos, fingerprints estáveis, anotações de CI e artefatos JSON/Markdown validados por schemas incluídos.
Impacto
Analisei 39.311 fatos em dois perfis de runtime, corrigi oito erros bloqueantes de conteúdo, reduzi os achados de storage de 1.225 para 405 ao remover falsos positivos e concluí 72 testes sem erros restantes na varredura.

Minha responsabilidade

  • Arquitetura da análise estática e CLI em Python
  • Extração consciente de perfis e modelo de símbolos
  • Análise de dados Lua, XML e Protobuf
  • Artefatos determinísticos validados por schema
  • Segurança de caminhos, limites de recursos e saída atômica
  • Gate de CI, fingerprints de baseline, documentação e testes

Decisões técnicas

  • Mantive os perfis mutuamente exclusivos isolados durante toda a extração e validação
  • Usei análise Lua conservadora e deixei expressões dinâmicas sem resolução em vez de fabricar referências ausentes
  • Analisei campos autoritativos do Protobuf em vez de tratar todo valor numérico como definição de item
  • Rejeitei escapes por symlink e limitei os caminhos de descoberta e saída ao repositório
  • Apliquei limites de tokens, fatos, diagnósticos e achados a entradas grandes ou adversariais
  • Incluí a multiplicidade das ocorrências nos fingerprints semânticos para que dispensas não escondessem novas duplicidades

Evidências públicas

TecnologiasPython · análise Lua · XML · Protocol Buffers · JSON Schema · análise estática · GitHub Actions

Plataforma Versionada de Entrega de Assets e Releases do ClienteProduto público
Contexto
A entrega do cliente precisava atender a conjuntos de assets modernos e legados, módulos por servidor, downloads públicos do launcher, visibilidade de catálogo, monitoramento operacional e metadados versionados de atualização sem expor detalhes privados de implementação.
Problema
A distribuição para parceiros não era um problema de download único. Diferentes servidores e versões de cliente exigiam árvores de assets, conjuntos de módulos, objetivos de inicialização, cadência de atualização, seleção de arquivos, integridade de catálogo, notícias, monitoramento e regras de entrega isolados por um ponto público controlado.
Solução
Integrei automação de assets no cliente, fluxos de entrega por launcher/API, arquivos associados à versão, validação de catálogo, carregamento de assets e módulos por servidor, regras de parceiros, monitoramento administrativo, APIs de notícias, metadados assinados e suporte a releases.
Impacto
Oferece a jogadores e operadores um caminho controlado de download e atualização, evitando pacotes de versão incorreta, corrigindo 11 colisões de spritesheets e preservando a separação entre pacotes por servidor e operações confidenciais de parceiros.

Minha responsabilidade

  • Integração do launcher e runtime no cliente
  • Fluxo multisservidor orientado por catálogo
  • Download e instalação automáticos de assets
  • Extração de arquivos e verificações de integridade
  • Seleção de arquivos de release por versão
  • Validação de colisões no catálogo de spritesheets
  • Monitoramento de assets e APIs de notícias no painel administrativo
  • Suporte a releases no Windows

Decisões técnicas

  • Mantive os arquivos finais do runtime nos caminhos de assets existentes no cliente, sem criar uma segunda fonte de verdade
  • Priorizei instalação por arquivo compactado com fallback para manifesto
  • Associei os arquivos de release à versão de cliente solicitada, sem aceitar apenas o primeiro arquivo com extensão compatível
  • Reservei nomes de spritesheets gerados em cada lote de importação e falhei de forma segura diante de entradas ausentes ou duplicadas
  • Mantive assets, módulos, metadados de inicialização e visibilidade de catálogo por servidor separados nas regras de entrega
  • Limitei as alegações públicas à superfície atual do launcher no Windows e às evidências de PRs públicos
  • Mantive nomes de repositórios privados, código, endpoints internos, material de assinatura e detalhes de assets fora do conteúdo público

TecnologiasC++ · Lua · Go · entrega de assets · integridade de catálogo · launcher/API · operação de releases · monitoramento

Otimização de Carga, Salvamento e Renderização de Grandes Volumes de DadosPR público integrado
Contexto
O Remere's Map Editor é uma ferramenta desktop C++ de longa duração usada para inspecionar, editar, carregar, salvar, renderizar e exportar grandes conjuntos de dados de mapas e assets do cliente.
Problema
Fluxos com mapas grandes tinham custos excessivos de alocação, travessia, E/S binária, salvamento, invalidação de repintura e exportação de assets gerados.
Solução
Adicionei alocação em pool, cache de buscas de floors e tiles, melhorias em E/S binária, travessia otimizada no salvamento, redução de repinturas desnecessárias e suporte à exportação de assets de mapas grandes.
Impacto
As métricas públicas dos PRs registram a queda das recargas de slabs de 17.830 para 2.230, da parcela de CPU de alocação de 20,01% para 14,62% e da CPU amostrada em uma viewport estática de 139.767 para 126.

Minha responsabilidade

  • Profiling e diagnóstico
  • Alterações no alocador e na travessia
  • Melhorias em E/S binária e no salvamento
  • Alterações na invalidação da renderização
  • Suporte à exportação de Cyclopedia/staticdata
  • Métricas públicas de antes e depois nos PRs

Decisões técnicas

  • Adicionei um alocador por slabs para objetos pequenos nos caminhos críticos de Item, Tile e Floor
  • Mantive em cache a busca de floors e tiles e atribuí localizações de tiles diretamente durante o parsing
  • Usei travessia direta das localizações de tiles durante o salvamento para reduzir buscas repetidas
  • Separei a atualização de cena suja da atualização apenas de overlays para que overlays estáticos não invalidassem a renderização em cache do mapa
  • Mantive a exportação de assets da Cyclopedia focada nos caminhos Protobuf/staticdata e documentei candidatos de otimização adiados

Evidências públicas

TecnologiasC++ · trabalho no alocador · E/S binária · renderização · Protocol Buffers

Competências e ferramentas

Sistemas Fundamentais

Arquitetura de runtime, concorrência e sistemas C++/Lua sensíveis a desempenho.

C++ · Lua · arquitetura de runtime · concorrência · agendamento limitado · profiling · gerenciamento de memória · otimização de caminhos críticos

Protocolos e Redes

Contratos de transporte, perfis de runtime, compatibilidade e ferramentas de protocolo.

fluxos cliente/servidor TCP · codecs de transporte · perfis de protocolo em runtime · compatibilidade binária · Protobuf · fluxos de login e sessão

Build e Plataforma

Builds multiplataforma, empacotamento e fluxos de desenvolvimento.

CMake · vcpkg · GitHub Actions · Docker · integridade de releases · fluxos Linux / Windows

Confiabilidade e Segurança de Dados

Mutação de estado, persistência, validação determinística e correção de runtime.

SQL / MariaDB · invariantes de persistência · segurança de mutações · análise estática determinística · validação de schema · cobertura de testes

Entrega de Produtos

Superfícies públicas de entrega, integração launcher/API e operação de releases.

integração launcher/API · entrega de assets · metadados assinados · telemetria · relatórios de falha · operação de releases

Inteligência Artificial (IA) para Engenharia de Software

Trabalho técnico de apoio ao treinamento de modelos de IA para código, fundamentado em experiência real de engenharia e contribuições open source.

apoio ao treinamento de modelos de código · raciocínio sobre código · C++ · depuração · análise de desempenho · sistemas open source

Medições e resultados

~54s → 1.5-3.0s

inicialização do runtime

Redução do tempo de inicialização do servidor C++/Lua em medições públicas do PR.

Canary PR #3968

47.93% → 18.02%

distribuição de tarefas assíncronas

Redução da parcela inclusiva de CPU amostrada durante uma carga documentada de estresse com monstros.

Canary PR #4023

508s → 55s

etapa de build em PoC

Redução do tempo de build do runtime lite do Protobuf em medições locais de PoC.

Commit integrado no Protobuf

3 famílias / 1 runtime

arquitetura de protocolo

Suporte às famílias de clientes modernos 15.x, 11.00 e 8.60 sem portas ou builds separados por versão.

Canary PR #4009

139,767 → 126

CPU amostrada

Redução da CPU amostrada na renderização de uma viewport estática.

RME PR #188

17,830 → 2,230

recargas do alocador

Redução das recargas de slabs do alocador durante operações em mapas grandes.

RME PR #188
Contribuições de código aberto

Diagnóstico / Observabilidade de Runtime

Backend de Logs do OTClient

Adicionei o backend spdlog, centralização de logs, níveis, formatação, saída em arquivo e tratamento mais seguro de logs HTTP.

PR público integrado

Estabilidade de Runtime / Segurança de Dados

Segurança de Dados no Market e Inbox

Fortaleci a inserção no inbox com verificações de capacidade, tratamento de stacks, atomicidade e testes.

PR público integrado

Engenharia de Release / CI

Integridade de Releases entre Repositórios

Vinculei tags exatas de releases de cliente e servidor, validei pacotes obrigatórios antes da publicação e preservei os metadados autoritativos do cliente.

PR público integrado
Ver mais contribuições

Experiência do Operador / Estabilidade

Erros Estruturados no Login-server

Adicionei erros públicos estruturados, orientações administrativas, validação de configuração e testes.

PR público integrado

Segurança / Sistemas de Build

Backend RSA com Mbed TLS

Migrei a abstração do backend RSA de login do uso de OpenSSL para Mbed TLS.

PR público integrado

Validação de Runtime / Plataforma

Pilha de Runtime Reproduzível e Smoke Tests

Validei a inicialização do runtime no Linux, macOS e Windows e forneci um quickstart Docker com serviços de banco de dados e login.

PR público integrado

Engenharia de Protocolo entre Repositórios

Fluxo de Protocolo e Login para Livestream

Conectei sessões de visualização somente leitura ao estado do runtime C++, restrições de protocolo, persistência, comandos Lua e um serviço de login em Go.

PR público integrado

Sistemas de Build / Confiabilidade da CI

Coordenação do Cache vcpkg no Windows

Serializei apenas os processos que escrevem no cache do Windows, mantendo jobs somente leitura em paralelo e evitando disputas na publicação duplicada de pacotes NuGet.

PR público integrado

Trabalho privado

Asteria

Engenharia C++/Lua de cliente e servidor envolvendo comportamento de runtime, compatibilidade de protocolo, persistência e fluxos de entrega.

Trabalho privado aprovado pelo cliente · Referência disponível mediante solicitação.

Conhecer mais sobre minha experiência
Solicitar uma referência no LinkedIn

Tem um projeto de software em mente?

Disponível para desenvolvimento de software sob demanda, consultoria técnica e posições seniores em engenharia C++.