# TypeScript 타입 시스템만으로 DOOM 실행하기

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

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19469](https://news.hada.io/topic?id=19469)
- GeekNews Markdown: [https://news.hada.io/topic/19469.md](https://news.hada.io/topic/19469.md)
- Type: news
- Author: [qyurila](https://news.hada.io/@qyurila)
- Published: 2025-02-27T17:45:09+09:00
- Updated: 2025-02-27T17:45:09+09:00
- Original source: [youtu.be](https://youtu.be/0mCsluv5FXA)
- Points: 13
- Comments: 6

## Summary

순수 TypeScript 타입 시스템만으로 DOOM을 실행하는 데 성공했으며, 이를 위해 WASM 가상 머신을 구현하여 DOOM뿐만 아니라 다른 프로그램도 실행할 수 있습니다. 초기 코드 규모는 1.25PB였으나 최적화를 통해 177TB로 줄였고, 첫 프레임 생성에 12일이 소요되었습니다. 게임 리소스를 타입으로 인코딩하고, 다양한 기술적 도전 과제를 해결하여 타입 수준의 여러 기능을 구현했습니다.

## Topic Body

- 순수 TypeScript 타입 시스템만으로 DOOM을 실행하는 데 성공  
	- 총 3조 5천억 줄, 177TB의 코드  
	- 첫 프레임 생성에 12일 소요  
- 이를 위해 순수 TypeScript 타입 시스템으로 WASM 가상 머신을 구현  
	- 따라서 DOOM뿐만 아니라 다른 프로그램도 실행 가능  
	- GitHub 리포지토리: [MichiganTypeScript/typescript-types-only-wasm-runtime](https://github.com/MichiganTypeScript/typescript-types-only-wasm-runtime)  
  
#### 기술적 도전 과제 및 솔루션  
  
- 규모 문제  
	- 최적화 이전 코드 규모는 1.25PB로, 초기 계산에 3개월이 필요했음  
	- 최적화를 통해 각각 177TB와 12일로 감축  
- TypeScript 컴파일러 제한  
	- 스택 깊이 및 재귀 제한 등을 극복하기 위해 컴파일러 수정  
- 게임 리소스 인코딩  
	- 맵, 텍스처, 적 AI, 물리엔진 등 모든 게임 요소를 타입으로 인코딩  
	- 타입 수준의 Garbage Collector, L1 CPU 캐시, Dead-Code Elimination, 실시간 Memory Compactor, 전역 스택 등을 구현해야 했음  
	- 엔진 전체는 문자열 리터럴 형태의 2의 보수만으로 구현됨  
  
#### 이후 예정  
  
- 후속으로 심층 분석 영상 게시 예정  
- 개발 중에 만들었으나 게시하지 못한 60개 이상의 Shorts도 있음  
	- 관련 [예고 트윗](https://twitter.com/MiTypeScript/status/1856053317195223244)

## Comments



### Comment 35224

- Author: mido01111
- Created: 2025-02-28T09:36:55+09:00
- Points: 1

와우 1.25PB ㄷㄷ

### Comment 35220

- Author: tsboard
- Created: 2025-02-28T08:27:46+09:00
- Points: 1

이것은 호기심을 빙자한 광기인가... ㅎㄷㄷㄷㄷ

### Comment 35216

- Author: esolanglover
- Created: 2025-02-27T22:46:09+09:00
- Points: 1

Holy shit.... GOAT

### Comment 35214

- Author: kuthia
- Created: 2025-02-27T21:20:09+09:00
- Points: 1

wow...

### Comment 35213

- Author: wkbae
- Created: 2025-02-27T20:59:50+09:00
- Points: 1

"최적화 이전 코드 규모는 1.25PB" ㄷㄷ..

### Comment 35211

- Author: honglu
- Created: 2025-02-27T19:47:35+09:00
- Points: 1

GN 에서 먼저 보고 와.. 만 했습니다.. 엄청 대단한 것 같아요.
