最后一战(LastBattle)服务器源码分析3——场景服务器(SceneServer)

2023-10-31 10:20

本文主要是介绍最后一战(LastBattle)服务器源码分析3——场景服务器(SceneServer),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

场景服

主要用于游戏战斗,包括战场创建管理,机器人AI,移动系统,视野系统,技能系统等。

int main()
{...CSSCfgMgr::GetSSCfgInstance().Initialize();//初始化场景服,加载地图,英雄等数据CSSWorkThreadMgr::GetInstance().Init();//主线程初始化配置,连接中心服和日志服务器CSSWorkThreadMgr::GetInstance().Start();//根据系统处理数量创建相同数量的逻辑线程,并启动线程CSSWorkThreadMgr::GetInstance().Update();//主循环处理网路连接数据和定时器数据等google::protobuf::ShutdownProtobufLibrary();timeEndPeriod(1);return 0;
}

场景服采用多线程处理战斗逻辑,根据部署机器的处理器数量创建等量的逻辑线程(ps:IOCP中创建处理器数量+2的线程来处理网络数据,这样更能充分发挥机器的性能)。在四核处理器的机器上,场景服整体结构如下图:
场景服结构.png

  • CSSWorkThreadMgr是逻辑线程管理类,为单例类,同时担负着场景服与其他服务器的通讯消息收发功能。
  • BattleLogicThreadActor是战斗逻辑线程类,本次示例中共创建了4个,每个线程上都会独立创建战场管理类 CSSBattleMgr,管理本线程上创建的战场及战场中的玩家,AI等数据。
  • CSSBattle是战场类,里面是对战场地图,npc,怪物,玩家数据的记录,以及视野,技能系统的实例运用。

这篇关于最后一战(LastBattle)服务器源码分析3——场景服务器(SceneServer)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/314675

相关文章

Linux alias的三种使用场景方式

《Linuxalias的三种使用场景方式》文章介绍了Linux中`alias`命令的三种使用场景:临时别名、用户级别别名和系统级别别名,临时别名仅在当前终端有效,用户级别别名在当前用户下所有终端有效... 目录linux alias三种使用场景一次性适用于当前用户全局生效,所有用户都可调用删除总结Linux

Mysql虚拟列的使用场景

《Mysql虚拟列的使用场景》MySQL虚拟列是一种在查询时动态生成的特殊列,它不占用存储空间,可以提高查询效率和数据处理便利性,本文给大家介绍Mysql虚拟列的相关知识,感兴趣的朋友一起看看吧... 目录1. 介绍mysql虚拟列1.1 定义和作用1.2 虚拟列与普通列的区别2. MySQL虚拟列的类型2

Window Server创建2台服务器的故障转移群集的图文教程

《WindowServer创建2台服务器的故障转移群集的图文教程》本文主要介绍了在WindowsServer系统上创建一个包含两台成员服务器的故障转移群集,文中通过图文示例介绍的非常详细,对大家的... 目录一、 准备条件二、在ServerB安装故障转移群集三、在ServerC安装故障转移群集,操作与Ser

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re