首页 文章 网络游戏服务端开发技术要点
网络游戏服务端开发技术要点
编辑时间:2020-01-22 02:29:19 作者:dashizi 浏览量:4378

开发多年RPG网络游戏,趟过各种坑,这里列出的我自己总结的服务端开发一些要点,这也可能只是冰山一角,但这些技能点满了,独立设计出自己的RPG服务端框架问题不大了。


类别

模块

备注

核心

1.数据

2.数据

3.还是数据

做服务端玩的就是数据

开发原则

1.稳定

2.安全

3.高效

4.开发效率

5.可扩展性

6.易上手

深刻理解每一项真正的含义,不是喊口号

编程语言

1.C/C++是基础和核心语言

2.LUA(是脚本,不仅仅是脚本)

3.PHP、js、html等网页技术

4.汇编,java等主流或者更底层的语言

C/C++核心掌握好,其他掌握更多会让你选择更多,逻辑脚本语言更应该注重框架搭建和规范

操作系统

1.熟悉windows

2.熟悉linux

3.了解android和ios等主流系统

不把win和linux都玩透一点都不好意思说自己是做服务器的

开发流程

1.碰策划案功能需求

2.功能框架设计

3.配置表、数据库表、协议、类和接口

4.编码

5.验收

6.测试

7.bug修复以及后续维护

8.别忘了还有计划和每日跟进

这里暂且说简单的功能开发流程必备项

程序相关文档

1.框架设计文档

2.服务器开发规则等

3.API文档(框架接口和逻辑系统接口)

4.服务器操作手册

5.性能测试文档

6.开发事项记录

规则可以大家一起定,但是更重要的是要大家一起执行

稳定性

1.框架尽量简单稳定,不常变更

2.逻辑采用lua等脚本语言

3.支持热更

4.多次强调代码规范,再好的底层再好的语言写不好逻辑都是废


网络相关

1.TCP/HTTP等主流协议

2.select/iocp/epoll等各种模型

3.多线程

4.内存池

5.加解密、压缩

6.并发、性能、灵活

7.了解各种开源网络库(libevent/asio/ACE等)

8.RPC是少不了的

如果能写高性能网络库看起来很牛逼,但是能用好也挺不错了

数据库

1.mysql或者其他(考虑关系型和非关系型数据库)

2.数据库的安装,配置优化,权限控制,导入导出等

3.库,表,字段的分类字段等优化

4.熟悉各种sql语句或存储过程用法

5.数据库内容变更版本控制(支持自动安装和自动更新)

了解更多的数据库种类会让你更明白怎么去用好它

服务器架构

1.深入了解项目的需求(决定什么样的框架)

2.底层语言和逻辑语言(C++/LUA)

3.单进程的简易方案更实用

4.分布式集群扩容

5.灵活调配更好的利用硬件

6.自动分线等机制的兼容

好的框架设计能在尽可能小的变动情况兼容更多的需求

服务器C/C++底层框架

1.网络库(网络,内存池,线程等)

2.lua,json,xml,md5,mysql等扩展库

3.框架服务器各个服务器的基础功能以及接口封装

4.数据服,逻辑服,中心服,充值服,接口服等分布式架构

这里是架构的最好的体现,需要考虑的内容非常多

服务器逻辑框架

1.核心类封装(模拟类,核心组件等)

2.网络相关封装

3.分地图分线服务器

4.功能系统模块管理

5.配置管理模块

6.自动生成类模版

7.后台相关(WEB,HTTP)

一两句说不完,暂且列几个

数据安全

1.容错性(开发中应该考虑各种情况下数据不能出错)

2.及时写到数据库总比在缓存中没写更安全

3.数据一致性

3.热备冷备(再牛逼的程序也顶不住硬件挂了)

做服务器玩的就是数据

容错性

1.有些错开发期间一定要暴露出来

2.容错是为了避免更大的错误,不是为了逃避该错误

