go 언어로 GUI 프로그램을 만들기.
By SeukWon Kang
goguelike는 애초 목표가 필요한것은 찾아 쓰고 없으면 만들어 사용한다. 였고 필요한 기능은 다중 client를 지원하는 TCP server GUI client with mouse and keyboard input server info by web auto generated terrain server and client side AI 그외 system의 contents에 해당하는 부분들 정도였습니다.
대부분의 기능은 구현이 가능했는데 go 언어용 GUI 라이브러리 만은 잘 보이지 않더군요.
실제로 검색해 보면 대부분의 GUI 라이브러리들이 만들다 만것들이거나 아니면 더이상 관리되지 않는 것들, 시험삼아 만들어 본것들 이었습니다.
그 상태로는 사용할수 있는 GUI library가 없다고 판단하고 일단 graphic library 인 https://github.com/veandco/go-sdl2 을 사용하기로 결정했습니다.
일단 급한대로 대충 client를 제작하고 ( 애초에 goguelike에서 중요한것은 server지 client가 아니므로 ) 다른 작업을 진행했는데 결국 마지막에 눈으로 확인 하기 위해선 client가 필요하니 client의 업데이트가 자주 필요했습니다.
하지만 graphic library만으로 만들어진 client는 기능을 추가하거나 개선하는 것이 극악하게 힘들었고 결국 자체 제작 GUI library를 만들게 되었습니다.
goguelike client 에 필요한 기능만을 만들었기때문에 실제사용 가능한 (범용)GUI control은 단 2개 뿐입니다.
다만 설계할때부터 추후에 control을 추가하기 (나름대로는) 편하게 (제가 쓸거였으니까요. ^^ )준비 했기때문에 필요한 control을 추가하는 것은 그렇게 힘들지 않을것으로 생각합니다.
실제 goguelike client에서도 이 control들을 embedding 통해서 기능을 확장해서 사용하고 있구요. (goguelike 는 6개의 custom control을 만들어 쓰고 있습니다. )
다만 아직 설계가 확정된것이 아니라 앞으로 대량의 re-factoring 나 설계 변경이 일어날 가능성은 남아 있습니다.
github위치는
https://github.com/kasworld/go-sdlgui 입니다.