• 로그인
  • 장바구니에 상품이 없습니다.

고향만두 게임은 왜 어려웠을까 (소스코드 분석)




예전엔 어도비 플래시를 이용하면 애니메이션을 쉽게 만들 수 있었는데

거기에 스크립팅 기능을 더해가지고 그걸로 게임제작도 가능했습니다.

그래서 플래시게임이라는 장르가 생겼고

쥬니어네이버 등의 플랫폼에서 플래시 게임들을 많이 즐길 수 있었습니다.






라면 끓이는 게임도 유명했고 




동물농장이라고 메모리 조작 해킹 기술을 육성하는 게임도 유명했습니다.






쥬니어네이버에 "고향만두"라는 간판급 게임이하나 있었는데

해보면 별거는 없고 고향만두를 맛있게 만들면 되는 게임입니다.

하지만 게임 역사상 최고의 난이도를 가지고 있었습니다. 

1. 속재료 14개 중 맞는 재료 고르기

2. 만두피 재료 고르기

3. 조리방법 고르기

이런걸 정확히 해야 클리어가 가능하기 때문에 때려 맞춘다고 가정했을 때 

대충 1/1,200,000 확률로 클리어가 가능합니다.


그런데 심지어 이상한 비밀레시피까지 존재한다는 소문이 있고 

분명히 똑같은 재료를 넣었는데 어떨 때만 클리어가 되고

그래서 엄청난 난이도를 자랑했는데 

어린이들의 억울함을 풀어주기 위해서 소스코드 분석을 해보도록 합시다.





소스코드

찾아보니까 2004년쯤에 개발자분이 게임 파일을 블로그에 직접 공유해주셨는데

그걸 플래시 파일 소스코드를 보여주는 JPEXS라는 프로그램으로 오픈해봤습니다.

다행히 코드가 난독화는 안되어있는 것 같습니다.



살펴보면 예전 플래시게임 특징인데 코딩할 때 변수대신 상남자처럼 이미지를 썼던 흔적이 가끔 있습니다.



위 사진처럼 점수를 1부터 9까지 그려놓은 Sprite animation을 만든 다음에

점수를 올리고 싶으면 그걸 1프레임씩 증가시키는 방식으로 점수를 기록하고 그랬었습니다.

그래서 소스코드에서도 점수를 증가시킬 때

"점수 이미지를 다음프레임으로" 이런 식으로 코드를 짜고 그랬습니다.

전역 변수를 만들고 관리하기 힘들어서 그랬다는 소문이 있는데

아무튼 그래서 디자인만 하던 분들도 직관적이고 쉽게 게임을 만들 수 있었습니다.






"마늘" 버튼을 누를 때 실행되는 코드입니다.

마늘을 추가하면 score_sok.nextFrame() 이렇게 점수 이미지를 다음 프레임으로 이동시켜서 점수를 +1 해주고 있습니다.

그래서 맞는 재료를 넣어서 총 점수를 7점 이상 획득하면 게임 클리어가 되는 로직이 있었습니다.

근데 마늘을 빼는 경우

score_sok.prevFrame();

score_sok.nextFrame();

이런 코드가 연달아서 실행이 되어서 점수변화가 없어지는 사소한 실수가 코드에 있었습니다.

그래서 마늘을 광클하는 경우 점수가 무한정 증가하는 버그가 있어서 옹스짱이랑 에이스를 넣어도 가끔 클리어가 된 것이었습니다.






실은 마늘말고 돼지고기같은 재료들도 똑같은 점수 무한증가 버그가 있었군요.

왜냐면 score_sok을 Number 타입으로 변환한 다음 +1 하라는 이상한 코드가 있는데

그것 때문에 이미지가 숫자가 되어버려서 "이전 프레임으로 이동해주세요" 이런 코드가 동작을 안했나봅니다.

그래서 맞는 재료만 광클하고 이상한 재료 몇개만 추가해도 게임 클리어가 가능했습니다.

그 부분들만 고치면 정상적으로 작동할 것 같군요








아무튼 플래시 게임들이 한 때 인터넷을 지배했던 시절이 있었는데 

플래시에 보안 취약점도 많았고 html css js라는 대체재가 생겨서

브라우저에선 이제 플래시를 기본적으로 실행할 수가 없게 되었습니다.

하지만 플래시 게임을 호스팅해주는 사이트도 아직 있고

플래시 실행을 도와주는 Ruffle같은 플레이어가 아직 있기 때문에

재밌는 게임을 만들어준 그때 당시 레전드 개발자분들께 감사하며 다시 플레이해보는 것은 어떨까요.





2026년 1월 29일

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관, 개인정보처리방침
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