骑砍战团MOD开发(48)-多人联机模式开发环境搭建

一.多人联机模式网络拓扑图

    <1.局域网网络拓扑图:

   <2.互联网网络拓扑图:

二.多人联机模式打开方式

#module.ini配置文件新增配置has_multiplayer = 1
has_single_player = 1

三.服务端创建(引擎内部有CDKey校验,故必须拥有CDKey才可联机)

    <1.专用服务器和普通服务器:

         专用服务器:mb_warband_dedicated.exe,引擎将通信能力剥离成为独立程序,是一个只有控制台的后台服务器,不会初始化player,不会进入游戏场景.

         普通服务器:mb_warband.exe,通过多人联机模式->创建新游戏,会在服务端初始化player_no

#判断当前服务器类型
multiplayer_is_server    =  417  # (multiplayer_is_server),multiplayer_is_dedicated_server =  418  # (multiplayer_is_dedicated_server),

    <2.互联网专用服务器搭建(dedicated server):
霸王•吕布 / mb_warband_dedicated_1174 · GitCodeicon-default.png?t=N7T8https://gitcode.net/qq_35829452/mb_warband_dedicated_1174

      运行mb_warband_dedicated.exe [-r commands_file] [-m module_name] 配置服务器参数.

#启动服务命令
mb_warband_dedicated.exe [-r commands_file] [-m module_name].#设置scene
set_map multi_scene_1#设置mission_template
set_mission multiplayer_duel

    <3.局域网服务器搭建(server) 用户->创建游戏

        引擎内置presentation页面: prsnt_game_multiplayer_admin_panel

# 服务器参数配置(客户端无效)server_set_password  =  484  # (server_set_password, <string_id>),server_get_add_to_game_servers_list  =  485  # (server_get_add_to_game_servers_list, <destination>),server_set_add_to_game_servers_list  =  486  # (server_set_add_to_game_servers_list, <value>),server_set_name  =  489  # (server_set_name, <string_id>),server_get_max_num_players  =  490  # (server_get_max_num_players, <destination>),server_set_max_num_players  =  491  # (server_set_max_num_players, <value>),save_ban_info_of_player  =  467  # (save_ban_info_of_player, <player_id>),ban_player_using_saved_ban_info =  468  # (ban_player_using_saved_ban_info),# 联机模式下mission_template新增回调#多人模式下玩家退出
ti_on_player_exit  = -29.0 
# Trigger Param 1: player_id#多人模式下玩家加入
ti_server_player_joined  = -15.0 
# Trigger Param 1: player_id#多人模式人物关闭
ti_on_multiplayer_mission_end = -16.0

四.客户端搜索并加入

    多人联机模式->搜索->加入游戏

    <1.本体中mb_warband.exe为1.174版本且已激活.

    <2.本体启动MOD与服务端MOD必须相同.

    <3.服务器搜索: 

         局域网:局域网广播

         互联网:互联网访问服务器中心已经注册的服务器列表:

    <4.选择联机游戏场景进入:

         1.客户端发出请求包:询问任务,任务场景

         2.服务端接收请求包,回复任务,任务场景

         3.客户端收包解析获得对应任务,对应任务场景

