基本信息
- 姓名 纪瑞龙
- 英文名 Ron Cybeureka
- 籍贯 湖北
- 户籍 广州
- 婚姻状况 未婚
- 工作邮箱 dev_ron@163.com
- 博客 https://pensieve.cybeureka.com/
- 仓库 https://github.com/Ron2014
- 学校 华南农业大学,07软件工程,工学学士,本科
求职意向
- 服务端高级工程师
- Skynet高级工程师
- Skynet服务端主程
- Lua高级工程师
- C++高级工程师
工作经验(由近及远)
龙图游戏
公司名称:中清龙图网络科技有限公司
时间:2021.1.4 - 在职
职位:资深服务器开发工程师
项目:魂斗罗大逃杀/CBR
游戏类型:房间匹配玩法 第一人称射击 - 手游
工具:SVN VSCode XMind TAPD Terminal CentOS
数据库与开发语言:MySQL Redis C++ Lua
岗位职责:
- 负责设计开发服务器端,包括服务器结构和逻辑,数据库结构,通信协议等;
- 负责手机游戏的服务器开发,有能力完成高并发/10w量级同时在线/分布式服务器的架构设计和优化;
- 按策划需求完成服务端基本逻辑开发,代码测试与维护,带领服务器小组解决开发过程中遇到的技术问题;
- 根据开发进度准时完成开发任务,提交版本。
任职要求:
- 本科以上学历,计算机,软件工程相关专业;
- 精通c++语言,至少参与过1款大型手游/页游/网游的服务器核心研发工作;
- 熟悉常用数据库(mysql,redis)的设计与开发,精通linux环境,精通数据结构与算法,socket编程,多线程编程等;
- 熟悉大容量,高并发,高性能的分布式服务器开发原理;
- 良好的沟通能力与团队协作能力,高度的工作责任心和敬业精神;
- 具有较强的抗压能力,能够独立、高效地发现并解决或推动解决各种疑难问题。
工作经历:
- 基于已有的单节点服务器架构,进行迭代开发,使其满足全区全服、大区全服的架构选型
- 基于分布式服务器架构,实现匹配对战系统,使其兼顾单人匹配、组队匹配流程
- 基于分布式服务器架构,利用Redis集群实现多进程之间的数据缓存和共享,规划好数据同步的方案,保证数据一致性
- 基于分布式服务器架构,迭代RPC系统,实现路由转发功能,使得在多点部署的服务器进程可以相互发现和通信
- 保证原单点服务器已实现功能移植到新版架构时快速有效,并做好工作计划和人员分配
- 为自定义协议编写特定代码生成器,简化客户端、服务端联调工作流,方便两端协议版本比对,提高开发效率
- 为服务器部署编写流程文档,编写一键部署脚本,提高服务器维护的效率
- 收集服务器开发的潜在需求和问题,撰写相关文档,组织开会讨论,分配任务,实时汇总服务器开发进度并上报
- 负责项目的人员招聘和考核工作
只玩游戏
时间:2020.7.1 - 2020.12.18
职位:资深服务器开发工程师
项目:魂之歌/契约战歌
游戏类型:回合制对战 2D卡牌游戏 - 手游
工具:SVN VSCode XMind Redmine SecureCRT Terminal CentOS
数据库与开发语言:MySQL MongoDB C Lua Python
岗位职责:
- 在保证服务器稳定的同时,修复代码漏洞,维护并扩展经济系统、战斗系统。
- 负责服务端员工的面试事宜,对新人的能力进行考核,指导功能需求的规划和分配,制定员工的目标、评估工时,保证项目的正常推进。
- 指导并跟进管理后台的开发工作,做好BI日志、埋点、GM命令、兑换码、运维等工作。
- 游戏上线后,集结团队力量及时解决线上问题。
工作经历:
- 把关服务端代码质量,编写和使用调试工具迅速定位代码错误,指导并修复有漏洞的代码。
- 制作相关工具模拟玩家注册与登录/登出,对服务端最高承载量进行压力测试。对登录/登出操作进行优化,实现安全关服。
- 制作战斗模拟工具对战斗协议进行测试,协助数值策划完成PVP的测算和调整工作。
- 使用火焰图工具,基于注册/登录/战斗三大协议,定位热点函数,提升处理并发请求的能力,优化服务器性能。
- 编写排队机制解决协程重入中执行异步调用引发的性能问题,并基于此实现单例模式。
- 对sproto协议进行文本解析,实现网络协议的自动化测试,同时为服务端各功能提供网络协议单元测试的环境,进一步保证服务端代码质量。
- 定制配置表内存共享、代码缓存、热更新方案。
- 为服务器部署编写shell命令,对进程的内存和CPU的实时监控编写工具。
- 重写玩家角色登录+数据初始化逻辑,搭载新版的ORM框架,使其在DB层和网络层实现增量同步/更新。
- 编写新版技能目标选择逻辑,新版战斗系统执行流程,新版技能系统,新版BUFF系统,增加有限状态机,增加被动技能的设计,增加属性计算公式+缓存模式,使其性能提升约百倍,并且提升其可维护性和扩展性。
益心游戏
时间:2019.11.18 - 2020.03.27
职位:服务器开发工程师
项目:预研项目
工具:SVN VSCode VS XMind Ubuntu WSL2 Docker FIPS CMake
数据库与开发语言:leveldb C++ Lua Python TypeScript TypeScriptToLua
岗位职责:
- 与策划,美术沟通项目需求,确定程序解决方案;
- 高效优质的完成游戏服务端模块代码的编写工作,bug的修复工作;
- 协助主程对服务器程序进行架构分析和软件设计。
任职要求:
- 2年以上C++服务器开发经验,至少一个游戏项目开发经验;
- 熟悉lua,C++等开发语言,热爱编程技术,对客户端开发工作有一定的认识和兴趣;
- 熟悉Socket编程,熟悉各种算法和数据结构,熟悉使用stl等。
工作经历:
- 接入 lua-cjson
- 接入 curl 库
- Lua 脚本加密。使用python语言编写加密脚本修改Lua源码,通过魔改Lua虚拟机的方式,主要分三个方向:
- 对源码中47个 opcode 枚举值列表进行乱序。
- 定义17个无效 opcode 操作码,按比例插入 proto 解析的 opcode 数组中,同时修正 iAsBx 模式的跳转操作码相对偏移地址。这17个无效 opcode 我称为 NOP 命令,其操作数ABC的的范围,还得根据统计信息,得到一个合理的随机范围,使其更加拟真。
- 对字节码中出现的明文字符串进行加密。主要思路是定义随机生成的2^N字节长的密钥,对字符串分组位异或。
- 与技术总监一起设计并实现战斗系统
网易游戏
时间:2015.03.05 - 2019.06.04
职位:高级研发工程师
岗位职责:
- 按照策划需求,独立完成前后端功能开发。
- 评估代码性能瓶颈,框架的易用性,对其进行优化和封装。
- 维护并开发相关工具。
项目:
1. 猫咪争霸/无限战争
游戏类型:RTS 即时战略 2D游戏 - 手游
时间:2015.03.05 - 2017.03.07
工具:SVN Sublime VS
数据库与开发语言:MySQL MongoDB C++ Lua Python Cocos2d-X PyQt 自研服务端引擎
工作经历:
- 实现抽卡功能。迭代并优化玩法管理器,使其更易于维护和扩展。
- 优化界面管理器,实现界面层级、窗口父子/互斥关系的灵活控制。
- 优化场景管理器,制定场景跳转算法规避scene栈溢出的风险。并将场景减少至非战斗和战斗两个,减少资源加载和销毁的频率,以优化大界面跳转的UI体验。
- 收集异形屏的尺寸信息,制定完善的屏幕适配方案:通过锚点+偏移的方法,实现屏幕最大化、控件停靠在屏幕边沿的效果(苹果审核要求屏幕不能留黑边)。
- 利用TexturePacker工具,编写脚本对资源中的小图按需进行合图工作,将该功能集成至打包脚本中,进一步提高运行时资源加载的效率。
- 对接公司的屏蔽字库SDK,并解决SDK可能带来的APP初始化太慢的问题。
- 维护并扩展关卡编辑器,优化其操作体验,并提供地形编辑、天气编辑的功能。地形编辑通过网格的方式实现,之后为了性能考量,还实现了网格合并算法,以加速地形加载效率。
- 对于PVP玩法,实现了Ban-Pick机制,以及组队模式下的Ban-Pick。
- 为了解决海外版APP包体过大的问题,对接了Google Play APK扩展文件机制(简称obb)
2. 武魂2
游戏类型:MMORPG 即时对战 2.5D游戏 - 端游
时间:2017.03.07 - 2019.06.04
工具:SVN PyCharm VS
数据库与开发语言:MySQL C++ Python 自研ARK引擎
工作经历:
- 限时道具可叠加功能的实现。
- 装备属性养成系统的迭代:精工项链、R装炼制、装备拓印。
- 运营活动:彩票、世界杯竞猜活动。
- 大型生存类玩法:突出重围。
- 经济系统:跨服团购。因为消耗先行,需要解决订单(临界资源)失效、拼团失败时返还该消耗的问题。
摩摩欧 - (更名)思想网络 - (更名)星辰海
时间:2011.01.17 - 2014.11.04
岗位职责:
- 按照策划需求,独立完成前后端功能开发。
- 从零(沙盒)开始开发网络游戏,积累前/后端开发常识。
- 攻关相关技术,了解游戏架构。
- 对核心系统或玩法进行优化。
项目:
1. 聊个斋
游戏类型:MMORPG 回合制对战 3D游戏 - 端游
时间:2011.01.17 - 2011.07.17
工具:SVN LuaEdit Vim VS
数据库与开发语言:MySQL C++ Lua 自研Xero引擎
岗位:实习生
工作经历:
- 使用MFC框架,对游戏的Launcher界面进行重新编写,实现异形窗口。
- 学习Lua脚本语言,熟悉Xero客户端引擎,对该引擎的UI系统的脚本接口进行文档化。
- 玩游戏,熟悉MMORPG游戏各种功能功能模块与实现方式,熟悉网络游戏的开发、调试环境,了解GM机制和日志系统。
- 使用FreeBSD系统,熟悉Linux命令,Vim编辑器,学会使用sed awk工具查询文本格式的游戏日志。
2. 战殇/国战
游戏类型:MMORPG 即时对战 2.5D游戏 - 端游
时间:2011.07.18 - 2014.03.10
工具:SVN LuaEdit Vim VS
数据库与开发语言:MySQL C++ Lua 自研Xero引擎
岗位:游戏开发工程师
工作经历:
- 从零开始开发游戏基础系统。主要包括
- 道具系统。道具的存储/加载,背包中道具的叠加、移动逻辑,道具的添加和销毁,背包容量扩展机制,仓库/装备栏的分页和分类,道具的特殊使用效果,道具(装备)的额外属性机制。
- 经济系统。玩家携带资源的消耗和增加逻辑。充值系统与玩家资源数据的对接。掉落逻辑,包括随机掉落和必定掉落的配置规范和逻辑实现。商店、商城中的资源与道具的兑换逻辑。玩家个体之间的道具交易,以及更加大型的道具流通系统——拍卖行。邮箱和邮件的实现。
- 社交系统。聊天的实现,包括不同频道的聊天以及私聊的实现,将玩家/装备信息生成超链接发送至聊天系统的功能,对于敏感字进行屏蔽。组队系统、帮派系统、师徒系统。
- 任务系统、成就系统。使用观察者模式实现的逻辑触发机制。并在刷怪、采集类任务指引过程中,通过贪心算法,调用自动寻路接口移动至地图指定位置。并基于此进一步封装,实现挂地图自动寻路,自动挂机等功能。
- 战斗系统。集成TAB键选怪机制,技能距离判定并自动寻路,吟唱-释放到具体的技能效果,数值计算,并对客户端组播技能表现。
- 对于玩家而言,战斗+寻路+主动移动等过程中有很多状态,为了协调各状态的共生、打断、阻塞等关系,优化玩家的操作体验,制作有限状态机。
- 实现并维护UI框架,使用表格,处理好各窗口之间的层叠、父子、互斥关系。实现图标拖拽功能,对于主界面快捷图标实现点击即使用的功能,包括道具、技能。将技能cd表现在技能界面的图标以及主界面的快捷图标上。
- 通过Xero集成的工具,定位客户端的性能瓶颈。利用缓存、字符串拼接、延迟加载、分页加载等方法,处理聊天窗口被刷屏时导致客户端卡顿的问题。
- 参考Linux的crontab机制,实现服务器全局以及玩家自身的时间管理机制,用于实现副本玩法的流程控制,运营活动的开启和关闭等。
- 扩展现有的ORM框架,实现存储时mysql自动拼接,在一个秒级执行的idle函数中推送至DB,实现增量更新。该优化甚至在游戏运营半年后集成至道具系统中,兼容旧的道具表结构,未发生任何异常。
- 优化一键整理背包、一键领取/删除邮件带来的服务端性能问题。
- 制作房间类玩法。优化国战(500人地图夺旗类)玩法,优化方向包括客户端监测到帧率过低时,自动将屏幕中所有对象切换至低模形象;服务端对于小地图/大地图上盟友信息同步加了界面开启的开关、做了延迟,并且每次仅同步粗略的定位区域范围。
- 制作新版的Launcher界面,开一个新线程来分离补丁包下载和MFC渲染这两个逻辑,解决界面在拖拽时卡顿,以及下载太慢的问题。
3. 三国对战卡/斗脑三国
游戏类型:TCG集换式卡牌 2D游戏 - 手游
时间:2014.03.11 - 2014.11.4
工具:SVN Git MonoBehavior LuaEdit
开发语言:C# Lua Unity3D
岗位:Unity3D开发工程师
工作经历:
- 接入UniLua,加载lua配置表,使用C#的反射机制,将lua数据转换成C#对象。
- 研究NGUI插件,并使用它搭建游戏UI框架,包括游戏主界面以及战斗系统的UI。
- 基于UI框架,实现新手引导功能。
- 断线重连之后,实现战场信息的恢复。
- 接入uLua,使用Lua语言实现了部分UI。
业余开源项目介绍
- issue-test 收集机考/笔试/面试/生产/生活遇到的各种有趣问题, 撰写分析文档, 建立测试demo
- algorithm 收集OJ系统中有趣的编程题, 内容涵盖字符串操作/数据结构/算法/特殊功能
- LearnOpenGL 遵循 https://learnopengl.com/ 教程学习3D引擎基础知识。
- Trachtenberg 俄罗斯数学家发明的速算技巧, 将英文版翻译成中文, 原理推导以及代码实现
- fips-lua lua各版本源码的注释版
- skynet-study skynet源码注释版
个人专长
-
熟悉Lua源码、Skynet源码。
-
网易系出身的双端程序员,对网络游戏开发有全面的认识,能独立完成前后端功能模块。
-
了解服务器架构,了解常见的性能瓶颈定位以及优化方案。
-
做事情认真负责,善于沟通表达,文档能力强,工作汇报非常及时和详细。
-
热爱学习,吃苦耐劳,生活自律。
职业规划
-
收集或开发游戏开发、运营相关的各种工具,熟练使用并掌握其原理。
-
在技术和管理上积累人脉和经验,成为项目组能够独挡一面的人。
-
希望有机会将个人经历编写成一部独立游戏,以记录或传递自己游戏人生中的心得体会。
-
希望公司设立技术专家的职位,有系统的技术类职级上升途径。