跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
MediaWiki帮助
泡泡
搜索
搜索
创建账号
登录
个人工具
创建账号
登录
查看“大厅功能”的源代码
页面
讨论
大陆简体
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
←
大厅功能
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于该用户组的用户执行:
管理员
您可以查看和复制此页面的源代码。
== 老项目升级环境配置 == === 项目demo地址 === [git地址](https://git.jumpw.com/popx_demo/demox.git) 分支:hall_test === 添加src/hall/index.ts的大厅服务器入口文件 === * [[File:添加hall入口.png]] === 修改打包配置rollup === * rollup.config.js新增打包大厅index.js的配置 * [[File:rollup配置.png]] * rollup.config.js加一下服务类的白名单 * [[File:rollup白名单.png]] === 修改html启动文件 === * 拷贝覆盖index.html到你的项目中,拷贝hall.html本地大厅文件到同一文件夹下 * [[File:html入口.png]] === 审核后台勾选大厅 === * [[File:勾选大厅.png]] <span style="color: red;">'''只有勾选了大厅后,登录流程才会走大厅的逻辑,否则是走的老的流程,直接进战斗房间'''</span> == 大厅游戏工作流说明 == 大厅工程相对于原来的client,server目录结构,多了一个hall目录,而且server实际上指的是host, 每个目录的代码文件入口都在各自的'''index.ts'''里 [[File:大厅文件结构.png]] 为了方便大家理解,我们用颜色来标记各个核心文件夹的工作流 <span style="color: orange;">'''client'''</span>用橙色,代表前端显示,前端逻辑 <span style="color: green;">'''hall'''</span>用绿色,代表大厅,大厅服务器逻辑 <span style="color: blue;">'''host'''</span>用蓝色,注意,为了不和开房间混淆,host代表的是战斗服务器逻辑,而不是和以前一样叫做房间 <span style="color: red;">'''client的入口代码最早执行,在里面做各种监听,也就是说,大厅期间,各种前端界面UI就已经能自己处理了,可以调用大厅的数据'''</span> <span style="color: red;">'''以下的流程,如果审核后台勾选了大厅,按照顺序执行,否则直接跳过大厅,到了《进入战斗》'''</span> === 游戏开始时 === ==== 进大厅前预加载资源 ==== <span style="color: orange;">'''client:'''</span>XPopManager.onHallWait --在进入大厅前,会有一个promise的异步接口供开发者使用去预加载资源,比如表格,比如读取文件配置等等。 <span style="color: red;">'''必须在加载完成的回调中resolve'''</span> <pre> //预加载资源 XPopManager.onHallWait = new Promise((resolve)=>{ GameManager.instance.onPreLoadRes(()=>{ resolve("Resource loaded successfully hall"); }); }); </pre> ==== 进入大厅 ==== <span style="color: orange;">'''client:'''</span>XPopManager.onHallStart --在大厅资源预加载完成后,会直接启动大厅服务器实例 <span style="color: green;">'''hall:'''</span>XPopManager.onHostHallStart --src/hall/index.ts 中监听的代码入口 === 大厅期间操作 === ==== 监听大厅内数据变化 ==== 大厅期间,hall的实例会监听各种玩家的事件,并且抛出回调,开发者可以在回调中处理hall的快照数据 hall的实例是指XPopManager.instance.xHostHall <span style="color: green;">'''hall:'''</span>hall.onUserEnter --大厅内有玩家进入 <span style="color: green;">'''hall:'''</span>hall.onUserLeave --大厅内有玩家离开 <span style="color: green;">'''hall:'''</span>hall.onUserMatchChange --大厅内匹配信息发生变化,主要是指倒计时的变化 <span style="color: green;">'''hall:'''</span>hall.onDbItemChange --大厅内存盘的数据变化,'''存盘'''后面再说 ==== 开始匹配 ==== 匹配内容后面单独讲 ==== 匹配成功 ==== 后面匹配内容会单独讲, 匹配成功后,分配到了某个房间的实例(host),并且会把匹配时的透传参数通知给host实例 === 进入战斗 === <span style="color: blue;">'''host:'''</span>XPopManager.onHostStart --src/server/index.ts 中监听的代码入口,去处理host实例的各种回调 === 战斗期间操作 === ==== 监听host战斗服内数据变化 ==== host的实例是指XPopManager.instance.xHost <span style="color: blue;">'''host:'''</span>host.onUserEnter --当战斗服务器内有玩家进入 <span style="color: blue;">'''host:'''</span>host.onUserLeave --当战斗服务器内有玩家离开 <span style="color: blue;">'''host:'''</span>host.onUserMatchExtraDataReceived --当战斗服务器收到玩家透传信息(匹配时传入的ExtraData) === 战斗返回大厅 === <span style="color: orange;">'''client:'''</span>XPopManager.onGameLeave --返回到大厅,大厅的数据还在快照中,可以做一些结算的处理 想要回到大厅,需要手动调用'''XPopManager.instance.xRemote.LeaveGame ''' ,demo里有示例 <pre> XPopManager.instance.xRemote.LeaveGame(this, (code: number, ret: string) => { console.log('LeaveGame', code, ret); }); </pre> === 离开整个游戏 === <span style="color: orange;">'''client:'''</span>XPopManager.onExit --在试玩的时候,点击官方左上角的退出,会进入此回调函数 --平时本地调试开发时,不需要去处理这个回调 --但是试玩时需要在此销毁场内资源,否则,退出后再次进入,会发现上一回的模型还在 <pre> XPopManager.onExit = () => { model.destroy(); } </pre> == 前后端数据交互 == 所有client和另一方的交互, === client和host的交互 === 所有的和大厅的数据交互,依赖于XPopManager.instance.xRemote.hall,以下简称remoteHall ==== 注册快照 ====
返回
大厅功能
。
开关有限宽度模式