3DMGAME 3DM首页 新闻中心 前瞻 | 评测 游戏库 热门 | 最新 攻略中心 攻略 | 秘籍 下载中心 游戏 | 汉化 购买正版 论坛

注册 登录

QQ登录

只需一步,快速开始

查看: 2872|回复: 5
打印 上一主题 下一主题

[新闻] 奇思妙想打造星际争霸2局域网可行办法

[复制链接]

0

主题

49

帖子

56

积分

初级玩家

Rank: 2

贡献度
7
金元
876
积分
56
精华
0
注册时间
2010-3-29
跳转到指定楼层
主题
发表于 2010-11-10 16:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
奇思妙想打造星际争霸2局域网可行办法
http://game.zol.com.cn/203/2034520.html

  星际争霸2局域网破解不成功的最大原因是,暴雪把主机行为的部分放进了bn模块,而那个没人能解密。(bn上自定义游戏也同样是服务器主机,我们不知道主机处理多人游戏的具体协议)

实现星际争霸2局域网多人连线的基本原理:

  多人游戏的原理并不复杂。本地操作 -> 发操作给主机(异步发送) -> 主机校验并且传达给所有玩家 -> 同步执行

  玩家的实际时间是不同的,但不影响同步。与主机相对时间差最小的玩家的延迟最小(废话。。)

  本地游戏的逻辑与多人游戏是相同的,只有主机行为不同。。

实现局域网联线的具体办法:

  也许我们可以利用galaxy和外部工具自制一个局域网。

  首先hook本地发送操作的函数,这个函数会向“逻辑主机”发送本地操作

  在单机游戏中,主机就是你自己。在多人游戏中,主机是bn。

  实际上究竟怎么发,那是更底层的函数实现,在这里,主机的意义是被包装的逻辑主机。

  本地操作的意义都是已知的,例如选择单位,选择编队,编队,切换高亮,发布一个操作。以及还有移动屏幕都是操作。

  由于拦截掉这个函数发送,效果会是,一切命令无效,而选择单位则是UI有效而实际无效

  在我们新的多人对战模型中,确定一个唯一的玩家作为主机,而后通过自制的协议把拦截下的操作发给“主机”

  主机通过他当时的游戏时间约定一个执行时间。而后再发回给所有玩家。

  这里的关键处在于,如果要破解整个星际2的多人游戏非常难,但用galaxy却可以模拟出多人联网的行为。

  只要主机发回约定执行的时间,我们可以在本地对每个玩家自身的时间轴设timer来执行。

  启动游戏可以用额外界面 + 直接启动地图的方法,假如2个人玩的话,实际上他们看到的另一个玩家都是电脑改了个名字假冒的。

  重点是利用galaxy本身的能力来模拟多人游戏。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|3DMGAME ( 京ICP备14006952号-1  沪公网安备 31011202006753号

GMT+8, 2026-4-3 22:10 , Processed in 0.026867 second(s), 16 queries , Memcached On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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