Pular para o conteúdo
Clayton MagalhãesEngenheiro de Software — voltar ao início
Voltar para projetos

Game server · Orquestração · CASE 004

Event Manager: eventos PvP automatizados

Motor de eventos agendados (TvT, Capture the Flag, Kill the Boss) com inscrição, times balanceados, partida e recompensas automáticas.

Baseado no código-fonte do game server (Java, base aCis), desenvolvido por mim. O diagrama simplifica a arquitetura.

01

Problema

Rodar eventos PvP recorrentes sem operação manual: abrir inscrições no horário certo, validar participantes, montar times, conduzir a partida e premiar os vencedores.

02

Contexto

Vários modos de jogo com regras próprias, mas o mesmo ciclo de vida. Cada novo evento não poderia exigir mudanças no gerenciador.

03

Solução proposta

Um EventManager lê events.xml, instancia cada evento por reflection e escolhe o próximo pelo horário mais próximo. Um relógio de 1 s conduz a máquina de estados REGISTER → TELEPORT → STARTING → PROGRESS → FINISH, com anúncios de contagem regressiva. Cada modo estende AbstractEvent e sobrescreve apenas os hooks necessários (onKill, onDie, canAttack, onUseSkill, onUseItem, onLogout…), no padrão Template Method.

04

Arquitetura

Ao fechar as inscrições, phantoms completam as vagas; abaixo do mínimo, o evento é cancelado. No teleporte, os participantes são ordenados por classe e distribuídos sempre para o menor time, congelados até a largada e liberados no início da partida.

Ciclo de vida dos eventos PvP: inscrição, teleporte, partida e recompensas≥ mín.freezestarttempoonRegisterhooksRegisterinscriçãoTeleporttimesStarting10 sProgressduração XMLFinishretornoPhantomscompletam vagasAbstractEventTvT · CTF · KTB · DMRecompensasMVP · times
Ciclo de vida dos eventos PvP: inscrição, teleporte, partida e recompensas

05

Tecnologias

  • Java
  • Máquina de estados
  • Template Method
  • Reflection
  • XML

06

Trade-offs

  • Um evento por vez, um único relógio

    Estado simples de raciocinar e depurar, mas sem eventos simultâneos.

  • Eventos carregados por reflection

    Novos modos entram com uma classe e um bloco de XML, sem tocar no gerenciador; erros de classe só aparecem em runtime (registrados no boot).

  • Balanceamento por classe e tamanho de time

    Distribui as classes de forma equilibrada e barata, sem considerar nível ou equipamento.

07

Resultados

  • Quatro modos de evento (TvT, CTF, Kill the Boss, Deathmatch) sobre o mesmo ciclo de vida.
  • Inscrição protegida contra multi-conta por HWID e conflitos com olimpíada, torneio e lojas.
  • Operação via comandos de admin: forçar início, cancelar e avançar fases.
Próximo estudoEngine Manager: eventos de mundo agendados