甜薪工场甜薪工场
甜薪工场
工作者接单雇主招人
查看岗位
人才库人才详情

我擅长1

凌风
产品研发/Go其他抖音
个人优势
暂无
工作经历
暂无
教育经历
暂无
项目经历
通信协议
异步模型/优化技巧
项目职责:通信协议 课程进度 1 数据通信: 数据传递方式 2 网络模型: 经典网络模型 3 操作技巧: 具体游戏开发 4 案例分析: 如何完成作业 网易互动娱乐 NIE 传统服务器模型 每个用户连接后创建一个线程或进程。 由该工作者线程/进程负责用户服务。 用户交互完成后退出线程/进程。 应用举例: web server, ftp server, mail server 问题1: 用户之间交互度不够。 问题2: 缺乏统一逻辑来驱动所有用户逻辑。 早期模型-单机化 最早期的MUDOS使用的单机模型,所有处理均在一台SERVER内完成,唯 一对外的接口是账号验证及统计的CGI访问(可选)。 后被应用于大话一/二/三,梦幻西游,支持2K-6K同时在线。 服务端单线程模式,时钟每秒钟1-4次,客户端每秒钟上传数据2次。 中期模型-分离化  将压力最大的数据存储分离成单独数据库,并且为外部的登陆及交易 系统直接访问数据库带来了方便。  应用范围: 大部分四五年前开发的分区网游(RPG/休闲)。 现代模型-模块化 应用案例: 国内这两年开发的一些分区MMORPG。 选择配置: 视情况可以不用前端或者只有一台GAME。 优点: 游戏的容量因为场景服务的分布式而大大增加。 缺点: 设计稍微显得复杂。 游戏服务端两种模式 早期模型使用单进程: ● 引擎代码与逻辑代码形成必然的交叉与限制 ● 一点出错,全盘皆输 ● 游戏逻辑灵活度底,且无法利用多核优势 现代模型使用多进程: ● 引擎代码与逻辑代码存在于完全不同的进程中 ● 通信采用简单的SOCKET或者管道(类 APACHE) ● 游戏灵活度高,可采用与引擎完全不同的技术 变态模型-复杂化 程序员在前两次分离中得到了一个暗示: “分离就是好”。因而为了证 明自己的SERVER支持更多的人数,某著名企业的某些开发者发明 了上面的模型。 上面模型并非无一可取,但一步到位全部做出来就是愚蠢了。 你的游戏初次内测单分区人数会高于两千人么? 多一台机器,复杂度往往增加几何级数倍! 等上千人时已能挣很多钱了,到时再想重构吧! -- 加法容易减法难 观点 一个难以向人阐述的实现,往往是个坏主意 一个容易向人阐述的实现,往往是个好主意 -- Guido 大容量RPG服务器 就目前而言,应该是最复杂的MMORPG服务器模型。 支持场景无缝切换,号称单场景支持无限人数。 普通聊天服务器 单台SESSION服务器支持2-4万人左右,MIRROR其实很空闲,所有只有 一台,将记录上百万用户同时在线的情况。 ● 永远不要为了等待某个数据而不让游戏进行下去 ● 利用预测和插值改进游戏的效果 ● 当使用预测插值的时候传送的数据不仅包括坐标,还需要速度和加速度 ● 将输入数据枷锁或者队列化(例如键盘消息队列),直到下次发送数据的时刻,传统的 方法是在固定的时间(发送数据前)检测键盘,在游戏的原理上隐藏延时 ● 使用事件调度表,将需要在所有用户客户端同时发生的事件,提前广播到所有用户 ● 使用多次攻击来杀死一个精灵,尽量减少一次性的、确定性的、延时敏感的事件 ● 延长子弹或者火箭在空中飞行的时间 在其飞行的同时,在所有客户端进行预测插值 ● 所有物体从一个地方移动到另外一个地方都需要时间,避免诸如“瞬间移动”的设计 ● 尽量使游戏中所有精灵,飞船或者其他物体,都按照可预测的轨迹运行,比如在移动 中增加惯性 ● 充分发挥创造力,尽最大可能的合并游戏中前后相关的事件,合并游戏中存在的延时 此问题,需要在技术上改进的同时也需要策划有所重视,规避一些影响较大的设计, 巧妙的隐藏"延时"  让短时内所有玩家屏幕上的表象不一样是没问题的。  在长时内将所有不同表象的逻辑统一也是没问题的。 帧间同步: 概论 规则1: 保证每帧的输入是一致的。 规则2: 客户端互相等待。 算法1: FrameLock 算法2: LockStep 算法3: TimeWarp(街霸4) www.themegallery.com LOGO 帧间同步: 帧锁定  客户端定时(比如每五帧)上传控制信息。  服务器收到所有控制信息后广播给所有客户。  客户端用服务器发来的更新消息中的控制信息进行游戏。  如果客户端进行到下一个关键帧(5帧后)时没有收到服务器的更新 消息则等待。  如果客户端进行到下一个关键帧时已经接收到了服务器的更新消息, 则将上面的数据用于游戏,并采集当前鼠标键盘输入发送给服务器, 同时继续进行下去。  服务端采集到所有数据后再次发送下一个关键帧更新消息。  这个等待关键帧更新数据的过程称为“帧锁定”  应用案例: 大部分RTS,街霸II(xbox360),Callus模拟器。 帧间同步: 帧锁定 UPDATE: 更新消息 FrameNumber; 当前关键帧号 NextKeyFrame; 下个关键帧号 Control1; 玩家1的控制数据 Control2: 玩家2的控制数据 Control3: 玩家3的控制数据 Control4: 玩家4的控制数据 CTRL: 控制消息 FrameNumber; 当前关键帧号 ControlValue; 客户端控制信息 KEYFRAME: 关键帧 固定法: 如每5帧一个关键帧。 测算法: 服务器用最大PING 值每次测算下一个关 键帧是多少。 帧间同步: 帧锁定 帧间同步: 帧锁定 帧间同步: 帧锁定
查看详情

相似职位推荐

我擅长10年C++,go后台开发工作经验,熟练掌握前后端各项技术

10年后端开发,丰富的游戏,电商,CDN,医疗等行业经验。 技术全面,可以解决各种疑难杂症,熟悉前后端各项技术,可以开发后端,也可以全栈开发。 擅长拆解需求和评估工作量,按时按质完成任务。
公众号抖音bilibili零售/电商医疗健康互联网/科技
半日 ¥ 6,000/月

我擅长Go,有6年后端开发经验

6年后端开发经验。熟练掌握go及其主流框架,有SpringBoot服务和C#桌面应用的开发经验。熟悉linux,do cker,k8s,有集群运维经验。逻辑思维清晰,理解能力强,有一定的架构思想,能够独立完成开发。
公众号bilibili知乎互联网/科技
全日/半日均可 ¥ 12,000/月