본문 바로가기

Game Dev.../게임만들기

[펌] 스크립트 언어의 활용

원문보기

 

많은 현업 개발자들은, (그리고 절대다수의 아마추어 개발자들은) 게임 개발에 있어서 스크립트는 필수적이라고 생각하고, 이를 지원해주지 않는 많은 한국의 프로그래머들을 비웃을지도 모른다. 그러나, 우리 프로그래머들이 스크립트를 도입하기 싫어서 안하는 건 아니다. 시간이 많이 남거나, 반복되는 작업과 요청이 귀찮거나, 아예 처음부터 스크립트를 쓸 작정을 하고 시작했을 때에나, 이전 프로젝트에서 스크립트 덕택에 짭짤했거나, 상부의 강요가 있지 않은 이상, 개발 도중에 스크립트를 도입하는 건 꽤나 귀찮고 어려운 일이다. 어쨌든 이러저러하게 도입했다 하더라도 그 스크립트가 어디어디까지를 지원할 것인가는 프로그래머의 손에 달려 있다. 경력이 짧은 프로그래머들에게 워크래프트3, NWN, 모로윈드의 스크립트를 기대한다는 것은 좀 무리가 아닐까 한다.

 

http://www.reapers.org/nwn/reference/ -- NWN 스크립트 레퍼런스

 

레이옷이 처음 스크립트를 도입한 계기가 바로 스타크래프트의 트리거 시스템의 파워풀함이었으며, 여기에서 감명을 받아서 만든, AI 용 스크립트가 바로 최초의 스크립트였다. 이 넘을 DB에 넣어두고 서버 뜰 때 한번 읽게 하는 정도여서, 빠른 수정과 결과 바로 보기 같은 용도로는 쓰기가 좀 애매했다. 당연히, 기획자들이나 운영자들은 이들의 존재를 잘 알지 못했으며, 단지 AI 개선의 요청이 있을 경우 프로그래머들이 적절히 고치는 정도였달까?

 

두번째 프로젝트에서도 처음부터 스크립트를 도입할 생각은 없었다. XP 를 기반으로 필요한 것만 제일 빨리 구현하고 논다..라는 개발방침 덕분에 한달만에 게임의 골격을 완성하고, 이후부터 서서히 기능추가와 최적화를 해나갔기 때문이다. 처음에는 select() 기반의 TCP 로 했다가 IOCP 를 도입하고, UDP 를 도입하고, Windows Service 를 사용하고, 새로운 게임 모드를 추가할 때쯤, lua script 를 도입하게 되었다. 계기는, redpixel 님과의 오프라인 만남에서 컬쳐쇼크를 먹었기 때문! (아마도 한국에서 루아를 제일 잘 다루는 분이 아닐까 한다)

 

http://www.lua.org -- 루아 공식 홈페이지

http://www.redwiki.net -- 네트워크 프로그래머라면 한번쯤 가봐야 하는 레드위키

 

루아를 도입하고 나서 얻은 것은, 왜 처음부터 이걸 하지 않았나..하는 후회이다. 리얼타임 게임개발이랄까? 컴파일과 빌드 없이 실시간으로 코드를 수정하고 그 결과를 본다는 게 얼마나 편했던지... 기존의 안정화된 C++ 코드를 점차 루아로 치환해나갔기 때문에, 별다른 문제점도 없었고 문법이 별로 어렵지 않아서 개발팀 내부의 정보 확산도 용이했다. 속도 문제야 뭐 루아가 원체 빠르니까... 한가지 걱정이 남아있다면, 그것은 바로 디버깅이다. 아직까지 VC++ 에서 line by line 실행해가면서 스택을 보는 게 지원되지 않아서... 우리의 희망은 LuaPlus 라는 루아 확장 모듈을 만드는 회사에서 개발중인 디버깅 지원... (지금은 스택 보기만 지원함)

 

http://wwhiz.com/LuaPlus/index.html -- LuaPlus

 

세상에서 제일 훌륭한 프로그래머는 바로 게으른 프로그래머라고 하는 말처럼, 스크립트는 프로그래머를 게으르게 해주는 좋은 축복의 선물이라고 감히 말해본다.