• 자리 이동한다. 그래도 이번엔 한 5개월쯤 이동 안한거 같네. 보통은 3개월 주기. 오후 12시 42분
  • 게임 제작실 워크샵 진행 중. 감기 때문에 헤롱헤롱.. 오후 3시 52분
  • 개인적으로 우리 회사 비젼은 정말 영 아니다. 도저히 와닿는 표현이 아님. 오후 4시 10분
  • 확실히 여기도 게임개발자들이 모여있긴 한가보다. ^^ 오후 4시 32분
  • Visual Studio 2008 .NET Beta 1 (Code Name Orcas) 받는 중. 다운로드 속도 75, 74, 78, 77.2 KB/sec….. 남은 시간 81시간 22분… 켁~ 오후 11시 9분

이 글은 oscarplex님의 미투데이 2007년 4월 20일 내용입니다.

  • 심심해서 Visual Studio .NET 2005의 기능을 이것저것 살펴보는데, Tools/Import and Export Settings 가 있는 것을 발견하다. 2005에는 드디어 생겼었구나! 오전 8시 16분
  • 오, 회사 내에 신한은행 지점이 생기는거 같다. 굿. 오후 12시 6분
  • 2007년도 동원 지정되었다. 연기해야지.. –;; 오후 4시 9분

이 글은 oscarplex님의 미투데이 2007년 4월 19일 내용입니다.

  • 스프링노트로 문서 작성하다가 뭔가 헤어날 수 없는 버그에 빠진거 같다. 문서 새로 작성해야 하나;; 오전 9시 17분
  • 감기가 좀 제대로 걸린거 같네. 쩝. 오후 3시 32분
  • 정기점검 막판에는 항상 뭔가 일이 발생하기 마련이지. ^^ 오후 6시 30분
  • 저녁으로 매운 오삼불고기를 먹었더니 몸이 좀 좋아지는 듯한 느낌? 착각인가… 오후 9시 2분
  • 정기점검 QA OK Sign 떨어졌다. 퇴근~ 오후 11시 18분

이 글은 oscarplex님의 미투데이 2007년 4월 18일 내용입니다.

  • 회사 pc 드디어 메모리 2기가 업! 별의별 이유로 1년이 걸렸다.. 믿겨지삼? -0- 오전 9시 43분
  • 목이 좀 간질간질한게 아무래도 목감기? –;; 오전 9시 44분
  • 아침에 아파트 지하주차장에서 차 빼서 와이프한테 전달하는데 기어 파킹에 안 놓고 내렸다가 화단 들이받을 뻔 했다… -0- 오전 9시 44분
  • Silverlight 공개~ 사실 이런걸 쓸 일은 없지만 이런 최신 트렌드에서 기존 업무의 아이디어를 얻는 경우가 많다. 오전 10시 55분
  • 현재 수익률 10%.. 팔까? 말까? 오전 11시 9분

이 글은 oscarplex님의 미투데이 2007년 4월 17일 내용입니다.

요즘 루아를 클라이언트에 좀 확대 적용하느라 삽질을 하고 있다. 생각보다 꽤 다양한 이슈가 나와서 며칠 고민을 좀 했는데 그래도 이젠 대충 정리가 되는 듯 하다.

사실, 루아 자체는 나온지 상당히 오래된 스크립트 언어이고 안정성, 속도, 호환성에서 이미 아는 사람은 다 아는 언어였다고 한다. 다만 파이썬 등과는 달리 확실히 Native 프로그램에 임베드 시키는 것을 목적으로 발전해왔기에 일반적으로는 잘 알려지지 않았던거 같다. 뭐, 임베딩용으로 제작하는 스크립트의 경우, 사실 직접 만드는 경우가 훨씬 많았었기 때문일수도 있다. (보통의 프로그래밍 언어의 시작이 개인이나 일부 조적의 특정 타입의 문제 해결을 위해 시작된 경우가 많다)

내가 루아라는 스크립트 언어를 처음 본건 World of Warcraft (일명 와우, WOW)에서다. ^^ 아마 상당한 일반 유저 및 개발자가 와우를 통해 알게 되었을 거라고 본다. 와우는 클라이언트의 대부분의 UI 처리를 XML 마크업으로 정의하고 그에 따른 이벤트 및 로직을 루아 스크립트로 처리하는 방식으로 되어 있다. 기본 UI만 이렇게 정의된 것이 아니라 유저가 다양한 애드온을 제작해서 배포할 수도 있다. 물론 게임 밸런싱을 해치는 기능은 애초에 제공하지 않는다.

와우에서 유저들이 만든 다양한 애드온을 보고 있으면 정말 세상엔 별걸 다 생각해서 만드는 사람이 있구나.. 가 첫 번째 드는 생각이고, 두 번째가 블리자드는 어째 이런걸 다 커스터마이징 가능하게 공개할 생각을 했을까.. 이다. 마지막은 이러한 스크립트 언어는 사실 기능에 대한 잘 정의된 추상화된 인터페이스를 제공하지 않으면 없으니만 못한데.. 와우는 이런 것을 잘 제공하고 있다. (좀 불편한 인터페이스도 있긴 있음.. 개인 차이일지도)

