[Lua,GUITool] 루아로 게임 GUI와 툴 개발하기 위한 리서치

사내 프로젝트의 GUI는 정말 유지보수 하기 힘든 상태입니다. 하드코딩에 복잡하고 지저분하고 등등등 이루 말할 수 없죠. 그 와중에 잠깐 자체 스크립트(txt)로 구현된 신규 UI에 대한 분석 업무가 주어졌었고 분석 중에 이건 아니다 싶어서 기존 UI를 루아(Lua)로 바인드 시켜 개발을 하는 방향으로 가야겠다 생각했었습니다.

그때 당시 최종 결정난 것은 그냥 기존 UI 시스템 그대로 가자였고 지금은 엔진을 SDL2로 포팅중이기 때문에 지난 GUI 모듈 리서치 포스팅에 있던 것 중 GWork를 사용할 예정입니다. 루아를 사용하지는 않겠지만, 일단 리서치 했던 내용이 좀 아까워서 리서치 한지 1년이 다 되가는 내용 정리를 시작해봅니다.

일단 루아를 선택하게된 계기로 돌아가면, 신규 자체 UI 스크립트 시스템이라고 있었지만 스크립트라는 것 하나의 장점만 있었지 그 외에는 단점이 더 많았습니다. 단점 목록은 아래와 같은데요,

  • txt 자체 스크립트의 활용
    • 스크립트 자체 가독성과 파싱 처리가 별로
  • UI 컨트롤의 부족
    • 기존 ui와 비슷한 단 2개의 컨트롤만 만들어진 상태
    • 기존 ui와 호환성 없음. 다 다시 만들어야 함
안되겠다 싶어서 해당 안건에 대한 분석은 종료했었습니다. UI 작업은 저희처럼 툴도 없는 상황이고 시스템도 확장성이 고려된 상황이 아니면 노가다성이 심하죠. 그렇다고 현재 UI 시스템을 갈아엎고 다시 만드는건 너무 비용이 큰 것 같았습니다.

그래서 루아로 방향을 선회했던거죠. 차라리 현 GUI 구조도 별로지만 1차적으로 UI 생성과 관련된 컨트롤들을 루아로 바인딩 시켜 하드코딩이라도 좀 줄이고, 2차적으로 UI의 함수들의 기능까지 빼서 더 개선할 생각으로 말이죠.



루아는 현 모바일 게임 시대 이전 MMORPG 게임 분야에서 인기짱? 스크립트 언어였죠. 와우 덕분으로 알고 있는데, 사실 모바일에서도 Cocos2d-x나 다른 몇 엔진에서도 사용되고 있기는 합니다. 제가 생각하는 루아로 GUI 처리를 했을때의 장, 단점은 아래와 같습니다.

  1. 장점
    • 프로그래머 친화적 스크립트(사내 자체 txt 스크립트에 비하면! 더더욱!)
    • 기존 UI 컨트롤을 사용할 수 있음.
    • UI Lib 프로젝트의 빌드 시간을 단축 시킬 수 있음.
    • 개발 방향에 따라 UI 생성 뿐 아니라 동적인 컨트롤이 가능
    • 런타임에 변경 사항을 적용 및 테스트 가능.
    • 예전에 유료였던 Lua 디버깅 툴인 decoda가 오픈소스 무료로 풀림
    • UI 스크립트 시스템을 오픈하면 와우 처럼 유저 참여도를 높일 수 있을 것으로 보임
  2. 단점
    • 루아 스크립트 익혀야함.
    • decoda가 무료지만 어쨌든 디버깅은 c++ 개발 환경보다는 손이 더 갈 듯.
요정도로 생각되어집니다. 기존 자체 txt로 된 스크립트보다 장점이 많죠. 그리고 그때 당시 생각했던 작업 방향(목표)는 아래와 같습니다.
  1. 공통
    • 필요하다면 기존 UI 시스템 구조 변경
    • 작은 UI 컨트롤부터 루아 스크립트화 진행.
  2. 1차
    1. 단순 UI 생성 및 UI 데이터 처리
    2. 데이터의 경우 루아 자체를 활용할지 xml, json을 활용할지에 대한 고민
  3. 2차
    1. UI 이벤트 등의 로직 부분을 스크립트로 처리
  4. 3차
    1. 툴 개발

자 이제 C++과 루아의 바인딩, 툴 개발을 어떻게 할지, 기타 다른 도구들은 뭐가 있는지 리서치를 해봤었습니다. 먼저 바인딩의 경우,
  • toLua
    • 자동으로 루아와 c/c++ 바인딩 코드를 생성해주는듯
  • 루아팅커(LuaTinker)
    • 게임에 루아 연동이 인기 있던 2000년 중후반부터 사용되어온 Lib
    • 한국분이 만듬. 자료가 많음.
    • 직접 바인딩 코드를 작성
    • GpGiki LuaTinker
정도가 있는 것 같은데, toLua의 경우 Cocos2d-x 등도 사용이 된거 같은데 전 한번도 사용해보지 않아 일단 1순위로 루아팅커를 정해뒀었습니다.

다음으로 루아 관련 IDE 또는 Visual Studio 플러그인들을 리서치 해봤었습니다. 단순 링크 정도이며 자세한 내용은 확인해보지 않았습니다.

마지막으로 추후 툴 개발할 때 참고할 만한 것들 리서치 링크 내용입니다.

루아를 다시 만질날이 올지 모르겠네요. 이상으로 약 1년전에 리서치 했던 내용을 마무리 해봅니다.

이 블로그의 인기 게시물

CMake Windows에 설치하기

Unity3D Prime31 처럼 자신만의 안드로이드 플러그인을 만들어보자

Unity3D iOS Plugin 만들어 연동하기