David Pezzin
02 / Sistemas embarcados

Freedoom cooperativo no ESP32-S3

Adaptação do motor doomgeneric e do conteúdo Freedoom para execução em um ESP32-S3. A placa processa a partida; dois navegadores conectados ao Wi-Fi local recebem imagens e enviam comandos independentes.

ESP32-S3 N16R82 jogadores locaisWebSocketValidado em placa
O desafio

Levar um jogo clássico a um microcontrolador

Memória, renderização e transmissão de quadros são limitadas em uma placa embarcada. O trabalho concentrou a simulação no ESP32-S3 e criou uma interface web leve para jogar pelo navegador.

01 / MOTOR

Adaptação para ESP32-S3

Port do doomgeneric com uso da PSRAM para a arena do jogo e leitura do WAD na flash.

02 / REDE

Duas câmeras independentes

Quadros enviados por WebSocket, com controle de fluxo para que um cliente lento não interrompa o outro.

03 / EXPERIÊNCIA

Save e retomada

Salvamento manual e automático, com retomada da partida após reiniciar a placa.

Captura real do Freedoom em execução no ESP32-S3, vista no navegador
Captura da partida durante a validação do projeto.
Validação

Funcionou em hardware real

Execução na placa

Compilação, gravação, boot, memória e partida foram verificados em um ESP32-S3 N16R8. O projeto registrou duas sessões simultâneas no teste automatizado.

Medidas registradas

O teste final registrou 12,5 FPS com dois clientes. O salvamento persistente e a retomada após reset também foram confirmados.

Limites: a implementação inclui uma fase do Freedoom, sem áudio, e o modo cooperativo funciona na rede local. O projeto usa doomgeneric e Freedoom, ambos creditados na documentação e sujeitos às respectivas licenças.