听著名服务端主程讲座有感

    前些日子,一个著名页游服务端主称做了一次演讲,有幸在台下聆听了这位主程的演讲。已经过去一段时间了,偶尔还是会跟同事们讲起听到了什么,学会了什么,故做一次总结。

    讲座持续了近两个小时,讲了做服务器构架方面的方方面面,我不能一一陈述,就讲我感受最深的两点记下来于各位分享

    1: 服务器端最影响性能的一个功能就是区域广播; 就是玩家在行走或者打斗的过程中要将自己的状态广播给周围的玩家,通常这个范围是电脑屏幕大小的区域,因为各个玩家屏幕大小相异,故这个范围要略大于普通电脑屏幕。

    实现这个有两种方法:

       1. 遍历本地图的所有玩家,目标玩家和本玩家的距离,如果在范围内,则广播给相应的玩家。

       2. 将地图划分称一个一个小格子,确保九个格子的面积大于电脑屏幕的面积,玩家在走动或者打斗是即使刷新自己的所在的区域,并将自己的状态广播给本身所在的格子内和周围的八个格子内的所有玩家。

    2.  影响服务端性能的另一个主要的功能就是怪物的AI,怪物的AI是靠定时器即使刷新的,以便根据自身的情况即使改变自己的状态,比如是巡逻、攻击、追击、返回等,几乎一款游戏有很多的怪物,怪物的行为不一值,所以需要添加的定时器也很多;我们优化的方向是当怪物巡逻时,我们将定时器的间隔设置的长一些,当怪物收到攻击之后,我们将怪物AI的定时器设置的短些。

    初此之外,还讲到了许多其他的东西,比如网络组包、定时器的实现等,下次再谈吧。

时间: 2024-11-30 11:41:44

听著名服务端主程讲座有感的相关文章

接口-RMI远程调用,一服务端和客户端一定要在一个工程里么

问题描述 RMI远程调用,一服务端和客户端一定要在一个工程里么 小弟初学RMI的知识,网上说的也不明白,我自己做了一个helloword测试,我不太明白的是 ,服务端和客户端一定要在一个工程下么?如果一定在一个工程下,那还算什么远程调用啊? 可是我在服务端有一个接口:IHello,成功绑定到8888端口之后,我新建客户端工程,在 IHello iHello = Naming.lookup("rmi://localhost:8888/IHello"); 在写这句话的时候,MyEclips

html页面访问本地搭建的Server,服务端解析前几行出现好几个Null

问题描述 问题:写了一个简单的HTML页面,表单提交数据到服务端,服务端用Javasocket实现对12345端口的监听,服务端解析后控制台显示好几行null,而且在访问服务段的时候有很长的延时浏览器页面才有反应.求路过的高手解疑.HTML页面代码:<html><head><title>Html学习</title></head><body><fieldset><legend>注册区域</legend>

用php模拟做服务端侦听端口

  参考:http://www.cnblogs.com/thinksasa/archive/2013/02/26/2934206.html   http://blog.csdn.net/alongken2005/article/details/8056910   socket_accept()是服务端接受客户端请求,一旦有一个客户端链接上来的话,则这个函数会返回一个新的socket资源,这个资源是与客户端通信的资源.  socket_accept()是阻塞的,会一直卡在那里.     发现情况:

java在一个主线程中开了很多小线程,当主程异常后,希望能关闭这些服务用的小线程,以免冲突。该怎么做

问题描述 java在一个主线程中开了很多小线程,当主程异常后,希望能关闭这些服务用的小线程,以免冲突.该怎么做 我是这样写的: thread mainThread(){ while(true){ init; try{ new serverThread1; ... new serverThread2; ... ... }catch(e){ ... if(flag_exit)break; ... } } } 通常,这个主线程会经常遇问题,所以会抛出异常,因为有while(true),它会从头开始运行

tcp连接-TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗?

问题描述 TCP连接时,服务端监听socket接收客户端连接后新创建的socket默认绑定的端口是监听端口吗? 比如用来监听连接的socket绑定23端口,服务端每接受一个连接都新开一个线程和客户端通信,并把新socket传递给新线程,是不是所有新创建的socket都是经过23端口和客户端通信? 解决方案 是的,都通过端口23进行通信 解决方案二: 都是监听端口,如果不是客户端就不能将数据发送到服务器 解决方案三: 23只是监听建立连接,后续数据交换走实际上端口

请问Socket客户端如何像服务端一样自动监听远程终端是否连接上

问题描述 今天偶然发现Socket服务端可以通过Socket.Accept();自动检测远程终端是否连接,即使网络中断也不会报异常,当网络恢复后又自动连接上,不用做任何判断.抛异常和显示重连.请问客户端如何像服务端一样实现上述功能? 解决方案 解决方案二: 解决方案三:参考你需要的解决方案四:Accept是等待"任意"客户端连接.如果网络中断,自然就没有客户端连接.此时它抛异常干什么?人家根本没有的逻辑,你硬说它有那个"抛异常.显示重联",是何道理?解决方案五:引用

请问服务端rest api怎样实现监听接收到来自客户端的消息

问题描述 现在有个场景应用如下:1.客户端app发送消息后需要在服务端接收到消息然后,通过服务端内部业务逻辑流程处理后向该客户端做响应发送消息处理.我看了下目前服务端的rest api服务接口只有发送消息的接口,请问是否有接收消息的接口,如果没有,要怎么实现这个场景应用?rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接口??rest接口是哪个接

Golang实现的聊天程序服务端和客户端代码分享_Golang

实现逻辑 1.Golang 版本  1.3 2.实现原理: 1.主进程建立TCP监听服务,并且初始化一个变量 talkChan := make(map[int]chan string) 2.当主进程ACCEPT连接请求后,利用go 启动一个协程A去维持和客户端的连接,把taokChan带入到协程里 3.和客户端建立连接的协程A,发送消息给客户端,使其发送自己的用户信息. 4.协程A在收到客户端发送的用户信息后,建立一个此用户对应的管道 talkChan[uid] = make(chan stri

Silverlight+WCF 实战-网络象棋最终篇之对战视频-下篇[客户端发送与服务端中转](六)

本篇继上一篇:Silverlight+WCF 实战-网络象棋最终篇之对战视频-上篇[客户端开启视频/注册编号/接收视频](五)    一:对战视频 简单原理 略,内容见上篇.   二:对战视频 步骤解析: 略,内容见上篇.   三:对战视频 具体实施 1:如何打开视频 略,内容见上篇.   2:Silverlight如何使用Socket进行通讯 2.1:与远程建立链接: 2.2:注册编号[这里的规则是"房间号+棋手颜色值"] 2.3:开新线程,等待接收对方视频 2.4:将视频显示出来,