Posted on 2008-01-25 11:27
Fox 閱讀(1589)
評論(4) 編輯 收藏 引用 所屬分類:
G游戲編程
Author: Fox
終于趕在周末之前調(diào)通了,現(xiàn)在來總結(jié)一下我這個項目中對于異步回調(diào)的應(yīng)用背景。
這個項目的內(nèi)容就是在游戲中使用第三方庫為所有玩家提供更好的服務(wù),當(dāng)server啟動后,加載dll,初始化該模塊,當(dāng)server退出時,結(jié)束模塊功能,卸載dll。
當(dāng)玩家提出請求后,server在main thread中通過lib轉(zhuǎn)發(fā)玩家請求,lib處理完畢,在其獨立thread中回調(diào)server為其實現(xiàn)的callback function。此時,server需要將返回的result轉(zhuǎn)到main thread中對result及其相關(guān)的玩家數(shù)據(jù)進(jìn)行處理。
第三方庫的需求是很明確的,在合適的地方發(fā)送請求,在合適的地方處理響應(yīng)。
Joe對我的要求也是很明確的,響應(yīng)處理時采用server當(dāng)前架構(gòu)(這個架構(gòu)在上一篇文中有提到),使我的編碼不涉及任何游戲功能邏輯處理,并使整個處理流程細(xì)節(jié)對后續(xù)應(yīng)用開發(fā)透明。
二者結(jié)合起來,就為這個項目融入整個server的架構(gòu)提供了完美的需求,也為我的編碼提供了最小限度的選擇空間:(,好處是后續(xù)功能開發(fā)可以完全無視我的編碼,只需實現(xiàn)對回調(diào)響應(yīng)后的功能,只有server底層知悉如何調(diào)用。
給出序列圖:
?
為了保持對上層開發(fā)透明,OnCallback需要封裝。
//-------------------------------------------------------------------------------
// 一年來,我主要參與了兩款游戲,確切的說是半年,前面半年并沒有真正涉及運(yùn)營產(chǎn)品的開發(fā),只是做工具。
// 現(xiàn)在這個模塊是我做的最快,也是壓力最大的一個。現(xiàn)在想來,原因在于此模塊涉及到游戲主邏輯底層和
// 第三方動態(tài)鏈接庫的通信及處理。
// 在短短幾天的時間內(nèi)讓你的設(shè)計滿足第三方庫的應(yīng)用需求并符合游戲自身底層邏輯的設(shè)計風(fēng)格,的確有些痛苦,
// 好在有Joe的指點,讓我在完成工作的同時又學(xué)到了一些方法:)。
//-------------------------------------------------------------------------------