类别 | 模块 | 备注 |
核心 | 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.内存占用 | 优化是个长期坚持的工作,不是为了优化而优化,而是撸代码的时候就考虑造成的影响 |