O objetivo desse trabalho é desenvolver, em Lua, um esqueleto de jogo distribuído onde a comunicação é feita através de um serviço de filas. A seguir descrevo as tecnologias propostas. Caso vc deseje usar alguma tecnologia alternativa, por favor mande email ou fale comigo para verificar se é possível.
O trabalho deve usar o servidor mosquitto, um servidor do protocolo MQTT, para mediar a comunicação entre programas desenvolvidos e Löve, um framework para o desenvolvimento de aplicações gráficas 2D interativas em Lua. A biblioteca lua_mqtt permite o uso do mqtt a partir de Lua.
Provavelmente algo que vai dar um pouco de trabalho é construir o ambiente de desenvolvimento mqtt+löve+lua_mqtt. Instale e teste cada uma das coisas separadamente antes de integrá-las.
O jogo em si pode ser bem simples. Cada jogador pode se movimentar pela tela com setinhas para a direita e esquerda e todos devem ver os demais se movimentando. Dois jogadores não podem ocupar a mesma posição (o canvas pode ser como um tabuleiro quadriculado e em cada momento cada jogador ocupa um dos quadrados pré-definidos). Você define o objetivo do jogo (pode ser "comer" itens disponíveis no tabuleiro, "matar" os demais jogadores ou outro qualquer).
Você pode definir que canais de comunicação (tópicos) o jogo usará e o que trafegará em cada um deles. É interessante que todos os movimentos trafeguem por um mesmo canal para criar uma visão comum ordenada dos movimentos dos diversos jogadores. Também recomendo que a comunicação descreva simplesmente o movimento do jogador (direita, esquerda, cima, baixo) e cada réplica do jogo compute localmente os impactos desse movimento.