最后一战(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 rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注

Python开发简易网络服务器的示例详解(新手入门)

《Python开发简易网络服务器的示例详解(新手入门)》网络服务器是互联网基础设施的核心组件,它本质上是一个持续运行的程序,负责监听特定端口,本文将使用Python开发一个简单的网络服务器,感兴趣的小... 目录网络服务器基础概念python内置服务器模块1. HTTP服务器模块2. Socket服务器模块

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

Python WSGI HTTP服务器Gunicorn使用详解

《PythonWSGIHTTP服务器Gunicorn使用详解》Gunicorn是Python的WSGI服务器,用于部署Flask/Django应用,性能高且稳定,支持多Worker类型与配置,可处... 目录一、什么是 Gunicorn?二、为什么需要Gunicorn?三、安装Gunicorn四、基本使用启

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按