游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3000|回复: 6

请求删帖

[复制链接]

30

主题

64

帖子

-98

积分

限制会员

积分
-98
QQ
发表于 2004-9-13 09:13:00 | 显示全部楼层 |阅读模式
请求删帖

sf_200491391356.rar

36.6 KB, 下载次数:

10

主题

90

帖子

90

积分

注册会员

Rank: 2

积分
90
QQ
发表于 2004-9-13 09:50:00 | 显示全部楼层

Re:(服务器--是word文档--)

这也叫文档

0

主题

5

帖子

9

积分

新手上路

Rank: 1

积分
9
QQ
发表于 2004-9-14 12:55:00 | 显示全部楼层

Re:(服务器--是word文档--)

不错!

4

主题

54

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2004-9-14 15:16:00 | 显示全部楼层

Re:(服务器--是word文档--)

只分析出一点点东西,还错了很多
不错?faint...

4

主题

54

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2004-9-14 16:41:00 | 显示全部楼层

Re: Re:(服务器--是word文档--)

sorry,没时间整理,把以前写的一点东西贴上来好了



LoginGate模块
=============
    只起到LoginSvr和Client之间的消息中介作用 <== 这种做法真的能起到加快响应速度吗?
        1、将所有从客户端收到的消息直接转发给LoginSvr
        2、将所有从LoginSvr收到的消息直接转发给客户端

SelGate模块
===========
    结构简直跟LoginGate一模一样,只不过它连接到DBSvr上


LoginSvr模块
============
    基本相当于AccountServer
    实现的功能包括:
        1、帐号密码验证
        2、选择服务器
        3、创建新帐号


GameGate模块
============
        1、所有从客户端收到的消息都直接转发给GameSvr
                2、所有从GameSvr收到的消息除了几个需要处理的GM_开头消息外,
           GM_DATA消息直接压入相应UserInfo的发送缓冲区,在连接客户
           端的完成端口模型工作线程中一起发送给客户端。


GameSvr模块
===========
        主服务器模块。
        需要连接到DBSvr和LoginSvr,接受GameGate的连接。

        从代码上看,GameSvr的结构类似流水线作业方式,多线程分别处理流水线的几个步骤。
        GameSvr内部流水线主要分以下几个部分:

        1、ServerWorkerThread:GameGate消息接收处理
           1) 处理GM_OPEN, GM_CLOSE, GM_CHECKCLIENT等消息
           2) 把客户端消息分类后调用AddProcess加入PlayerObject的Operate处理队列

        2、ProcessLogin:登录、退出处理
           由于GameGate发送GM_OPEN消息到GameSvr, OpenNewUser的操作只是新建一个UserInfo插入等待表,
           GM_CLOSE的CloseOpenedUser操作也只是将UserInfo加入等待表,并返回通知GameGate GM_CLOSE,
           因此这里的循环只是检查等待表,根据UserInfo的状态做登录或者退出的操作

        3、ProcessUserHuman:
           1) 遍历UserInfoList,依次调用每个UserInfo的Operate来处理命令队列中的所有操作;
           2) 遍历GateList,依次调用每个GateInfo的xSend函数将发送缓冲区中的消息发往GameGate;

        4、ProcessMonster:
           循环遍历所有MonsterObject,更新视线范围内目标,执行Operate;
           如果是尸体,并且时间到,就删除;
       
        5、ProcessNPC:
           遍历所有的脚本,分别找到它们的目标对象CScripterObject,执行Operate(相当于AI系统了)
           调用ProcessMerchants和ProcessEvents;
                ProcessMerchants:
                1) 初始化所有MerchantObject
                2) 更新视线范围内目标,执行RunRace

                ProcessEvents:
                1) 顺序执行事件队列中的事件(火墙之类的都可以用这个实现)

           更新NPC视线范围内的目标;



    一、与LoginSvr的通讯
        只保持连接,不做任何消息处理
        估计只是为了让LoginSvr知道GameSvr是否活动

    二、与DBSvr的通讯
        1、连接建立以后,启动ProcessLogin, ProcessUserHuman, ProcessMonster, ProcessNPC等几个工作线程。
        2、处理DBSvr发来的几个类型消息:
                DBR_LOADHUMANRCD2,
                DBR_LOADHUMANRCD,
                DBR_MAKEITEMRCD,
                DBR_MAKEITEMRCD2

    三、与GameGate的通讯
        GameGate于GameSvr相当于LoginGate之于LoginSvr


DBSvr模块
=========
        1、创建完成端口模型socket, 处理从GameSvr发来的几个常用并且耗时间的数据库操作消息:
                DB_LOADHUMANRCD
                DB_SAVEHUMANRCD
                DB_MAKEITEMRCD
                DB_MAKEITEMRCD2

        2、创建AsyncSelect模型socket, 处理SelGate发来的以下消息:
                CM_QUERYCHR
                CM_NEWCHR
                CM_DELCHR
                CM_SELCHR

4

主题

54

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2004-9-15 14:00:00 | 显示全部楼层

Re: Re: (服务器--是word文档--)

只是工作之余看看其它的游戏服务器。。
看看有没有可以学习参考的地方罢了

18

主题

579

帖子

583

积分

高级会员

Rank: 4

积分
583
发表于 2004-9-16 09:14:00 | 显示全部楼层

Re:(服务器--是word文档--)

强烈关注中。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 16:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表