# 첫 번째 Lunar Lander 게임에서 55년 된 버그 발견

> Clean Markdown view of GeekNews topic #15351. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=15351](https://news.hada.io/topic?id=15351)
- GeekNews Markdown: [https://news.hada.io/topic/15351.md](https://news.hada.io/topic/15351.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-06-15T09:43:32+09:00
- Updated: 2024-06-15T09:43:32+09:00
- Original source: [martincmartin.com](https://martincmartin.com/2024/06/14/how-i-found-a-55-year-old-bug-in-the-first-lunar-lander-game/)
- Points: 2
- Comments: 1

## Topic Body

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

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

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

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

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

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

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

### GN⁺의 의견
- **역사적 가치**: 이 게임은 초기 컴퓨터 게임의 역사적 가치를 지니고 있으며, 당시의 기술적 한계를 보여줌.
- **교육적 가치**: 고등학생이 만든 게임이지만, 복잡한 물리학과 수학 개념을 포함하고 있어 교육적 가치가 높음.
- **버그의 중요성**: 작은 코드 오류가 큰 영향을 미칠 수 있다는 점에서 소프트웨어 개발의 중요성을 강조함.
- **현대 게임과의 비교**: 현대 게임과 비교했을 때, 당시의 기술적 한계와 창의성을 이해하는 데 도움이 됨.
- **기술 발전**: 이 게임을 통해 당시와 현재의 기술 발전을 비교하고, 미래의 가능성을 탐구할 수 있음.

## Comments



### Comment 26280

- Author: neo
- Created: 2024-06-15T09:43:32+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=40680218) 
- **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용 펀치 테이프를 아직도 보유하고 있음**. 누구에게 줄지 모름.
