Quake3 Source Skimming
퀘이크3(Quake3) 소스가 GPL 라이센스로 풀리면서 나같은 사람도 한번 얼핏 훑어볼 기회가 생겼다. 얼핏 훑어본 퀘이크3 소스 코드의 특징은 다음과 같다.
- 메모리 할당은 대부분 필요한 크기를 정해서 초기에 한꺼번에 할당한다. 즉, 프로그램 실행 도중에 메모리를 할당하고 해제하는 일이 거의 없다.
- 링크드 리스트 대신 배열을 많이 쓴다.
- 내부적으로 가상 머신을 따로 만들어 사용한다. 또한 멀티쓰레드 방식이 아닌 가능한 하나의 이벤트 루프 안에서 모든 것을 처리하는 것 같다. (전통적인 게임 프로그래밍 방식?)
- 이름 충돌을 위해 전역 변수에 static 키워드를 철저하게 지킨다. 대신 네이밍룰은 조금 자유로운 것 같다.
- 역시 메뉴와 같은 UI 엔진은 따로 구현하고 있다.
역시 게임 소프트웨어는 소프트웨어의 모든 기술을 망라하여 이용하고 있다는 느낌도 새삼 든다. 우리는 책임도 지지 못하는 메모리 할당 방식 API를 너무 남용하고 있는 것은 아닐까.