{"repo":"lianglllll/MMORPG-Server","free":true,"listed":false,"github":"https://github.com/lianglllll/MMORPG-Server","clone":"git clone https://github.com/lianglllll/MMORPG-Server.git","description":"小南梁界，现代修仙体系MMORPG类型游戏项目","language":"C#","stars":51,"topics":["c-sharp","mmorpg","unity","game","distributed-systems"],"license":null,"category":"game-templates","readme_excerpt":"在此方世界中，灵气充沛，天眷者通过修仙不断强化自身，轻而易举获得移山填海、毁天灭地的能力，与此同时无数流派诞生更是丰富了这个世界的修炼体系，修士间互帮互助共同追寻那长生大道，修仙界呈现欣欣向荣的景象，貌似一切都往好的发展？ 项目概述 自网络游戏出现以来，其发展趋势便势不可挡，可见其受欢迎程度。毕竟相对于死板的AI，人们更喜欢与真实的人进行互动，这样才能享受博弈的乐趣。 本项目主要用于学习如今网游的开发流程，学习网游关键技术，最终能构建我心中的那个世界。 2024.4.20：目前项目进度演示视频链接 注意事项 - 目前还在将单体架构转换为分布式架构，大部分的游戏逻辑都还没修改完毕 - 修仙元素：修仙的第一执念--飞(目前只完成了这个) 项目已完成工作 Server架构 2025.3.13 版 我们游戏服务器使用的是分布式服务器模式（Distributed Server）,游戏逻辑分布在多个服务器节点上，通过负载均衡动态分配玩家。这种模式适合超大型多人在线游戏。 CDN 我们这里做一个模拟CDN的Web服务器，因为云厂商提供的CDN需要花费。 主要功能： - 是给客户端提供我们LoginGate的地址。 - 预防DDOS攻击导致单点问题的发生。 这里解释一下单点问题（SPOF）：它指系统中存在某一组件或节点，其一旦发生故障，会导致整个系统不可用或功能严重受损。它是系统设计中的致命弱点，违背了高可用性（High Availability）和容错性（Fault Tolerance）原则。 ControlCenter 主要功能： - 服务器信息注册：他管理着集群中全部的服务器，当其他服务器启动之后，需要向中心服注册自己的信息。比如当login服务需要去连接GameGateMgr的服务器时，就可以通过中心服去获取IP和Port。 - 事件订阅：可能会有怎么一个情况，当Scene启动后，它首先向ControlCenter连接并且注册自己的信息（ip、port、事件订阅的位图）。正常情况下Scene会订阅GameGateMgr上线的事件，当GameGateMgr向ControlCenter注册后，就会触发GameGateMgr上线的事件，ControlCenter就会通知所有注册该事件的服务器。那么此时Scene就知道了GameGateMgr的信息了，就可以去连接它继续它自己的流程了。 - 监控分布式系统中服务器的存活状态 LoginGateMgr 主要功能： - 所有的LoginGate上线之后，都需要连接到LoginGateMgr并且完成注册。 - 关注所有Login的上线，这里我们通过ControlCenter提供的事件服务来实现。 - 分配LoginGate给Login,同时关注LoginGate的负载情况，一旦负载超出或者低于阈值，动态增加对影Login关联的LoginGate数量。 - 更新CDN中LoginGate的存活情况 LoginGate 这是与客户端直接连接的服务器 主要功能： - 隔绝内外网环境，用户从始至终不知道自己一直通信的只是一个网关服务器。 - 过滤无效的客户端请求，降低后面逻辑处理服务器的压力。 - 和客户端的密钥交换流程，敏感请求的消息加解密。 - 根据不同的客户端请求，将请求转发到不同的逻辑服务器当中。比如登录请求转发到Login，获取GameGateList的请求转发到Entry中 - 定期向LoginGateMgr上报本服务器的负载情况 Protal（未开发） 门户服务器 主要功能： - 游戏版本更新 - 游戏公告 Lo","default_branch":null,"files":null,"tree":[],"storefront":"/r/lianglllll","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/lianglllll/MMORPG-Server/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}