|
发表于 2004-3-24 09:38:00
|
显示全部楼层
Re:寻求合作
很多问题都是很无聊的问题,说明出题的人也是有疑惑的....
很多问题你自己也不知道怎么回答吧.
1. 服务器构架
1) 现有的网络游戏网络构架大致有a单服务器,b单网关多服务器,c多网关多服务器,请比较其优劣来阐述你倾向的方案。
C,因为可以承载更多的玩家.扩充性好很多.
2) 在多服务器分布式的设计中,一般倾向于按照地图来划分服务器,但是也有根据功能来划分服务器,请比较其优劣来阐述你倾向的方案。
地图划分无法控制聚集的情况.功能划分缺乏简易的扩展性.
3) 你尝试或者想过使用DCOM或者CORBA来实现分布式么,有这个必要么(好处在哪里?),其难点又在哪里。
如果我觉得有必要,那么你一定要把我炒掉.
4) 服务器程序构架首先考虑的问题是(a稳定,b灵活,c简单,d扩展性,e平台无关)请排列其优先级并阐述理由。
a, d, b, c, e
稳定第一,这个是服务器程序的一个前提
接下来是扩展,我认为扩展和灵活基本上很接近.
然后是简单,如果一个服务器程序真的能简单的话.
最后是平台无关,毕竟我们不是在做普通的程序,实在要跨平台,那么代价也是很高的.
2. OO
1) 游戏世界是否分为两套独立的代码(服务器一套,客户端一套),如果存在复用,哪一部分代码可以复用,怎样复用(即抽象出的共同的数据和行为是什么)。
复用的代码是一些数据定义,数据加密解密的东西,还有内存池等底层的和辅助的东西.
关键的东西,如果要复用,客户端或者服务器程序会付出代价.
2) 如果你打算复用npc的代码,并且npc派生出player,这没有问题,但是npc本身又会派生clientnpc,servernpc,player也会派生clientplayer,serverplayer,类和派生类双双派生,但在client或者server的层面上来看失去了复用,你如何解决这个问题。
如果你觉得要复用,不要打算复用NPC,把NPC作为另外一个VCHARACTER的派生类吧.不要让所有的功能都集中在一起.仔细的抽象出NPC和PLAYER之间的区别.不要在他们之间派生,你会很后悔这样做.
3) 如果认为npc是很小的数据和行为的封装,其下有子类,fightnpc,tradenpc,在2的基础上你如何解决这个问题。
不要把FIGHTNPC放在TRADENPC的层面,在PLAYER的上一层,应该有个ADVANCECHARACTER,FIGHTNPC应该和PLAYER放在一个层面.虽然PLAYER看起来比FIGHTNPC复杂的多.
3. 同步策略
1) 在带宽和CPU之间,那个资源更重要,为什么。
都很重要,不要偏向,还有另外一个资源,就是内存.
2) 网络游戏中什么指令或协议最消耗带宽,(a运动b战斗c聊天d人物或者npc信息),依据在那里(请自拟条件给出估算),有何对策。
聊天最消耗带宽,其次是NPC信息,其次是人物,战斗,运动.
假设一个人在全局频道每1分钟说一句话,每句话10个字,在一个600人的服务器中,1分钟的信息量是600*10 = 6K,但是传输量是6K*600 = 3.6MB.
3) 同步策略有a把每一个消息即时地送到受影响的玩家,b玩家隔一段时间同步一次所有的数据。阐述各自的优劣来作出你的选择。
同意即时
4) 详述在3题中如何确定受影响的玩家。(提示a根据格子计算,b作出空间划分)
如果互换A,B的方式就可以回答4题了.
5) 现在1000个玩家在同一地图展开国战,每一个屏幕都站满了200人,根据你的同步策略估算带宽要求。
大概每秒钟每个客户端传输量是3.2KB,1000个玩家就是 3.2MB/S
6) 如果5中只提供50M带宽,如何优化你的同步策略来满足需要。
如果50M带宽,那我就多加9000个玩家来参加国战.
4. DB
1) 游戏支付卡分为点卡和月卡,点卡有不同的面值,月卡只有唯一的一个月值,点卡可能抽奖或者送装备,如何定义其table
ID:INT
CODE:VARCHAR 50
PASSWORD:VARCHAR 50
TYPE:TINYINT
POINT:INT
APPEND:IMAGE
2) 玩家的帐号是在服务器之间通用的,定义帐号的table,玩家登陆之后账号上的充值如何消耗?
ID:INT
ACCOUNTID:VCHAR 20
PASSWORD:VCHAR 20
PAYTYPE:TINYINT
PAYPOINT:INT
PAYINFO:VARCHAR 20
....OTHER INFO OF THE ACCOUNT
3) 玩家的数据包括,基本属性,好友,装备,技能,如何定义table并阐述理由
BASE TABLE
ID:INT
ACCOUNTID:INT
HP:INT
MAXHP:INT
......OTHER PROP
FRIEND TABLE
CHARID:INT
FRIENDCOUNT:INT
FRIENDINFO:IMAGE
EQUIPMENT TABLE
CHARID:INT
HEAD:IMAGE
BODY:IMAGE
HAND:IMAGE
L_FINGER:IMAGE
...OTHER EQUIPMENTS
SKILL TABLE
CHARID:INT
SKILLCOUNT:INT
SKILLINFO:IMAGE
5. 物理引擎
1) 某个游戏中跑动的人基本打不中,为什么,如何解决(请充分考虑游戏性)?
说清楚,技能打不中还是物理攻击.
2) 某个游戏飞行的魔法必然躲不开,又为什么,怎样解决(请充分考虑游戏性)?
看你实现方式了.
3) 服务器端的游戏循环大致如下:
Loop
For each npc run
这是一个典型的不完善的command模式,因为npc的run常常空转(就是这个时刻它不需要run,可能再过100ms它才run)造成CPU浪费,请你完善这个模式。
NPC采用被动事件模式.
6. 安全
1) 请阐述游戏刷钱装备的方式(一个或多个),利用了程序中的什么漏洞,有何对策?
可能利用了 数据益出,或者带符号 和无符号转换的漏洞.
2) 你如何看待游戏外挂,在客户端和服务器各有什么对策
客户端加壳
服务器端消息过滤
7. 客户端
1) 你使用过那些界面系统(例如MFC的控件),试阐述界面系统如何实现绘制顺序,消息传递和事件反馈。
用Z ORDER.
2) 怎样实现雨和雪,有策划写到,黄沙滚滚,硝烟弥漫,你又准备如何实现这样的效果。
粒子系统. |
|