{"id":21318402,"url":"https://github.com/phuhao00/greatestworks","last_synced_at":"2025-07-12T02:33:23.876Z","repository":{"id":44522053,"uuid":"511584063","full_name":"phuhao00/greatestworks","owner":"phuhao00","description":"the back-end logic of game ","archived":false,"fork":false,"pushed_at":"2023-07-29T15:56:24.000Z","size":49627,"stargazers_count":123,"open_issues_count":2,"forks_count":24,"subscribers_count":5,"default_branch":"main","last_synced_at":"2023-11-07T20:36:46.939Z","etag":null,"topics":["event","game","golang","grpc","mmo","mongodb","redis","rpc","server","tcp"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phuhao00.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":"2022-07-07T15:37:29.000Z","updated_at":"2023-11-07T11:52:59.000Z","dependencies_parsed_at":"2023-02-17T20:01:00.662Z","dependency_job_id":null,"html_url":"https://github.com/phuhao00/greatestworks","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phuhao00%2Fgreatestworks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phuhao00%2Fgreatestworks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phuhao00%2Fgreatestworks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phuhao00%2Fgreatestworks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phuhao00","download_url":"https://codeload.github.com/phuhao00/greatestworks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225787454,"owners_count":17524108,"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":["event","game","golang","grpc","mmo","mongodb","redis","rpc","server","tcp"],"created_at":"2024-11-21T19:12:39.620Z","updated_at":"2024-11-21T19:12:40.178Z","avatar_url":"https://github.com/phuhao00.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `greatestworks`\n\n `greatestworks` is a  framework which include  the back-end logic of game . \n\n\n\n![](frame.png)\n\n## 初衷 （original intention）\n\n* 1.充分发挥 golang 语言特性 (Give full play to the features of golang language)\n\n* 2.微服务思想,低耦合 (Micro service idea, low coupling)\n\n* 3.面向对象+组合 (Object oriented+combination)\n\n* 4.高性能 (High performance)\n\n* 5.事件驱动 (Event driven)\n\n## Server Frame\n![](svr.drawio.png)\n\n### 目录结构说明\n* `aop`\n  - 面向切面的逻辑\n* `server`\n  - 各个节点服务,include login ,gateway ,world,battle\n* `internal`\n  - include automation,event,record,communicate,note,purchase,gameplay \n* `gre`\n  - 运维，部署，工具(createmodule;exel2json)等\n\n### `module` 说明\n\n每个模块包含\n* `data`\n  - 对应的数据存储\n* `system`\n  - 该模块的管理，例如数据的CRUD，有 `system` 的模块，其成员实例不具备 独立处理协程.\n* `iplayer`\n  - 定义player需要实现的些方法\n* `handler`\n  - 处理从属模块需要的业务逻辑\n* `I*`\n  - 模块成员的抽象，接口定义,`eg:INpc`\n* `config`\n  - 配置,常量的定义等\n* `module`\n  - 模块的管理与维护，例如 event (事件)的处理\n* `on_event`\n  - 事件处理\n\u003cbr\u003e\n\n模块与模块之间的联系通过 `player` 为中介，以事件订阅，发布的形式处理 \u003cbr\u003e\n每个模块会管理自己激活的事件\n\n![](module.drawio.png)\n### `Player`\n\n 每个 `Player` 实例 拥有自己的协程\n\n### `Scene`\n\n 每个 `Scene` 实例 拥有自己的协程\n\n### `task`\n  * 支持配置多协程处理业务逻辑\n  - `Data` 存放 玩家任务实例数据\n  - `impl` 任务类型的实现\n### `idea` \n\n  * 模块之间依赖的属性，借助 `redis` ,`mongo`,`consul`,`nsq`,`rabbitmq`\n  * 服务节点之间的依赖，借助 `redis` ,`mongo`,`consul`,`nsq`,`rabbitmq` \n  * 服务节点之间的通讯，通过 `rpc`, `tcp`,`nsq`,`rabbitmq`\n  * 客户端与逻辑服务器之间的通讯，通过  `tcp` , `kcp` ,`quic` \n  * 客户端与登录服之间的通讯，通过 `https`\n---------------------------------------------------------------------\n  * 系统模块支持 动态 开关\n  * 协议层 约束参数传递，防外挂\n  * GM 走上帝模式 不用登录某个玩家账号\n  * 支持无死角压测，模块级别压测\n  * 事件驱动\n  * 模块级别 性能参数上报\n  * 数数日志埋点 支持无死角覆盖\n  * 支持 动态扩展，收缩\n  * 代码优雅,命名合理有意义,阅读性高\n----------------------------------------------------------------------\n  * 不在单层直接handle消息,分级分发给各个子协程handle,是突破并发瓶颈必然选择\u003cbr\u003e\n    - 1.由于每个模块处理业务速度，频率是不一样的\n    - 2.分散风险，当一个玩法出现不能玩，可以做到不影响其他玩法正常玩\n\n\n### `deployment`\n \n  * docker + k8s\n  ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphuhao00%2Fgreatestworks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphuhao00%2Fgreatestworks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphuhao00%2Fgreatestworks/lists"}