那种只能算官方提供便利,需要开发者大量的时间去做。
但是在上面是整个游戏做成触发器+事件形式,游戏本身就是用这个去构成,游戏本身就是MOD的一部分,WAR3,OW都是类似。可以参考一下 我来自江湖
这种才是最优解。
云风的 BLOG: 虚拟文件系统的 mod 机制
那种只能算官方提供便利,需要开发者大量的时间去做。
但是在上面是整个游戏做成触发器+事件形式,游戏本身就是用这个去构成,游戏本身就是MOD的一部分,WAR3,OW都是类似。可以参考一下 我来自江湖
这种才是最优解。
云风的 BLOG: 虚拟文件系统的 mod 机制
就是我说的hook吧。游戏内部做好模块划分和加载。issac的hook都有上百个了,也是类似这种做法。但是本身是用lua来做hook和api注册的,相当于代码直接调用。
云风这个blog的内容,其实就是我前面说的虚拟文件系统VFS,主要是cocos用uuid做索引,所以做这一套会比较别扭。确实有目录覆盖的机制,但是资源分布已经打乱成uuid路径了,不好做一些覆盖。
我总感觉我这个话可能没讲清楚,hook可以是消息,比较简单。但是需要调用游戏内api,如果把api弄成消息,就很麻烦了。
我举个例子,就是你刚才的cs的脚本:
public PlayerPreThink_PreHook(playerEntId)
假如我现在要在这个函数里面查询,我周围20米有多少个敌人,我是不是可以调用:
enemyEntities = GetEnemyNearby(playerEntId,20.0)
那么GetEnemyNearby其实就是我说的场景查询api,如果这个场景查询api是以消息形式发给主项目并且同步回复,需要发送和接受2次消息,并且要传递数组,是不是就比较麻烦。
这种情况就是用直接的代码型接口比较方便,不好不依赖主项目的接口的,特别是场景上的接口。
毕竟是公司的项目,我还是觉得安全一些好,其实我要的mod可能比较简单,就是一个额外的剧情加战斗,所以还算容易实现,各位的点子都很有道理。