2010년 7월 22일

크로포드, "처리 강도"

GPG 보내기 인쇄하기 / PDF로 저장하기 인쇄하기 / PDF로 저장하기인쇄하기 / PDF로 저장하기

"처리 강도"는 게임 디자이너 크리스 크로포드가, 컴퓨터 게임이나 소프트웨어 디자인에서 컴퓨터의 데이터 저장능력보다 데이터를 처리하는 능력에 집중해야 한다는 철학을 나타내려고 제안한 개념입니다. 친근한 언어로 비유해보면, 호화로운 그래픽과 사운드가 주는 인상에 너무 기대지 말고, 시스템 디자인으로 나타내는 것에 집중해야 한다는 거죠.

글은 짧습니다. :-)


크리스 크로포드

1987년 12월, 저널 오브 컴퓨터 게임 디자인 1권 5호

원제: Process Intensity (원문보기 [영어])

 

지난 호 《저널 오브 컴퓨터 게임 디자인》에서 처리 강도(process intensity)를 언급한 적이 있다. 이 에세이에서 그 유용한 개념을 설명해보려고 한다.

처리 강도는 프로그램이 데이터 대신 처리를 강조하는 정도를 말한다. 모든 프로그램은 처리와 데이터를 섞어 사용한다.처리는 알고리듬 등식과 분기로, 데이터는 데이터 테이블과 이미지, 사운드, 텍스트를 대변한다. 처리가 강한 프로그램은 숫자를 처리하는 데 집중하고, 데이터가 강한 프로그램은 바이트를 옮기는 데 집중한다.

처리와 데이터 사이의 차이점은 심원하다. 처리는 추상적인 반면 데이터는 유형적이다. 데이터는 직접적이지만 처리는 간접적이다. 데이터와 처리의 차이는 숫자와 등식, 사실과 원리, 사건과 동력, 지식과 관념의 차이다.

데이터 처리야말로 컴퓨터의 본질이다. 자기 테이프, 천공 카드, 종이와 잉크, 마이크로필름, 마이크로필름 카드, 광학 디스크 등 데이터를 저장하는 기술은 수도 없이 많다. 하지만 데이터를 처리하는 기술은 오직 하나, 컴퓨터 뿐이다. 이것은 다른 기술에 비해 컴퓨터가 우위를 갖는 유일한 근거다. 컴퓨터를 데이터 중심 방식으로 사용하는 것은 그 엄청난 능력을 낭비하는 것이다.

처리 강도는 ‘컴퓨터다움’의 본질과 너무도 가까워 어떤 종류의 소프트웨어든지 그 가치를 평가할 유용한 기준을 제공한다. 그 척도는 처리 강도를 대략적으로 수량화해서 만들었다. 데이터당 연산(operations per datum)의 비율을 사용하는데, 나는 비트당 처리(crunch per bit)율이라고 부른다. 내가 여기서 연산이라고 하는 건 추가나 추출, 지역 연산, 혹은 단순한 불린 제외나 추가처럼 데이터에 적용되는 모든 과정을 말한다. 여기서 데이터는 비트나 바이트, 문자, 부동 소수점 숫자처럼 작은 조각의 정보를 말한다.

이 기준을 워드 프로세싱 소프트웨어에 적용해 그 유용성을 입증해 보겠다. 당신이 워드 프로세서로 책을 한 권 쓴다고 하자. 당신은 책으로 쓸 주제에 박식하고, 한 점 흠도 없이 조직적이며, 타자능력도 완벽하다. 키보드 앞에 앉아서 작문하는 족족 타이핑하고, 어떤 실수도 범하지 않는다. 그런 식으로 일이 끝난다면 워드 프로세서를 제대로 활용하지 않은 것이다. 이런 건 타자기로도 할 수 있다. 즉, 이 일에 굳이 워드 프로세서를 사용할 필요가 없었던 것이다. 비트당 처리율은? 0이다. 사실상 프로그램이 하나의 단어도, 문자도 연산하지 않았기 때문이다. 키보드에서 프린터로 단어가 직접 이동하는 데에는 어떤 의미 있는 처리과정도 개입하지 않았다.

자, 이제 당신은 생각했던 것만큼 박식하지 않고, 원고에서 몇 가지 고쳐야 할 실수를 발견했다고 가정해보자. 다시 워드 프로세서로 돌아가, 몇 가지를 바꾸고 새로 원고를 출력한다. 이제야 워드 프로세서가 타자기에 비해 조금 이점이 생겼다. 하지만 조금 복사하고 붙여넣고 몇 페이지 다시 쓰는 건 그리 큰 이점은 아니다. 파일 속 데이터의 일부를 조작했기 때문에 비트당 처리율은 0에서 조금 올랐다.

