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