20년 된 비즈니스 게임의 비밀을 풀다
원제 Decompiling Fast Food Tycoon 2: Drawing the World
120 포인트댓글 25
Key Point
20년 전 고전 게임의 역컴파일을 통해 당시 게임 개발의 세부 기술(렌더 최적화, 라이팅 시스템, AI 스케줄링)과 게임 디자인(평가 알고리즘)의 정교함이 드러났으며, 현대 게임 개발과 비교할 때 아날로그 시대 게임이 얼마나 치밀했는지 보여준다.
핵심 요약
- 2001년 작 비즈니스 시뮬레이션 게임 '패스트 푸드 타이쿤 2'를 역컴파일해 그 구조를 분석한 결과를 공개했다.
- GPT-6.1 Sol Medium과 Ghidra를 활용해 fastfood2.exe의 4,046개 함수를 약 9.5MB의 C 형태 코드로 변환하고 SQLite에 로드해 함수 간 관계를 검색할 수 있게 만들었다.
- ReadProcessMemory API와 Windows 메시지 핸들러 패칭을 통해 실행 중인 게임의 메모리를 검사하고 UI 스레드에서 명령을 실행할 수 있도록 했다.
- 게임의 렌더링 방식은 더티 영역(변경된 부분)을 추적해 화면 재드로우 범위를 최소화하며, 색상과 조명값을 분리 저장한 후 최종 출력 시에만 합친다.
- 낮밤 주기는 25개의 시간별 밝기값 테이블(야간 70, 주간 251)을 따르고, 거리등은 객체 ID 기반으로 미세한 시차를 두고 켜져 건물 창문은 어두워도 밝게 유지된다.
- 모든 동작은 .ani 파일에 저장된 스프라이트 시트로 사전 제작되며, 산책자의 다음 방향은 좌표 차이 부호로 결정되고 프레임당 이동량은 각 애니메이션마다 다르게 설정돼 있다.
- 시민들은 생성 시 일정이 할당되고 매일 리셋되지 않아 같은 장소를 반복 방문하며, 직업별·인구통계별로 특정 장소의 선호도가 다르게 코딩되어 있다 (오후 영화관 가기, 자정 펍 방문 등).
- 피자 평가는 24개 영역으로 토핑 분포를 측정하고 대칭성을 확인하며 재료 조합을 검증하는데, 경쟁사 피자를 베껴도 재료 무게 기반 표절 검사로 적발되며 원조성 부족 시 맛 점수 30점을 잃는다.
- 게임은 내부적으로 '피자3'으로 불렸으며 개발사는 독일어로 작성한 텍스트를 남겼고, 게임 매뉴얼은 약 100페이지 분량이었다.