- 개인 프로젝트의 모든 게임을 ‘순수 C’로 개발하며, 이는 현재 드문 선택임
- 언어 선택의 핵심 기준은 신뢰성, 이식성, 장기적 지속 가능성으로, 특정 OS나 플랫폼에 종속되지 않음
-
단순성과 빠른 컴파일 속도, 그리고 엄격한 타입 검사와 강력한 경고 시스템을 중시함
- C++·C#·Java·Go·Haxe 등 대안 언어들을 검토했으나, 복잡성·GC·OOP 강제 등으로 인해 적합하지 않다고 판단함
- C는 위험하지만 단순하고 빠르며, 폭넓은 플랫폼 지원과 견고한 라이브러리 생태계 덕분에 여전히 최적의 선택임
언어 선택의 기준
- 필수 조건은 신뢰성과 안정성으로, 자신이 만들지 않은 버그에 시간을 낭비하지 않기 위함
- 과거 Flash 기반 게임을 개발했으나 Flash의 쇠퇴로 인해 새로운 플랫폼으로의 이식 대신 새로운 게임 제작에 집중하고자 함
- 특정 OS에 종속되지 않고, 콘솔 개발 가능성을 열어두기 위해 이식성과 범용 라이브러리 지원을 중시함
- 바람직한 조건으로는 단순한 문법과 기억하기 쉬운 구조를 꼽음
- 복잡한 API나 언어 기능을 계속 찾아보는 과정을 피하고자 함
-
엄격한 타입 검사, 강력한 경고, 정적 분석을 통해 버그를 줄이고, 좋은 디버거와 동적 분석 도구로 문제를 쉽게 찾고자 함
-
컴파일 속도를 매우 중요하게 여김
- 긴 대기 시간은 집중력을 깨뜨리고 생산성을 떨어뜨림
-
객체지향(OOP) 에 회의적이며, 데이터와 코드를 분리해 상황에 맞게 처리하는 방식을 선호함
주요 대안 언어 평가
-
C++
- 게임 개발에서 여전히 표준이지만, 복잡성과 느린 컴파일 속도로 인해 불만족
- 높은 성능과 다양한 기능을 제공하지만, 원하지 않는 기능이 많고 복잡도 비용이 큼
-
C#과 Java
-
장황하고 복잡하며, 강한 OOP 중심 구조로 인해 자유도가 낮음
- 고수준 언어 특성상 복잡성을 숨기지만, 근본적인 문제를 막지는 못함
-
Go
- C의 현대적 재해석으로 긍정적으로 평가하지만, stop-the-world 가비지 컬렉션이 게임 개발에 부적합
- 게임용 라이브러리 부족과 장기적 지속성에 대한 우려 존재
-
JavaScript
- 웹 개발 환경의 빠른 변화와 Flash의 종말로 인해 불안정하게 느껴짐
-
느슨한 문법으로 인해 대규모 소프트웨어 작성에 부적합하다고 판단
-
Haxe
- 웹 개발 시 유망하다고 평가하지만, 상대적 신생 언어로 지속성에 대한 우려 존재
-
자체 언어 개발
- 매력적인 발상이지만, 기존 라이브러리 포기와 호환성 유지 부담으로 인해 현실적이지 않다고 판단
C를 선택하는 이유
-
위험하지만 신뢰할 수 있는 언어로, 단순한 구조 덕분에 주의 깊게 사용하면 안정적
- “날카로운 칼”에 비유하며, 다루기 어렵지만 숙련되면 강력한 도구임을 강조
-
컴파일 속도가 매우 빠르며, 거의 모든 플랫폼에서 실행 가능
- 이식 과정도 비교적 간단하고, 장기적으로도 지속 가능성이 높음
-
라이브러리와 툴링 지원이 강력하고 꾸준히 유지되고 있음
- 개인적으로는 이미 많은 ‘순수 C’ 코드 경험이 있어 익숙함
- 다른 사람에게 C 사용을 권장하지 않으며, 이는 개인적 취향과 작업 방식에 최적화된 선택임