이제 당신이 더 나이가 들고 현명해져서 원고가 오류 투성이라는 걸 깨달았다고 하자. 그 많은 단어의 철자를 바꾸려면 책과 챕터 대부분을 재조직하고, 동시에 레이아웃도 바꿔야 한다. 글자들을 옮기고, 검색으로 걸린 내용들을 변경할 수록 원고 속 데이터 상당량이 강도 높게 처리된다. 이는 매우 높은 비트당 처리율로, 드디어 워드 프로세서가 그 빛을 가장 잘 발휘하는 부분이다.

같은 분석방법이 다른 어플리케이션에도 적용된다. 스프레드시트는 똑같은 데이터를 서로 다른 방식으로 최대한 많이 계산할 때 그 가치를 보여준다. 데이터베이스 관리 프로그램은 데이터를 서로 다른 방법으로 정렬하고, 검색하며, 보고서를 작성하고, 처리할 때만 제 값을 한다.

이는 게임에서도 마찬가지다. 비트당 처리율이 높고, 게임이 컴퓨터를 활용하는 만큼 게임이 더 즐거워질 가능성이 높다. 실지로 게임은 컴퓨터 세계에서 가장 높은 비트당 처리율을 자랑한다. 플레이어가 비행 시뮬레이터에 입력하는 데이터가 얼마나 작으며 이 데이터가 촉발하는 연산은 얼마나 방대한가 생각해보라.

비트당 연산율 기준은 나쁜 소프트웨어 아이디어를 밝혀내는 데도 사용할 수 있다. 노장들은 개인용 컴퓨팅의 초기의 악명 높은 “수표책 관리 프로그램”을 떠올릴 수 있겠다. 이 소프트웨어는 누구 하나 예외 없이 개인용 컴퓨터의 가치를 의심했을 정도로 촌티 나던 시절 널리 인용된 것이다. 베이퍼웨어도 아니었다. 이미 세간에 많은 수표책 관리 프로그램이 떠돌고 있었다. 문제는 그걸 사용하는 사람이 없는 것 같았다. 왜 그랬을까? 누구도 딱히 그 이유를 말할 순 없겠지만, 그 프로그램들은 실용적이지 못 했다. 이 문제에 처리 강도 관념을 적용해보자. 그 프로그램들은 각각의 데이터마다 아주 작은 처리만을 수행하기 때문에 낮은 비트당 처리율을 지닌다. 어떤 수든지 관리용 수표책에 추가하거나 제외할 수 있다. 그게 데이터당 연산의 전부다.

이 추론은 개인용 컴퓨터 초기에 있었던 다른 쓸 데 없는 예 중 하나인 레시피 프로그램에 대해서도 잘 들어맞는다. 이는 남편이 컴퓨터를 구입하는 데 아내의 묵인을 얻기 위한 구실로 자주 인용되는 베이퍼웨어(‘쓰레기웨어’라고 하는 게 더 낫겠지만)였다. 대단한 듯 보였지만, 전혀 그렇지 않았다. 낮은 처리 강도가 이유였다.

