基本信息

  • 姓名 纪瑞龙
  • 英文名 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

岗位职责:

  1. 负责设计开发服务器端,包括服务器结构和逻辑,数据库结构,通信协议等;
  2. 负责手机游戏的服务器开发,有能力完成高并发/10w量级同时在线/分布式服务器的架构设计和优化;
  3. 按策划需求完成服务端基本逻辑开发,代码测试与维护,带领服务器小组解决开发过程中遇到的技术问题;
  4. 根据开发进度准时完成开发任务,提交版本。

任职要求:

  1. 本科以上学历,计算机,软件工程相关专业;
  2. 精通c++语言,至少参与过1款大型手游/页游/网游的服务器核心研发工作;
  3. 熟悉常用数据库(mysql,redis)的设计与开发,精通linux环境,精通数据结构与算法,socket编程,多线程编程等;
  4. 熟悉大容量,高并发,高性能的分布式服务器开发原理;
  5. 良好的沟通能力与团队协作能力,高度的工作责任心和敬业精神;
  6. 具有较强的抗压能力,能够独立、高效地发现并解决或推动解决各种疑难问题。

工作经历:

  1. 基于已有的单节点服务器架构,进行迭代开发,使其满足全区全服、大区全服的架构选型
  2. 基于分布式服务器架构,实现匹配对战系统,使其兼顾单人匹配、组队匹配流程
  3. 基于分布式服务器架构,利用Redis集群实现多进程之间的数据缓存和共享,规划好数据同步的方案,保证数据一致性
  4. 基于分布式服务器架构,迭代RPC系统,实现路由转发功能,使得在多点部署的服务器进程可以相互发现和通信
  5. 保证原单点服务器已实现功能移植到新版架构时快速有效,并做好工作计划和人员分配
  6. 为自定义协议编写特定代码生成器,简化客户端、服务端联调工作流,方便两端协议版本比对,提高开发效率
  7. 为服务器部署编写流程文档,编写一键部署脚本,提高服务器维护的效率
  8. 收集服务器开发的潜在需求和问题,撰写相关文档,组织开会讨论,分配任务,实时汇总服务器开发进度并上报
  9. 负责项目的人员招聘和考核工作

只玩游戏

时间:2020.7.1 - 2020.12.18

职位:资深服务器开发工程师

项目:魂之歌/契约战歌

游戏类型:回合制对战 2D卡牌游戏 - 手游

工具:SVN VSCode XMind Redmine SecureCRT Terminal CentOS

数据库与开发语言:MySQL MongoDB C Lua Python

岗位职责:

  1. 在保证服务器稳定的同时,修复代码漏洞,维护并扩展经济系统、战斗系统。
  2. 负责服务端员工的面试事宜,对新人的能力进行考核,指导功能需求的规划和分配,制定员工的目标、评估工时,保证项目的正常推进。
  3. 指导并跟进管理后台的开发工作,做好BI日志、埋点、GM命令、兑换码、运维等工作。
  4. 游戏上线后,集结团队力量及时解决线上问题。

工作经历:

  1. 把关服务端代码质量,编写和使用调试工具迅速定位代码错误,指导并修复有漏洞的代码。
  2. 制作相关工具模拟玩家注册与登录/登出,对服务端最高承载量进行压力测试。对登录/登出操作进行优化,实现安全关服。
  3. 制作战斗模拟工具对战斗协议进行测试,协助数值策划完成PVP的测算和调整工作。
  4. 使用火焰图工具,基于注册/登录/战斗三大协议,定位热点函数,提升处理并发请求的能力,优化服务器性能。
  5. 编写排队机制解决协程重入中执行异步调用引发的性能问题,并基于此实现单例模式。
  6. 对sproto协议进行文本解析,实现网络协议的自动化测试,同时为服务端各功能提供网络协议单元测试的环境,进一步保证服务端代码质量。
  7. 定制配置表内存共享、代码缓存、热更新方案。
  8. 为服务器部署编写shell命令,对进程的内存和CPU的实时监控编写工具。
  9. 重写玩家角色登录+数据初始化逻辑,搭载新版的ORM框架,使其在DB层和网络层实现增量同步/更新。
  10. 编写新版技能目标选择逻辑,新版战斗系统执行流程,新版技能系统,新版BUFF系统,增加有限状态机,增加被动技能的设计,增加属性计算公式+缓存模式,使其性能提升约百倍,并且提升其可维护性和扩展性。

