Fast Food Tycoon 2 역컴파일: GPT-6.1 에이전트가 4,046개 함수에서 렌더러와 조명 구조를 캐냄
- GPT-6.1 Sol Medium으로 에이전트 루프를 돌려 Ghidra로 fastfood2.exe의 4,046개 함수를 약 9.5MB C 유사 코드로 뽑고, SQLite에 적재해 필드 쓰기·호출자·문자열로 검색함.
- 렌더러는 dirty region 방식으로 바뀐 영역만 다시 그리고, 지도 셀을 대각선 순서로 도는 여러 패스로 가림 관계를 처리함. 가려진 캐릭터는 임시 픽셀값으로 표시해 두었다가 노란 외곽선, 사고 아이콘은 흰 외곽선으로 되살림.
- 조명은 25개 시간대별 밝기 테이블(밤 70, 낮 251)을 따르고, 램프는
id & 7로 8단 임계값을 가져 18:25~18:30에 켜지고 05:35~05:40에 꺼짐. 광원 바닥값은 밤새 160 이상 유지함. - 피자집 창문과 간판은 h_pizz_a1.m.spr 밝기 마스크와 야간 색 파일 h_pizz_a1.l.spr로 처리해, 건물이 어두워지는 동안에도 밝게 남음.
- 실행 중인 게임은 ReadProcessMemory로 메모리를 읽어 화면과 대조하고, Windows 메시지 핸들러를 패치해 게임 UI 스레드에 명령을 보내 조작함. 디스크의 실행 파일은 변경하지 않음.
Hacker News opinions
나도 어릴 때 이 게임 했는데 피자 점수 규칙이 그렇게 단순한 줄은 몰랐음. 게임 내 백과사전에 애들이 큰 사이즈를 좋아한다고 적혀 있어서 통닭 한 마리 통째로 올린 피자를 팔았는데, 재료비가 비쌀수록 마진도 커져서 돈을 왕창 벌었음.
독일어 원판에서 노인들을 'Grufties'라고 부르는데 영어판이 Goths로 옮긴 건 사전에서 그대로 가져온 오역 같음. 뜻을 살리면 Cryptid가 더 맞았을 듯.
나도 이 게임은 이름만 몰랐는데, 할인 게임 코너에서 가격표만 꽂힌 통을 몇 겹씩 뒤지다 명작을 건진 게 한두 번이 아님. 그때 최고의 게임들이 최악의 게임들이랑 똑같이 취급받는다는 걸 그때 알았음.
아이소메트릭 게임은 내 어린 시절을 정의했는데 이렇게 렌더링 내부를 들여다볼 수 있다니 신기함. 창문 색을 미리 구워둔 .spr 파일로 조명을 처리한 방식이 특히 재밌었음.
3D 심 게임으로 넘어간 건 업계에 실수였다고 봄. 그때는 픽셀아트가 훨씬 좋았고, 다시 괜찮아 보이기까지 15년 걸렸는데 그것도 카툰 셀 셰이딩으로 겨우 그런 거임.
AI 쓴 글은 이래야 한다고 봄. 디컴파일하고 분석은 AI로 하되 글은 사람이 썼잖음. AI한테 전부 맡긴 게 아니라 이해를 돕는 데 쓴 사례임.
사람이 썼다는 건 어떻게 아는 거임?
유럽에서는 Pizza Connection 2라는 이름이라 이 제목만 보면 못 알아볼 수도 있음. 나는 친구 집에서 이 이름으로 했던 기억이 남.
OpenRCT2나 OpenLoco 같은 프로젝트는 진짜 대단한데 무료 에셋이 빠져 있음. OpenTTD가 완전 무료 소프트웨어가 됐을 때가 생각남. 나도 Blender 좀 배워서 도움이 됐으면 싶은데 그냥 평범한 IT 종사자임.
이런 분석 글이 게임 메커니즘에 영감을 받은 게임이 다시 나오는 계기가 됐으면 함. 유명 엔진만 쓰는 흐름에서 벗어나는 데도 도움이 되고.
이건 재능 있는 엔지니어가 AI랑 손발을 맞춘 좋은 예임. 최상위도 아닌 6.1 Sol Medium으로 해냈고, 토큰만 왕창 쓰고 성과가 없으면 결국 평가에서 걸릴 거라는 얘기가 맞아떨어짐.