Posted on 2008-01-25 11:27
Fox 阅读(1535)
评论(4) 编辑 收藏 引用 所属分类:
G游戏编程
Author: Fox
终于赶在周末之前调通了,现在来总结一下我这个项目中对于异步回调的应用背景。
这个项目的内容就是在游戏中使用第三方库为所有玩家提供更好的服务,当server启动后,加载dll,初始化该模块,当server退出时,结束模块功能,卸载dll。
当玩家提出请求后,server在main thread中通过lib转发玩家请求,lib处理完毕,在其独立thread中回调server为其实现的callback function。此时,server需要将返回的result转到main thread中对result及其相关的玩家数据进行处理。
第三方库的需求是很明确的,在合适的地方发送请求,在合适的地方处理响应。
Joe对我的要求也是很明确的,响应处理时采用server当前架构(这个架构在上一篇文中有提到),使我的编码不涉及任何游戏功能逻辑处理,并使整个处理流程细节对后续应用开发透明。
二者结合起来,就为这个项目融入整个server的架构提供了完美的需求,也为我的编码提供了最小限度的选择空间:(,好处是后续功能开发可以完全无视我的编码,只需实现对回调响应后的功能,只有server底层知悉如何调用。
给出序列图:
为了保持对上层开发透明,OnCallback需要封装。
//-------------------------------------------------------------------------------
// 一年来,我主要参与了两款游戏,确切的说是半年,前面半年并没有真正涉及运营产品的开发,只是做工具。
// 现在这个模块是我做的最快,也是压力最大的一个。现在想来,原因在于此模块涉及到游戏主逻辑底层和
// 第三方动态链接库的通信及处理。
// 在短短几天的时间内让你的设计满足第三方库的应用需求并符合游戏自身底层逻辑的设计风格,的确有些痛苦,
// 好在有Joe的指点,让我在完成工作的同时又学到了一些方法:)。
//-------------------------------------------------------------------------------