项目作者: cwjokaka

项目描述 :
🎃A lightweight game server framework. Based on Springboot and Netty. Using ProtoBuf as communication between client and server.
高级语言: Java
项目地址: git://github.com/cwjokaka/cheshuo.git
创建时间: 2020-04-11T14:40:40Z
项目社区:https://github.com/cwjokaka/cheshuo

开源协议:MIT License

下载


cheshuo

一个轻量级的游戏服务器框架,基于Springboot和Netty,使用Protobuf作为客户端和服务器之间的通信.功能逐步完善中…😘


目前支持协议:

  • TCP
  • Websocket

项目依赖:

名称 用于 链接
JDK1.8 Java环境
Springboot 2.X 主要使用IOC与简化配置,以及方便日后使用全家桶 https://spring.io/projects/spring-boot
Netty 4.X NIO通讯框架 https://netty.io/
jprotobuf 简化java protobuf编解码 https://github.com/jhunters/jprotobuf
Maven 项目构建

模块介绍:

模块名 说明
game-client-demo H5界面的游戏客户端模拟, 使用TCP协议时需开启TcpAgent把ws转为TCP
game-framework 游戏服务框架的实现
game-server-demo 基于game-framework实现的简单服务器demo

快速开始:

1.添加依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>cheshuo-spring-boot-starter</artifactId>
  4. <version>1.0.0</version>
  5. </dependency>

2.参考配置application.yml

  1. cheshuo:
  2. host: localhost # 服务地址, 默认0.0.0.0
  3. server:
  4. tcp:
  5. enable: true # 开启TCP服务, 默认false
  6. port: 8400 # TCP服务端口, 默认8400
  7. websocket:
  8. enable: true # 开启Websocket服务, 默认true
  9. port: 8500 # Websocket服务端口, 默认8500

3.编写请求&响应体

  1. @MessageMeta(module = Modules.USER, cmd = UserCmd.LOGIN_REQ)
  2. public class LoginReq extends Message {
  3. private String account;
  4. private String password;
  5. // 省略getter & setter...
  6. }
  1. @MessageMeta(module = Modules.USER, cmd = UserCmd.LOGIN_RESP)
  2. public class LoginResp extends Message {
  3. private Integer code;
  4. // 省略getter & setter...
  5. }

4.注册Handler

  1. // module类型为short, 表示业务模块编号
  2. @Handler(module = Modules.USER)
  3. public class UserHandler {
  4. // 业务处理类
  5. private final UserService userService;
  6. // 省略getter & setter...
  7. // cmd类型为short, 表示具体业务
  8. @Mapping(cmd = UserCmd.LOGIN_REQ)
  9. public LoginResp login(Session session, LoginReq loginReq) {
  10. return userService.login(session, loginReq);
  11. }
  12. }

5.引导启动

  1. import org.lx.framework.ServerBootstrap;
  2. @SpringBootApplication
  3. public class Application implements CommandLineRunner {
  4. private ServerBootstrap serverBootstrap;
  5. public Application(ServerBootstrap serverBootstrap) {
  6. this.serverBootstrap = serverBootstrap;
  7. }
  8. public static void main(String[] args) {
  9. SpringApplication.run(Application.class, args);
  10. }
  11. @Override
  12. public void run(String... strings) throws Exception {
  13. serverBootstrap.startAll();
  14. }
  15. }

License

Open source based on MIT