처리 강도의 원칙을 나쁜 게임에도 적용할 수 있다. 1983년 여름 큰 히트를 친 아케이드 게임 《드래곤스 레어》(Dragon's Lair)를 기억하는가? 처음으로 나온 비디오디스크 게임이었고, 호화스러운 카툰 애니메이션은 즉각적인 센세이션을 일으켰다. 언론은 이 지각변동에 대한 기사를 마구 써댔고, 소비자들은 기계 앞에 장사진을 이루었다. 아타리는 미친듯이 대여섯 개의 비디오디스크 게임 프로젝트를 시작했다. 모든 소란의 한복판에, 단 한 사람만이 그 상아탑을 보고 별 다른 감흥을 느끼지 못 해서, 그건 그저 일시적 유행일 뿐이라는 말로 기자들을 실망시켰다. 어떻게 내가 비디오디스크 게임은 유행이 지나면 실패할 운명이었다는 걸 정확히 알 수 있었을까? 간단하다. 그 비트당 처리율이 취약했다. 그 게임의 모든 데이터는 그저 디스크 속에만 떠돌다가 컴퓨터의 처리도 거의 받지 않고 화면에 그대로 나간다. 플레이어의 행동이 디스크에서 애니메이션 시퀀스를 선택하는 것 이상을 못 했다. 거기에는 별다른 처리가 없었다.

‘처리 강도 원리’의 함축은 장중하고 범위는 넓다. 여느 포괄적인 관념처럼 이것 역시 여러 가지 작은 이의제기가 있다.

경험 많은 프로그래머는 데이터가 처리를 대용할 수 있음을 알 것이다. 실제로 데이터 테이블로 대체될 수 있는 알고리듬이 많다. 이는 램을 늘려 처리 속도를 올리는 흔한 트릭이다. 때문에 많은 프로그래머들은 처리와 데이터를 상호 대용 가능한 것으로 본다. 이 오해는 높은 수준의 소프트웨어 디자인에 낮은 수준의 고려사항을 적용하는 데서 발생한다. 물론, 사인 값의 테이블을 색인해두어도 별 문제 없을 수 있지만, 《밸런스 오브 파워》처럼 복잡한 게임에서 가능한 행위의 모든 결과를 기술하는 테이블을 상상할 수 있겠는가?

더 심각한 문제는 개인용 컴퓨팅 기술의 진화에서 온다. 지난 10년 동안, 우리는 1MHz로 돌아가는 8비트에서 8MHz로 돌아가는 16비트로 옮겨왔다. 이는 처리 능력이 100배 향상되었음을 나타낸다. 동시에, 램 크기도 4 킬로바이트에서 4 메가바이트로 천 배는 늘어났다. 대용량 저장장치는 4K의 카세트에서 20 메가바이트의 하드디스크로 늘어났다. 5천 배다. 이는 데이터 저장 용량이 처리 능력보다 더 빨리 증가하고 있다는 것이다. 이런 상황에서, 우리는 데이터의 양을 늘리는 우를 범할 수도 있다. 이것은 근본적인 변화가 아니라 조절의 문제다.

좋은 컴퓨팅에는 처리와 데이터가 모두 필요하다는 주장도 있다. 이는 처리할 데이터가 없는 알고리듬은 쓸모 없다는 점에 주목해, 좋은 프로그램은 처리와 데이터 사이에 균형을 잡아야 한다고 주장한다. 이 주장은 근본적으로 그럴 듯 하지만, 처리와 데이터를 적절히 혼합 해야 한다는 점 외에는 아무 것도 제시하지 못 한다. 그저 적은 양의 데이터가 필요하다는 점만 확실히 해준다. 데이터가 처리와 같은 수준으로 강조되어야 함을 보여주는 것은 아니다.

처리 강도가 중요하다고 해서 데이터가 본질적으로 부정적이라는 의미는 아니다. 데이터는 게임에 색상과 질감을 부여한다. 데이터가 전혀 없고 지나치게 처리 강도가 높은 게임은 거의 수학적인 느낌일 것이다. 체커와 체스, 《디플로머시》, 《밸런스 오브 파워》를 스펙트럼으로 놓고 생각해보자. 이 스펙트럼의 뒤로 갈 수록 게임 속에 세계에 대한 데이터의 양이 늘어난다. 체커는 아주 순수하고 깔끔하다. 체스는 말들의 능력을 구분하는 데이터를 조금 더 했다. 《디플로머시》(Diplomacy)는 군사력의 본질과 유럽의 지리학적 관계에 대한 데이터를 더 넣었다.《밸런스 오브 파워》는 세계에 대해 무지막지한 데이터를 쏟아 부었다. 하지만 데이터의 절대적인 양은 증가했더라도 비트당 처리율은 여전히 높다. 어쩌면 더 늘어났다. 요점은 데이터가 본질적으로 나쁜 건 아니라는 것이다. 데이터의 양은 처리의 양이 늘어나는 것에 부수적으로 늘어날 수 있는 것이다.

이제 처리 강도에 대한 가장 강력한 저항이 하나 남았다. 바로 우리 모두를 괴롭히는 정신적 게으름이다. 처리가 강한 것은 구현하기가 매우 어려운 반면, 데이터가 강한 것은 프로그램에 넣기 쉽다. 그저 아트윅을 파일에 넣고 화면으로 읽어 들이면 된다. 사운드 효과를 디스크에 저장하고 스피커를 통해 뿜어내면 된다. 데이터 집중 방식은 즉각적인 만족을 준다. 즉시 멋진 소리와 이미지가 나온다. 처리 집중 방식은 그 시간을 모두 등식과 씨름하며 보내야 한다. 너무 간접적이기 때문에 어떻게 작용할지 확신할 수 없다. 데이터 집중 방식에 비하면 결과물은 언제나 너무 원시적으로 보인다. 그래서 우리는 저항이 가장 적은 데이터 집중 방식을 따른다.

처리 강도는 게임만이 아니라 모든 종류의 소프트웨어 디자인에 있어 강력한 이론적 개념이다. 매우 이론적이고, 그래서 이해하고 구현하기가 어렵다. 그 관념을 적용할 때는 무수한 예외와 타협에 대한 숙고가 필요하다. 그럼에도, 이것은 게임 디자인에 있어 유용한 이론적 도구이다.

댓글 2개:

lemma :

잘봤습니다. 좋은 통찰이네요.

밝은해 :

@lemma - 2010/07/23 07:14
감사합니다. 앞으로도 좋은 글 번역할게요 :)

댓글 쓰기