Skip to content

java脚本

JiangZhiYong edited this page Nov 26, 2017 · 2 revisions

概述

框架支持部分java代码热更新,项目中已scripts名称结尾的项目都为相应项目的脚本文件项目,如game-gate-scripts为game-gate的脚本文件。所有放在scripts项目中,并且实现IScript接口或IHandler接口的类都可以用于热更新,前者为服务器内部逻辑调用接口,后者为所有消息处理器调用接口。具体使用请查看game-engine项目的script包路径和game-bydr-script项目。

脚本原理

脚本为原生的java源文件,脚本更新过程为:

  1. 上传新的java源文件脚本类到对应服务器项目上替换老脚本
  2. 后台通过HTTP向服务器发送重新加载脚本命令
  3. 脚本引擎通过JavaCompiler编译从新编译java源文件为class类文件
  4. 脚本引擎通过ClassLoader从新加载新编译的类文件保存到内存中,替换之前老的Class类对象

使用注意

  1. 尽量让经常变动的游戏逻辑放在脚本中实现
  2. 确保运行环境的类加载路径下有tools.jar文件