发包
multiplayer_send_int_to_server =  389  # (multiplayer_send_int_to_server, <message_type>, <value>),收包
#script_game_receive_network_message
# This script is called from the game engine when a new network message is received.
# INPUT: arg1 = player_no, arg2 = event_type, arg3 = value, arg4 = value_2, arg5 = value_3, arg6 = value_4
("game_receive_network_message", [#打开业务场景
start_multiplayer_mission  =  470  # (start_multiplayer_mission, <mission_template_id>, <scene_id>, <started_manually>),

五.同步机制

    <1.player_agent同步机制:引擎内部进行实时同步

    <2.scene_prop/item/金币等同步机制:通过MOD实现收发包实现.

         发包:

multiplayer_send_message_to_server =  388  # (multiplayer_send_message_to_server, <message_type>),multiplayer_send_int_to_server =  389  # (multiplayer_send_int_to_server, <message_type>, <value>),multiplayer_send_2_int_to_server  =  390  # (multiplayer_send_2_int_to_server, <message_type>, <value>, <value>),multiplayer_send_3_int_to_server  =  391  # (multiplayer_send_3_int_to_server, <message_type>, <value>, <value>, <value>),multiplayer_send_4_int_to_server  =  392  # (multiplayer_send_4_int_to_server, <message_type>, <value>, <value>, <value>, <value>),multiplayer_send_string_to_server =  393  # (multiplayer_send_string_to_server, <message_type>, <string_id>),

        收包:

  #script_game_receive_network_message# This script is called from the game engine when a new network message is received.# INPUT: arg1 = player_no, arg2 = event_type, arg3 = value, arg4 = value_2, arg5 = value_3, arg6 = value_4"game_receive_network_message"

六.数据持久化

     存储用户金币,等级,装备,坐标等信息,服务端通过访问固定URL存储数据至数据库,可实现大地图联机等相关功能

send_message_to_url                          =  380  # (send_message_to_url, <string_id>, <encode_url>),#script_game_receive_url_response
#response format should be like this:
#[a number or a string]|[another number or a string]|[yet another number or a string] ...
#here is an example response:
#12|Player|100|another string|142|323542|34454|yet another string
#INPUT: arg1 = num_integers, arg2 = num_strings
#reg0, reg1, reg2, ... up to 128 registers contain the integer values
#s0, s1, s2, ... up to 128 strings contain the string values
("game_receive_url_response",

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/497003.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录训练营第31天 | 理论基础、LeetCode 455.分发饼干、

目录 理论基础 视频讲解&#xff1a;手把手带你学会操作链表 | 贪心算法理论基础&#xff01;_哔哩哔哩_bilibili LeetCode 455.分发饼干 文章讲解&#xff1a;代码随想录(programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;你想先喂哪个小孩&#xff1f;| Le…

【k8s配置与存储--持久化存储(PV、PVC、存储类)】

1、PV与PVC 介绍 持久卷&#xff08;PersistentVolume&#xff0c;PV&#xff09; 是集群中的一块存储&#xff0c;可以由管理员事先制备&#xff0c; 或者使用存储类&#xff08;Storage Class&#xff09;来动态制备。 持久卷是集群资源&#xff0c;就像节点也是集群资源一样…

Flutter开发进阶之Flutter Web加载速度优化

Flutter开发进阶之Flutter Web加载速度优化 通常使用Flutter开发的web加载速度会比较慢,原因是Flutter web需要加载的资源处于国外,以下是据此所做的相应优化。 一、FlutterWeb打包 flutter build web --web-renderer canvaskit使用新命令打包 flutter build web --web-…

459. 重复的子字符串(力扣LeetCode)

文章目录 459. 重复的子字符串题目描述暴力移动匹配KMP算法 459. 重复的子字符串 题目描述 给定一个非空的字符串 s &#xff0c;检查是否可以通过由它的一个子串重复多次构成。 示例 1: 输入: s “abab” 输出: true 解释: 可由子串 “ab” 重复两次构成。 示例 2: 输入: …

高性能Server的基石:reactor反应堆模式

业务开发同学只关心业务处理流程。但是我们开发的程序都是运行服务端server上&#xff0c;服务端server接收到IO请求后&#xff0c;是如何处理请求并最终进入业务流程的呢&#xff1f;这里不得不提到reactor反应堆模型。reactor反应堆模型来源于大师Doug Lea在 《Sacalable io …

Fabric V2.5 通用溯源系统——区块链部分设计

本节对Fabric V2.5 通用溯源系统的区块链部分做一个简单的介绍,包括目录结构、文件作用、设计思路。此节内容免费发布在TrueTechLabs Fabric学习交流QQ群。 购买专栏前请认真阅读:《Fabric项目学习笔记》专栏介绍 TrueTechLabs Fabric学习交流QQ群: 一、区块链部分文件目录简…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第2章 电脑、开发板直连交换机或路由器

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

面试必问但日常不愿意看的题

1&#xff0c;做道 this 相关的题&#xff0c;看你对 js 的 this 掌握的如何2&#xff0c;BFC 这样答才完美 1&#xff0c;什么是 BFC&#xff1f;其规则是什么&#xff1f;2&#xff0c;如何触发 BFC3&#xff0c;BFC 到底可以解决什么问题呢3&#xff0c;作用域4&#xff0c;…

pycallgraph,一个好用的 Python 代码可视化库!

目录 前言 什么是pycallgraph库&#xff1f; 安装pycallgraph库 使用pycallgraph库 pycallgraph库的功能特性 1. 支持多种输出格式 2. 支持定制化配置 3. 支持并发程序分析 示例代码 pycallgraph库的应用场景 1. 性能优化 2. 调试和错误排查 3. 代码维护和重构 4. 项目文…

代码遗产:探索祖传代码的历史、挑战与现代融合艺术

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

【算法历练】动态规划副本—路径问题

&#x1f3ac;慕斯主页&#xff1a;修仙—别有洞天 ♈️今日夜电波&#xff1a;宙でおやすみ 1:02━━━━━━️&#x1f49f;──────── 2:45 &#x1f504; ◀️ ⏸ ▶️ ☰ &#…

基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统

文章目录 基于Python网络爬虫的IT招聘就业岗位数据分析可视化推荐系统项目概述招聘岗位数据爬虫分析系统展示用户注册登录系统首页IT招聘数据开发岗-javaIT招聘数据开发岗-PythonIT招聘数据开发岗-AndroidIT招聘数据开发岗-其它招聘岗位数据分析算法方面运维方面测试方面招聘岗…