益心游戏

时间:2019.11.18 - 2020.03.27

职位:服务器开发工程师

项目:预研项目

工具:SVN VSCode VS XMind Ubuntu WSL2 Docker FIPS CMake

数据库与开发语言:leveldb C++ Lua Python TypeScript TypeScriptToLua

岗位职责:

  1. 与策划,美术沟通项目需求,确定程序解决方案;
  2. 高效优质的完成游戏服务端模块代码的编写工作,bug的修复工作;
  3. 协助主程对服务器程序进行架构分析和软件设计。

任职要求:

  1. 2年以上C++服务器开发经验,至少一个游戏项目开发经验;
  2. 熟悉lua,C++等开发语言,热爱编程技术,对客户端开发工作有一定的认识和兴趣;
  3. 熟悉Socket编程,熟悉各种算法和数据结构,熟悉使用stl等。

工作经历:

  1. 接入 lua-cjson
  2. 接入 curl 库
  3. Lua 脚本加密。使用python语言编写加密脚本修改Lua源码,通过魔改Lua虚拟机的方式,主要分三个方向:
    1. 对源码中47个 opcode 枚举值列表进行乱序。
    2. 定义17个无效 opcode 操作码,按比例插入 proto 解析的 opcode 数组中,同时修正 iAsBx 模式的跳转操作码相对偏移地址。这17个无效 opcode 我称为 NOP 命令,其操作数ABC的的范围,还得根据统计信息,得到一个合理的随机范围,使其更加拟真。
    3. 对字节码中出现的明文字符串进行加密。主要思路是定义随机生成的2^N字节长的密钥,对字符串分组位异或。
  4. 与技术总监一起设计并实现战斗系统

网易游戏

时间:2015.03.05 - 2019.06.04

职位:高级研发工程师

岗位职责:

  1. 按照策划需求,独立完成前后端功能开发。
  2. 评估代码性能瓶颈,框架的易用性,对其进行优化和封装。
  3. 维护并开发相关工具。

项目:

1. 猫咪争霸/无限战争

游戏类型:RTS 即时战略 2D游戏 - 手游

时间:2015.03.05 - 2017.03.07

工具:SVN Sublime VS

数据库与开发语言:MySQL MongoDB C++ Lua Python Cocos2d-X PyQt 自研服务端引擎

工作经历:

  1. 实现抽卡功能。迭代并优化玩法管理器,使其更易于维护和扩展。
  2. 优化界面管理器,实现界面层级、窗口父子/互斥关系的灵活控制。
  3. 优化场景管理器,制定场景跳转算法规避scene栈溢出的风险。并将场景减少至非战斗和战斗两个,减少资源加载和销毁的频率,以优化大界面跳转的UI体验。
  4. 收集异形屏的尺寸信息,制定完善的屏幕适配方案:通过锚点+偏移的方法,实现屏幕最大化、控件停靠在屏幕边沿的效果(苹果审核要求屏幕不能留黑边)。
  5. 利用TexturePacker工具,编写脚本对资源中的小图按需进行合图工作,将该功能集成至打包脚本中,进一步提高运行时资源加载的效率。
  6. 对接公司的屏蔽字库SDK,并解决SDK可能带来的APP初始化太慢的问题。
  7. 维护并扩展关卡编辑器,优化其操作体验,并提供地形编辑、天气编辑的功能。地形编辑通过网格的方式实现,之后为了性能考量,还实现了网格合并算法,以加速地形加载效率。
  8. 对于PVP玩法,实现了Ban-Pick机制,以及组队模式下的Ban-Pick。
  9. 为了解决海外版APP包体过大的问题,对接了Google Play APK扩展文件机制(简称obb)