일반적으로 스크립트 언어라고 하면 동적 타이핑이 일단 가장 큰 특징이다. 즉, 주로 런타임 시에(실제 스크립트를 인터프리팅 하는 과정에서)상황에 따라 타입이 자동으로 결정된다. 물론 이거 100% 믿다간 아주 제대로 실수할 수 있다. 추가로 강력하고 쓰기 쉬운 기본 제공 타입이 있다는 것이다. 루아에서는 바로 테이블이라는 타입이다. 파이썬에서는 튜플인가? 기억이 잘 나질 않네.. 어쨌든 루아의 테이블은 C++로 따지면 이름을 어거지로 붙여서 멀티 타입 맵이라고 할 수 있다. 코드를 보면..

local t1 = {“name” = “오스카레인”,
“level” = 70,
“길드” = “Myth”,
“item” = {“머리” = “천벌의 투구”, “바지” = “천벌의 다리보호구”, … }

}

보는 바와 같이 데이터 형식이 그냥 맘대로다. 문자열, 숫자, 중첩 테이블.. 맵이라기 보단 특정 클래스의 인스턴스라고도 할 수 있다. 사실 루아에서는 OOP의 클래스 개념을 사용하기 위해 테이블을 사용한다. (메타 메서드를 사용하여 클래스와 유사하게.. 상속까지 표현할 수 있다)

또 다른 장점이라면 언어 자체의 학습 장벽이 C++에 비해 좀 낮지 않을까라고 생각도 든다. 물론 이건 내가 이미 C++에 익숙해서 일수도 있지만 일단 문법적 내용이 그다지 많지 않기 때문에 쉽다고.. 생각할 수도.. 음.. 흠.. 아닐까나? –;;

하여튼 이런 스크립트, 특히 루아를 C++에 임베딩 시켜서 사용한 경우 개인적으로 생각하는 장점은 프로그램의 재 빌드나 재 시작 없이 기능을 변경하여 적용해 볼 수 있다는 것이다. 어차피 스크립트 파일이라는건 외부 텍스트 리소스이기 때문에 필요한 경우 수정하고 이를 다시 로딩할 수 있도록 하면 된다.

개인적으로 생각하는 가장 큰 장점이라고 할만한 것은 따로 있다. 스크립트에서 직접적으로 프로그램에 영향을 끼치는 것은 프로그램 내에서 루아 스크립트에 제공하는 인터페이스 함수를 호출할 때 밖에 없다. 이는 결국 앞서 말한것처럼 잘 정의된 루아 글루 인터페이스를 제작해야 하고 이는 필연적으로 프로그램 구조 자체를 잘 정의할 수 밖에 없도록 만든다. 기존 코드에 루아 스크립트를 임베딩 하려고 할 때, 적용 수준에 따라 달라지겠지만 상당한 리팩토링이 필요할 것이라고 생각한다.

이러한 스크립트를 임베딩 할 때 문제점도 분명 존재한다. 일단 기존 프로그램에 적용한다고 하면 프로그램 구조를 변경하는 작업이 만만치 않다. 또한 아무리 쉽다 해도 새로운 언어를 익히는 것이 그렇게 쉬운 것은 아니다. 특히나 효율적으로 사용하기 위해서는 확실히 어느 정도의 기간이 필요하다. 또한 동적 타이핑 언어를 사용함으로써 발생하는 문제점도 있으며 스크립트 언어의 특성 상 코드 커버리지 테스트를 좀 더 확실하게 해야 한다는 점도 있다.

또한 개인적으로 가장 큰 문제는 스크립트의 적용 범위를 어떻게 가져가야 할 것인가이다. 이 말은 루아 글루 인터페이스를 어떻게 정의할 것인가의 이야기이고 적용 범위에 따라서는 프로그램의 근본적인 설계 구조까지도 영향을 끼칠 수 있다. 개인적인 경우를 예로 들면, 루아를 처음 적용할 때는 간단한 이벤트 성 코드를 좀 더 편하게 하기 위해 한 것인데, 하다 보면  왠만큼 가변적인 내용은 전부 스크립트로 제어하고 싶다는 생각이 들 때가 있다. 뭐, 개발자의 욕심이랄까..? 결국 프로그램을 만드는데 있어서 항상 부닥치게 되는 근본적인 설계 구조까지 고민하게 되면 어떤 점에서는 루아 스크립트를 적용하는게 사서 고생이 되어버릴 수도 있다. 특히나 그런 내부적인 개선을 업무 성과로 쳐주지 않는 일부 회사들에서는 더더욱.. (물론 우리 팀은 아니다. ㅋㅋ)

일단 개인적으로는 업무 상 일부 적용을 하고 있고, 계속 확대 예정이다. 사서 고생은 하고 싶진 않지만.. ^^ 뭐, 하다 보면 답이 나오겠지.

Recent Posts

Categories