2009/11/08 12:39
LightSpeed - EMT
라이트스피드의 개발 도구인 EMT는 게임 개발이 어떤 식으로 변화해 가고 있는지를 알아보는데 도움이 되었습니다. EMT는 그냥 Entity Modelling Tool의 약자입니다. 간단히 엔티티를 그리는 도구라는 의미입니다. 라이트스피드에서 어떤 기능은 엔티티 간에 관계로 이루어집니다. 미리 만들어진 여러 가지 기능을 상속해 새로운 기능을 만들어내는데 사용하거나, 새로운 기능을 프로그래머 손을 빌리지 않고 빨리 프로토타이핑 하는데 사용할 수도 있습니다.
게임 상에 동굴이 하나 있는데, 동굴을 바위로 막아 놓고 바위를 굴려서 치우면 동굴에 들어갈 수 있도록 하고 싶다고 칩시다. 바위 모델이야 어디서든 주워올 수 있겠지만 바위에 물리도 붙여야 하고 배치도 해야 하는 등 기획자 혼자서 할 수 있는 일이 별로 없습니다. 결국 기획자는 방금 이야기한 내용을 손가락 아프게 기획서로 만들거나, 입 아프게 프로그래머에게 이야기해야 합니다. 더 골때리는 건 바위를 만들어놓고 보니 구려서 도로 치워야 하는 상황입니다. 두 사람과 두 파트를 거친 이터레이션은 '동굴 앞을 바위로 막아봤더니 구리더라'라는 시행착오에 의한 교훈을 남기기는 했지만 생각보다 많은 자원을 소모해 버렸습니다.
대신 EMT에서는 미리 만들어진 기능을 이리 저리 붙여서 동굴 앞을 막은 바위를 만들 수 있습니다. 일단 바위 모델을 하나 만들고 모델 애셋을 지정해 줍니다. 그럼 일단 게임 상에 바위 모델이 나타납니다. 이걸 적당하 배치해 놓고 피직스 모델을 상속해 줍니다. 피직스 모델에는 충돌 모형이나 무게, 중력 따위를 설정할 수 있습니다. 여기까지 진행하면 기획자는 다른 자원 없이 동굴 입구를 막은 바위를 만들어볼 수 있고 아까와 똑같은 '동굴 앞을 바위로 막아봤더니 구리더라'라는 교훈을 얻었지만 이번에는 자원을 훨씬 덜 소모했습니다.
사실 위에서 간단히 바위에 모델 애셋 지정하고 피직스 모델 떨구는 걸로 끝난 동굴 앞 바위 막기는 실제로는 훨씬 더 복잡한 과정을 감추고 있습니다. 모델은 라이트를 받아 그림자도 그려야 하고 텍스처는 어떻게 할 것이며 바위가 굴러갈 때 이펙트는 어떻게 할 것이며 피직스 모델은 하위에 복잡한 물리 속성을 감추고 있기까지 합니다. 대신 기존에는 이 모든 과정을 다른 스텝의 도움을 받아야 했다면 이제는 잘 추상화된 모델을 끌어다 붙여 놓기만 하면 프로토타이핑이 가능해졌다는 점에 의미가 있습니다.
이렇게 해 봤는데 혹시 '동굴 앞을 바위로 막아봤더니 재밌더라'라는 교훈을 얻으면 그때부터는 본격적으로 다른 스텝들에게 일을 맡기면 됩니다. 이펙터가 바위가 굴러가는 그럴싸한 이펙트를 만들고 원화가와 모델러가 동굴 앞을 막고 있을만한 그럴싸한 바위를 만들어내면 됩니다. 이건 확실히 게임에 들어갈 거고 '혹시 이거 안 들어갈까' 조마조마하며 만들지 않아도 됩니다.
기획자가 다른 스텝과 의사소통을 할 때도 훨씬 편하게 할 수 있습니다. 위에서 '동굴 앞을 바위로 막아 보자'는 내용의 기획서를 사람들에게 돌리는 것과 실제 작업할 사람들을 불러 모아 놓고 동굴 앞을 막은 바위를 게임상에서 직접 보여주며 '이런걸 만들거에요'라고 이야기하는 것 사이에는 말로 다 하기 어려울만큼 많은 차이가 있습니다. 작업자들 머리 속에는 뭘 만들어야 하는지에 대한 확실한 목표가 시각적으로 공유되어 기획서에 적힌 글자 쪼가리를 잘 못 이해해 일어나는 낭비를 줄일 수도 있습니다.
게임 개발에 많은 시행착오가 필요하다는 것은 분명한 사실이지만 이 시행착오를 최소화하고 작업자들이 모두 확실히 같은 목표를 머릿속에 넣고 작업을 진행하도록 하는 과정에 EMT 같은 도구가 큰 역할을 할 수 있을 겁니다. :)
