在游戲服務(wù)器開發(fā)中, 網(wǎng)絡(luò)通信是很關(guān)鍵的, 而在網(wǎng)絡(luò)通信中,數(shù)據(jù)的同步是關(guān)鍵, 在我的上一篇博客(http://m.shnenglu.com/zhengxf/archive/2010/07/08/119737.html)中談的了數(shù)據(jù)如何同步的問題, 其中提到了兩點 1.數(shù)據(jù)發(fā)送給誰. 2.網(wǎng)絡(luò)延遲的話,如何同步.
上次主要談了網(wǎng)絡(luò)延遲時的同步問題,今天我們主要談?wù)摂?shù)據(jù)發(fā)送給誰的問題, 要談?wù)撨@個問題,我們就不的不談?wù)? 地圖, NPC, 玩家他們?nèi)齻€之間的關(guān)系.
其實地圖是個靜態(tài)的數(shù)據(jù)集合, 其中主要包含了地形信息和物品信息,這里的物品指的是靜態(tài)的,所以它是不需要進(jìn)行同步的,也就是每個玩家在同一個地圖上看到信息是一樣的,所以這些信息有客戶端的場景管理器管理. 不進(jìn)行網(wǎng)絡(luò)通信.
NPC: NPC主要分兩種 一種是靜態(tài)的NPC,如玩家獲取任務(wù)的NPC, 另外玩家升級打的怪, 也是NPC. 靜態(tài)的NPC有屬性和功能,但不需要同步, 動態(tài)的NPC(如怪)需要進(jìn)行網(wǎng)絡(luò)同步,這里我們就有一個問題, 動態(tài)的NPC要將它的信息發(fā)送給誰呢?任何一個涉及到網(wǎng)絡(luò)通信的NPC和玩家都有一個共同的性質(zhì)就是它有可見范圍,假如說一個玩家在十米范圍內(nèi)可見,那么他就回將信息發(fā)送給距離十米以內(nèi)的玩家和NPC, 這里有含有兩個問題: 一: 十米以外的NPC怎么辦, 二:怎么獲取十米以內(nèi)的發(fā)送用戶。有兩種解決辦法:一是在場景中搜索找到要發(fā)送的用戶信息,告訴服務(wù)器讓服務(wù)器來發(fā),二是發(fā)送自己的信息到服務(wù)器,服務(wù)器搜索NPC列表,和玩家列表,來發(fā)送,我覺的后著更合理。
玩家: 玩家的同步主要是玩家和玩家的同步, 如玩家每前進(jìn)一步, 就向服務(wù)器發(fā)一條消息. 服務(wù)器在玩家列表中查找到范圍之內(nèi)的其他玩家信息,并發(fā)送消息,這里有一個問題,是玩家要不要將消息發(fā)送給NPC?因為這種NPC也可以理解為機器人,它可以感知到敵人就在附近, 本身就在服務(wù)上, 所以不用發(fā)送消息, 但是NPC在感受到玩家的時候要向它(NPC) 可見范圍內(nèi)的玩家發(fā)送消息.
接下來還有一個問題,是發(fā)送什么樣的消息的問題,因為針對NPC,和玩家,并不是所有的消息都發(fā),而是有選擇向的發(fā),這個問題我們下次討論。
上次主要談了網(wǎng)絡(luò)延遲時的同步問題,今天我們主要談?wù)摂?shù)據(jù)發(fā)送給誰的問題, 要談?wù)撨@個問題,我們就不的不談?wù)? 地圖, NPC, 玩家他們?nèi)齻€之間的關(guān)系.
其實地圖是個靜態(tài)的數(shù)據(jù)集合, 其中主要包含了地形信息和物品信息,這里的物品指的是靜態(tài)的,所以它是不需要進(jìn)行同步的,也就是每個玩家在同一個地圖上看到信息是一樣的,所以這些信息有客戶端的場景管理器管理. 不進(jìn)行網(wǎng)絡(luò)通信.
NPC: NPC主要分兩種 一種是靜態(tài)的NPC,如玩家獲取任務(wù)的NPC, 另外玩家升級打的怪, 也是NPC. 靜態(tài)的NPC有屬性和功能,但不需要同步, 動態(tài)的NPC(如怪)需要進(jìn)行網(wǎng)絡(luò)同步,這里我們就有一個問題, 動態(tài)的NPC要將它的信息發(fā)送給誰呢?任何一個涉及到網(wǎng)絡(luò)通信的NPC和玩家都有一個共同的性質(zhì)就是它有可見范圍,假如說一個玩家在十米范圍內(nèi)可見,那么他就回將信息發(fā)送給距離十米以內(nèi)的玩家和NPC, 這里有含有兩個問題: 一: 十米以外的NPC怎么辦, 二:怎么獲取十米以內(nèi)的發(fā)送用戶。有兩種解決辦法:一是在場景中搜索找到要發(fā)送的用戶信息,告訴服務(wù)器讓服務(wù)器來發(fā),二是發(fā)送自己的信息到服務(wù)器,服務(wù)器搜索NPC列表,和玩家列表,來發(fā)送,我覺的后著更合理。
玩家: 玩家的同步主要是玩家和玩家的同步, 如玩家每前進(jìn)一步, 就向服務(wù)器發(fā)一條消息. 服務(wù)器在玩家列表中查找到范圍之內(nèi)的其他玩家信息,并發(fā)送消息,這里有一個問題,是玩家要不要將消息發(fā)送給NPC?因為這種NPC也可以理解為機器人,它可以感知到敵人就在附近, 本身就在服務(wù)上, 所以不用發(fā)送消息, 但是NPC在感受到玩家的時候要向它(NPC) 可見范圍內(nèi)的玩家發(fā)送消息.
接下來還有一個問題,是發(fā)送什么樣的消息的問題,因為針對NPC,和玩家,并不是所有的消息都發(fā),而是有選擇向的發(fā),這個問題我們下次討論。

