스컴

**스컴**(SCUMM, Script Creation Utility for Maniac Mansion)은 매니악 맨션이라는 그래픽스 어드벤처 게임의 개발을 쉽게 할 목적으로 루커스아츠(이전에는 루커스필름 게임스)가 개발한 스크립트 언어이다.

스컴은 게임 엔진과 프로그래밍 언어 사이에 위치한다고 볼 수 있는데, 이는 디자이너가 게임 소스 코드 설정을 마치는 언어 코드를 기록하지 않고 위치, 아이템, 대화 시퀀스를 만들 수 있다는 것에서 비롯한다. 또, 게임의 스크립트와 데이터 파일을 여러 플랫폼 간에 재사용할 수도 있다. 스컴은 iMUSE(*Interactive MUsic Streaming Engine*), INSANE(*INteractive Streaming ANimation Engine*), CYST (게임 내 애니메이션 엔진), FLEM (방 안의 장소와 물체 이름), MMUCUS와 같은 임베디드 게임 엔진을 위한 호스트이기도 하다. 스컴은 3DO, 아미가, 애플 II, 아타리 ST, CDTV, 코모도어 64, FM 타운즈 & 마티, 애플 매킨토시, 닌텐도 엔터테인먼트 시스템, 도스, 마이크로소프트 윈도우, 세가 메가 CD, 터보그래픽스-16/PC 엔진으로 포팅되어 출시되었다.

## 역사
원래 버전은 1987년 론 길버트 (초기에는 UnXman으로도 알려진 칩 모닝스타의 도움을 받음)가 코딩했으며, 이후 버전은 아릭 윌문더 (SCUMM 로드라고도 알려짐)와 브래드 P. 테일러가 개선했다. 이것은 획기적인 코딩 기술을 제공한 토큰 언어였다. P.R.I.N.E.와 같은 토큰이 처음으로 사용되었다.

SCUMM의 본질은 윌문더를 포함한 루카스아츠 초기 프로그래머들의 대부분이 미니컴퓨터와 유닉스 워크스테이션 프로그래머였다는 배경에서 비롯되었다. 당시 개인용 컴퓨터(PC)는 프로그램을 편집하고 컴파일하기에 충분히 큰 용량이나 속도를 가지고 있지 않았기 때문에, 루카스아츠 코더들은 종종 썬 워크스테이션에서 가능한 한 깨끗하게 코드를 작성하여 모든 오류를 제거함으로써, PC에서 컴파일이 느리더라도 오류 발생률을 낮출 수 있었다. 이 개념은 크로스 플랫폼 스크립팅 언어라는 아이디어에 영향을 주었다.

SCUMM은 사람이 읽을 수 있는 명령을 바이트 크기 토큰으로 변환한 다음, 게임을 플레이어에게 보여주는 실행 가능한 인터프리터 프로그램이 읽는 도구로 개발되었다. 예를 들어, SCUMM 명령 `walk dr-fred to laboratory-door`는 4바이트 명령으로 토큰화된다. 그들은 게임의 특정 세부 정보를 스크립트에 하드코딩하고 싶지 않았기 때문에, 토큰화 도구는 내부 번호 대신 스크립트에서 이름으로 액터를 인식할 수 있었다. 유일한 예외는 공포의 저택에서 캐릭터의 대화를 다른 텍스트 색상으로 표시하기 위해 번호를 포함해야 했던 것이지만, 이는 잭 매크라켄이 출시될 무렵에는 수정되었다. 스크립트는 전경 작업이 완료될 때까지 기다리는 동안 배경 액터가 행동을 수행하는 것과 같은 멀티태스킹 기능을 포함했다. 결합된 도구들은 게임의 신속한 프로토타이핑을 가능하게 했다. 스크립터는 아티스트가 그린 예비 캐릭터 및 배경 아트로 작업하여 스크립트를 다듬고 아티스트에게 피드백을 제공할 수 있었다.

