游戏服务器架构简述--逻辑服务器

本文探讨了游戏服务器架构中的逻辑服务器设计,从早期的MUD服务器到现代游戏逻辑,强调了时间同步和多线程的重要性。通过心跳机制确保每个用户拥有自己的时间线,以避免并发问题。此外,讨论了命令与行为的区别,以及如何处理并发行为以避免逻辑错误。面向对象编程在游戏服务器中的应用更多体现在组织工程开发的概念层面,而非语言特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    最早的商业化的逻辑服务器恐怕是mud系列了,国内的商用服务器大部分都源于此。在以前简单的说过mud,为了支援简单的访问模型mud的网络结构比较简单,没有线程结构。早期的扩展把mud作为了游戏逻辑服务器交互的命令一般通过一个服务器中转到mud.因为和客户端交互的指令已经不限于早期的文字,大量的图片,渲染,甚至声音这些已经不需要mud处理的了。完全可以通过简单的文件压缩然后下发客户端,通过文件名称等方式供逻辑系统调用。提到逻辑系统不得不提到一个概念心跳。目前的mud使用心跳的只是为了在定期的执行一些指令,所有的物件心跳是相同的。有一个很有趣的例子当把所有的指令通过一台服务器发送的到逻辑的服务器时。指令发送的快慢实际变成了服务器时间。传送的快服务执行时间就快传送的慢服务执行时间就慢。服务器的心跳演变成了服务器的时间每一次的脉动服务器时间就加一。但每个人的时间为什么要一样呢。如果不考虑思维一个人单位时间内作的事情多了,他的时间就快了,如果一个人单位时间做的事情少了他的时间也就慢了。如果考虑思维一个人想得多了他的时间也相当于快了。实际不过是人的身体里有好多的时间单位而显得时间不那么统一而以。当我们控制了时间的时候构造一个世界就容易多了。我们知道用户行为是由一些列的命令产生的命令和行为的最大区别就是行为和行为间没有因果关系而命令间会有因果关系。
   为什么要区分命令上因果关系呢?前面我们把用户命令放到一个命令中转服务器里有中转服务器调用逻辑服务器注意这里的调用。逻辑服务器是被动的执行指令时间在这里被强迫的单一成一个线。容易产生一个问题就是一个用户的指令如果有问题都会令这个世界都崩溃的尴尬局面。只有两个指令是没有因果关系的这才是和我们现实世界很相似的描述。一个行为只能有两个可能,有效的和无效的,有效地指令到的结果奖励,无效的指令无结果。在游戏世界常用的一个判断是只有一个命令做完才可以引发下一个命令的行为逻辑在现实世界是的一个行为改变了某些东西可以用另一行为继续改变这个物品。重要的概念,行为是不应该有束缚的。什么样的行为有什么样的结果。这是游戏逻辑的行为,但又为什么要引入命令的感念呢。因为软件的行为是要有束缚的,在有限的资源内软件的行为是要有前提的。例如菜单的先后逻辑,模式对话的选择。这些上下文关系是临时的当一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值