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)
      }
     }
    }

  • 相关阅读:
    PAT之我要通过
    卡拉兹(Callatz)猜想
    数组元素循环右移问题
    Reorder List
    一个fork的面试题
    内存流和null字节
    标准C IO函数和 内核IO函数 效率(时间)比较
    由fdopen和fopen想到的
    VS经常报错的link error 2019
    VS快捷键设置
  • 原文地址:https://www.cnblogs.com/byfei/p/6389801.html
Copyright © 2011-2022 走看看