SCUMM 프로그램은 스크립트를 토큰화하고 모든 다른 자산(예: 아트 및 사운드)을 패키지로 수집하는 역할을 했다. 재사용 가능한 인터프리터는 SPUTM이라고 불렸으며, SCUMM Presentation Utility (TM)는 게임 출하 시 게임 실행 파일의 이름으로 변경되었다. SPUTM은 스크립트를 해석하고, 디스크에서 자산을 로드하며, 게임과의 다른 사용자 상호작용을 처리했다. SPUTM은 실제로 상표 등록되지 않았지만, 윌문더에 따르면 그들은 "다른 체액의 이름을 따서 명명하고 싶었다"고 한다. SCUMM은 이후 많은 루카스아츠 어드벤처 게임에서 재사용되었으며 여러 번 업데이트되고 다시 작성되었다. 윌문더에 따르면, 공포의 저택을 위한 SCUMM 버전에는 엔진의 나중 버전에서 결국 사용될 명령의 약 80%가 포함되어 있었으며, 대부분의 핵심 명령은 수정이 필요 없었다. 개발을 돕기 위해 SCUMM과 함께 다른 도구 및 엔진이 개발되었으며, 다른 체액의 이름을 따서 명명되었다. SPIT는 화면의 다른 부분에서 텍스트 글꼴을 관리하는 데 사용되었다. FLEM은 특정 방을 정의하고, 그 안에 있는 객체를 추적하며, 캐릭터 애니메이션을 위한 클리핑 평면을 지정하는 데 사용되었다. MMUCAS는 FLEM과 함께 방과 그 객체를 하나의 파일로 컴파일하는 데 사용되어 스크립터가 방의 설명을 다시 컴파일할 필요 없이 신속하게 변경할 수 있도록 했다. BYLE 및 이후 CYST는 캐릭터 애니메이션 및 스케일링에 사용되었으며, 후자는 루카스아츠의 후기 게임에서 더 복잡한 아트에 사용되었다.

1992년 루카스아츠를 떠나 휴멍거스 엔터테인먼트를 공동 설립한 길버트는 루카스아츠와 휴멍거스가 게임 개발에 SCUMM 엔진을 사용할 수 있는 라이선스를 부여하는 계약을 체결했으며, 이는 그가 양사를 위해 엔진 개선을 계속 개발한다는 조건이었다. 게임 풀 스로틀의 경우, 팀은 SCUMM을 이전에 스타워즈: 레벨 어설트를 위해 개발되었던 INSANE 애니메이션 엔진과 통합하기 위해 노력했다. 윌문더가 풀 스로틀 출하를 위해 두 시스템을 작동시켰지만, 두 시스템 간의 상호 작용은 항상 안정적이지 않았고, 원숭이 섬의 저주 이전에 SCUMM이 INSANE 엔진 위에서 작동하도록 하는 데 시간을 보냈으며, SCUMM 엔진의 일부를 INSANE의 기본 요소를 사용하도록 교체했다.

내부적으로 SCUMM의 많은 작동 방식은 문서화되지 않았다. 윌문더는 배우기 비교적 쉽다고 믿었지만, 원숭이 섬의 비밀 이전에 이러한 접근 방식을 변경했다. 새로운 직원을 엔진에 훈련시키기 위해 길버트는 그들을 SCUMM University에 보내 SCUMM 엔진 사용법을 일주일 동안 가르쳤다. 이 "스컴렛"이라고 불리는 신입 직원들은 그들이 개발 팀에 가장 잘 맞는 곳을 파악하는 데 도움이 되는 예시 작업을 탐색하고 확장할 기회를 얻었다.

루카스아츠는 1998년 그림 판당고와 원숭이 섬 탈출 게임을 위해 자유 소프트웨어 스크립트 언어인 Lua를 사용하는 GrimE로 전환하면서 마침내 SCUMM 엔진을 포기했다. 휴멍거스 엔터테인먼트는 2003년 Backyard Soccer 2004가 출시될 때까지 백야드 스포츠 시리즈를 포함한 모든 PC 게임에 이 엔진을 계속 사용했다. 이후 게임은 파이썬 기반의 YAGA 엔진으로 개발되었는데, 여기에는 Putt-Putt: Pep's Birthday Surprise와 Pajama Sam: Life Is Rough When You Lose Your Stuff!가 포함되며, 이들은 SCUMM 엔진을 사용하지 않고 개발된 유일한 휴멍거스 어드벤처 게임이다.

2016년 3월, 윌문더는 루카스아츠의 많은 어드벤처 게임 디자인 문서와 SCUMM 엔진의 소스 코드를 깃허브를 통해 디지털 형식으로 제공할 계획이라고 밝혔다.

## 디자인
대부분의 SCUMM 게임은 동사-객체 디자인 패러다임을 특징으로 한다. 플레이어가 제어하는 캐릭터는 인벤토리를 가지고 있으며, 게임 세계는 다양한 동사를 사용하여 플레이어가 상호 작용할 수 있는 객체로 가득 차 있다. 이들 중 많은 부분은 초기 게임에서 화면 하단에 자주 표시되었지만, 풀 스로틀 (1995)과 원숭이 섬의 저주 (1997)에 이르러서는 마우스 커서에 나타나는 "동사 코인"으로 축소되었으며, 캐릭터의 눈(보기), 손(사용, 집기, 밀기, 당기기 등), 또는 입(말하기, 섭취, 흡입)을 사용하는 옵션이 있었다. 휴멍거스 엔터테인먼트의 게임은 이 인터페이스를 단순화하여, 플레이어가 객체와 상호 작용할 수 있을 때 채워지는 투명한 마우스 커서 그래픽을 사용하거나, 플레이어를 새 화면으로 이동시킬 클릭 지점을 나타내는 화살표로 변환했다.

