《网络游戏核心技术与实战》读书笔记

本文深入探讨了网络游戏的核心技术,包括套接字API、网络层头信息、UDP的使用和多核线程等。强调了游戏开发中的关键点,如保持快速响应、数据库设计、服务器资源估算和协议定义。此外,还介绍了网络游戏的发展趋势、架构设计以及运营辅助系统,如交流功能、付费认证和服务器部署。
摘要由CSDN通过智能技术生成

#零、快速入门
##【套接字API】
TCP状态迁移图

  1. socket():因为还不会生成新的TCP连接,所以不存在TCP连接状态;
  2. connect():SYN→SYN/ACK→ACK(三次握手);
  • 主动打开 – 客户端调用发起连接;
  • 被动打开 – 服务器被动建立连接;
  1. bind():不会生成新的TCP连接,只是设置本地生成的套接字的监听端口号;
  2. listen():“被动打开”后,服务器进入Listen(待机)状态,等收到客户端发来的SYN数据包后就会开始生成新的套接字;
  3. accept():在建立TCP连接(处于ESTABLISHED状态下的新通信链路)后,获取连接的套接字的文件描述符用于通信;
  4. read()/write()/send()/recv()/sendto()/recvfrom():用于实际的数据收发,必须在ESTABLISHED状态下;
  5. shutdown():通知OS不要再写入/读取数据了。
    SHUT_WR侧发送FIN→接收方返回FIN并进入CLOSE_WAIT→SHUT_WR侧收到返回FIN/ACK并释放通信链路→接收方收到关闭通信链路;
  6. close():等同于调用shutdown(SHUT_RD|SHUT_WR)来同时关闭读写双方.
    ##【各网络层头信息】
  • ocet: 8位位组,因为部分机器"一个字节(byte)不等于8位(bit),以下单位皆为ocet;
  • 以太网帧: 前导码(7) + SFD帧首定界符(1) + 目的地址(6) + 源地址(6) + 长度/类型(2) + 数据/LLC(46~1500) + FCS帧检验序列(4);
    最典型的以太网帧 (IEEE 802.3)
  • 4层传输层: TCP(20) + 3层网络层–IP(20) + 2层数据链路层–以太网协议(26) + 物理层(1层) = 66ocet包头大小;
    TCP头
    0.5.IP头(IPv4)
  • 数据块: OSI参考模型,若发送小数据块,则头信息将占据大部分通信,加重物理层负担;若用1400字节的大数据块,则可达理论速度;
  • 网络游戏数据块: 数据单位有时不得不20个字节左右,性能只有理论的几分之一.如100Mbit/s发送最小的数据时可达148810次;
    ##【UDP的使用】
  • 发送那些与可靠性相比速度更为重要的数据;比如FPS中移动消息,因TCP在数据丢失是会重发从而造成较大的通信延迟,UDP不会重发.
  • 为了实现NAT遍历功能;
    ##【多核与线程】
  • 客户端:根据音效处理、AI、网络、主循环、渲染等方面,用3~5个线程;
  • 逻辑处理最好不要使用多线程。
    ##【提高开发效率】
  • Windows下开发,Linux部署;
  • 服务端 和 客户端在碰撞检测等方面使用相同的游戏处理代码;
  • 使用封装保持源代码级的兼容性;
  • 降低OS差异性的封装工作;

#二、何为网络游戏
##【商业层面的要求】网络游戏是制造业+服务业

  • 有趣:
    • 尽早开发出原型并迭代;
    • 有效招募玩家尽早测试(解决明显不佳的平衡性; 无趣/引起不满的游戏内容):
      • 封测(平衡性,服务器负载等):5003000名测试26月的试玩;必须充分测试(一经发行就遭遇失败的游戏是无法复兴的)
      • 公测(宣传营销目的,不限人数):系统负载与正式服务是等同的
  • 不断更新,运营时间久(具有可扩展性),评价高(提供多种收费选择)
    • 定期补丁:常规bug修复,细微的平衡性调整,系统改进等.(公开测试服供尝鲜玩家试玩);
    • 大型扩展:追加与之前有极大差别的游戏系统新玩法等(需准备测试服,为避免泄漏,会严格限制人数);
    • 紧急维护;
    • [分别设置问题修复+新内容开发团队; 尽可能分离源代码和数据内容; 模块化,避免干扰]。
  • 降低成本(减少服务器数量;节约带宽;从小规模开始,确保可扩展性);
    从小规模开始–将风险降到最低,不要错过取胜机会;
  • 希望有大量玩家参与(适配多个平台;发行多国版);
  • 不给玩家添麻烦:
    • 低成本、尽早可靠地消除攻击者,比如防止打金外挂 – 因其占用服务器并产生大量流量;
      • 根据情况增加GM巡视;
      • 日志分析;
      • 调整经济系统;
    • 减少停服:“服务器停一次,就会流失%1玩家”; 计划内停服维护影响不大;
    • 游戏平衡和经济缺陷:立刻修复, 回滚, 封号等处理; 一定要即时精准;
    • 服务器崩溃:不可避免,应根据游戏类型充分准备; 实现自动重启机制;
    • 超负荷:设计时要做到部分设备超负荷不会影响到整体; 设法减轻符合; 超负荷时通知运维和用户;
  • 更佳的用户体验:
    • 频繁进行各类活动,使玩家能长时间游戏不会厌烦;
    • 反馈游戏结果:游戏元信息 – 排行榜; 成就; 其他统计; 记录并提供给玩家;
    • 促进玩家间的交流;玩家间更易相遇
    • 玩家匹配:“网络游戏是一种交流工具”; 自动选择(根据各种条件快速匹配) 游戏大厅 虚拟世界(可实时交流)
      ##【人员和组织】 开发人员:80% 运维:20%
  • 开发(策划,程序,美工,测试,工具制作) 小型2~4人;多数情况20人左右;大型150+;
  • 运维(安全,负载,OS管理,数据备份,紧急情况处理);
  • 销售(市场调研,商业调研,资金筹备,质量保证,营业活动,活动举办,商业数据分析等);
  • 开发团队不可或缺的4中职业:项目总监(统筹管理), 程序, 美术, 策划
  • 多数20人团队配置:总监2人(技术,美术) 程序4人(架构,底层,逻辑,工具) 美术6(角色,动画,地图)建议外包 策划8人(关卡,剧本,脚本);
  • 不同类型,人员配置不同; 小型企业需避开电影式游戏,选择工具/社交等小型游戏;
    ##【所需技术与经验】
  1. 编程基本技术:
  • 设计:技术(结构化,模块化,面向对象,设计模式等); 任务(并发性,事件驱动,错误处理,容错性,可用性); 质量(定义, 基准, 检测); UML;
  • 架构: 管理(计划,预算); 编码(多语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值