我已經閱讀了專業XMPP的所有484頁,並閱讀了關於花名冊+ XMPP的無數論壇主題,這個問題仍然是我正在努力解決的問題。我正在尋找有關最佳做法的見解,所以我至少知道要走哪個方向。XMPP多人遊戲:我應該將對手存儲爲名冊聯繫人嗎?
我正在構建一個跨平臺(網頁,iOS & Xbox)的回合制棋盤遊戲。每個玩家在任何特定時刻都可以進行多達100個不同的比賽活動 - 這樣他們就可以輕鬆地從一場比賽中跳出,而不是在那裏轉向一場比賽。
遊戲將設置一個大廳,其中顯示活動遊戲列表,以及該遊戲每個對手的名稱和在線狀態(您可能有多達3個對手,每場比賽總共有4名玩家)。
此外,每個玩家將有一個朋友列表訪問從不同的地區,也列出在線狀態。
我在幕後使用XMPP,對玩家完全透明,沒有人會用Jabber客戶端或任何類型的東西登錄。我完全控制了信息的顯示和利用方式。
我使用XMPP解決的主要問題有:當對手做出舉動,看到我的朋友在線狀態,看到我的對手在線狀態和遊戲內文本聊天時的通知。
所以這裏是我開始有麻煩的地方:顯然你的朋友列表將成爲你名冊中的聯繫人,所以你可以看到他們的在線狀態。但是對手呢?這些通常是隨機的對手,你只會與一個單一的比賽,而不會再次 - 但你與他們的比賽可能會持續2個星期。
記住一切都在幕後(例如:自動訂閱確認等) - 最好的做法是在遊戲進行時將每個對手添加到陣容中的另一個組,然後刪除他們在比賽結束後?那樣,當玩家在線時你會收到狀態通知?或者這是PubSub可以使用的情況嗎?
我也考慮過使用多用戶聊天功能,所以我總是可以訪問每個用戶的在線狀態而無需訂閱,但是在任何給定時刻可能有多達20k的玩家在線時,這似乎遠沒有效率。這絕對聽起來像是移動設備上的電池。
我的其他解決方案是使用共享名單列表。爲每個遊戲創建一個名單,並將該列表分配給每個玩家。然後在遊戲完成後刪除共享名單。
您正在使用哪個XMPP服務器? – Alam
目前ejabberd2的最新穩定版本。昨晚下載並安裝,但我可以切換到任何東西。 –