标签:
今天有点累,可能是最近超负荷加班学习,也有可能是昨晚右手又调皮了,所以今天的效率有点低。
不过我搞清楚了服务器业务逻辑的三个大类中的两个,分别是资源管理器和通信模块。
通信模块在服务器启动的时候就初始化,并且将每个通信模块(NPC模块、消耗物品模块等等)对应于客户端的请求的消息处理方法注册到一个全局数组上去。那么以后客户端有消息过来的时候,就根据moduleID和funcID的乘积去调全局数组里面的处理方法。服务器主循环里面会在一定时间后去读消息队列,依次处理那些请求。
而资源管理器也是在服务器主循环里面工作的,循环到某个资源管理器时,就会调相应的更新方法。比如更新当前场景的人物,每个角色实体对应的场景里面有一条链表,包含了当前界面该出现的人物,如怪、NPC或者其他玩家等等,超出这个界面的人物实体会从这个链表里面删掉,然后更新时就先将所有人物清空,然后看链表里面有什么人物,接着放置(个人觉得这个方法效率比较低)。
另外还有很多涉及业务逻辑的通信模块和资源管理器,这些要我玩熟了这个游戏后再去看,因为我最讨厌就是看代码猜业务逻辑,好傻。
第三个实体子系统,说实话,我还没看懂是怎么回事,明天应该就可以懂了。
另外,锋哥给我布置的那个任务,我还没完成。虽然我把所有可能发生错误的地方都搜出来了,但是我并没有看完。因为我已经问了我隔壁那个前辈,他当时也找了一遍,也是没发现。那么有经验的他都找不到,锋哥也找不到,我怎么可能找得到呢?报着这个心态,我觉得我一辈子都别想找到这个漏洞了,应该自我批评下,然后明天好好找。
事物之间的联系总是很奇妙的,只要想着一件事情,并且努力去往它靠近,它就会来的,这就是传说中的缘分。
标签:
原文地址:http://my.oschina.net/chrisforbt/blog/407027