游戏服务器开发

服务器架构中根据功能可以将服务器的角色可分为

  • 登录服务器
  • 地图服务器
  • 日志服务器
  • 数据服务器
  • 寻路服务器

如何管理不同服务器之间的通信呢?

多服务器架构下,各个服务器可以通过TCP协议来互相通信,典型的例如基于Web技术开发的游戏服务器:

  • MySQL数据存储占用一台物理机
  • 多个Web服务器占用一台物理机
  • Web服务器与MySQL之间通过TCP通信

服务器实现

基于Actor模式,可参考Skynet框架,以及Erlang设计。

Skynet游戏服务器设计核心思路:

  • 游戏服务器由Actor对象组成
  • 每个Actor对象是相互独立的
  • Actor对象内部执行代码
  • Actor对象通过邮箱形式相互通信

实现目标

设计基于Actor模式的C#中转型网络服务器

  • C#中Actor模式实现
  • 网络管理
  • 连接管理
  • 玩家管理

C#中支持大量连接的异步

  • TCPListener的网络监听器
  • AcceptSocket接收客户端请求
  • 线程Join等待服务器停止
  • 单独连接通过Agent处理每个连接

C#中连接管理

  • 连接的开启
  • 连接的关闭
  • 连接数据接收与发送

TCPListener使用

  • SocketServer类
  • MainClass类中的Main方法
  • SocketServer对象是服务器网络核心
  • 启动线程来执行

你可能感兴趣的:(游戏服务器开发)