{"id":19463825,"url":"https://github.com/kasworld/gowasm2dgame","last_synced_at":"2026-06-06T23:32:06.113Z","repository":{"id":57524597,"uuid":"222383226","full_name":"kasworld/gowasm2dgame","owner":"kasworld","description":"golang port of wxgame2","archived":false,"fork":false,"pushed_at":"2021-02-06T06:44:34.000Z","size":10267,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-11-10T18:12:25.788Z","etag":null,"topics":["2d-shooting","golang","htmlcanvas","multiplayer-online-game","top-view","webassembly","websocket"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kasworld.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-11-18T06:58:55.000Z","updated_at":"2021-02-06T06:44:37.000Z","dependencies_parsed_at":"2022-09-16T16:45:11.141Z","dependency_job_id":null,"html_url":"https://github.com/kasworld/gowasm2dgame","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fgowasm2dgame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fgowasm2dgame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fgowasm2dgame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fgowasm2dgame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasworld","download_url":"https://codeload.github.com/kasworld/gowasm2dgame/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":232967162,"owners_count":18604066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d-shooting","golang","htmlcanvas","multiplayer-online-game","top-view","webassembly","websocket"],"created_at":"2024-11-10T18:12:23.627Z","updated_at":"2025-01-08T03:12:44.412Z","avatar_url":"https://github.com/kasworld.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# html canvas 와 webgl 버전의 클라이언트를 지원하는 2d 게임 프레임웍\n\n\nhtml canvas version \n![screenshot](2d.png)\n\nwebgl version\n![screenshot](3d.png)\n\n\n# 사전 준비 사항 ( goguelike 의 INSTALL.md 참고)\n\n준비물 : linux(debian,ubuntu,mint) , chrome web brower , golang \n\ngoimports : 소스 코드 정리, import 해결\n\n    go get golang.org/x/tools/cmd/goimports\n\n버전 string 생성시 사용 : windows, linux 간에 같은 string생성\n\n    go get github.com/kasworld/makesha256sum\n\n프로토콜 생성기 : https://github.com/kasworld/genprotocol\n\n    go get github.com/kasworld/genprotocol\n\nEnum 생성기 : https://github.com/kasworld/genenum\n\n    go get github.com/kasworld/genenum\n\nLog 패키지 및 커스텀 로그레벨 로거 생성기 : https://github.com/kasworld/log\n\n    go get github.com/kasworld/log\n    install.sh 실행해서 genlog 생성 \n\n\n# 개요 \n\npython 2.x 와 wxpython tcp connection 으로 만들었던 wxgame2 를 \n\ngolang, websocket, wasm 으로 포팅하는 프로젝트 입니다. \n\npython2가 지원이 종료된다니 겸사 겸사 이기도 합니다. (python3로 포팅할 계획은 없습니다.)\n\ngoguelike를 만들면서 정리한 go언어 서버 제작 용 라이브러리(프레임웍) 의 총정리 예제이기도 합니다.\n\n중요한 역할을 하는 것들을 정리해보면\n\n[genprotocol](https://github.com/kasworld/genprotocol) 서버 클라이언트가 사용할 프로토콜 생성, 관리 \n\n[argdefault](https://github.com/kasworld/argdefault) : config와 command line arguments \n\n[prettystring](https://github.com/kasworld/prettystring) : struct 의 string 화 / admin web , debug용 \n\n[genenum](https://github.com/kasworld/genenum) : enum 의 생성, 관리 \n\n[log](https://github.com/kasworld/log) : 전용 log package의 생성, 사용 \n\n[signalhandle](https://github.com/kasworld/signalhandle) : signal을 관리해서 프로그램의 linux 서비스화, start,stop,forcestart,logreopen\n\n    windows에서 동작 시키려면 이 signalhandle을 signalhandlewin 으로 교체한 serverwin 을 사용합니다.  \n\n정도 입니다. \n\n패킷의 marshaler로는 json을 썼었는데 너무 느리고 커져서  gob로 바꿨습니다. \n\n서버 기반으로 작동하기에 모든 로직 처리는 서버에서 이루어 지며 \n웹 클라이이언트는 뷰어 로만 작동합니다. ( 서버 패킷 간 화면 표시의 위치 보정 정도 )\n\nAI 는 현재는 서버 내부에서 작동하지만 \nAI와 게임 스테이지 간은 스테이지 정보를 보내주고 AI는 동작 command를 만들어 돌려주는 형태로 분리 되어 있습니다. \n\nAI의 동작은 시간 기반으로 제한을 받으며 이를 위반하는 command 는 무시 됩니다. \n\n예를 들어 기본 총알인 bullet은 2초에 한번 발사 할 수 있습니다. ( 또는 10초간 모았다가 연속으로 5번 발사 할 수도 있습니다. )\n같은 식입니다. \n\nstage는 6개의 AI(client) 가 모여서 게임을 하는 방 의 개념이며 아직 까지는 여러 stage를 지원 하지는 않고 있습니다. \n여러 stage를 지원하려면 stage manager나 로비 , 방의 생성, 참가 , 퇴장 등의 기능을 지원 해야 하는데 \nwxgame2 의 go언어 포팅 이라는 원래 목적을 넘어 서는 것 같기 때문입니다. \n\n(하지만 언젠가 하게 될지도 모릅니다. )\n\n## 서버 실행후 브라우저 서비스 포트 (config에서 수정 가능)\n\n    open admin web\n    http://localhost:24201/\n    open client web\n    http://localhost:24101/\n    open glclient web\n    http://localhost:24101/gl.html\n\n\n# windows 에서 작동시키려면?\n\nsignalhandlewin을 사용하는 rundriver/serverwin.go 를 사용하시면 됩니다. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fgowasm2dgame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasworld%2Fgowasm2dgame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fgowasm2dgame/lists"}