2P by neo 5달전 | favorite | 댓글 1개

55년 된 첫 번째 Lunar Lander 게임의 버그 발견

게임의 역사

  • 1969년, Jim Storer라는 고등학생이 첫 번째 Lunar Landing 게임을 개발함.
  • 1973년까지 이 게임은 가장 인기 있는 컴퓨터 게임이 되었음.
  • 게임은 단순한 텍스트 기반으로, 플레이어는 달 착륙선을 조종하여 연료를 소모하며 착륙을 시도함.

최적의 연료 소모 전략

  • 최소한의 연료로 착륙하려면 가능한 짧은 시간 내에 착륙해야 함.
  • 초기에는 엔진을 끄고 최대 속도로 하강하다가 마지막 순간에 전력을 다해 연료를 태워 속도를 0으로 만듦.
  • 이 전략을 "자살 연소"라고 부르며, 타이밍 맞추기가 어려움.

물리 시뮬레이션

  • Jim Storer는 고등학생임에도 불구하고 매우 정교한 물리 시뮬레이션을 사용함.
  • Tsiolkovsky 로켓 방정식을 사용하고, 로그 함수의 테일러 급수를 활용하여 정확도를 높임.
  • 그의 아버지가 물리학자였고, 방정식 유도에 도움을 줌.

착륙 시의 문제점

  • 로켓 방정식은 지면에 닿기 전까지는 잘 작동함.
  • 착륙선이 지면에 닿는 순간의 충돌을 정확히 계산하는 것이 어려움.
  • Jim의 코드에는 분모에 제곱근이 포함된 잘못된 방정식이 있었음.

버그의 발견

  • Jim의 코드에서 분모에 있어야 할 2가 빠져 있었음.
  • 이로 인해 착륙 시점이 잘못 계산되었고, 착륙선이 지면에 닿지 않는 것으로 인식됨.
  • 이 버그를 수정하면 착륙 속도가 크게 개선됨.

결론

  • 1969년 고등학생이 만든 게임으로는 매우 인상적인 작업이었음.
  • 이 버그는 거의 55년 동안 발견되지 않았음.
  • 게임은 여전히 재미있었고, 많은 사람들이 즐겼음.

GN⁺의 의견

  • 역사적 가치: 이 게임은 초기 컴퓨터 게임의 역사적 가치를 지니고 있으며, 당시의 기술적 한계를 보여줌.
  • 교육적 가치: 고등학생이 만든 게임이지만, 복잡한 물리학과 수학 개념을 포함하고 있어 교육적 가치가 높음.
  • 버그의 중요성: 작은 코드 오류가 큰 영향을 미칠 수 있다는 점에서 소프트웨어 개발의 중요성을 강조함.
  • 현대 게임과의 비교: 현대 게임과 비교했을 때, 당시의 기술적 한계와 창의성을 이해하는 데 도움이 됨.
  • 기술 발전: 이 게임을 통해 당시와 현재의 기술 발전을 비교하고, 미래의 가능성을 탐구할 수 있음.
Hacker News 의견
  • Jim Storer가 최초의 Lunar Lander 게임의 저자였음을 발견하고 인터뷰를 진행했음. 이후 소스 코드를 제공받아 매우 흥미로웠음.
  • Storer가 고등학교 졸업 후 게임을 잊고 있었음. 몇 달 전 이메일을 받고 나서야 자신이 만든 게임 외에 다른 Lunar Lander 게임이 있다는 것을 알게 되었음.
  • 1969년 고등학생이 만든 게임이라는 점이 인상적임. 우주 시대에 자란 기술적 관심이 많은 사람들에게 큰 영향을 미쳤을 것 같음.
  • 인터뷰에서 Storer가 미적분에 능숙했다고 언급함. 우주와 로켓에 관심이 있다면 Lunar Lander 게임을 프로그래밍하는 것이 자연스러웠을 것임.
  • 1970년대 중반에 2D 벡터 그래픽스 기반의 Moon Lander 게임을 작성했음. 연료가 부족하거나 너무 빠르면 충돌, 그렇지 않으면 미국 국기가 보였음.
  • 소스 코드를 버린 것을 후회함. 역사적으로 초기 그래픽 게임이었고, 간단한 에뮬레이션으로 부활할 수 있었음.
  • 1973년까지 Lunar Lander가 가장 인기 있는 컴퓨터 게임이 되었음. 첫 프로그래밍 책에서 이 게임을 시도했지만 많은 버그와 복잡한 논리로 인해 실패했음.
  • 연료 최적화 착륙 전략을 제안함. 특정 시점에 저추력을 사용하여 부드럽게 착륙하는 방법을 설명함.
  • 1976년에 HP-25 계산기에서 이 게임을 처음 플레이했음. 동일한 공식을 사용했음.
  • 1960년대에 PDP-1에서 Spacewar를 플레이했지만 Lunar Lander 게임은 없었음. Storer가 최초였음.
  • 특별한 공식을 사용하지 않고 매 프레임마다 질량과 가속도를 재계산하는 방법을 제안함. 프레임 속도가 낮을수록 정확도가 떨어질 수 있음.
  • 1970년대 중반에 Wang 2200 BASIC으로 포팅된 게임을 플레이했음. 최대 추력을 적용하는 기술을 배웠음.
  • PDP11용 펀치 테이프를 아직도 보유하고 있음. 누구에게 줄지 모름.