sábado, agosto 22, 2015

Jogo do Mês: TIS-100

TIS-100 é um jogo diferente. Nele você precisa resolver problemas escrevendo pequenos programas em linguagem Assembly para um computador misterioso. A tela do jogo simula as telas alfanuméricas com caracteres semi-gráficos comum nos anos 80. Alguma dúvida que assim que li a descrição eu aproveitei a oferta de lançamento no GOG.com e comprei?

A tela inicial, depois de vários problemas resolvidos

O computador emulado pelo jogo é complexamente simples. Com apenas treze instruções e dois registradores de trabalho, a CPU é muito limitada. Entretanto, o computador possui até 12 destas CPUs (ou nós no linguajar do jogo) executando em paralelo. A comunicação entre os nós é feita através de registradores chamados RIGTH, LEFT, UP e DOWN; esta comunicação funciona também como uma forma de sincronismo entre os nós: quem está enviando a informação fica parado até o receptor pegá-la e que está pegando uma informação fica parado até o transmissor a disponibilizá-la.

Um programa simples (mas não muito eficiente)

Mais adiante no jogo aparecem outros dois tipos de nós: um nó de memória (que funciona apenas como pilha) e um nó de apresentação gráfica. A capacidade do nó de memória e os programas nas CPUs são limitados pelo pequeno espaço disponível na tela. Recursos bem simples de debug estão disponíveis.

Resolver um problema é, na maioria dos casos, complicado. Depois que você resolve, o jogo mostra um gráfico comparando (via internet) a sua solução com a dos outros jogadores em termos de velocidade (ciclos gastos para resolver o programa), quantidade de nós utilizada e o número total de instruções. Algo que pode surpreender no início é como distribuir a tarefa em vários nós pode reduzir de forma notável o número de ciclos.

Minha solução não é ruim, mas tem gente que fez muito melhor.
 Além dos problemas em si, existe uma história a ser desvendada. Em cada problema existe um nó "defeituoso" que contem uma mensagem com mais um passo desta história.

A primeira pista

Por último, existem os sandboxes, onde vocês pode testar livremente programas.

É possível encontrar informações adicionais sobre o jogo na internet, por exemplo no Reddit e neste Hacker's Guide.

Veredito

Não é um jogo para qualquer um, mas é imperdível para quem gosta de problemas de programação.

Nenhum comentário: