알라딘MGG와이드바


NDC 2010 김주복, "M2 아키텍처 리뷰", 송창규, "unity build로 빌드타임 반토막내기" 개발 이야기


김주복, "M2 아키텍처 리뷰" #

  • [http]PT 자료 [http]발표자 링크
  • 마찬가지로 PT 가 너무 잘 되어 있어 따로 추가할 게 없음.
  • [http]Diablo 2: Lord of Destruction Patch v1.10
  • 완벽한 설계 관점 : 성능, 완결성, 확장성, 재활용성, 사용성
  • agenda : 프레임워크 레이어링, 컴퍼넌트 시스템, 루프 시스템, 서킷 모듈, 최적화 이슈

송창규, "unity build로 빌드타임 반토막내기" #

  • [http]PT 자료
  • ?UnityBuild : EA 에서는 build build 라고 한다고.
  • cl /E HelloWorld.cpp > Preprocessed.cpp 결과를 보면 깜짝 놀랄 것이다.
  • unity build 가 땜빵같다 -> 어쩌면 #include 방식이야말로 30년 전부터 하던 오래된 방식일지도 모른다.
  • 버블파이터에 써 보니 6:50 걸리던 컴파일이 1:50 걸리더라
  • [http]Christoph Heindl - Reducing Compilation Time: Unity Builds
  • 방법
    • copy *.cpp AllinOne.cpp
    • 빌드 -> 끝!
    • 이를 위해 .cpp 를 include
    • VS 에서 쓰기 위해 새로운 빌드 설정 추가하고 여기에서는 다른 cpp 는 빌드 제외시킨다.
    • 디버깅, BP 도 잘 걸린다.
  • 주의
    • 파일이 너무 크면 컴파일 오류 생기므로 몇 개로 나눠준다
      • 버블파이터에서는 10개로, M2 에서는 그룹 설정 후 자동화
    • static 함수 같은 거는 이름 오류 생길 수 있으므로 주의(이름을 바꿔준다)
    • unity build 안 써도 빌드 되도록 유지(CI 를 이용하면 될 듯)
    • 파일 추가/삭제할 때마다 include 추가, 빌드 제외 해야 함 -> 자동화
      • ?UnityMaker 라는 자동화 툴은 vcproj 파일을 읽는 방식으로 동작
      • 이름 충돌 막기 위해 custom grouping 지원
      • M2 ?UnityMaker 는 Python 으로 제작
    • incredibuild 와 중복해서 쓰면 더 빨라질거다. 버블파이터에서는 inc.. 를 썼고, M2 에서는 안 쓰고 있다.
  • 참고

핑백

덧글

  • object 2010/05/30 20:56 # 답글

    우와, 재밌게 잘 보고 있습니다. 그런데 unity build가 흥미로운데요. 이거 때문에 precompiled header가 있지 않나요? 결국 하고자하는 것이 VC++에서 볼 수 있는 stdafx.h/cpp와 완전히 같은데 좀 의문이 드네요.
  • 박PD 2010/05/30 21:43 #

    실제로 해 보면 약간 다른게 있을 거 같아요. 이 분들이 precompiled header 를 모르는 건 아닐테니. 둘 사이에 어떤 차이가 있을지 생각해 보는 것도 재미있겠네요.
댓글 입력 영역


Yes24위대한게임의탄생3

위대한 게임의 탄생 3
예스24 | 애드온2