zoukankan      html  css  js  c++  java
  • 游戏场景

    场景的设计

    只是简单的概括的流程;

    场景管理器
    {
     map<t_RoleID, GamePlayer*> m_SwtichMapPlayers;//场景里面的玩家
     CScene scenes[MAX_SCENE_ID];      //场景容器
    }
    场景
    {
     用容器管理格子是否可行,
     用容器是否安全区
     预先生成每个格子的附近格子
    }
    格子
    {
     bool m_bNeedSync;    //格子是否需要同步
     CSceneCell* nearCell[9];  //包括自己附近的格子九宫格
     Tint32 CellId;
     Tint32 m_X;
     Tint32 m_Y;
     set<GamePlayer*> m_PlayerSet; //附近玩家列表
    }

    SceneMgr
    [
     Scene[]
     [
      SceneCell
      {
      }
     ]
    ]

    位置同步
    fuction(同步)
    {
     if(格子不需要同步)
     {
      return
     }
     ChangeDataList(改变列表)
     for(格子上面的所有玩家)
     {
      if(现在的坐标和上一次一次的坐标不一样)
      {
       if(间隔大于同步间隔||在战斗中)
       {
        ChangeDataList.add(改变的玩家)
       }   
      }
     }
     msg(被发送的数据)
     sendMsg(发送函数)
     for(附近的玩家)
     {
      for(ChangeDataList)
      {
       msg.add(改变的玩家)
       if(100 <= msg.size())
       {
        sendMsg(msg)
        msg.Reset(清空发送包)
       }
      }
      if(0 < msg.size())
      {
       发送剩余不足100的(sendMsg)
      }
     }
    }

  • 相关阅读:
    Nginx安装
    node.js搭建vue脚手架
    Oracle引入数据
    MVC引入Junit单元测试
    Git版本控制器
    IDEA-Maven
    SSM框架整合
    【测试基础第五篇】测试用例编写和评审
    【测试基础第四篇】测试用例设计方法
    【测试基础第三篇】需求测试分析
  • 原文地址:https://www.cnblogs.com/byfei/p/14104401.html
Copyright © 2011-2022 走看看