go4game 에 웹 클라이언트를 추가 했습니다.
By SeukWon Kang
사진 설명 : go4game web client
소스코드는 언제나 처럼 https://github.com/kasworld/go4game 에 있습니다.
go언어는 서버에서 사용하는 것을 중점으로 하고 있기 때문에 client UI 를 작성할 만한 라이브러리가 적당한 것이 없습니다.
기본 라이브러리만이 아니고 3rd party 에서도 아직까지는 딱히 이거다 라고 할만한 것이 없더군요.
그에 반해서 서버를 만들기 위한 라이브러리는 tcp/http 불문하고 넘칠 정도로 많고 또 잘되어 있는데 아마도 go언어로 만든 프로그램의 UI는 당연히 web으로 작성하라는 의미 같습니다.
그런 관계로 go4game도 client UI는 웹으로 작성해야 겠다는 생각이 들어서 ( 사실은 클라이언트 UI 라이브러리를 찾다 포기하고 ^^; ) 웹 작업을 했습니다.
사용한 라이브러리는 go용 websocket라이브러리로 https://github.com/gorilla/websocket 를 사용했고
web 3d client용으로 http://threejs.org/ 를 사용했습니다.
web client용으로 http://phaser.io/ 나 http://www.pixijs.com/ 를 사용해볼까 생각도 했었는데 go4game은 wxgame2와는 달리 3d 를 생각하고 있었기 때문에 three.js 를 쓰는 것으로 결정 했습니다.
web client 까지의 구조는
- 서버 내의 go struct
- json serialize 용 go struct
- websocket serialize
- web browser websocket - json
- three.js scene object 형태로 이동합니다.
그리고 javascript 프로그래밍을 해본 느낌은 원시적인 python/lua 같은 느낌이더군요. 대부분의 필요한 일을 하는 것 자체는 가능한데 뭔가 신뢰성 높은 프로그램을 짜려면 고민이 많이 필요하겠다는 느낌이 듭니다. 그래서 http://coffeescript.org/ 를 써 볼까 하고 좀 봤는데 syntax가 영 맘에 들지 않았습니다. ( 웹에서 들여쓰기 블럭을 사용하는 것과 지나치게 특수기호를 생략하는 형태의 구문이 별로 입니다. )
go4game을 실행하는 방법은 서버는 go run server/main.go -rundur 60 - 형태이며 실행되면 6666 포트로 tcp 접속을 8080포트로 web / websocket 접속을 기다립니다.
tcp client는 go run client/main.go -client 1000 -rundur 60 -connectTo localhost:6666
web client는 브라우저로 http://localhost:8080/www/client3d.html 로 접속하면 됩니다.
- golang
- 프로그래밍
- javascript
- go4game
- go programming language
- three.js
- go
- 게임프로그래밍
- webgl
- websocket
- 온라인게임
- 게임개발
- 게임만들기