FAQ - Multiplayer and Network Programming-Part2(原创转译)

游戏开发团队结构明细表 开发部<br />制作人 项目经理:项目风格制定把握、项目控制管理。<br />策划组:游戏设计,并且对设计方案进行跟踪。<br />              1、文案:所需要的故事以及游戏中文字内容撰写;<br />              2、系统:游戏系统设计,包括UI功能;<br />              3、关卡:游戏关卡设计,包括部分场景设计;<br />              4、数值:游戏内数值设计。<br />程序组:游戏程序发方面设计与实现<br />            阅读详情
  1. 采用P2P于MMORPG是否一个不错的注意?这样能不能节省大量的服务器带宽呢?
    首先,实事上服务器的带宽并不是运行MMORPG主要的开销,甚至连次要的也不是。产品内容,客户服务,人际关系的开销通常更高。

    其次,对于P2P方式的MMORPGs有两个主要的技术挑战,就是难以以一种完全满意的方式来解决当前游戏设计中遇到的一些问题:
    - 如何保护玩家的客户端数据的安全,例如游戏的状态数据、数据文件等等。从技术上来讲,没有绝对安全的计算机平台。
    - 如何找到能够以足够低的延迟的其它网络节点,这样当玩家们来来回回走动的时候,能够进行相应的更新。

    目前,P2P最适宜的工作是传输大量的较大的数据块(例如内容下载、软件补丁),在传输中你能够很容易的确认其正确性。如果你想发布一个你新关于P2P方式的MMORPG伟大设计的主题,请确信你之前实际写过一些验证的代码,至少在三台协作的机器上测试过,否则大部分人会一笑了之。

    网络上有一些已经存在的研究文章,例如 VAST project. 如果你对P2P MMOGs感兴趣就应该看看这些。
  2. 如何取得我当前运行机器的IP地址?
    答:一般来说,这并不是一个好主意,因为你自己的机器IP对于路由器外部的用户不一定可见。还有,不少机器都拥有不止一个的IP地址(一台机器上每个网卡都有一个)。最后,不是所有的ISPs或routers都设置有DNS/reverse DNS,用gethostname()跟随gethostbyname()就可以得出正确的答案。

    要使用命令行来列出你的IP地址:在Windows下可以用"ipconfig";在Linux下用"ifconfig";在BSD下用"ifconfig",有些命令可能需要有足够的权限才能执行。

    在浏览器中,你可以访问http://www.apnic.net/,这将显示你的外部IP地址(router),不是内部IP地址(机器),如果你在使用NAT防火墙。
  3. 我想在我的MMORPG中使用TCP,可以吗?
    答:当然可以。查看 this long-running and productive thread ,有很多观点和建议。
  4. 客户端怎样寻找想要通讯的服务器?
    答:这儿有一些方法可供参考;

    1) 一些客户端允许玩家自己输入IP地址,或者一个主机名用于DNS。这些数据会被保存在配置文件中,便于将来存取。

    2) 一些客户端有一个servers/IP地址的硬编码列表。类似于 1).

    3) 一些客户端有一个"主服务器"的硬编码名称,通过它可以列出真实有效的服务器。通常,这个名称是作为文本形式编码的(非IP形式),这样在需要的时候主服务器可以被迁移(或通过DNS进行负载平衡),而不需要修改客户端。客户端连接到主服务器,然后取得用于通讯的有效服务器列表,这样可以让玩家来选择(或为玩家选择)适当的游戏服务器。

    4) 对于LAN游戏,最常见的做法就是在周知端口上使用UDP进行网络广播,每次大概需要数秒钟的时间。在数据包的开始用一些周知的签名(一些特殊字节),这样在网络发生碰撞的时候你可以区别开自己和其他人的数据包。在尝试广播前确定打开了socket上的broadcast选项。广播只能在当前子网内工作,它们不会被路由到更大的internet。
  5. 在我已经关闭了位于某端口的socket不久之后,当试着在同一端口上再次打开一个新的socket时候,得到了一个错误,为什么?
    答:这发生在TCP,因为TCP连接的结束实现是要等待一些时候,以允许一些迟来碎片包的到达(即使没有人会去读取)。这可以避免将先前连接的数据包和新连接的数据包混淆。

    要关闭这种行为,在你创建socket的同时就要打开 SO_REUSEADDR 选项;这样就允许将来在同一端口重新绑定sockets的时候不用等待超时才终止。
  6. Do I need to send 4 bytes to send a float for position or heading in my entity state update packets?
    答:To pack a floating point number of a known range into a fixed number of bits, do something like:
    unsigned int pack_float( float v, float minVal, float maxVal, int bits ) {
    assert( bits < 32 );
    assert( v >= minVal && v < maxVal );
    return (unsigned int)((1U<<bits) * (v-minVal) / (maxVal-minVal));
    }

    要重新解包,象这样做:
    float unpack_float( unsigned int val, float minVal, float maxVal, int bits ) {
    assert( bits < 32 );
    assert( val < (1U<<bits) );
    return val * (maxVal-minVal) / (1U<<bits) + minVal;
    }
    关于更多

     

 


 

