Awesome
golang websocket-server and webassembly-client service-framework
go 언어로 만든 websocket-server, webassembly-client 를 지원하는 서비스 프레임워크 입니다.
goguelike, gowasm2dgame, gowasm3dgame, gofieldwar(비공개) 등을 만들며 사용한 코드들의 공통 부분들을 모아서 다른 프로젝트에도 사용하기 편하게 정리한 것입니다.
기본 코드는 stage 기반의 채팅기능만이 존재하며 각 프로젝트의 필요에 따라 확장해 쓰시면 됩니다.
html5 canvas 를 사용한 2D game 예제를 보려면 https://github.com/kasworld/gowasm2dgame
webgl 을 사용한 3D game 예제를 보려면 https://github.com/kasworld/gowasm3dgame
좀 복잡한 게임(수만 라인 규모) 예제를 보려면 https://github.com/kasworld/goguelike
를 참고하시면 됩니다.
사전 준비 사항 ( goguelike 의 INSTALL.md 참고)
준비물 : linux(debian,ubuntu,mint) , chrome web brower , golang
goimports : 소스 코드 정리, import 해결
go get golang.org/x/tools/cmd/goimports
버전 string 생성시 사용 : windows, linux 간에 같은 string생성
go get github.com/kasworld/makesha256sum
프로토콜 생성기 : https://github.com/kasworld/genprotocol
go get github.com/kasworld/genprotocol
Enum 생성기 : https://github.com/kasworld/genenum
go get github.com/kasworld/genenum
Log 패키지 및 커스텀 로그레벨 로거 생성기 : https://github.com/kasworld/log
go get github.com/kasworld/log
install.sh 실행해서 genlog 생성
컴파일, 실행
코드 생성 및 빌드
./build.sh
서버 및 클라이언트 실행
cd rundriver
./genwasmclient.sh&& go run server.go
화면에 나오는 링크를 브라우저에서 실행
open admin web
http://localhost:24201/
open client web
http://localhost:24101/
windows 에서 작동시키려면?
signalhandlewin을 사용하는 rundriver/serverwin.go 를 사용하시면 됩니다.
packet marshaler(serializer)
기본적으로 gob 를 사용하게 되어 있습니다. (gos_gob 패키지)
json을 사용하고 싶으면 gos_json 을 사용하도록 수정하고
msgp(MessagePack) 를 사용하고 싶으면 gos_msgp를 사용하도록 수정하면 됩니다.
그외 다른 marshaler를 사용하려면 위 세개의 패키지를 참고해서 marshal 패키지를 만드시면 되겠습니다.