퍼즐은 일반적으로 적절한 객체와 올바른 동사 동작을 사용하는 것을 포함한다. 예를 들어, "고무 나무에 비스킷 커터를 사용한다". "말하기"는 일반적으로 대화 시퀀스를 생성하며, 플레이어는 미리 정의된 질문이나 댓글 목록에서 선택하고, 대화 상대 캐릭터는 미리 정의된 답변으로 응답한다. 이 일반적인 패러다임의 주목할 만한 예외는 룸 (1990)으로, 표준 동사-객체 인터페이스를 사용하지 않고 대부분의 동작을 악기로 연주하는 주문으로 대체한다.

## 재구현
### 컴파일러
ScummC는 자체 자바스크립트와 유사한 언어를 SCUMM v6 바이트코드로 컴파일할 수 있는 도구(스크립트 및 의상 컴파일러, 워크박스 편집기, 문자셋, 그래픽, 오디오 및 MIDI 도구 포함) 모음이며, 스컴VM에서 그대로 실행할 수 있다. 이는 필요한 기술을 가진 누구든지 텐타클 최후의 날 및 샘 & 맥스 히트 더 로드와 동등한 기능을 갖춘 새롭고 독창적인 SCUMM 게임을 만들 수 있게 해준다.

ScummGEN이라는 유사한 프로젝트도 사용자 친화적인 도구로 동일한 목표를 달성하고자 한다.

Scummbler는 SCUMM 엔진 버전 3에서 5까지의 SCUMM 바이트코드 컴파일러이다. 이는 ScummPacker (Scummbler의 저자도 저자)와 ScummVM의 descumm 도구를 조합하여 원본 게임 파일에서 디컴파일된 스크립트를 사용한다. 이러한 스크립트는 원본 게임 파일에 다시 삽입될 수 있어 번역과 같은 기존 게임 수정에 유용하다. 또한 이미지 인코더-디코더와 음성 파일을 텍스트에 매핑하는 데 도움이 되는 도구도 사용할 수 있다.

### 인터프리터
스컴VM은 자유-오픈 소스 소프트웨어 프로젝트로, 휴대용 심플 다이렉트미디어 레이어 (SDL) 라이브러리 기반 SCUMM 엔진 클라이언트를 만들어 많은 SCUMM 엔진 게임이 원본 버전이 작동하지 않거나 문제가 있는 시스템에서도 플레이할 수 있도록 한다. 여기에는 최신 윈도우 및 매킨토시 시스템, 리눅스 (휴대용 핸드헬드—안드로이드, GP2X, GP2X 위즈, 마에모 등 포함), BeOS-하이쿠, 아미가OS (3.x, 4.0 및 그 복제판 모르프OS 및 AROS), 아타리 TOS (그 후속작—EmuTOS, MagiC, FreeMiNT 등 포함), 팜 OS, 윈도우 모바일 (포켓 PC), 드림캐스트, 플레이스테이션 2, 플레이스테이션 포터블, 닌텐도 DS, Wii, 심비안 OS (SeriesXX 및 UIQ), iOS (아이패드, 아이폰, 아이팟 터치), 웹OS 및 QNX-플레이북 플랫폼이 포함된다.

scvm은 ScummC 저자가 개발한 SCUMM 인터프리터이다. 2008년 4월 현재 프로토타입 상태이며, ScummC 개발을 위한 스크립트 디버거가 될 예정이다. hiscumm은 scvm과 ScummVM의 일부를 Haxe 플랫폼으로 포팅하여 어도비 플래시 백엔드를 갖춘 인터프리터를 생성하려는 시도이다.

## 참조 및 내부 농담
내부 농담은 루카스아츠 어드벤처 게임의 흔한 특징이었다. 개발자들은 여러 게임에서 엔진 이름을 코믹한 효과를 위해 사용했다.

공포의 저택에 언급된 펑크 밴드 Razor and the Scummettes와 원숭이 섬 시리즈의 SCUMM 바는 모두 스크립트 언어의 이름을 따서 명명되었다. 원숭이 섬 탈출에서 적대적 인수에 의해 피해를 입은 SCUMM 바는 Lua 바가 되는데, 이는 이전 게임에 사용된 엔진을 대체한 프로그래밍 언어를 참조한다. SCUMM은 또한 원숭이 섬의 비밀에서 그로그의 재료로 나열되어 있다.

## 같이 보기
* 스컴VM - 스컴 가상 에뮬레이터

## 각주

## 외부 링크
*  SCUMM history
*  SCUMM: Adventure--LucasArts Style

분류:어드벤처 게임
분류:게임 엔진
분류:1987년 개발된 프로그래밍 언어