仿真模块,其实并不复杂。我举个简单的例子:
使用一个八叉树,把游戏里的人物(都是一些对象)放进八叉树。每个人物对象都有一些方法可以调用,比如moveTo (int x, int y, int z);当网络模块收到客户端的一个消息,要求移动到A(坐标为(a,b,c))点后,网络模块会把这个操作交给仿真模块,然后客户端所对应的那个人物对象就被调用了moveTo (a, b, c);然后仿真模块就把这个人物"正在某个方向移动"的消息发给所有能看到这个人物的其他人物,这个过程中仿真模块又会调用网络模块把消息通过网络广播出去。
对于仿真模块来说,它要给某个人物发送消息,只是调用这个对象的一个方法,比如send(void* data);仿真模块不会调用net.send(IP,Port,data)这样的函数。网络模块也不会去根据收到的消息自己去调用某个仿真模块里的对象的方法。