Skip to content
Hang edited this page Jul 31, 2024 · 9 revisions

FAQ

  • 导入项目所有模块后,启动报错 java.io.FileNotFoundException: configs/version.properties (No such file or directory) 开发工具需要将src同目录的configs视为代码目录!如果导入项目所有模块,还需要设置好工作区间。例如idea设置:run->EditConfirations->Workingdirectory,设置为**\jforgame\jforgame-server。
  • 该架构是专为手游开发的,那么是否可以用于页游呢?
    该框架不仅仅只能用于手游项目,页游项目同样适用。如果页游客户端通信采用websocket的话,那么服务端只需要做一点点改动。若客户端采用http请求的方式,服务端的通信层就需要做相应的改动。
  • 该项目网关选择的是Mina还是Netty呢?
    Netty近几年非常火热,但其实在游戏服务端领域,Mina的使用率不会比Netty少太多。Mina对新手更加友好, 而且内置了IoSession会话抽象,使用非常方便。为了便于用户自主选择,本框架同时支持mina和netty两种nio框架。业务的session绑定,既不依赖mina的IoSession,也不依赖netty的channel。所以在这两者之间进行切换,只需要改动一行代码即可。
  • 该项目为什么不使用Hibernate或者Mybatics这样的ORM框架,而是重新实现一套ORM工具呢?
    其实,游戏服务器对数据库操作的需求非常单一,基本都是对单一数据表进行增删查改(甚至不需要删除的操作),很少需要联表操作。所以只需要定制一个非常轻量级的orm工具即可。使用定制的ORM系统,我们甚至允许每次只更新指定的字段,避免全表更新。
  • 协议层如何支持压缩或者加密呢,或者拓展字段呢?
    目前的消息头是固定的,包括4个字节的消息长度,4个字节的消息序号,四个字节的消息类型。1.x版本只包含4个字节的消息长度以及4个字节的消息类型。2.x加上4个字节的消息序号,只是为了更加通用而已。消息序号不是每个项目都需要,在每个消息增加这样的字段,会导致每个消息多出4个字段的长度。一开始设计是拒绝的,但底层设计不应过于严格,应尽量宽容。
    如果协议要支持压缩,codec-struct的Codec类提供了replace()支持编解码替换,例如int/long型变长压缩。或者直接使用protobuf/messagepack这种自带压缩算法的工具。
    如果协议要支持压缩,可以参考DefaultProtocolDecoder/DefaultProtocolEncoder文件,设计自己的私有协议。
  • 如何提交反馈和优化呢?
    关于反馈和优化,如果能够一句话描述问题的话,我们推荐使用issue。因为这样其他用户也可以查看相关的问题,避免重复问题的产生。另外,csdn专栏博客对框架大部分原理都给予详细的说明,可自行查阅。
  • 该项目有没有一些周边产品呢? 合服工程,支持多合一,批量处理数据,只需针对特定业务做个性化修改即可; 网络对战五子棋--使用websocket与socket,支持分布式部署。 私聊获取。

Getting Started

Communicaiton

Clone this wiki locally