V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liuhanyang0

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

  •  4
     
  •   liuhanyang0 · Feb 15, 2015 · 14059 views
    This topic created in 4098 days ago, the information mentioned may be changed or developed.

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

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

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