나는 C(예, C)로 게임을 만든다
Source: Hacker News
위에 제공된 소스 링크 외에 번역할 텍스트를 알려주시면, 해당 내용을 한국어로 번역해 드리겠습니다.
Why I Write Games in C (yes, C)
나는 특이한 존재다. 최근에 내가 만든 모든 솔로 프로젝트 게임은 vanilla C로 작성되었다. 이런 일을 하는 사람은 거의 없으니, 왜 이렇게 하는지 설명하는 것이 흥미로울 것 같다.
건조한 프로그래밍 언어에 대한 의견이 들어온다, 경고받았다.
내가 언어에서 원하는 것
협상할 수 없는 요구 사항이 몇 가지 있습니다.
- 신뢰성 – 내가 직접 만든 버그가 아닌 것들을 처리하는 데 시간을 쓸 여유가 없습니다. 내 게임 대부분은 Flash용으로 작성됐었고, 이제 Flash가 사라지고 있습니다. 나는 구식 게임을 새로운 플랫폼으로 포팅하는 데 시간을 쓰고 싶지 않으며, 새로운 게임을 만들고 싶습니다. 나는 오랫동안 지속될 것이라고 확신할 수 있는 플랫폼이 필요합니다.
- 이식성 – 특정 OS에 묶이는 것을 피하고 싶으며, 가능하면 콘솔용 개발 옵션도 가지고 싶습니다. 따라서 내 프로그래밍 언어가 이식 가능하고, 좋은 이식성 라이브러리 지원을 갖추는 것이 중요합니다.
내가 원하는 언어
내가 원하는 (하지만 필수는 아닌) 목록 중 가장 중요한 것은 단순성입니다. 언어 기능이나 기발하고 “똑똑한” API를 찾아보는 것이 매우 피곤합니다. 이상적인 언어는 한 번 외우면 다시는 찾아볼 필요가 없는 언어입니다.
- 엄격한 타입 및 정적 분석 – 버그가 적고, 강력한 경고 메시지와 정적 코드 분석을 제공함.
- 우수한 디버깅 도구 – 동적 분석과 디버거가 버그를 찾기 쉽게 함.
- 성능 – 고해상도 현실감을 추구하는 것은 아니지만, 특히 최신 고성능 컴퓨터에서 할 수 있는 일을 넓히기에 충분한 사이클이 필요함.
- 빠른 컴파일 – 10초 이상 기다리면 흐름이 끊기므로, 빠른 컴파일이 생산성을 유지시켜 줌.
- 데이터 중심 접근 – 나는 OOP 전향자가 아니다. 데이터를 데이터로 다루고 상황에 맞는 코드를 작성하는 것을 선호하며, 모든 것을 클래스로 강제하고 싶지는 않다.
The Alternatives
- C++ – 여전히 게임을 만들 때 가장 흔히 쓰이는 언어이며, 그럴만한 이유가 있다. 나는 계약 작업을 거의 모두 이것으로 하지만, 강하게 싫어한다. 필요는 충족시키지만 원하는 부분은 크게 못한다. 절망적으로 복잡하고, 괜찮은 도구가 있음에도 교묘한 버그를 만들기 쉽다. 또한 C보다 컴파일 속도가 느리다.
- C#와 Java – 둘 다 장황하고 복잡한 괴물이다. 프로그래머를 내가 반대하는 강한 OOP 스타일로 몰아넣으며, 복잡성을 숨기지만 실제로는 그 복잡성이 당신을 물어뜯는 것을 막지 못한다.
- Go – 나는 매우 좋아한다; 여러 면에서 C를 다시 살펴본 것으로, C가 출시된 이후 배운 점들을 반영한다. 하지만, 멈춤형 가비지 컬렉션은 게임에 큰 골칫거리이며, 게임용 라이브러리 지원이 부족하다. C 라이브러리를 래핑하는 것은 번거로운 작업을 추가하고, 장기적인 지속 가능성이 걱정된다.
- 웹 중심 옵션 – JavaScript는 내 취향에 너무 느슨하게 느껴지고, 특히 Flash가 사라진 이후 웹 생태계가 무섭게 빠르게 변한다. Haxe는 괜찮은 라이브러리 지원으로 가능성을 보여주지만, 아직 젊어서 장기성을 의심하게 만든다.
- 내 언어 만들기 – 나는 그 아이디어를 존경하고 가끔 가지고 놀지만, 기존 라이브러리 지원을 포기하고 미래 호환성에 대한 전적인 책임을 지는 것은 너무 많은 작업처럼 느껴진다. 나는 언어를 만드는 것보다 게임을 만드는 쪽이 더 좋다.
Why C is still my best fit
- C는 위험하지만 신뢰할 수 있다—손가락도, 채소도 자를 수 있는 매우 날카로운 칼이지만, 조심해서 사용하면 배울 수 있을 정도로 단순하다.
- 빠르고, 컴파일 속도면 더 빠른 것을 생각할 수 없다.
- 거의 모든 환경에서 실행되도록 만들 수 있으며, 보통 비교적 쉬운 노력으로 가능하다. 이것이 더 이상 가능하지 않을 시기를 상상하기 어렵다.
- 라이브러리와 툴링 지원이 강력하고 지속적이다.
나는 약간의 슬픔을 안고 이렇게 말한다, 하지만 여전히 나에게는 그 언어다.
나는 절대로 “당신도 C를 사용해야 한다”고 말하려는 것이 아니다. 선호도는 꽤 구체적이고 특이하다. 나는 이미 대부분보다 더 많은 “바닐라” C 코드를 작성했으며, 그것이 내 편안함의 일부가 확실히 된다.
그래서, 그게 전부다. :-)