• 游戏场景


    场景的设计

    只是简单的概括的流程;

    场景管理器
    {
     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)
      }
     }
    }

  • 相关阅读:
    糖尿病周围神经病变有什么表现
    天空之城
    Software Quality Assurance Framework(2)
    组织行为学2
    Software Quality Assurance Framework(1)
    radiculously
    组织行为学1
    software Architecture(1)
    c++运算符重载
    get up~!
  • 原文地址:https://www.cnblogs.com/byfei/p/14104401.html
Copyright © 2020-2023  润新知