2 pontos por GN⁺ 2024-06-15 | 1 comentários | Compartilhar no WhatsApp

Descoberta de um bug de 55 anos no primeiro jogo Lunar Lander

História do jogo

  • Em 1969, um estudante do ensino médio chamado Jim Storer desenvolveu o primeiro jogo de pouso lunar.
  • Até 1973, esse jogo se tornou o jogo de computador mais popular.
  • O jogo era simples e baseado em texto, em que o jogador controlava um módulo lunar e tentava pousar consumindo combustível.

Estratégia ideal de consumo de combustível

  • Para pousar com o mínimo de combustível, é preciso pousar no menor tempo possível.
  • No início, desliga-se o motor e desce-se na velocidade máxima; no último instante, queima-se combustível com potência total para reduzir a velocidade a 0.
  • Essa estratégia é chamada de "queima suicida" e é difícil acertar o timing.

Simulação física

  • Mesmo sendo um estudante do ensino médio, Jim Storer usou uma simulação física extremamente sofisticada.
  • Ele usou a equação do foguete de Tsiolkovsky e aproveitou a série de Taylor da função logarítmica para aumentar a precisão.
  • O pai dele era físico e ajudou na derivação da equação.

Problemas no momento do pouso

  • A equação do foguete funciona bem até o instante antes de tocar o solo.
  • Calcular com precisão o impacto no exato momento em que o módulo toca o chão é difícil.
  • No código de Jim, havia uma equação incorreta com uma raiz quadrada no denominador.

Descoberta do bug

  • No código de Jim, faltava um 2 que deveria estar no denominador.
  • Por causa disso, o momento do pouso era calculado incorretamente, e o módulo era interpretado como se não tivesse tocado o solo.
  • Corrigir esse bug melhora bastante a velocidade de pouso.

Conclusão

  • Para um jogo feito em 1969 por um estudante do ensino médio, foi um trabalho extremamente impressionante.
  • Esse bug passou despercebido por quase 55 anos.
  • O jogo continuava divertido e muita gente gostava dele.

Opinião do GN⁺

  • Valor histórico: este jogo tem valor histórico como parte da era inicial dos jogos de computador e mostra as limitações técnicas da época.
  • Valor educacional: embora tenha sido feito por um estudante do ensino médio, ele inclui conceitos complexos de física e matemática, o que lhe dá alto valor educacional.
  • Importância do bug: destaca a importância do desenvolvimento de software ao mostrar como um pequeno erro de código pode ter um grande impacto.
  • Comparação com jogos modernos: em comparação com os jogos modernos, ajuda a entender as limitações técnicas e a criatividade da época.
  • Evolução tecnológica: por meio desse jogo, é possível comparar a evolução tecnológica de então com a atual e explorar possibilidades futuras.

1 comentários

 
GN⁺ 2024-06-15
Comentários do Hacker News
  • Foi descoberto que Jim Storer era o autor do primeiro jogo Lunar Lander, e uma entrevista com ele foi realizada. Depois, o código-fonte foi obtido, o que foi muito interessante.
  • Storer tinha esquecido do jogo após se formar no ensino médio. Só alguns meses atrás, ao receber um e-mail, descobriu que existiam outros jogos Lunar Lander além do que ele havia criado.
  • É impressionante que tenha sido um jogo feito por um estudante do ensino médio em 1969. Parece provável que tenha causado grande impacto em pessoas com forte interesse técnico que cresceram na era espacial.
  • Na entrevista, foi mencionado que Storer era bom em cálculo. Se alguém se interessa por espaço e foguetes, programar um jogo Lunar Lander teria sido algo natural.
  • Em meados dos anos 1970, foi escrito um jogo Moon Lander baseado em gráficos vetoriais 2D. Se faltasse combustível ou a velocidade fosse alta demais, a nave caía; caso contrário, aparecia a bandeira dos Estados Unidos.
  • Há arrependimento por ter jogado fora o código-fonte. Historicamente, era um jogo gráfico inicial e poderia ter sido revivido com uma emulação simples.
  • Até 1973, Lunar Lander tinha se tornado o jogo de computador mais popular. O jogo foi tentado no primeiro livro de programação, mas houve fracasso por causa de muitos bugs e de uma lógica complexa.
  • Foi sugerida uma estratégia de pouso com otimização de combustível. É explicado como usar baixo empuxo em um momento específico para pousar suavemente.
  • Esse jogo foi jogado pela primeira vez em uma calculadora HP-25 em 1976. A mesma fórmula era usada.
  • Spacewar foi jogado em um PDP-1 nos anos 1960, mas não havia um jogo Lunar Lander. Storer foi o primeiro.
  • Foi sugerido um método de recalcular massa e aceleração a cada frame sem usar uma fórmula especial. Quanto menor a taxa de quadros, menor pode ser a precisão.
  • O jogo foi jogado em meados dos anos 1970 após ser portado para Wang 2200 BASIC. Foi aprendida a técnica de aplicar empuxo máximo.
  • A fita perfurada para PDP11 ainda é mantida. Não se sabe a quem entregá-la.