You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Chocolate Doom compiled to WebAssembly for running in web browsers.
3
+
[](https://github.com/devMinseok/ascii-doom/actions/workflows/deploy.yml)
4
4
5
-
## Prerequisites
5
+
Doom 게임을 웹에서 ASCII 아트로 즐길 수 있습니다.
6
+
7
+
## 🎮 특징
8
+
9
+
- 🌐 **브라우저에서 바로 실행**: 별도 설치 없이 웹 브라우저에서 바로 플레이
10
+
- 🎨 **ASCII 아트 렌더링**: 터미널 스타일의 고유한 비주얼 경험
11
+
- 📦 **WebAssembly 기반**: 네이티브에 가까운 성능으로 실행
12
+
- 🚀 **자동 배포**: GitHub Actions를 통한 CI/CD 파이프라인
13
+
- 🐳 **Docker 기반 빌드**: 일관된 빌드 환경 제공
14
+
15
+
## 🛠️ 기술 스택
16
+
17
+
### 핵심 기술
18
+
19
+
-**[Emscripten](https://emscripten.org/)**: C/C++ 코드를 WebAssembly와 JavaScript로 컴파일
20
+
-**[WebAssembly (WASM)](https://webassembly.org/)**: 고성능 바이너리 포맷으로 네이티브에 가까운 성능 제공
21
+
-**[SDL2](https://www.libsdl.org/)**: 크로스 플랫폼 멀티미디어 라이브러리 (입력, 오디오, 네트워킹)
22
+
-**[Chocolate Doom](https://www.chocolate-doom.org/)**: 정확한 Doom 소스 포트
23
+
24
+
### 빌드 도구
25
+
26
+
-**Autotools** (autoconf, automake): 빌드 시스템 자동화
27
+
-**Docker**: 일관된 빌드 환경 제공
28
+
-**GitHub Actions**: 자동 빌드 및 배포
29
+
30
+
### Emscripten 기능
31
+
32
+
-`ASYNCIFY`: 동기 C 코드를 비동기 JavaScript로 변환
33
+
-`ALLOW_MEMORY_GROWTH`: 동적 메모리 할당 지원
34
+
-`FORCE_FILESYSTEM`: Emscripten 가상 파일 시스템으로 WAD 파일 로드
35
+
-`USE_SDL=2`: SDL2 바인딩을 통한 브라우저 API 접근
36
+
-`EXPORTED_RUNTIME_METHODS`: JavaScript에서 WebAssembly 함수 호출을 위한 런타임 메서드 노출
37
+
-**WASM SIMD**: ASCII 렌더링 성능 최적화를 위한 SIMD 명령어 사용 (`i_ascii.cpp`)
38
+
39
+
## ⚙️ 동작 방식
40
+
41
+
### 빌드 프로세스
42
+
43
+
```text
44
+
C/C++ 소스 코드 (Chocolate Doom)
45
+
↓
46
+
Emscripten 컴파일러 (emcc)
47
+
↓
48
+
WebAssembly (.wasm) + JavaScript (.js) + HTML (.html)
0 commit comments