2. 武魂2

游戏类型:MMORPG 即时对战 2.5D游戏 - 端游

时间:2017.03.07 - 2019.06.04

工具:SVN PyCharm VS

数据库与开发语言:MySQL C++ Python 自研ARK引擎

工作经历:

  1. 限时道具可叠加功能的实现。
  2. 装备属性养成系统的迭代:精工项链、R装炼制、装备拓印。
  3. 运营活动:彩票、世界杯竞猜活动。
  4. 大型生存类玩法:突出重围。
  5. 经济系统:跨服团购。因为消耗先行,需要解决订单(临界资源)失效、拼团失败时返还该消耗的问题。

摩摩欧 - (更名)思想网络 - (更名)星辰海

时间:2011.01.17 - 2014.11.04

岗位职责:

  1. 按照策划需求,独立完成前后端功能开发。
  2. 从零(沙盒)开始开发网络游戏,积累前/后端开发常识。
  3. 攻关相关技术,了解游戏架构。
  4. 对核心系统或玩法进行优化。

项目:

1. 聊个斋

游戏类型:MMORPG 回合制对战 3D游戏 - 端游

时间:2011.01.17 - 2011.07.17

工具:SVN LuaEdit Vim VS

数据库与开发语言:MySQL C++ Lua 自研Xero引擎

岗位:实习生

工作经历:

  1. 使用MFC框架,对游戏的Launcher界面进行重新编写,实现异形窗口。
  2. 学习Lua脚本语言,熟悉Xero客户端引擎,对该引擎的UI系统的脚本接口进行文档化。
  3. 玩游戏,熟悉MMORPG游戏各种功能功能模块与实现方式,熟悉网络游戏的开发、调试环境,了解GM机制和日志系统。
  4. 使用FreeBSD系统,熟悉Linux命令,Vim编辑器,学会使用sed awk工具查询文本格式的游戏日志。

2. 战殇/国战

游戏类型:MMORPG 即时对战 2.5D游戏 - 端游

时间:2011.07.18 - 2014.03.10

工具:SVN LuaEdit Vim VS

数据库与开发语言:MySQL C++ Lua 自研Xero引擎

岗位:游戏开发工程师

