游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4627|回复: 12

星际是怎么传输数据的

[复制链接]

3

主题

31

帖子

31

积分

注册会员

Rank: 2

积分
31
发表于 2008-11-7 18:35:00 | 显示全部楼层 |阅读模式
先说下我知道的传奇的
传奇里单位的传输 都是传输单位动作
单位 创建的时候 把 它保存到 单位表里,这个列表没多大
就是屏幕上能看见的单位
当 单位 有新的动作的时候 需要
从单位列表里 找出 这个单位 然后单位再做相应的动作


但是星际的情况不一样 单位太多了[em7]
一场战役最多8个玩家
每个玩家平均 100 个单位 10 个建筑
加起来 大概就是880 个单位 如果用传奇的那种方法 绝对不行了
这么多单位都是要一次更新到位
虽然星际里 屏幕上一次显示的单位没传奇的多  
但是数据一定是同步的  
星际是怎么传输数据的?

6

主题

16

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2008-11-7 23:19:00 | 显示全部楼层

Re:星际是怎么传输数据的

俺现在还在学习客户端的开发,服务器端的部分还没考虑,哈哈。。。

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-11-8 12:53:00 | 显示全部楼层

Re:星际是怎么传输数据的

星际争霸的信息是<操作传输>方式和<事件传输>方式.
星级是严格地按照<帧>来进行判定的游戏,在一般的<Fastest>速度下,帧数是25.

传输的数据并不是200个人口的所有数据,而是玩家选定的当前单位(最多12个)的操作.
比如,选取<单位1+单位2+单位8>做了<移动到坐标(531,389)>的操作时,信息里只包含3个单位名和移动命令以及坐标数据.
星级里有Host,就是创建游戏的玩家所用的电脑.一切判定都由它说了算(也就是说可以作弊).

51

主题

3551

帖子

3655

积分

论坛元老

Rank: 8Rank: 8

积分
3655
发表于 2008-11-9 10:09:00 | 显示全部楼层

Re:星际是怎么传输数据的

恩恩。即时战略都是传送“操作”的

3

主题

31

帖子

31

积分

注册会员

Rank: 2

积分
31
 楼主| 发表于 2008-11-9 15:49:00 | 显示全部楼层

Re: Re:星际是怎么传输数据的

snhun: Re:星际是怎么传输数据的

星际争霸的信息是<操作传输>方式和<事件传输>方式.
星级是严格地按照<帧>来进行判定的游...



我开始也是这样想的
只是如果按照 传送“操作”的方法 来传送数据
那就是计算是每个玩家单独的咯
比如 玩家A 选了3 只狗 跑到 (100,100)
玩家A就向其他玩家发送: 3 只狗 跑到 (100,100)的命令
所有玩家收到数据后计算 这 3 只狗 移动到 (100,100) 需要走的路线 然后再做处理 这样计算出来的结果 能统一吗
还有一个就是航母 难道 出小飞机的数量也是 每个玩家单独算出来的?


再有
星级里有Host,就是创建游戏的玩家所用的电脑.一切判定都由它说了算(也就是说可以作弊).


主机掉线一样可以玩 所以你这个说法有点不对吧
难道 主机掉线 后 所有玩家一起“商量” 谁做主机?

19

主题

638

帖子

638

积分

高级会员

Rank: 4

积分
638
发表于 2008-11-9 18:33:00 | 显示全部楼层

Re: Re: Re:星际是怎么传输数据的

QQ286251099: Re: Re:星际是怎么传输数据的



主机掉线一样可以玩 所以你这个说法有点不对吧
难道 主机掉线 后 所有玩家一起“商量” 谁做主机?

事实确实如此,主机掉线后所有peer“商量”谁做主机
星际网络用的DirectPlay,和DirectPlay的peer to peer的模式基本吻合,这种模式下的主机转移在DX的文档里有详细的说明,可以找老一点的还包含DirectPlay的DXSDK看一下

51

主题

3551

帖子

3655

积分

论坛元老

Rank: 8Rank: 8

积分
3655
发表于 2008-11-9 21:09:00 | 显示全部楼层

Re:星际是怎么传输数据的

你说对了。。。

3

主题

31

帖子

31

积分

注册会员

Rank: 2

积分
31
 楼主| 发表于 2008-11-10 12:41:00 | 显示全部楼层

怎么保证数据的一致性?

只是如果按照 传送“操作”的方法 来传送数据
那就是计算是每个玩家单独的咯
比如 玩家A 选了3 只狗 跑到 (100,100)
玩家A就向其他玩家发送: 3 只狗 跑到 (100,100)的命令
所有玩家收到数据后计算 这 3 只狗 移动到 (100,100) 需要走的路线 然后再做处理 这样计算出来的结果 能统一吗
难道航母  出小飞机的数量也是 每个玩家单独算出来的?

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2008-11-10 12:56:00 | 显示全部楼层

Re:星际是怎么传输数据的

路线是各自算的,但是各自计算的结果完全一致.
为什么?
因为星际争霸是严格按照<帧数>来计算的游戏.所以它的时间轴是<整数>,而不是<浮点>.
而且对战的机器们是<帧同步>的.

所有计算完全一致.
暴雪牛B吧?

15

主题

2093

帖子

2093

积分

金牌会员

Rank: 6Rank: 6

积分
2093
发表于 2008-11-10 20:24:00 | 显示全部楼层

Re: 星际是怎么传输数据的

录像也是同样的原理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-20 22:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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