注:FAQ - Multiplayer and Network Programming,至此结束。

Unity零基础到入门 ☀️| 【UI系统学习】轻松学会 Unity 的 UGUI基础控件的使用(包括一个简易血条、蓝条设计) Unity,UGUI。本篇博客来挑几种Unity中最常用的UI控件如何使用和使用技巧,包括一个简易血条蓝条的小实例 阅读详情

相关推荐

SAP 超详细解析信用控制

当然,集团内中国区、日本或欧洲区的公司使用了不同本位货币会计核算虽然分开,但对于客户的信用也可以统一管 理的,只要将这些不同本位币的公司代码纳入同一信用控制范围,信用控制范围货币可以考虑使用总部集团的货币,各公司代码的信用发生额自动根据系统设定汇率 转换为统一的信用控制范围货币。此步有一个“覆盖CC范 围”的选项,表示在过账时此步缺省的分配给公司代码的信用控制范围可以在其它信用控制范围使用,有时当一个公司代码的客户需要将信用数据过账到其它信用控 制区域,这个选择就非常有必要。

matinal 當冬夜漸暖 。公众号:matinal 1万+

无线网络FAQ

无线运用FAQ无线局域网络 WLAN 之 DSSS vs FHSS 比较 ? D

印俊 的专栏 3809

FAQ - Multiplayer and Network Programming-Part1(原创转译)

想开始学习网络编程。该从哪儿开始?<br />答:试一下Beej's Networking Tutorials. 你也能够right here on this site.<br />Sockets编程(Windows相关)疑问还可以查看 WinSock FAQ , GameDev.net WinSock tutorial.<br />最后, MSDN section on WinSock 有相当好的介绍,并且也是不错的技术参考文档。<br />应该使用DirectPlay还是WinSock?<br />答:

林家铺子 487

【rPPG】基于多光谱摄像头的非接触式睡眠血氧监测系统(传统建模方法解析)

本文深入解析了基于多光谱摄像头的非接触式睡眠血氧监测系统,重点探讨了rPPG技术的原理、硬件设计及传统建模方法。通过多光谱摄像头捕捉皮肤微弱光学变化,实现医疗级精度的心率和血氧监测,特别适合长期睡眠监测场景。文章详细介绍了摄像头选型、照明系统设计以及PBV模型等核心技术,并对比了与传统传感器的性能差异。

weixin_30300225的博客 562

VSCode CMake 安装与配置详解

概述 在windows上使用cmake编译C/C++程序时,首先需要CMake,安装gcc/g++编译环境,然后使用VSCode 以及配置下CMakelist.txt。 所需工具: VSCode (需要安装以下插件) C/C++ C++ Intellisense CMake CMake tools CMake Tools Helper CMake MinGW 安装CMake 下载链接:...

Markus 8万+

张家界、凤凰古城~~~

导游说:没来张家界,想死人;来了张家界,累死人;再来张家界,不是人。 凤凰古城:沱江两岸景色、吊脚楼、虹桥、古城墙、北门老码头、万名塔。个人感受:据同行的说有点类似阳朔的西街,不过夜景没有西街漂亮。古城有很多小巷,狭窄的石板路两旁有商店、小餐厅、特色小吃,虽然小吃外表着实诱人,不过卫生状况不佳所以我还是忍住了口水。待到晚上和lq以及另外两朋友去当地的大排档吃了夜宵,非常辣,不过适合我的口味,^_^ 张家界国家森林公园:步行游览黄石寨、金鞭溪两大景区。个人感受:这是最累的一天,也是很久以来一天徒步距离最长的一

