游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3927|回复: 37

[广州] 找Erlang高手(内附开发经验干货)

[复制链接]

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
发表于 2018-11-1 23:54:02 | 显示全部楼层 |阅读模式
招聘信息
公司名称: 广州创乐
工作地区: 广州
职位类型: 程序 
产品类型: 手游-iOS 手游-Android 
投递邮箱: zhc_69@163.com
联系电话: 18925064144
联系QQ: 409455379
注: 请在投递的简历最末尾处,标注“招聘来自GameRes游资网”字样。
要求有MMO研发经验,本人技术,可以加微信聊,gamer_zhc,麻烦注明“gameres招聘”。项目马上二测 。项目核心人员有多款成功产品背书,产品研发氛围好,是提升能力、想做成项目的地方。50人大团队编制,精品化线路。

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-16 10:46:15 | 显示全部楼层
后端开发规范每日一贴:
  • 框架
  • 解决根本复杂度并避免偶发复杂度
  • 要足够重视框架的重要性,必须先建立统一的框架和范例再开发具体功能
  • 框架的开发必须由主管负责
  • 框架,需要包括模板或范例,越傻瓜式越好
  • 必备的稳定的基本功能框架,至少包含:服务器管理(启动、关闭、状态获取等)、全局管理进程管理(创建、销毁、状态获取等)、场景管理(创建、销毁、状态获取、负载均衡)、定时器框架、数据库框架(加载、存盘、缓存等)、角色管理(创建、登陆、下线、断线重连等)、日志框架(操作日志、统计日志等)、数据库刷新系统、异常监控框架(道具防刷、来源监控、运行时异常报警)、副本框架(创建、销毁、继承体系、业务逻辑差异化支持)、角色业务功能模板、消费活动框架、Web服务框架、AI行为树框架、战斗框架、异常处理框架、统一的错误码体系、机器人框架、跨服框架、跨服管理框架
  • 必备的便捷稳定的常用接口,至少包含:奖励发放接口、道具资源消耗接口、公告接口、操作日志接口、统计日志接口、运行日志接口、全服广播接口、时间类接口、数学类接口、list扩展接口、ets扩展接口、批量进程操作接口map_reduce、性能和进程信息接口prof、进程字典管理接口、封号等运营接口、热更新等运维接口
  • 稳定便捷的第三方框架和接口,至少包括:mysql接口、mongo接口、字符编码接口、csv操作等接口、加密接口、日志系统框架、进程批量管理接口、性能和进程信息接口、网络通信框架、随机奖励库接口

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-19 09:48:10 | 显示全部楼层
后端开发规范每日一贴:
  • 编码健壮性
    • 修改代码时,要站在程序运行的角度,而不是仅仅自己看到的角度,例如修改某函数内的逻辑,要先看这个函数本身的逻辑改变,再看这个函数的影响范围
    • 修改必测试,单纯格式修改、注释除外
    • 通用、重要接口,如道具发放、消耗等都需要经过单独的单元测试,全逻辑覆盖性测试
    • 程序逻辑都应该在编写时就足够健壮,严谨的代码面对异常情况时能减少错误影响
    • 游戏中的道具消耗和奖励发放,宁可亏玩家的,不能亏服务器,否则可能导致刷道具回档,具体方式是 扣道具 -> 改数据 -> 给奖励
    • 所有功能,都必须处理存储数据和新配置之间的差异性,需要专人负责检查线上配置数据的调整。出现时必须和策划讨论处理方案。上线后需要刷数据库,上线前可以清档处理
    • record等调整字段和顺序时,需要查清全代码范围内的影响面,特别注意当record存储到其他系统中去时;如果是上线后,可能涉及刷数据库,尽量避免这类操作
    • 函数返回值一律不能是skip,过程中可以有skip

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-20 11:25:15 | 显示全部楼层
后端开发规范每日一贴:
  • 服务器安全性
    • 外界所有的输入,包括客户端协议、数据库、运营接口、后台工具等都必须严格检查,包括
    • 协议
      • 协议加密
      • 协议CD
      • 协议按功能开启限制
      • 协议长度
      • 协议按玩家状态限制
      • 协议单位时间内次数限制
      • 协议的内容正确性校验
    • 数据库
      • 数据库数据正确性检查
      • 数据库数据和配置进行比对
    • 运营接口
      • 运营接口输入日志和结果日志
      • 运营接口CD限制
      • 运营接口IP白名单
      • 运营接口加密
    • 后台工具
      • 访问服务器必须加密校验
      • 必要时增加IP、账号白名单限制
    • 资产、经验、属性、玩法资产等都必须有上限限制,并且由技术控制,不开放给策划配置
    • 角色名、帮会名等做严格的非法字符校验,防止SQL注入

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-21 10:46:18 | 显示全部楼层
数据库读存盘

    • 玩家登陆需要按固定的顺序加载数据库,存盘反向存储,体现在player_module.erl
    • 下列情况可能导致回档
      • 玩家存盘前的逻辑出现异常导致中断,造成存盘逻辑未执行,玩家进程再次启动时
      • 其他在服务器运行期间多次启动的进程,并且启动和关闭时有读盘和存盘逻辑,都可能因为存盘前的逻辑异常导致中断,造成存盘逻辑未执行,再次启动进程时
      • 服务器运行期间正常情况下只启动一次,并且启动和关闭时有读盘和存盘逻辑,在下次服务器启动时
      • 服务器运行期间正常情况下只启动一次,并且启动和关闭时有读盘和存盘逻辑,在意外发生导致进程重启时
    • 解决回档方案
      • 玩家进程在下线存盘前的逻辑,必须用try catch处理,即使前面发生异常也不会中断存盘逻辑
      • 其他在服务器运行期间多次启动的进程,采用玩家进程相同的处理
      • gen_server中增加try catch以增加健壮性,即使出现异常,也不会导致进程重启
      • 所有的数据库存盘异常都记录到专门的数据库异常日志(critical日志)中,服务器启动时发现该异常就强制停止启动,技术手工解决异常后再启动

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-22 10:48:38 | 显示全部楼层
  • 定时器
    • 所有的定时器都必须有回收,需要建立定时器的管理机制
    • 副本以往出现的问题,有相当一部分是由定时器引起的

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-23 09:53:56 | 显示全部楼层
  • 编码规范
    • 数据库更新脚本必须按统一命名,采用redmine单号_更新序号.sql 的方式
    • 每个系统都有协议号对应的错误码范围,错误码ID=语言包ID
    • 变量、函数命名完整,不采用缩写,明白无误表达含义,并且做到自注释
    • 一律禁止使用tuple结构做为跨模块接口、存储、协议、策划配置格式,推荐采用record

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-24 14:18:55 | 显示全部楼层
  • 日志
    • 采用工具屏蔽线上DEBUG日志,而不是用宏定义方式,避免函数参数执行
    • 必须有便利性日志打印机制,可以指定某些文件才打印日志
    • 日志打印需要统一,开关便捷
    • 日志函数命名必须统一,避免让人产生觉得debug日志是别人写的,不属于自己的感受

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-26 13:56:30 | 显示全部楼层
  • 日志报错
    • 每天专人收集主干和线上的错误日志并建单,所有开发优先修复
    • 每天的日志报错,都要由当事人划分错误类型,比如技术测试不严,策划配置问题、前端协议问题等
    • 每天的日志报错,还要归档及定期回溯,以此反馈和督促后端和项目组的开发质量

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-27 10:14:56 | 显示全部楼层
  • 进程管理
    • 绝大部分进程都必须可以重启重建,玩家进程除外
    • 场景相关进程根据场景类型采用不同的重启恢复策略
    • 必须有后台监控工具,可以便捷查看进程信息,避免登陆服务器查看的繁琐
    • init、handle_call、handle_cast、handle_info等函数都需要用try catch包围,避免异常导致进程关闭甚至又异常启动,所有异常都必须可捕捉,必要时才主动关闭进程

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-28 14:53:59 | 显示全部楼层
  • 进程间通信
    • 采用少量,小包的方式
    • 玩家信息收发必须判断玩家的状态,例如旧场景进程发信息给正在切线的玩家进程,需要做舍弃处理
    • 同样前端发过来的场景类协议,如果玩家已经离开场景,也做舍弃处理,详见服务器安全性-协议一节

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-29 13:59:37 | 显示全部楼层
  • 性能
    • erlang语言特性决定性能特性,要再开发期注意这些特性
    • 除此之外可以不用过多考虑性能影响,因为压测才能暴露性能问题,并且越晚做性能压测越好
    • 要有要有压测报告模板,并基于此编写实例报告

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-30 10:20:18 | 显示全部楼层
  • 功能开启
    • 未达到等级的功能不做数据库处理,不处理协议,不做逻辑处理,内部接口调用也要做功能开启判断
    • 功能管理分为大小两类功能,后端功能依据小功能ID,大功能对应UI界面
    • 提供接口方便运营线上关闭出现BUG的功能,并在修复后再次开启

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-12-18 18:45:52 | 显示全部楼层
  • 副本
    • 副本系统需要模板化,模板中预先制定函数,开发者只要填写函数即可,保证稳定性、开发效率
    • 副本中记录副本状态、定时器引用,所有的状态切换和定时器处理都必须严谨
    • 副本框架包括副本流程(核心为定时器和驱动的状态维护)、玩法数据管理、继承体系、便利性函数util等四个部分


