MMO游戏设计三:架构设计

    首先要说明,这里谈的架构,并不是说游戏服务器由哪些功能服务器搭建而成,而是想重点谈谈一个好的游戏架构,应该具备哪些特质。

    对网游来说,玩家所操作的客户端数据,往往是服务端针对该玩家数据的镜像。打个比方,客户端保存了本角色的A的HP,MP等数据,服务端同样也保存了角色A的HP,MP。另外,当A的HP,MP发生变化时,需要将数据同步给客户端本人,同时也需要同步给其他能看到A的那些玩家;除了数据的同步之外,有些逻辑功能在客户端和服务端完全相同,比方说攻防计算,扣血逻辑。这些最基础的功能,在开发功能中甚至是必不可少的,但凡每增加一部分数据到角色身上,可能都要考虑此类问题。

    对一个好的游戏架构而言,最基础的功能性架构应该搭建得很好,以至于我们再添加新功能时,只需专注于新功能的逻辑,而无需再花精力在客户端和服务端的数据一致性和逻辑一致性方面。

    有关数据一致性:简单说就是同步了,代码中最常见的做法:

    1.  server: player->set_hp(hp);  // 服务端设置HP 

         sync_player(player, hp);        // 发同步消息到客户端

    2.  client: recv_sync();                 // 收到同步消息

         player->set_hp(hp);               // 客户端设置HP

     一条简单设置HP的指令,要完成同步操作就得封包,解包,客户端再设置,考虑到AOI(Area Of Interest)广播的话,那就更复杂了。

    那么,有没有一种更加智能的方式,在服务器设置好响应的操作或者数值之后,框架会“自动“同步到客户端呢?

    假定,客户端和服务端都有一个相同的”逻辑虚拟机“,所有通用的逻辑代码,在这里作一个抽象,逻辑虚拟机暴露必要的接口供客户端和服务端进行访问;那么,客户端和服务端在访问逻辑虚拟机时,只要提供的参数一致,那将会得到同样的结果,则客户端和服务端各自的逻辑虚拟机的内部数据和状态一定是一致的。

   问题是,逻辑虚拟机应该暴露怎样的接口呢?

    

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值