-
Notifications
You must be signed in to change notification settings - Fork 310
Home
Welcome to the jforgame wiki!
欢迎使用jforgame,这是一个用java编写的轻量级手游服务器框架。 该框架吸取了笔者参与的众多手游项目的成功经验,从中精挑细选了各个模块的优秀实现。希望每个模块都能以一种优雅简便的api供外部使用。当然,由于笔者经验问题,部分实现仍有诸多不足,希望大家一起完善,一起改进,这也是开源的目的。
框架网关选择的是Mina,当然,您也可以选择使用Netty,改动的代码应该不大(只是应该,^_^)。
当你有个db数据需要持久化,比如Player对象,只需要让该类继承BaseEntity, 同时Player类加上@Entity,然后在各个需要持久化的字段加上@Column注解。需要特别注意的是,每个BaseEntity至少需要一个字段使用@Id注解作为主键,用于查找与修改操作。当然,你需要在db库加上Player的表结构。
当你的Player对象需要入库,你只需要这样操作
Player p = new Player; p.setId(123456L); p.setName("robot"); p.setInsert(); DbService.getInstance().add2Queue(player);
当你的Player对象有属性变更,你只需要这样操作 player.setUpdate(); DbService.getInstance().add2Queue(player);
本框架使用了guava cache构建了一套缓存系统,当你需要获取数据库某个对象时,如果对象已在内存,则直接返回该对象;否则,自动从数据库把它捞取上来并加入缓存,你只需要让对象的业务模块集成CacheService即可。例如: public class PlayerManager extends CacheService<Long, Player>
客户端通信协议需要继承Message类,请求协议统一以Req开头,推送协议统一以Res开头。Message类需用使用@MessageMeta绑定模块号与cmd。 业务模块号在Modules申明,而cmd在对应的业务模块内部自行定义即可,无需统一管理。
- 新增消息映射器XXController,使用@Controller注解;
- 绑定请求消息与对应的Method方法,使用@RequestMapper注解,获取请求参数后,转交给对应的业务管理类。
使用@Listener和@EventHandler注解可以轻松将事件类型与对应的业务方法绑定在一起,例如: @Listener public class SkillListener {
@EventHandler(value=EventType.LEVEL_UP)
public void onPlayerLevelup(EventPlayerLevelUp levelUpEvent) {
System.err.println(getClass().getSimpleName()+"捕捉到事件"+levelUpEvent);
}
}
GM命令允许你快速修改内存数据,你只需要编写自己的gm命令相应的表达式模式,通过正则表达式解析参数,交给具体的业务代码处理。 例如 ^reloadConfig\s+([a-zA-Z_]+)" 这样的模型可以用来匹配 "reloadConfig CofingPlayerLevel" 这样的命令,表示重载"CofingPlayerLevel"这张配置表。
使用http方向,允许后台管理网站通过http的方式发送后台命令。例如发出 “http://localhost:8080/?cmd=1”的请求来关闭游戏服务。