Após navegar no mundo do código fonte para jogos, encontrei um projeto já abandonado a alguns anos chamado Diablo.js. Ele é um projeto simples que utiliza 1 arquivo HTML, 1 arquivo JS (não que isso seja bom) e diversasimagens para simular o jogo Diablo 2.
Como esse jogo consumiu muitas horas da minha vida, pensei em usa-lo como uma ferramenta para praticar programação e reviver o passado.Então fiz um fork dele e comecei a trabalhar em diversas alterações.

O objetivo do projeto é o seguinte:
- “Atualizar” o código JavaScript para ES6.
- Manter o projeto em um formato fácil de executar para outros que estão aprendendo a programar ou queira brincar com o código.
- Melhorar o posicionamento e quantidade monstros e itens aleatórios.
- Aumentar o mapa.
- Permitir que o personagem morra.
- Corrigir bug de colisão e barreiras físicas (paredes e objetos).
- Permitir escolher outros personagens.
- Adicionar ao menos 1 habilidade com o botão direito.
Não sei se tudo será possível, mas um objetivo fica difícil chegar a algum lugar.
Tendo dito isso, aqui vão algumas observações sobre o jogo para que você que está interessado em contribuir possa começar a fazer. Se você quiser fazer alterações, comentar cada classe e função trabalhada é muito importante!
Converter funções em classes
Já fiz isso para praticamente todas as classes, mas algumas ainda precisam ser ajustadas, as propriedades precisam ter nomes mais uteis que x, y e z.
Separar arquivos
Não é opção mais performática, mas para manter o código mais fácil de ler, seria interessante separar as classes e funcionalidades em arquivos diferentes.
Imortal
Esse aqui é o Diablo Imortal, o bárbaro não morre mesmo chegando a zero de vida.

Paredes
Além de ser possível “pisar” nas paredes, é possível atacar e ser atacado através delas

Piso e Limite do Mapa
Consegui adicionar paredes, objetos e piso indo para a diagonal esquerda, mas para o outro lado não tem força que renderize o chão.
Talvez seja possível resolver esse problema com paredes, mas tanto o jogador quanto os inimigos podem sair do limite do mapa. Dependendo, os inimigos começaram de fora do mapa.

Contador de ouro
Não que ele tenha utilidade na versão atual, mas seria legal saber quanto de ouro o personagem já coletou