<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    游戲策劃咨訊
    做一個游戲并不難,難的是做一個好游戲;完美在于積累!
    消息打包處理部分

    續(xù)上在上面我簡單的說了一下服務器完成端口處理部分,接下來我想大家介紹一下關于如何建立服務器和客戶端的聯系規(guī)則,也就是服務器和客戶端的游戲協議部分。有不足之處希望大家和我進行交流。

    首先解釋一下這里協議的概念,協議大家都了解是一種通信規(guī)則,例如:TCP/IP,UDP等等,這些是我們在網絡通信過程中所處理使用的協議。而我們這里的協議是我們的游戲服務器和客戶端的通信規(guī)則。簡而言之,也就是客戶端發(fā)送到服務器的數據包和服務器發(fā)送的數據包雙方解釋規(guī)則。下面就通過幾個部分來具體介紹這種協議的建立和處理。

    消息頭定義

    如果我們能夠解釋雙方的數據包的意義,我們就必須為雙方數據包定義一個統(tǒng)一規(guī)則的消息頭,我是這么定義消息頭的。服務器數據包和客戶端數據包分別定義不同的消息頭。以下就是雙方消息頭的簡單定義。

    struct    ServerMsg_Head             //服務器消息頭
    {
       WORD  s_version;                //版本信息
       BYTE   s_flages;                 //消息標志
       BYTE   s_who;                  //消息驅動者
       BYTE   s_sort;                   //消息類別
       BYTE   s_value;                 //消息值
       WORD  s_len;                   //消息長度
    } ;

    struct    ClientMsg_Head             //客戶端消息頭
    {
       WORD  c_version;                //版本信息
       WORD  c_flages                  //消息標志
       WORD  c_sort;                   //消息類別
       WORD  c_value;                  //消息值
       WORD  c_scene;                  //場景信息
       WORD  c_len;                    //消息長度
    };

    以上是我個人簡單定義的消息頭,具體的各個參數意義,就是需要規(guī)劃設計的人來定了。這些我就不多說了。

    在我們處理完我們的消息頭后,我們就可以將我們的具體游戲數據進行打包。關于數據打包,我們必須要處理兩件事情:數據打包,數據加密。為此我就建立相應的class來處理這樣的一些操作。DataCtrl.h處理如下:

    class  Ppackage類可以拆解為兩個單獨處理類,打包類和解包類。而此處我就用下面一個類來進行處理。只是給大家開個頭,要設計的更好還是靠大家共同來進行斟酌呀!!


    class   PPackage                                   //游戲數據包處理類
    {
    public:
    PPackage(BYTE msg_type);                      //設置所打包消息類型
    virtual ~PPackage();
    //消息數據打包部分
    void  SetMsgHead(void  *);                    //設置消息頭
    void  AddByte(BYTE  data);                   //加入一字節(jié)
    void  AddWord(WORD  data);                 //加入二字節(jié)
    void  AddDword(DWORD  data);               //加入四字節(jié)
    void  AddPoint(POINT  data);                  //加入八字節(jié)
    void  AddBuf(char * data ,int  data_len);          //加入多個字節(jié)
    //消息內容獲取
    void  FinishPack();                            //完成打包
    char  *GetPackage();                           //獲取數據包
    int   GetPacketLen();                          //獲取數據包長度


    //消息數據解包部分
    void     SetMsgPackage(char *buf,int _Len);       //將獲取消息進行錄入
    void    *GetMsgHead();                        //獲取消息頭數據
    BYTE   GetByte();                            //獲取一字節(jié)
    WORD  GetWord();                            //獲取二字節(jié)
    DWORD GetDword();                           //獲取三字節(jié)
    POINT * GetPoint();                            //獲取四字節(jié)
    char  *  GetBuf(int buf_len);                    //獲取多字節(jié)
    bool     IfFinishGet();                         //是否完成解包

    private: 

    void     Init();
    void     Release();
    void     StartBindPakage();       //開始打包
    void     StartUndoPackage();     //開始解包
        bool     MessageEncrypt();       //消息加密
        bool     MessageUndo();         //消息解密

    private:

    private:
        BYTE   msg_type;               / /{1-SERVER_PACKAGE=1,2-CLIENT_PACKAGE=2}
    char  *  msg_buffer;
    char  *  buffer;                 //后備緩沖區(qū)
    int      msg_len;
    //消息內容長度
    Server_Msg_Head  msg_Head;     //消息頭
    int      buf_Len;
    int      current_pos;             //指針的當前位置
    protected:
    };

    以上就是關于服務器和消息打包類的一些建立和解釋,這些方面知識其實也沒有什么,主要是“仁者見仁,智者見智”了。而對于網絡游戲的制作最重要的還是在于Game World的規(guī)劃和設計,同時這個方面也是最難和最不好處理的。隨后將和大家進行探討。。

    posted on 2005-02-13 11:51 藍色雪焰 閱讀(309) 評論(0)  編輯  收藏 所屬分類: 網絡游戲
     
    主站蜘蛛池模板: 亚洲欧洲高清有无| 黄在线观看www免费看| 香蕉大伊亚洲人在线观看| 亚洲一区二区三区影院 | 国产精品免费看久久久久| 免费无码成人AV在线播放不卡| 黄网站色视频免费看无下截| 亚洲高清有码中文字| 久久久无码精品亚洲日韩按摩 | 亚洲国产精品人久久电影| 亚洲线精品一区二区三区影音先锋 | 毛片免费全部播放一级| 精品无码国产污污污免费网站| 国产裸体美女永久免费无遮挡| 激情小说亚洲图片| 亚洲综合成人婷婷五月网址| 亚洲一区二区三区91| 亚洲欧洲日产韩国在线| 亚洲视频免费在线播放| 久久精品国产精品亚洲艾 | 久久久WWW成人免费精品| 大片免费观看92在线视频线视频| 精品无码专区亚洲| 亚洲av日韩综合一区二区三区| 99亚偷拍自图区亚洲| 亚洲一线产品二线产品| 亚洲人成7777| 2020天堂在线亚洲精品专区| 国产成人精品日本亚洲专区6| 亚洲一级免费毛片| 亚洲AV综合色区无码二区爱AV| 亚洲av片不卡无码久久| 亚洲AV无码一区二区三区在线| 亚洲va乱码一区二区三区| 亚洲av无码久久忘忧草| 亚洲一区欧洲一区| 亚洲日韩精品无码专区加勒比☆| 亚洲一区二区三区在线观看网站| 亚洲色大18成人网站WWW在线播放| 亚洲中文无码亚洲人成影院| 亚洲大码熟女在线观看|