思考: 服务器代码目录结构规划

1)4类服务器类型

    globalserver: 账号服务器、分区分服玩家负载维护

    gameserver: 玩家与系统交互类的功能,如:活动、充值等

    worldserver: 匹配、工会等集结玩家一起操作的服务器

        玩家之间交互类逻辑路由到该服务,采用单线程写业务逻辑

    rtsserver: 要求实时很高的功能玩法直连

2)handler(接收玩家请求)

3)service(所有对外服务暴露的接口,服务之间调用只有service)

4)logic(具体的一个个业务,里面采用Manager是具体的实现)

    xxx1

    xxxManager // 业务逻辑实现

    xxxChecker //错误检查

    xxxConfig // 配置读取

    xxx2
    
5)EventService: 负责所有的事件,如:服务器启动了

6)EventCenterService: 如: 成就记录进度

7)enums:

    xxxEnum // 枚举

----------------------20220402----------------------------

	core // 框架层
		netty
			codec
			client
				NettyClient.java
				NettyServer.java
				
	controller // 响应客户端请求
		LoginController.java
		BagController.java
		
	service // 业务实现层,暴露最简单的模块接口,service之间相互调用则 只能通过service之间暴露的接口
		LoginService.java
		BagService.java	
		
	logic // 业务逻辑内部实现
		login
			LoginManager.java
			LoginDao.java
			LoginConfig.java 
			LoginChecker.java     
		bag
			BagManager.java
			BagDao.java
			
	enums //各种枚举类
		RedisChannelEnum.java
	
	gen // 工具生成的代码,如:protobuf协议、策划excel配置
		msg // protobuf生成的消息
			MsgLogin.java
			MsgActivity.java
		config // 生成的excel配置
			ConfActivity.java
				
	utils // 和游戏完全无关的工具类,如:时间的,则无论移植到哪个项目,都是不变的逻辑
		TimeUtils.java
		Md5Utils.java

-----------------------------20220505------------------------------

再次实践发现,其实人的思维其实是只能集中在一块的。因此将有关联的所有部分集中在一起管理是更好的目录结构。 同时,模块之间又有一定的交互,通过manager这种模块管理类进行处理就好,因此,我现在认为更好的目录结构如下:

netty        // netty相关

cross       // 跨服相关

login        // 登录相关

friend      // 好友

home      // 家园

dungeon // 副本

...

业务逻辑里面都有一个自己的xxxManager.java,服务之间要沟通,则通过这个Manager进行。

比如:玩法次数有个ActivityTimesManager.java, 其它各种活动要扣自己的玩法次数,那么这个玩法次数的管理是一个Manager类,其它类则通过调用这个类进行交互。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值