Cálculo da rota mais curta entre dois pontos

Tenho trabalhado nas últimas semanas em um jogo HTML5 multiplayer, usandonodejs ewebsockets.

Estou preso nesse problema há um tempo. Imagine que eu tenho esse mapa da planilha implementado com uma matriz (como mostrado abaixo)

1 outelhas marrons - existe um obstáculo no caminho e o jogador não pode passar por ele.

0 outelhas verdes - são caminhos livres onde o jogador pode se mover.

Acesse qualquer bloco no mapa ligando para:

 array[x][y]

Gostaria de criar o algoritmo mais rápido possível para descobrir a rota mais curta (se houver) entre dois pontos do mapa. Como você abordaria esse problema? Eu sei que isso é problema comum.

Exemplo:

O jogador na posição (1,7) dispara uma bala com alguma IA que direciona para o jogador inimigo na posição (6,0). O Bullet tem que calcular a rota mais curta entre os 2 jogadores e, se não houver, ela simplesmente explodiria contra uma parede.

Pergunta, questão:

Como encontrar com eficiência o caminho mais curto entre dois pontos?

questionAnswers(3)

yourAnswerToTheQuestion