#gdc12 #review Developing Imperfect Software: How to Prepare for Production Pipeline Failure
downtime을 줄이려는 노력이 보이는 발표. assert는 고려해봐야겠다. undo/redo 데이터를 luna server에 저장한 게 인상적.
downtime
- 기다리는 사람 수를 곱해줘야 한다.
- 당연하지만 잊기 쉬운 사항. 명심.
engine data
- engine data 정의
- game 바이너리에 의해 메모리에 올라가는 data
engine data format
load-n-go
- 읽을 포맷을 struct로 정의하고 사이즈만큼 읽어서 변수에 바인딩
- CPU overhead가 적지만, data와 code 종속성이 강하다
- 버전이 바뀔 때마다 골치
read-n-build
- data 요소를 하나하나 읽는 방식
- CPU overhead가 크다
- 호환성이 장점
structured binary
- read-n-build의 호환성 장점을 취함
- load-n-go의 binary block loading 장점 취함
전략
- version number가 같다면 load-n-go처럼 동작
- version number가 다르다면 read-n-build처럼 동작
- serialize가 필요한 구조체마다 DDL(Data Definition Language)이 만든 .h, .cpp 사용
assertion
- assert와 if를 따로 항상 짝을 맞춰 코드를 짜는데, true, false를 리턴하게 ASSERT 매크로를 만드는 것도 좋은 생각
- debug에만 assert 내용이 활성화된다는 코딩 관습으로는 헷갈려 보이지만 assert와 if 짝을 강제해 얻는 이득이 더 커 보인다.
- skip이 가능한 assert는 절대 고쳐지지 않는다. 옳소
- 그래서 crash report와는 별개로 assert report도 쌓는다
- local에 먼저 쌓고 비동기로 서버에 전송(MongoDB 사용)
client/server tools architecture
- luna server는 local
- editor crash에 독립
- undo/redo를 luna server에 저장한 게 인상적
see also
발표
- 발표자: Pieket, Ronald (Insomniac Games)
- 발표자료