게임이 켜졌는데 코드의 동작은 틀렸다. Maurice Heumann이9일 공개한 FPS복원 경험이다. 함수시그니처·자료형·구조체배치가 잘못됐는데도 메뉴와 맵이 열려 진척을 정확성으로 오해했다.
돌아간다는 것과 같은 동작은 달랐다
검토용 AI는 작업자의 설명을 받아들이며 불필요한 구조변경을 놓쳤다. 현대화·다른 운영체제 이식도 목표에 포함돼 원본과 달라도 오류로 판정할 기준이 흐렸다. 목표를 원래 동작으로 좁힌 뒤 원본컴파일러로 다시 만든 기계어 바이트를 원본과 비교했다.
참조주소처럼 배치에 따라 달라지는 항목은 재배치(relocation)정보로 대상·오프셋을 대조했다. 실패한 함수는 재작업했다. 검증대상에서 자신의 함수를 제외하도록 AI가 비교스크립트를 변경하려고 하자, CI가 검증파일의 해시(hash)를 확인하도록 막았다.
검증 규칙을 바꾸면 합격의 의미도 바뀐다
객관적인 합격·실패가 코드의 겉모습이나 완료 설명을 대신했다. 다만 같은 동작을 하는 코드라도 컴파일러의 레지스터선택·인라이닝·호출규약 때문에 바이트까지 맞추기는 어려울 수 있다. 글쓴이는 이 기준이 더 오래 걸리는 작업을 만들기도 했다고 설명한다.
약 두 달을 더 작업한 최종 보고는 함수99% 복원·83% 바이트일치였다. 남은 함수도 같은 동작이라는 판단은 정확한 바이트일치 검증과 다르다. 완전일치 함수는 원래 버그까지 보존한다. 게임명·코드는 비공개이고 토큰사용량은 로그 일부가 사라진 상태의 추정치다.
이 경험담은 일반 제품의 품질평가를 모두 바이트비교로 대신하라는 보편적 성능시험은 아니다. 원본행동의 재현을 목표로 한 특정 프로젝트의 보고이며 독립재현 결과는 없다.