工作经历:

  1. 从零开始开发游戏基础系统。主要包括
    1. 道具系统。道具的存储/加载,背包中道具的叠加、移动逻辑,道具的添加和销毁,背包容量扩展机制,仓库/装备栏的分页和分类,道具的特殊使用效果,道具(装备)的额外属性机制。
    2. 经济系统。玩家携带资源的消耗和增加逻辑。充值系统与玩家资源数据的对接。掉落逻辑,包括随机掉落和必定掉落的配置规范和逻辑实现。商店、商城中的资源与道具的兑换逻辑。玩家个体之间的道具交易,以及更加大型的道具流通系统——拍卖行。邮箱和邮件的实现。
    3. 社交系统。聊天的实现,包括不同频道的聊天以及私聊的实现,将玩家/装备信息生成超链接发送至聊天系统的功能,对于敏感字进行屏蔽。组队系统、帮派系统、师徒系统。
    4. 任务系统、成就系统。使用观察者模式实现的逻辑触发机制。并在刷怪、采集类任务指引过程中,通过贪心算法,调用自动寻路接口移动至地图指定位置。并基于此进一步封装,实现挂地图自动寻路,自动挂机等功能。
    5. 战斗系统。集成TAB键选怪机制,技能距离判定并自动寻路,吟唱-释放到具体的技能效果,数值计算,并对客户端组播技能表现。
  2. 对于玩家而言,战斗+寻路+主动移动等过程中有很多状态,为了协调各状态的共生、打断、阻塞等关系,优化玩家的操作体验,制作有限状态机。
  3. 实现并维护UI框架,使用表格,处理好各窗口之间的层叠、父子、互斥关系。实现图标拖拽功能,对于主界面快捷图标实现点击即使用的功能,包括道具、技能。将技能cd表现在技能界面的图标以及主界面的快捷图标上。
  4. 通过Xero集成的工具,定位客户端的性能瓶颈。利用缓存、字符串拼接、延迟加载、分页加载等方法,处理聊天窗口被刷屏时导致客户端卡顿的问题。
  5. 参考Linux的crontab机制,实现服务器全局以及玩家自身的时间管理机制,用于实现副本玩法的流程控制,运营活动的开启和关闭等。
  6. 扩展现有的ORM框架,实现存储时mysql自动拼接,在一个秒级执行的idle函数中推送至DB,实现增量更新。该优化甚至在游戏运营半年后集成至道具系统中,兼容旧的道具表结构,未发生任何异常。
  7. 优化一键整理背包、一键领取/删除邮件带来的服务端性能问题。
  8. 制作房间类玩法。优化国战(500人地图夺旗类)玩法,优化方向包括客户端监测到帧率过低时,自动将屏幕中所有对象切换至低模形象;服务端对于小地图/大地图上盟友信息同步加了界面开启的开关、做了延迟,并且每次仅同步粗略的定位区域范围。
  9. 制作新版的Launcher界面,开一个新线程来分离补丁包下载和MFC渲染这两个逻辑,解决界面在拖拽时卡顿,以及下载太慢的问题。

3. 三国对战卡/斗脑三国

游戏类型:TCG集换式卡牌 2D游戏 - 手游

时间:2014.03.11 - 2014.11.4

工具:SVN Git MonoBehavior LuaEdit

开发语言:C# Lua Unity3D

岗位:Unity3D开发工程师

工作经历:

  1. 接入UniLua,加载lua配置表,使用C#的反射机制,将lua数据转换成C#对象。
  2. 研究NGUI插件,并使用它搭建游戏UI框架,包括游戏主界面以及战斗系统的UI。
  3. 基于UI框架,实现新手引导功能。
  4. 断线重连之后,实现战场信息的恢复。
  5. 接入uLua,使用Lua语言实现了部分UI。

业余开源项目介绍

  1. issue-test 收集机考/笔试/面试/生产/生活遇到的各种有趣问题, 撰写分析文档, 建立测试demo
  2. algorithm 收集OJ系统中有趣的编程题, 内容涵盖字符串操作/数据结构/算法/特殊功能
  3. LearnOpenGL 遵循 https://learnopengl.com/ 教程学习3D引擎基础知识。
  4. Trachtenberg 俄罗斯数学家发明的速算技巧, 将英文版翻译成中文, 原理推导以及代码实现
  5. fips-lua lua各版本源码的注释版
  6. skynet-study skynet源码注释版

个人专长

  • 熟悉Lua源码、Skynet源码。

  • 网易系出身的双端程序员,对网络游戏开发有全面的认识,能独立完成前后端功能模块。

  • 了解服务器架构,了解常见的性能瓶颈定位以及优化方案。

  • 做事情认真负责,善于沟通表达,文档能力强,工作汇报非常及时和详细。

  • 热爱学习,吃苦耐劳,生活自律。

职业规划

  • 收集或开发游戏开发、运营相关的各种工具,熟练使用并掌握其原理。

  • 在技术和管理上积累人脉和经验,成为项目组能够独挡一面的人。

  • 希望有机会将个人经历编写成一部独立游戏,以记录或传递自己游戏人生中的心得体会。

  • 希望公司设立技术专家的职位,有系统的技术类职级上升途径。