6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-12-20 11:04:27 | 显示全部楼层
  • 编辑器
    • 文件、函数改名时,必须全局搜索避免遗漏
    • 具备一键调整格式功能


6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-12-24 00:20:45 | 显示全部楼层
  • review
    • 个人能力有差异,为了保持一致性,需要建立review机制和流程,逐步提升个人能力、提升整体代码质量
    • 开发规范中的内容,如果某个同学都可以遵守,可以安排reivew其他人
    • 如果有条件,review可以和系统持续集成结合
    • review产出的优化,都需要根据严重程度排期处理
    • review的作用有两个,提高项目组代码质量和提升人才能力
    • review需要分对象和功能模块,必须由主程负责发起、分配、落实、核查


6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-12-25 17:10:49 | 显示全部楼层
  • erlang
    • 所有进程gen_server的接口都需要有try catch保护
    • ets尽量创建在根进程
    • 避免可能重启的进程建立非私有ets
    • module进程名用唯一标识,避免快速创建时重名,比如mod_map_xxx,需要将自增长序列作为进程名元素,只采用时间戳会导致重命名
    • erlang尤其要注意参数传入,后面函数传入参数必须是前一个函数处理的结果,尤其注意函数参数的传入传出
    • 常用的erlang shell命令都必须熟悉和掌握
    • 其他《erlang注意点》


