设为首页 | 收藏本站 | 每日归档
当前位置:ucbug游戏网 > 新闻中心 > 游戏开发 >
网络游戏通讯模型初探(2)
作者:admin来源:未知发布时间:2009-10-09 15:56

  我们来说明一下上面单机ucbug游戏网的流程。首先,不管是ucbug游戏网软件还是其他应用软件,初始化部分必不可少,这里需要对ucbug游戏网的数据进行初始化,包括图像、声音以及一些必备的数据。接下来,我们的ucbug游戏网对场景、人物以及其他元素进行循环绘制,把ucbug游戏网世界展现给玩家,同时接收玩家的输入操作,并根据操作来做出响应,此外,ucbug游戏网还需要对NPC以及一些逻辑AI进行处理。最后,ucbug游戏网数据被释放,ucbug游戏网结束。

网络ucbug游戏网与单机ucbug游戏网有一个很显著的差别,就是网络ucbug游戏网除了一个供操作ucbug游戏网的用户界面平台(如单机ucbug游戏网)外,还需要一个用于连接所有用户,并为所有用户提供数据服务的服务器,从某些角度来看,ucbug游戏网服务器就像一个大型的数据库,提供数据以及数据逻辑交互的功能。让我们来看看一个简单的网络ucbug游戏网模型执行流程:


 客户机:

Login()// 登入模块
{
 初始化ucbug游戏网数据;
 获取用户输入的用户和密码;
 与服务器创建网络连接;
 发送至服务器进行用户验证;
 ...
 等待服务器确认消息;
 ...
 获得服务器反馈的登入消息;
 if( 成立 )
  进入ucbug游戏网;
 else
  提示用户登入错误并重新接受用户登入;
}
Game()// ucbug游戏网循环部分
{
 绘制ucbug游戏网场景、人物以及其它元素;
 获取用户操作输入;
 将用户的操作发送至服务器;
 ...
 等待服务器的消息;
 ...
 接收服务器的反馈信息;
 switch( 服务器反馈的消息数据 )
 {
  case 本地玩家移动的消息:
  {
   if( 允许本地玩家移动 )
    客户机处理人物移动;
   else
    客户机保持原有状态;
  }
   break;
  case 其他玩家/NPC的移动消息:
  {
   根据服务器的反馈信息进行其他玩家或者NPC的移动处理;
  }
  break;
  case 新玩家加入ucbug游戏网:
  {
   在客户机中添加显示此玩家;
  }
   break;
  case 玩家离开ucbug游戏网:
  {
   在客户机中销毁此玩家数据;
  }
   break;
  ...
  其它消息类型处理;
  ... 
  default:
   break;
 }
}
Exit()// ucbug游戏网结束
{
 发送离开消息给服务器;
 ...
 等待服务器确认;
 ...
 得到服务器确认消息;
 与服务器断开连接;
 释放ucbug游戏网数据;
 离开ucbug游戏网;
}


  服务器:

Listen()  // ucbug游戏网服务器等待玩家连接模块
{
 ...
 等待用户的登入信息;
 ...
 接收到用户登入信息;
 分析用户名和密码是否符合;
 if( 符合 )
 {
  发送确认允许进入ucbug游戏网消息给客户机; 
  把此玩家进入ucbug游戏网的消息发布给场景中所有玩家;
  把此玩家添加到服务器场景中;
 }
 else
 {
  断开与客户机的连接;
 }
}
Game() // ucbug游戏网服务器循环部分
{
 ...
 等待场景中玩家的操作输入;
 ...
 接收到某玩家的移动输入或NPC的移动逻辑输入;
 // 此处只以移动为例
 进行此玩家/NPC在地图场景是否可移动的逻辑判断;

 if( 可移动 )
 {
  对此玩家/NPC进行服务器移动处理;
  发送移动消息给客户机;
  发送此玩家的移动消息给场景上所有玩家;
 }
 else
  发送不可移动消息给客户机;
}
Exit()  // ucbug游戏网服务=器结束
{
 接收到玩家离开消息;
 将此消息发送给场景中所有玩家;
 发送允许离开的信息;
 将玩家数据存入数据库;
 注销此玩家在服务器内存中的数据;
}
}

声明:本站所有资源均来自网络,版权归原公司及个人所有。如有版权问题,请及时与我们联系,我们在第一时间予以删除,谢谢!
ucbug游戏网
关于我们 | 下载帮助 | 广告&合作 | 下载声明 | 版权声明
Copyright © 2010-2016 ucbug.com. All Rights Reserved ucbug游戏网
皖ICP备15003425号 适度游戏娱乐,沉迷游戏伤身。