꿈꾸는자의 생각의 파편들... :: [펌] 스크립트 언어의 활용

달력

10

« 2019/10 »

  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  

원문보기

 

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

 

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

Posted by 꿈꾸는자의 생각의파편들

댓글을 달아 주세요