设为主页 | 加入收藏 | 繁體中文

网络游戏通讯模型初探①

  序言
  网络游戏,作为游戏与网络无机联合的产品,把玩家带入了新的娱乐领域。网络游戏在中国开始发展至今也仅有3,4年的汗青,跟已经拥有几十年开发汗青的单机游戏相比,网络游戏还黑白终年老的。固然,它的形成也是根据汗青变化而孕育发生的可以说没有互联网的兴起,也就没有网络游戏的降生。作为新兴产品,网络游戏的开发对广大开发者来说越发神秘,对于一个未知领域,开发者大概更需要了解的是网络游戏与平凡单机游戏有何区别,网络游戏如何将玩家们连接起来,以及如何为玩家提供一个互动的娱乐环境。本文就将围绕这三个主题来给大家报告一下网络游戏的网络互连实现要领。
  网络游戏与单机游戏
  说到网络游戏,不得不让人联想到单机游戏,实际上彀络游戏的实质离开不了单机游戏的制作头脑,网络游戏和单机游戏的差别大家可以很直接的想到:不就是可以多人连线吗?没错,但如何实现这些功能,如何把网络连线合理的融合进单机游戏,就是我们上面要讨论的内容。在了解网络互连具体实现之前,我们先来了解一下单机与网络游戏它们各自的运行流程,只有了解这些,你才气深化网络游戏开发的核心。
  如今先让我们来看一下平凡单机游戏的简化执行流程:
  Initialize() // 初始化模块
  {
  初始化游戏数据;
  }
  Game() // 游戏循环部门
  {
  绘制游戏场景、人物以及别的元素;
  获取用户操纵输入;
  switch( 用户输入数据)
  {
  case 移动:
  {
  处理人物移动;
  }
  break;
  case 攻击:
  {
  处理攻击逻辑:
  }
  break;
  ...
  别的处理相应;
  ...
  default:
  break;
  }
  游戏的NPC等逻辑AI处理;
  }
  Exit() // 游戏竣事
  {
  释放游戏数据;
  离开游戏;
  }
  我们来阐明一下上面单机游戏的流程。首先,不管是游戏软件还是其他应用软件,初始化部门必不行少,这里需要对游戏的数据进行初始化,包罗图像、声响以及一些必备的数据。接上去,我们的游戏对场景、人物以及其他元素进行循环绘制,把游戏天下展现给玩家,同时接收玩家的输入操纵,并根据操纵来做出相应,此外,游戏还需要对NPC以及一些逻辑AI进行处理。最后,游戏数据被释放,游戏竣事。
  网络游戏与单机游戏有一个很显著的差别,就是网络游戏除了一个供操纵游戏的用户界面平台(如单机游戏)外,还需要一个用于连接全部用户,并为全部用户提供数据服务的服务器,从某些角度来看,游戏服务器就像一个大型的数据库,提供数据以及数据逻辑交互的功能。让我们来看看一个简略的网络游戏模子执行流程:
  客户机:
  Login()// 登入模块
  {
  初始化游戏数据;
  获取用户输入的用户和密码;
  与服务器创建网络连接;
  发送至服务器进行用户验证;
  ...
  等待服务器确认消息;
  ...
  失掉服务器反应的登入消息;
  if( 成立 )
  进入游戏;
  else
  提示用户登入错误偏重新担当用户登入;
  }
  Game()// 游戏循环部门
  {
  绘制游戏场景、人物以及别的元素;
  获取用户操纵输入;
  将用户的操纵发送至服务器;
  ...
  等待服务器的消息;
  ...
  接收服务器的反应信息;
  switch( 服务器反应的消息数据 )
  {
  case 当地玩家移动的消息:
  {
  if( 容许当地玩家移动 )
  客户机处理人物移动;
  else
  客户机保持原有形态;
  }
  break;
  case 其他玩家/NPC的移动消息:
  {
  根据服务器的反应信息进行其他玩家大概NPC的移动处理;
  }
  break;
  case 新玩家参加游戏:
  {
  在客户机中添加显示此玩家;
  }
  break;
  case 玩家离开游戏:
  {
  在客户机中烧毁此玩派别据;
  }
  break;
  ...
  别的消息范例处理;
  ... 
  default:
  break;
  }
  }
  Exit()// 游戏竣事
  {
  发送离开消息给服务器;
  ...
  等待服务器确认;
  ...
  失掉服务器确认消息;
  与服务器断开连接;
  释放游戏数据;
  离开游戏;
  }
  服务器:
  Listen()  // 游戏服务器等待玩家连接模块
  {
  ...
  等待用户的登入信息;
  ...
  接收到用户登入信息;
  分析用户名和密码能否符合;
  if( 符合 )
  {
  发送确认容许进入游戏消息给客户机; 
  把此玩家进入游戏的消息公布给场景中全部玩家;
  把此玩家添加到服务器场景中;
  }
  else
  {
  断开与客户机的连接;
  }
  }
  Game() // 游戏服务器循环部门
  {
  ...
  等待场景中玩家的操纵输入;


    文章作者: 福州军威计算机技术有限公司
    军威网络是福州最专业的电脑维修公司,专业承接福州电脑维修、上门维修、IT外包、企业电脑包年维护、局域网网络布线、网吧承包等相关维修服务。
    版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和声明。否则将追究法律责任。

TAG:
评论加载中...
内容:
评论者: 验证码: