V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
liuhanyang0
V2EX  ›  魔兽争霸

魔兽争霸 3 技术分析资源汇总

  •  4
     
  •   liuhanyang0 · 2015-02-15 09:59:21 +08:00 · 12159 次点击
    这是一个创建于 3598 天前的主题,其中的信息可能已经有所发展或是发生改变。

    原文链接: http://jjyy.guru/war3-tech/

    玩了多年的魔兽、Dota,带来了很多快乐,想八卦一下实现。本来打算自己分析的,由于网上已经有很多资料了,这里把相关的资料做个汇总。

    欢迎同学补充,可以在联系中给我留言,或者在评论中回复,我会陆续加上。

    项目开发
    讲的是第一代,也很有参考价值。

    The Making of Warcraft Part 1
    The Making of Warcraft Part 2
    The Making of Warcraft Part 3
    中文版:

    Patrick Wyatt:魔兽争霸的制作过程 1
    Patrick Wyatt:魔兽争霸的制作过程 2
    Patrick Wyatt:魔兽争霸的制作过程 3
    资源打包技术
    MPQ是暴雪公司用于游戏数据打包的工具,能够把资源放在一个包里,然后对其进行压缩和加密。网上已经有很多的详解:

    MPQ Wiki MPQ介绍
    MPQ Archives MPQ格式手册
    游戏资源的压缩、打包与补丁更新 网易的打包系统设计
    MPQ Storm 暴雪MPQ库的开源实现
    MPQ Storm库 源码分析 图文并茂的源码分析
    网络同步
    Warcraft 3使用的是lock-step技术,就是多个玩家的计算结果必须一样的,谁落后了就要大家等他同步上来。

    lock-step的特点,这里有个回答讲得很清楚。lock-step是不关心游戏逻辑的,只关心用户输入。核心思想就是如果大家每帧计算结果一样,那么只要保证大家的输入和初始条件一样,那么就能够完成同步。在手游中经常用伪随机数做同步,比如《捕鱼达人》。lock-step最麻烦的事情是容易产生蝴蝶效应,中间某个步骤计算结果不一样,那么后面很容易放大,得到完全不同的结果。lock-step中,延迟的处理主要通过时间戳。

    网络同步常见的技术还有状态同步,这种技术在MMORPG中很常见。具体来讲就是同步与玩家同一个区域的所有角色,这些角色身上的所有状态都有自己同步的逻辑。比如角色行走,那么就会广播到同一个区域的玩家上,那么大家都会播放行走的动画。而行走还有另一个结果,那就是发生位移,为了不影响玩家的手感,玩家的机器先执行,等服务器验证后再拉到“正确”的位置。由于网络存在延迟,位移的同步都要做位置预测,常见的位置同步算法是“Dead Reckoning - 航位推测法”,充分考虑了延迟的情况。

    更多的网络同步知识可以看这篇《每个程序员都该知道的网络同步知识》。

    《魔兽争霸III》是如何实现野怪同步的?
    《魔兽争霸》的录像,为什么长达半小时的录像大小只有几百 KB?
    编辑器
    在Warcraft 3中还诞生了现在大火的Dota,这是因为随游戏附带的编辑器有强大的编辑功能。暴雪开发了多款战略游戏,才有对这种类型游戏的深刻理解。在我看来,最核心的机制为Event-Condition-Action这个逻辑。暴雪程序员为这套触发器开发了大量预定义功能。比如Dota里面的发兵:定义定时器Event,然后就触发创建某某Unit的Action。

    War3 World Editor分析系列
    手把手开发Dota系列视频 at Youtube
    How Dota AI Create
    星际争霸2编辑器的初接触
    寻路&AI
    就随手一点,魔兽争霸里的英雄如何找到通往终点的路?
    即时战略游戏(比如 WAR3)的 AI 是怎样实现的?
    外挂
    魔兽争霸3的maphack制作教程(一)显示敌对单位
    魔兽争霸3的MapHack制作教程(二)去除战争迷雾
    地形
    魔兽争霸3的自动拼接地形渲染方式

    30 条回复    2015-04-27 00:16:37 +08:00
    mjever
        1
    mjever  
       2015-02-15 10:05:52 +08:00   ❤️ 1
    玩了多年的WAR3过来了解了解~
    liuhanyang0
        2
    liuhanyang0  
    OP
       2015-02-15 10:19:33 +08:00
    @mjever 哈哈,这个十多年前的游戏我现在还在玩
    tremblingblue
        3
    tremblingblue  
       2015-02-15 10:38:18 +08:00
    昨天翻箱倒柜,突然看到混乱之治和冰封王座的正版CD,感慨了一下,这就十多年了。
    f0rger
        4
    f0rger  
       2015-02-15 10:44:01 +08:00
    自从来到这个公司后,我就戒了war3了。。。
    实际上是加班没时间玩
    Majirefy
        5
    Majirefy  
       2015-02-15 10:49:04 +08:00   ❤️ 1
    好屌……
    正想看看~~~
    WildCat
        6
    WildCat  
       2015-02-15 11:38:02 +08:00 via iPhone
    出门左转 islga ?
    mjever
        7
    mjever  
       2015-02-15 11:39:55 +08:00
    @liuhanyang0 怀念当年Grubby、Moon、Sky等群星闪耀的时候~
    xspippo
        8
    xspippo  
       2015-02-15 11:46:00 +08:00
    WAR3,rts经典。
    fan123199
        9
    fan123199  
       2015-02-15 11:57:17 +08:00
    看到war3,必须进来。买过盗版光盘,各种战略纸质书。
    fan123199
        10
    fan123199  
       2015-02-15 11:59:18 +08:00
    我对2003年暴雪能做出这游戏表示无法理解,是那么的完美。
    fan123199
        11
    fan123199  
       2015-02-15 12:00:30 +08:00
    lz这个网站会存在多久啊?我应该是mark这个网页,还是都download下来?
    liuhanyang0
        12
    liuhanyang0  
    OP
       2015-02-15 12:04:06 +08:00
    @fan123199 我博客挂在github上,githut在多久,我博客就在多久
    liuhanyang0
        13
    liuhanyang0  
    OP
       2015-02-15 12:04:48 +08:00
    @mjever 哈哈,木瓜大战,Sky人皇的时候,确实很经典
    liuhanyang0
        14
    liuhanyang0  
    OP
       2015-02-15 12:07:22 +08:00
    @tremblingblue 是啊,十分感概,感谢暴雪
    sun019
        15
    sun019  
       2015-02-15 12:32:39 +08:00
    确实 玩了好多年的魔兽争霸 作为程序员 也该了解些东西了
    acros
        16
    acros  
       2015-02-15 12:46:33 +08:00
    有点挂羊头卖狗肉。。。

    顺手点一个:“就随手一点,魔兽争霸里的英雄如何找到通往终点的路?”讲得是游戏AI最基础的寻路。

    其他的也是,大都是给群众的游戏开发基本常识,最多是拿war3当例子嘛。我还以为是war3开发人员谈论,之前网上是有一篇开发人员的文章的。。
    kkxxxxxxx
        17
    kkxxxxxxx  
       2015-02-15 12:46:37 +08:00
    war3更新下贴图模型的话还可以再战十年
    caoyue
        18
    caoyue  
       2015-02-15 12:49:10 +08:00
    还记得当时猜录像系统怎么做的猜了好久,还乐此不疲的实验看暴击是否随机
    liuhanyang0
        19
    liuhanyang0  
    OP
       2015-02-15 12:57:46 +08:00
    @acros The Making of Warcraft是Patrick Wyatt写的
    liuhanyang0
        20
    liuhanyang0  
    OP
       2015-02-15 12:58:59 +08:00
    @acros 就懂个A*就在那里瞎bb
    liuhanyang0
        21
    liuhanyang0  
    OP
       2015-02-15 13:12:44 +08:00
    @kkxxxxxxx 现在玩dota的人都少了
    Yamade
        22
    Yamade  
       2015-02-15 13:26:20 +08:00
    听说要重写?高清版
    kxxoling
        23
    kxxoling  
       2015-02-15 13:33:20 +08:00
    为什么是伯乐在线的链接而没有原文链接?中文是我翻译的,联系过 Patrick 授权的。
    BGLL
        24
    BGLL  
       2015-02-15 13:56:12 +08:00
    wow8
    YDWE
    地精
    falcon05
        25
    falcon05  
       2015-02-15 14:04:02 +08:00 via iPhone
    唯一还在玩的游戏,经典
    liuhanyang0
        26
    liuhanyang0  
    OP
       2015-02-15 15:29:27 +08:00
    @Yamade 高清版不用重写吧
    liuhanyang0
        27
    liuhanyang0  
    OP
       2015-02-15 15:30:28 +08:00
    @kxxoling 只是链接,不是转载哦。我不知道哪个才是原文,把原文链接发给我?
    SuujonH
        28
    SuujonH  
       2015-02-15 16:58:31 +08:00
    @caoyue 我也猜是不是只记录实际操作,然后当场模拟。只要有一天我确认,是的。
    因为在打开那次dota录像看回放的时候发现,因为刚结束,团站我记得那次我是残血打赢了,我看录像却发现我的英雄那波团战死了。
    以至于我的英雄复活以后在家里没有移动过。不知道为什么~ :-(
    kxxoling
        29
    kxxoling  
       2015-02-16 16:45:20 +08:00 via iPhone
    @liuhanyang0 伯乐在线转载没留英文原文的链接。
    VirgilMing
        30
    VirgilMing  
       2015-04-27 00:16:37 +08:00
    @SuujonH 对面肯定有某种特殊的暴击……像金箍棒这种 1 倍暴击之类的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1074 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:30 · PVG 07:30 · LAX 15:30 · JFK 18:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.