定制游戏开发流程
修改定制游戏主要分为两个部分,游戏逻辑
和平台公共代码
。
游戏逻辑
根据游戏复杂度,可以分三种方式修改:
1、根据id判断添加代码
一般是修改逻辑比较少的情况会使用。
优点:不易出错,不影响平台功能。
缺点:污染平台代码
找到对应游戏的逻辑代码,添加if判断,定制修改逻辑。
2、在配置文件添加参数,基于参数修改
在定制需求比较通用,可复用的情况下使用。
优点:开发可复用的代码,定制的过程中同时扩展游戏功能
缺点:麻烦,容易混乱
- 先创建好对应游戏,在平台中配置好页面样式,然后获取到对应game_id的配置json。
- 基于该json文件添加额外的参数(不能和平台冲突)。
- 在代码中根据配置文件中新参数来更改游戏逻辑。
- 在本地调试好后,上传新json配置文件,@vincent修改数据库,替换正式环境游戏的配置文件。
3、新建模板
在定制需求很复杂的情况
优点:彻底不用担心污染平台游戏逻辑代码
缺点:代码难以复用
- 参考
24haowan_game_tpl
库的其它游戏,创建文件夹 - 文件夹命名为
name_id
格式,其中的name是本项目的名字,无特别要求。id是本项目的唯一id,不可重复,在平台现有模板id基础上递增。 - 访问
http://test.24haowan.com/webCustom/addCustomGame/tpl_id/id
,最后的id
是自定义的模板id, - 链接会跳转到一个游戏链接,那就是该模板生成的游戏。
- 敬请期待新版工作台
修改平台公共代码
目前没有很彻底的方式来解决开发公共平台的代码。 目前的解决办法是引入额外的js,在额外的js里用jquery对平台的代码进行二次修改和渲染,来完成定制游戏的需求。
修改平台代码的入口是custom.js。在custom.js文件尾部添加id判断,对指定用户执行定制代码。
如果代码量比较小,可以直接写在custom.js里。但是代码量大的话,需要写在额外的js里,异步引用。
额外定制js存放路径:24haowan_front_game/24haowan/js/t/custom
额外定制css存放路径:24haowan_front_game/24haowan/css/t/custom
引入额外js方法,在custom.js中用loadScript方法引入
// 如引入多个js无依赖关系,可以写多个loadScript方法。
loadScript('extra1.js');
或
// 如引入多个js有依赖关系,需用该方法
loadScriptArr(['extra1.js', 'extra2.js'])
引用css:
loadStyle('extra1.css')
只修改custom.js无法满足需求的时候
很多时候,平台页面不是一开始就渲染好的,很多时候是异步渲染的,所以custom.js里修改的样式也可能会被平台代码二次修改。这时只能在平台动作完成后再在custom.js里修改。
凭着尽量不污染平台现有代码的原则,正确做法是,在平台代码里特定的地方抛出一个事件:
// 平台
$(document).trigger('eventName', data);
并在custom.js里接收事件,再做处理
// custom.js
$(document).on('eventName', callback);
其它
- 因为架构问题,平台代码和定制代码不能写ES6、7语法。
- 游戏各个部分对应的源代码路径脑图
- 平台中埋了很多快捷方法,不一定都需要修改dom来实现。比如:
- views.start.showRank() //打开排行榜
- modals.getPrize.show = true // 打开中奖弹窗