林家铺子 2750

GSEA富集分析实战:从数据准备到结果解读的完整R代码指南

本文提供了一份完整的GSEA富集分析实战指南,涵盖从R环境准备、数据质量控制到基因ID转换、参数优化和结果解读的全流程。通过详细的R代码示例和实用技巧,帮助研究人员高效完成基因集富集分析,特别针对生物信息学中常见的GSEA分析痛点提供了专业解决方案。

weixin_29246195的博客 536

建立开发团队协作服务器

<br />因为公司在两个不同的城市都有开发团队,所以现在需要建立一个可以通过Internet协作的服务器。考虑到易用性及兼容当前开发工具,服务器决定全套采用微软系列,包括:Active Directory, IIS, SMTP, POP3, Windows Server 2003, Sharepoint Server 2007, Project Server 2007, SQL Server 2005, Team Foundation Server 2008.<br />  Warning!!!切记切记,

林家铺子 981

避坑指南:MTK平台Widevine L1密钥安装全流程详解(含SP META工具使用与Log分析)

本文详细解析了MTK平台实现Widevine L1认证的全流程,涵盖密钥申请、格式转换、安全烧录等关键步骤,特别针对Trustonic TEE环境下的SP META工具使用与日志分析提供实用指南。帮助开发者规避常见错误,确保DRM密钥安全部署,满足高端内容保护需求。

weixin_27219587的博客 476

需求跟踪详解

需求跟踪是指在软件项目开发过程中,建立并维护需求与项目各阶段工作产物(如设计文档、代码模块、测试用例等)之间对应关系的过程。它不仅记录需求从提出到实现的完整路径,还能反映需求变更时对各阶段工作的影响范围,是连接用户期望与实际软件开发产出的桥梁。

跟佟格湾一起学习计算机知识吧~ 1423

VSTS 2008(Visual Studio Team System 2008) 环境搭建手记

<br />工欲善其事,必先利其器。引子<br />最近我在看一本关于团队开发的书,名为<移山之道-VSTS软件开发指南>,作者邹欣通过讲故事的方式形象的阐述了软件项目开发的主要阶段的工作内容,以及如何有效的利用VSTS这一利器。 准备事项<br />因为这是一个庞大的软件系统,所以需要很多软件来支撑其正常运行。首先我们得准备两台机器装Win 2003 server,分别做主域控制器和系统容器,并打上最新的系统补丁。 <br />主域控制器需要安装软件列表如下:  DB(可选): SQL Server 2

林家铺子 862

SAP-ABAP:SAP的BAPI_GOODSMVT_CREATE 深度解析

BAPI_GOODSMVT_CREATE 深度解析** **功能定位**:SAP 标准接口,支持 **11 种库存移动场景**(收货/发货/转储/生产投料等),是 MM 模块集成核心

baidu_35680696的博客 1826

My boss taught me how to lead a team

Let's well train everybody in the team so they understand the basic works well, know customer requirement well. To give works to everybody if they don't have chance to do that before. As long as everyone in the team is strong, then we can aim higher. Just

林家铺子 756

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

如何优化MMORPG游戏中更新玩家状态引起的网络传输问题

以下方案均来源于网络,具体应用还需斟酌。- 每个玩家将自己的状态数据发送到游戏服务器(例如:n次/m)<br />- 服务器计算每个玩家与其他玩家的距离(在特定区域范围内)<br />- 如果玩家A足够接近玩家B,那么通过服务器A和B都会收到对方的状态信息 一、这种方法客户端可以从尽可能少的其它玩家处,仅取得必需的数据信息。虽然如此,但服务器仍然需要接收和发送大量的数据包。二、压缩数据;发送必需的数据信息。

林家铺子 660

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

关于D3D中AGP显存,内存,显存三种内存的解释(转载)

<br />三种内存AGP内存,显卡本地内存,系统内存,其中我们都知道显卡本地内存就是显存,系统内存就是咱那内存条,那这AGP内存是个啥玩意啊?其实是因为在以前显卡内存都很小,那时还是在显存是16M,32M为主流的时候,如果你运行一个需要很多纹理的3D程序,那么显存一会就不够用了,那该咋办呢?只好问系统内存借点用用了!这就是AGP内存的由来,在我们电脑BIOS中有个设置AGP Aperture的选项,这里就是设置显卡可以使用系统内存的最大允许值,通常是设置为64M。注意,这里只是说最大允许值,并不是一开机他

