zoukankan      html  css  js  c++  java
  • 游戏服务器设计 Unity3d + photon + grpc + nodejs + postgis/postgresql

    此文转载自:https://blog.csdn.net/qq_43505432/article/details/110221366

    unity3d + photon + grpc + nodejs + postgis/postgresql 游戏服务器设计

    游戏类型:MMORPG

    如果想使用grpc替换photon完成通信(长链接替换成短连接),可参考此博客:
    Unity + Grpc + protobuf + C# 使用流程详解

    团队由于缺少游戏网络层的设计经验,于是就采用市面上比效常用的服务器 photon 来做。

    具体到语言:unity3d 使用 c# , android 使用 java,photon 使用 c# 。

    做技术选型的时候,想了很久,想统一技术的基础,也就是说服务器端也采用 c#, 尝试 c# 写了几个小 demo,觉得自己还是缺少必要的技能,于是还是选择了熟悉的工具 node.js。

    由于 photon 是 c# 为主要核心的,所以还要选择 photon 与 node.js 的网络层协议,在网上找了一圈,发现 grpc 不错,然后写了一个 demo 互相能调通,就决定以 node.js + grpc 做为构建项面的核心来做。

    规划一下项目的整体结构如下图所示:

    在这里插入图片描述

    pikachu-net,就是以 photon 为核心的游戏服务器,它管理所有的 unity3d 客户端的连接,长连接的形式,是有状态的。会把所有的业务相关的请求转发到 pikachu-node,如登录,注册等。

    pikachu-node, 主要是业务处理逻辑,能游戏的登录等。pikachu-net 与 pikachu-node 之间用 grpc 进行连接。pikachu-node 做成了没有状态服务,所以可以部署成集群的形式。

    下面详细说说 pikachu-node 的实现:

    由于游戏跟地理位置有关,所以使用了 postgis/postgresql,node.js 下面就使用 knex.js 做为连接工具。

    市面上也没有对 grpc 的多个服务的集成使用经验,所以参考 express 的中间件设计理念,自己设计一个 node.js 的 grpc 框架用来组织代码的结构。

    在node.js 中 grpc 没有使用 静态编绎模式,而是直接把 proto 文件进行载入的形式进行处理。

    代码管理使用 oschina git 的私库。服务器使用 阿里云,系统是 windows 的,没有办法 photon 只能布在 windows 上。

    部署代码开始一段时间,是使用 ftp 进行拷贝,发现太难受了。于是用 oschina git 的 webhook 和 express 写了一个发布服务,当我的代码推到 git 上时,就自动更新代码,重启服务,事实证明,这项工作太明智了,省了很多的时间。

    node.js 的代码服务都是使用 pm2 进行管理的。

    之后日志的查看也是一个问题,因为windows 上没有 ssh,只能用远程登录来查看,当前win只有一个用户,所以不能两个人同时在线,新的会把旧的踢下线,这是多烦,每次查看日志只能叫我来看,于是用 express + socket.io 开发了一个简单的网页版的日志查看页面。这下世界都安静了。

    pikachu-net,每次都是在本地编绎好,然后上传到服务器,后来我也把这个加入到发布服务,之后就能推上代码直接重启服务。

    之后的规划:

    数据库管理要做起来,因为目前数据库字段都是手工建立,如果要布一个测试环境,就很难受。

    如果想使用grpc替换photon完成通信,可参考此博客:
    Unity + Grpc + protobuf + C# 使用流程详解

       

    更多内容详见微信公众号:Python测试和开发

    Python测试和开发

  • 相关阅读:
    python学习之路——匿名行数/函数递归与二分法
    python学习之路——作业 day16(18/10/10)
    python学习之路——global与nonlocal.py、装饰器
    python学习之路——命名关键字参数、函数对象、函数嵌套、名称空间与作用域、闭包函数
    matplotlib绘图库
    Java快速入门
    Eclipse常用快捷键
    Python网络爬虫-Scrapy框架
    Python网络爬虫-requests模块(II)
    Python网络爬虫-requests模块
  • 原文地址:https://www.cnblogs.com/phyger/p/14073398.html
Copyright © 2011-2022 走看看