3.出错不能玩也比让数据一错再错下去

线上一个错误引发的数据血案会让人终身遗憾

热更新

1.热更新活动

2.热修复bug

3.脚本语言选型以及逻辑框架设计会直接影响热更新的支持度

不能过度依赖热修复而忽略本身该有的健硕性,但是热更是真的必不可少

游戏配置

1.部署配置(不同区服配置尽可能变动小而且集中)

2.程序配置(枚举以及一些不能开给策划改的数据)

3.策划配置(导表工具)

4.配置的安全性检测(检测不过不让启动程序)

能开尽量开配置,但是要考虑容错性

消息协议

1.协议的制定(RPC就类似是接口设计)

2.消息的安全性

3.过于频繁的消息要考虑合并

好的功能设计从协议也能看出来不少

安全性

1.网络安全(一般游戏程序员这块比较弱)

2.代码打包加密

3.封包检测(体力活但是必须一个数据都不能少)

4.BUG的容错性

5.后门最好还是留一个

因为外挂死掉的游戏也不少

跨服方案

1.代码公用性(尽量逻辑通用)

2.数据量同步控制

3.是否触发新连接

4.流程的一致性得保证

5.底层接口一定要封装再封装

6.特别注意压力方面的问题

7.注意合服的事项

8.支持大小跨服横向扩展

跨服是非常非常蛋疼的功能

辅助工具

1.导表工具(带部分项目管理)

2.调试工具(服务器和客户端的lua远程调试)

4.机器人(模拟登录,移动,战斗等压力测试)

5.lua工具库库

6.合服工具

7.批量处理线上问题的工具

8.脚本模版生成工具

好工具积攒的越多会大大提高开发效率

事件系统

1.功能事件系统(解决接口调用复杂度)

2.触发事件系统(通用接口走配置触发)

3.事件系统有文档或者定义查看

设计好的事件你会发现再复杂的交叉功能都会变的简单

同步方案

1.帧同步

2.状态同步

效率,安全都挺重要的

战斗技能

1.全面的了解战斗技能的需求

2.主动技能、被动技能、buff

3.配置表结构设计

4.脚本封装(各种计算公式,特别注意效率)

5.防加速、防封包

6.操作体验

7.效率问题(重复的深层次的调用计算)

战斗RPG游戏最核心玩法,没有之一

地图副本

1.地图管理(线路和副本的兼容)

2.副本和地图都需要支持脚本扩展

3.九宫格视野分割

RPG服务器开发必备

后台功能

1.HTTP是必须的

2.最好是唯一的

3.日志和接口一定要分清楚

4.变动频繁还要对接各式各样的平台

每个平台的接口可能都不一样

充值

1.流程严谨严谨再严谨

2.每个区服独立的充值服务器(不管你的程序是多么的健壮)

3.支持自动和手动补单

4.游戏研发支持统计和更方便的查询

5.支持开关

如果充值都出问题了老板会一直站在你后面盯着你修bug的

日志系统

1.程序错误日志

2.程序打印日志(按天分文件夹,定时清理)

3.后台功能日志

4.日志尽量以写文件的形式

更多日志有助于数据分析、事故处理

时间管理

1.时间接口统一(包括客户端都应以服务器时间为主)

2.服务器帧控制

3.各种时间相关刷新管理

RPG游戏这个用的太多了

辅助外挂防范

1.防脱机挂

2.人机识别(一些非人为行为识别)

3.加速验证,主要是移动同步

4.协议加密

游戏上线赚钱的是别人

怪物AI

1.状态机

2.行为树

3.条件和事件是核心

4.简单的设计更适合复杂的怪物AI

亲身经历过同样的需求不同的设计代码量可能相差10倍

性能

1.框架性能

2.逻辑性能

3.数据库读写速度

4.内存占用

优化是个长期坚持的工作,不是为了优化而优化,而是撸代码的时候就考虑造成的影响



来说两句吧
最新评论