林家铺子 636

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Windows Mobile 5.0程序测试工具平台的搭建

本来自己的机器上并没有装这个测试工具集的,但是当发觉VS2005在运行"int *p = new int [128];return 0;"语句后,根本就不输出内存泄露的信息后,让我立即就决定安装测试工具,因为我可不 想自己写的软件发布出去漏洞百出。其中简单总结就是“过程是曲折的,结果是辉煌的”。闲话少说 ,正式介绍安装步骤:注意:安装过程需要将手机用USB线全程与电脑连接,由于安装过程对手机文 件读写操作较多,所以建议各位充足电池再进行。首先大家需要去微软官方网站下载以下安装程序包: Microsoft

林家铺子 594

Project Management

<br />All projects have:An overall goal A project manager Individual tasks to be performed Timing for those tasks to be completed(such as 3 hours, 3 days, 3 months) Timing relationships between those tasks(For example, you can’t put a new manufaturing proc

林家铺子 522

微软智能手机开发平台搭建手记

<br />基本工具:Microsoft Visual Studio 2005 Windows Mobile 5.0 Smartphone SDK/Windows Mobile 5.0 Pocket PC SDK Windows CE 5.0: Standard Software Development Kit (SDK)----经过测试,发现有些头文件在上面的SDK中没有包含,而lib中提供了实现。例如在SmartPhone SDK的coredll.lib中有LoadKernelLibrary(),但是没

林家铺子 480

编程积累之一

Graphics.DrawString()默认不会处理首尾空格,需要设置第二个参数才能解决。 文字特效:GraphicsPath.DrawPath() --> GraphicsPath.FillPath()。另:TrueType字体才可以绘制路径,点阵字体没有轮廓信息。 在Visual Studio .net集成CVS,需要准备的工具有:WinCVS+CVSNT;额外的工具有WinMerge:用于比较文件,颜色加亮,非常直观。相关教程链接。 游戏系统分析例子,参考Masters Thesis。

林家铺子 480

有用的一些资料集合

Sometimes you need to convert from UNICODE to ANSI or ASCII or OEM or (add here what you want like UTF-x or Mac stuff),click here。 Win32 C Easy Hyper Link。 编码相关资料,链接一,链接二,Using the Win32 Internet (WinInet) API,CHttpClient - A helper class using WinInet

林家铺子 469

建站守则--了解你的用户

有吸引力的用户界面。外观是很重要的,因为它是用户注意到的第一件事,之后才察看站点的功能和服务。但是对于UI图形并不是所有要考虑的事情。站点上的信息必须组织合理,易于访问,提供给用户良好的交互体验。还要考虑浏览器的兼容性,即保证站点的外观和行为在不同的系统平台和浏览器上运行一致。 一个成功的基于内容的网站应该把它的受欢迎度归功于它的用户。忠诚的用户会定期访问站点,发表文章,参与投票和其它活动,而这些行为都将促进站点的成长。要建立一个活跃的社区,用户必须有能够标示的东西,用于描述自己和区别于其它成员。因此,站点

林家铺子 458

程序员的自我修养与提高

<br />题记:前几天一位来自Canada的华人(北大心理学博士,毕业后在Canada同一家软件公司做了10多年,现在仍在该公司工作,担任Director),给我们Team做了一系列的培训,感触比较大的就是他对于软件开发的很多观点很值得国内从业者的学习。Willing to chat with others: 不要总是一个人埋头苦学(干),要经常的与其它人交流技术、交流工作经验; Willing to share your knowledge with others: 要乐意分享自己的知识,这样对于整个团

林家铺子 447

理解 Linux 动态库加载:LD_LIBRARY_PATH

flyfish

二分掌柜的 353

【Linux网络】TCP 服务器并发处理多客户端:从 fork 分发到双重 fork 彻底消灭僵尸进程

拆解 TCP 服务器并发演进链:fork 分发连接、SIGCHLD 循环回收僵尸、双重 fork 交孙进程给 init 收养,并给出模型选型与线上排错对照。

2301_78967866的博客 429
上一篇: FAQ - Multiplayer and Network Programming-Part1(原创转译)
下一篇: 如何优化MMORPG游戏中更新玩家状态引起的网络传输问题
bluetooth_2001
博客等级 码龄25年 20粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值