6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-2 10:21:22 | 显示全部楼层
  • 消费活动
    • 消费活动需要处理好时间轴上的三个时间节点的关系,活动时间点、玩家登陆下线时间点、服务器启动关闭时间
    • 服务器发送配置信息给前端,避免消费活动问题的修复,依赖于前端热更
    • 框架模板化,开发人员只关注自己的活动与模板的差异点即可

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-5 10:08:44 | 显示全部楼层
  • 技术后台工具
    • 技术自己搭建的WEB后台,只能查看不能操作,增加安全性
    • 查看服务器日志
    • 查找玩家信息,具体到模块
    • 查看某进程信息
    • 查看调度器、内存高的进程
    • 查看ETS
    • 查看场景进程OBJECT信息
    • 查看全服定时器信息
    • 其他快捷查看信息的功能

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-6 10:58:47 | 显示全部楼层
本周给二测包,欢迎投递简历zhc_69@163.com

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-7 23:30:12 | 显示全部楼层
本广告长期有效,找人是第一要务。

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-9 10:10:25 | 显示全部楼层
本广告长期有效,找人是第一要务。

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-12 13:48:11 | 显示全部楼层
本广告长期有效,找人是第一要务。

6

主题

106

帖子

237

积分

中级会员

Rank: 3Rank: 3

积分
237
 楼主| 发表于 2018-11-14 23:29:29 | 显示全部楼层
本广告长期有效,找人是第一要务。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-19 00:08

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表