Skip to content

ferris1/wind

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wind

Wind是一款面向云的高性能、高效率以及高扩展性的分布式游戏服务器引擎框架。Wind利用Python语言的简洁语法以及丰富的生态库来提高游戏业务的开发效率,针对一些对性能有要求的游戏业务功能(如实时战斗功能),Wind利用Golang的高并发特性来保证服务的高性能,同时Wind使用kubernetes部署并接入云组件来保证服务在云上自动伸缩,有效的分配云上公共资源,提高服务资源的利用率,降低各区域游戏延时。

wind run

为什么存在

近年来,由于云游戏的发展以及游戏全球化(版号问题)的发展,各游戏开始出现了在全球各区域部署的需求,但是早前游戏服务器更多关注的是服务器内部的性能,对于服务器的分布式以及服务的云部署支持很弱,导致游戏服务上云很麻烦而且动态扩展性不强。因此Wind使用kubernetes部署并在服务层接入云组件来保证服务在云上的自动伸缩,有效的分配公有云在各地的资源,并根据各区域玩家情况动态伸缩服务,提高服务资源的利用率。

Wind特性

  • 高效率: Wind利用Python简明的语法和生态库来编写业务量大的游戏业务逻辑,提升开发效率。
  • 高性能: Wind利用Golang来保证引擎底层功能或者实时性游戏业务的高性能。
  • 高扩展性: Wind使用组件化设计,可以很方便的替换原有组件。
  • 易上手: Wind逻辑层使用单线程异步协程来编写业务逻辑,简单方便并且不用担心多线程锁问题。
  • 在线热更新: 目前游戏界很多使用纯Golang开发游戏服务,但Golang对热更新支持不友好,Wind组合了python动态语言,所以很好解决Golang游戏服务不能热更的问题。Wind支持在线函数级别热更新。
  • 负载均衡: 支持最大阈值选取、最小阈值选取以及随机选取算法。
  • 服务发现: 支持在线动态伸缩各类型服务。
  • 多协议: 网络层支持多种不同传输协议,TCP,UDP,KCP。
  • k8s部署与动态伸缩: 服务层接入k8s组件,动态伸缩云上服务资源。

Wind安装获取

  • 安装Python

Wind默认在Windows平台下开发。Wind业务逻辑使用Python编写,Golang编译成动态库供Python调用,运行前需要安装Python版本,支持Python3.7+。

Wind使用etcd做服务发现功能,使用nats做分布式消息队列,所以需要安装对应Python客户端库。在script目录下运行 install_python_requirements.bat 安装对应Python库。

  • 获取Wind代码
git clone <https://github.com/ferris1/wind.git>
  • 启动单服务

script目录下双击运行start_gateway.bat 文件,启动gateway服务

  • 启动分布式服务

启动分布式服务时需要保证运行etcd服和nats服,具体运行参考官网,要不然各个服务不能合作运行。

script目录下运行 start_all.bat 启动所有服务,目前只有两类服务,一个是Gateway服务,用于消息路由,一个是Game服务,用于处理游戏逻辑。最终分布式服务框架可以根据游戏业务自己定制,具体可以参考这篇文章从服务器发展史看现代游戏服务器架构

文档

使用文档

使用案例

Unity3D案例视频 Unity3D案例文档 Unity3D案例代码

About

Wind是一款面向云的高性能、高效率以及高扩展性的分布式游戏服务器引擎框架

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published