C로 게임을 만드는 이유 (그렇다, C로)

13 hours ago 3

  • 개인 프로젝트의 모든 게임을 ‘순수 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 사용을 권장하지 않으며, 이는 개인적 취향과 작업 방식에 최적화된 선택

Read Entire Article