从零开始编写网游服务器-第一篇:服务器设计

本文探讨了如何从零开始构建网游服务器,包括服务器的主要功能、技术需求和架构设计。作者强调在网络层、数据库支持和脚本支持的重要性,并提出了一种常见架构:网关服务器、游戏服务器和数据库服务器的分离。文章最后提到了服务器组件化和配置文件驱动的设计思路,以及作者基于Python的服务器框架开发。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从事游戏开发已经有几年了,虽然平时的工作以编写游戏逻辑为主,但是工作之余也看过不少关于网游服务器的文章和源码。一直没空整理出自己的想法。刚好最近开始接触公司的服务器引擎,使用过程中有很多不习惯的地方,所以,我打算借此机会,梳理下我的做法。如何编写一个网游服务器。
说明:这里的从零开始,并不是说什么都是自己从零编写,比如网络库。我的原则是,如果有稳定可靠的第三方库可用,坚决不重复造轮子。
网游服务器是一个典型的CS架构。服务器主要的功能如下:
1、维护客户端链接,接收客户端请求,发送服务器反馈给客户端等
2、为游戏提供数据存储服务
3、处理游戏业务逻辑,实现一些基础管理如玩家管理,副本管理等,以及一些高级玩法,如工会、家族等
所以,服务器需要些什么?
1、网络层。
无论你采用最原始的socket阻塞调用,还是epoll、iocp等技术,服务器对于网络,关注点一直集中在3个方面:
a)有新的链接加入/链接断开
b)读数据
c)写数据
这里不讨论该用什么样的网络技术来提高效率。因为我对网络编程也知之甚少。但是对于一个网络库,只要在这3个事件发生的时候能通知到游戏服务器,无论是事件通知还是函数回调,都能满足服务器的需求。而网络库的效率,则取决于他的是实现方式。
如果是端游,支持TCP即可。如果是手游或者页游,可能还要支持websocket、socketio、http等。
为了方便开发和测试,这个网络库最好还是能在linux和windows上运行。我们一般的习惯是windows上开发测试,linux下部署发布。当然了,也有的公司直接在windows下部署发布。
2、数据库支持。
网游对于数据库的利用率其实并不高。很多公司项目,只是把数据库当成了一个块存储模块,比如数据库表只有2列,一列是ID主键,一列就是block数据。
这样的数据库存储方式,感觉和文件没什么区别。对开发人员的要求也降低了很多。你可以采用mysql或者mangodb,反正怎么方便怎么用。即不需要编写存储过程,也不需要什么触发器、事务等数据库技术。
3、脚本支持。
游戏的逻辑是整个服务器中最麻烦的地方。策划对需求的改动频繁,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值