作者:admin发布时间:2021-11-22分类:传奇私服浏览:7评论:5
响应速度慢。
在我的公司我们使用无线程的方法因为我没有足够的资源和人力处理线程模式。
第四步客户端你打算做2D还是3D游戏有些人认为2D游戏做起来简单。我两者都做过并且我倾向于3D游戏更简单。容我解释。
2D下你通常有一个帧缓冲也就是一个巨大的象素点数组。象素点的格式会因显卡的不同而不同。有些是RGB模式另一些是BGR模式等等。每种颜色的bit数也会不同。只有在模式才有这个问题。8-bit和24-bit模式简单一些但有他们各自的问题(8-bit颜色数太少(256)而24-bit速度更慢)。同时你需要制作你的精灵动画程序不得不自己排序所有对象以便他们以正确的顺序绘制。当然你可以用或者D3D制作2D游戏但通常这并不值得。并不是所有人都有3D加速卡所以使用3D库开发2D游戏一般会带给你两者的缺点不是所有人都能玩你也不能旋转摄像机拥有漂亮的阴影和3D游戏炫目的效果。(
译者注目前绝大部分显卡都支持565的格式这个也成为目前16位色的业界通用格式有不少文章和代码都是讲述这一格式下图像处理的尤其是使用MMX技术
)
3D的途径正如我所说更简单。但是需要一些数学(尤其是三角)的知识。现代的图形库很强大免费提供了基本的操作(你不需要从后到前排列对象改变物体的色彩和/或帖图都十分简单对象的光照会按照光源和它的位置计算(只要你为它们计算了法向量)还有更多)。并且。3D给了你的创作和运动更多的自由度缺点就是不是所有人都能玩你的游戏(没有3D卡的人数可能会让你大吃一惊的)并且预渲染的图片总是比实时渲染的更漂亮。(
译者注市面上想买不支持3D的显卡目前很困难只是高性能的3D卡价格也不低
)
第五步安全显然不能相信用户。任何时候都不能假设用户无法破解你精巧的加密算法(如果你使用了的话)或者协议用户发送的任何信息都要通过验证。极有可能在你的服务器上你有固定的缓冲区。例如通常有一个小(可能是4k)缓冲区用来接收数据(从)。恶意用户会发送超长数据。如果不检查这会导致缓冲区溢出引起服务器瘫痪或者更坏的这个用户可以hack你的服务器执行非法代码。每个单独的消息都必须检查缓冲区是否溢出数据是否合法(例如用户发送“进入那扇门”即使门在地图的另一端或者“使用治疗药水”尽管用户没有那种药水等等)。我再次强调验证所有数据非常重要。一旦有非法数据把它和用户名IP时间和日期和非法的原因记录下来。偶尔检查一下那个记录。如果你发现少量的非法数据并且来自于大量用户这通常是客户端的bug或者网络问题。然而如果你发现从一个用户或者IP发现大量非法数据这是明显的迹象表明有人正在欺骗服务器试图hack服务器或者运行宏/脚本。同时决不要在客户端存储数据。客户端应该从服务器接收数据。换句话说不能发送这样的消息“OK这是我得物品列表”或者“我的力量是10魔法是200生命值是”。而且客户端不应收到它不需要的数据。例如客户端不应该知道其他玩家的位置除非他们在附近。这是常识给每个人发送所有玩家会占用大量带宽并且有些玩家会破解客户端从中获取不公平的利益(像在地图上显示特定玩家的位置)(
)。所有这些似乎都是常识但再次你会惊奇的发现有多少人不知道这些我们认为的常识。
另一个要考虑的问题当涉及到安全玩家走动的速度必须在服务器计算而不是客户端。(
译者注这是重要的原则但是会耗费大量服务器资源。魔兽世界没有这样做它采用类似其他玩家揭发的形式掩盖这个事实导致加速外挂可以用但是在有其他玩家的时候会暴露
)。服务器应该跟踪时间(以ms为单位)当客户最后一次移动的时候并且移动的请求如果比通常的极限更快到来这个请求应该被抛弃。不要记录这类虚假请求因为这可能是因为网络延迟(也就是玩家延迟过去的10秒内发送的数据同时到达了)。
检查距离。如果一个玩家试图和100亿公里以外的玩家交易(或者甚至在另一张地图上)记录下来。如果一个玩家试图查看或者使用一个遥远的地图对象记录它。小心假的ID。例如正常情况下每个玩家都会分配一个ID(ID在登陆的时候分配可以是持久的(唯一ID)。如果ID在玩家登陆的时候赋予9或怪物被创建的时候)显然可以用玩家数组(保存玩家)的位置(索引)作为ID。
所以第一个登陆的玩家ID是0第二个是1依此类推。现在通常你会有一个限制比如说2000个索引在玩家列表里。所以如果一个客户端发送一条命令类似“查看的角色”这会使服务器当机如果没有防备的话因为服务器会访问非法的内存区域。所以一定要检查就像这样然后记录非法操作并且断开玩家。如果你使用C或者C注意或者定义索引为并且检查上限或因为某些原因定义为int(int,默认是有符号的)记得检查。没有做这些会严重挫伤你和其他用户。类似的要检查超出地图坐标。如果你的服务器有某种寻路算法并且客户端通过点击地面来移动确保他们不要点击在地图外部。
第六步获得一个团队制作游戏需要大量的工作(除非是个PongandTetris游戏)。尤其是MMORPG。你无法单靠自己。理论上一个完整的团队组成是这样
已有5位网友发表了看法: