#gdc12 #review Robustification through introspection and analysis tools

havok에서 사용하는 RTTI 코드 생성 자동화, script binding 정책, memory reporting 방법을 소개

developer taxes

It’s something you do, not because it actually benefits you specifically, but because it benefits the software landscape as a whole. - Raymond Chen

reflection

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-00.png

  • build 과정에 자동으로 reflection 생성
    • pre-build 스텝에
  • 자동화를 해서 수동으로 reflection을 만들 때 문제점을 해결
    • out-of-sync errors
  • reflection data unit test도 수행

runtime introspection

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-01.png

slimmer script bindings

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-02.png

  • wrapper와 native가 1:1 관계인 걸 fat bindings라 정의
  • signature에 따라 trampoline을 생성해 실제 native와 바인딩
  • memory cost가 줄어들고 multilanguage(lua, python, …)가 가능
    • trampoline을 공유할 수 있기 때문
  • 다만 indirection이 늘어 속도에서 불이익

memory reporting

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-03.png

  • 수동으로 하지 않는다.
  • type root부터 시작해 reflection을 사용해 메모리 사용량을 다 알아냄.

versioning

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-04.png

/pnotes/assets/2016-08-27-gdc12-robustification-through-introspection-and-analysis-tools-05.png

  • 버전 간 패치를 일반화한 것에 주목.
  • 그리고 metadata 비교로 자동으로 만들어 내는 것도 주목.
  • 테스트하기가 더 쉽다.

see also

발표


크리에이티브 커먼즈 라이선스
Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com
|