몇 시간 전에 유투브에 스타 1 리마스터의 개발 과정을 담은 영상이 하나 더 나왔습니다. 여기서 다양한 사실들을 알 수 있어 정리해봤습니다 😆😆
1. 리마스터 프로젝트에는 적어도 Visual Studio 2013 이상의 개발툴이 쓰였다.
2. 빌드 툴로 CMake를 쓴다. 아마 의존성 관리를 쉽게 하기 위해서나 맥이나 리눅스에서도 빌드하기 위해서인듯함
3. 부속 프로젝트가 엄청 많다. OpenGL, tinyxml2 등 의존성 프로젝트들도 많다
4. 버전 관리를 한다. VS에서 변경사항 정보를 보여주는걸 보니 Git으로 보임.
5. 게임 내부에 웹 브라우저 기능이 있을 것이고 이것도 OpenGL로 구현되었다.
6. 매킨토시 버전으로도 나온다. (Mac Resources 폴더가 있음)
7. 통신 수단으로 JSON도 쓰고 XML도 쓴다.
8. 함수나 변수명은 대체로 언더바 스타일로 적는데 CamelCase로 된 것도 있다. 멤버 변수 한정으로 그렇게 쓰는 것 같기도 한데 만약 그렇다면 객체지향으로 설계된듯
9. assert 문법을 이용해 오류를 사전에 잡아내고 있다.
10. C++11부터 추가된 람다 함수를 쓰고 있다. 확인된 사용처는 해상도가 바뀌었을때의 행동을 람다 함수로
만들고 이를 resolutionListener에 콜백 방식으로 등록하는 듯.
11. blz 라는 독자적인 namespace를 쓴다. to_string이라는 함수가 포함되어있는걸 보니 운영체제와 국가별로 문자열 다루기 까다롭고 STL만으로 해결하기 힘드니 그런 류의 유틸리티 함수들은 따로 정의해서 쓰는듯.
12. glues라는 namespace가 있는데 서로 다른 UI(웹브라우저, 윈도우 창, 게임 화면 등)끼리 연결해주는 기능을 하는 것들끼리 모아놓은듯.
13. OutputDebugString이 아닌 OsOutputDebugString을 쓰고 있는데 아마 운영체제별로 다른 함수를 써야하니 래핑한 것으로 보임
14. 초를 어딘가에서 따로 정의하는 것 같다.
#define APPROACH_DELAY (1*SECOND) 요렇게 되어있는데 프레임 레이트 때문에 그러는걸까요? 잘 모르겠습니다..
15. 맵 파일 이름의 길이제한이 32자로 되어있다.
16. 싱글 플레이어와 멀티 플레이어 게임도 따로 저장을 할 수 있다. 확장자는 오리지널과 브루드워 각각 따로임.(sng, mlt, snx, mlx)
17. hx 확장자를 가진 파일을 #include 하길래 찾아보니 http://haxe.org/ 라는 툴킷 라이브러리 관련인 듯 함.
18. 기본에 입각해서 코드를 짠다. 간단하게는 #ifndef 세트로 헤더 중복 포함을 방지한다던가 가능한한 서로 다른 기능을 하는 코드 블럭들은 함수로 추출해서 관리한다던가 주석은 필요한 곳에만 단다던가…
영상에서 지금 개발자가 약 1~20년전에 짰던 코드들을 봤는데 상당히 깔끔하다고 평을 했는데 실제로 봐도 깔끔하게 쓰는듯하네요. 단 세 장면 정도였지만 꽤나 많은 정보들을 알아가네요😀😀