Thanks to visit codestin.com
Credit goes to github.com

Skip to content

暗黑破坏神:1996 年电脑游戏背后的魔法

License

Notifications You must be signed in to change notification settings

yuanxiaoming8899/devilution

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,505 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

构建状态 构建状态 构建状态 下载 Github 星星

Discord 频道 Discord 聊天频道

邪术

暗黑破坏神:1996 年电脑游戏背后的魔法

注意,Devilution 需要 的正版diabdat.mpq。本项目不提供任何暗黑破坏神 1 游戏资产。要获取游戏资产的正版副本,请参阅暗黑破坏神 1 的 GoG 版本

介绍

虽然暴雪的大多数游戏都获得了多年的喜爱和支持,但《暗黑破坏神》却一直默默无闻。它被放弃,转而开发续集,但仍然充满了漏洞和未完成的潜力。这款游戏最后一次打补丁是在 2001 年,之后就完全停产了,我想解决这个问题。我十几岁的时候经常玩《暗黑破坏神》,但随着时间的推移,在较新的硬件上运行这款游戏变得越来越困难。《暗黑破坏神 II》缺乏许多改进也让它搁浅了。起初,这款游戏似乎注定要失败,但值得庆幸的是,1997 年的一个小疏忽让它得以重生。

暗黑破坏神的开发团队将源代码交给Synergistic Software开发《地狱火》的同时,开始着手开发《暗黑破坏神 II》。然而鲜为人知的是,源代码还被交给了Climax Studios开发 PlayStation 移植版。索尼一向以放任不管而闻名,尤其是在日本。从泄露原型到整个游戏源代码,暗黑破坏神也不例外。符号信息被意外地留在了日本移植版中。符号文件通常用于调试,它包含编译时生成的所有内容的映射。这包括文件名、函数、结构、变量等等!更糟糕的是,PC 版本中隐藏了一个特殊版本DIABDAT.MPQ -> D1221A.MPQ -> DIABLO.EXE!此版本包含调试工具和断言字符串,进一步泄露了代码信息。

经过数月的努力,修复了这些错误,Devilution 诞生了。我向你们展示了暗黑破坏神原始源代码的重建版本!庇护所的英雄们将再次回到深渊!

目的

有了源代码,《暗黑破坏神》的更新和维护就变得容易得多。多年来,模组制作者不得不依赖繁琐的代码编辑和内存注入。有些人甚至走得更远,颠覆了游戏的大部分或全部。问题是他们很少分享他们的工作。通常这是一个单人工作,由于需要大量时间或缺乏兴趣,他们继续自己的生活。这让我们回到原点,不得不再次投入无数个小时的工作。Devilution 旨在通过最终向社区开放源代码来解决这个问题。

为了确保所有内容都得到保留,Devilution 保留了所有最初设计的内容。这甚至包括原始游戏中的错误和编写糟糕的代码。这样,它就可以作为开发人员工作的基础,使更新、修复和将游戏移植到其他平台比以前容易得多。

作为一个附带目标,Devilution 试图记录最终游戏中未使用和被删减的内容。《暗黑破坏神》的开发在接近尾声时仓促完成——许多想法被废弃,多人游戏很快被黑客入侵。通过检查源代码,我们可以看到计划开发的各种怪癖。

编译

Diablo 是在 Windows 95 上使用 Visual C++ 4.20 和更高版本的 5.10 和 6(用于较新的补丁)开发的。Devilution 旨在与原始工具和现代工具兼容,但将遵守原始编译器使用的标准。

使用 Visual C++ 6 进行构建

  • 打开项目工作区Diablo.dsw,选择DebugRelease,然后Build Diablo.exe

要构建一个编译后函数尽可能接近原始版本的二进制文件,请使用Visual C++ 6和 Service Pack 5 以及Processor Pack这对于正确生成代码非常重要!)您还需要Visual C++ 5Service Pack 3,因为原始二进制文件与旧链接器链接在一起。遗憾的是,您不能直接从 VC6 使用旧链接器,因此您需要手动链接或通过MakefileVC项目根目录中的链接。

使用 Visual Studio 2010-2017 进行构建

  • 打开项目解决方案Diablo.sln,选择DebugRelease,然后Build Solution

确保禁用数据执行保护。Storm.dll使用动态编译来提高渲染性能,但未能将生成的内存页面标记为可执行文件,导致尝试绘制时出现保护错误。

  • 配置选项->链接器->高级->数据执行保护(DEP)。
  • 将此值设置为:否(/NXCOMPAT: NO)。

如果您使用的是 Visual Studio 2017,您还需要安装以下依赖项。请确保在安装时启用这些依赖项(或修改您的安装):

  • 需要“Windows 8.1 SDK”(目标平台)
  • 需要“适用于 x86 和 x64 的 Visual C++ MFC”(对于 afxres.h)
  • 需要“Windows Universal CRT SDK”(对于 ctype.h)

使用 MinGW 进行构建

  • make MINGW32=1针对MinGW32makeMinGW64执行可选择添加debug以使用调试功能进行构建。

若要在不同平台上使用 MinGW64 进行编译,请参考相应的文档:Linux | Windows | Mac

调试构建功能 |兼容性矩阵 |故障排除

安装

编译完成后,Devilution 二进制文件将替代Diablo.exe。需要包含原始游戏补丁到 1.09(b) 的以下文件:DIABDAT.MPQDiabloUI.dllSmackW32.dllStandard.snpStorm.dll。如果COPYPROT在编译时定义了 ,则还需要暗黑破坏神 CD。

此外,建议使用 Strange Bytes 的DirectDraw 补丁来帮助解决兼容性问题并在窗口模式下运行游戏。

多人游戏

Devilution 可通过 GoG 的 Battle.net 服务器和使用 ipx-wrapper 的 IPX 运行。此外,如果Standard.snp使用星际争霸 1.16.1,还可以进行本地 UDP 游戏。有 ZeroTier 等程序可以全局连接 UDP。

贡献

指南

改装

以下是一些对游戏进行的简单改进的示例。未来计划创建用于设计地下城和图形的工具。

示例 1:怪物生命条和物品突出显示

怪物生命条+物品

示例 2:类似《暗黑破坏神 2》的新交易屏幕

新的交易屏幕

常问问题

点击显示

哇,这是否意味着我现在可以免费下载和玩暗黑破坏神?

不,您需要访问原始游戏的数据。如果您没有原始 CD,那么您可以从 GoG.com 购买暗黑破坏神。或者,您也可以使用http://ftp.blizzard.com/pub/demos/diablosw.exespawn.mpq版本,并使用定义的 SPAWN 标志进行编译。

很酷,所以我启动了你的模型,但是没有 1080p 或新功能?

为了便于记录,Devilution 的目标是保持原始代码不变。

那么您将来会增加跨平台支持或新功能吗?

是的!这是作为一个附带项目完成的,请参阅DevilutionX

那么地狱火又如何呢?

《地狱火》对开发者来说有点失败。基础游戏完成后可能会提供支持。

我想就是这样了,但是 Devilution 合法吗?

这是一个棘手的问题。根据 DMCA,逆向工程在文档和互操作性方面有例外。Devilution 提供了实现后者所需的必要文档。然而,它完全处于灰色地带。真正的问题是暴雪是否认为有必要采取行动。

致谢

  • 2018 年由 GalaXyHaXz 进行逆向工程
  • 避难所- 广泛记录暗黑破坏神游戏引擎
  • BWAPI 团队- 提供与 Storm 配合使用的库 API
  • Ladislav Zezula - 逆向 PKWARE 库,进一步记录 Storm
  • fearedbliss——令人敬畏
  • Diablodin - 提供有关 PSX 版本的更多信息
  • Climax Studios 和 Sony - 秘密协助他们的卧底 QA :P
  • 暴雪北方——等一下,这是一个打字错误!
  • 抑郁症——我生命中四个月的时间浪费在这件事上的原因;)

并特别感谢所有支持和为这个项目努力的人们!<3

更新日志

从开始到发布

合法的

Devilution 已公开发布,并根据可持续使用许可发布(请参阅许可

此存储库中的源代码仅供非商业用途。如果您使用源代码,则不得向其他人收取访问源代码或其任何衍生作品的费用。

Battle.net(R) - 版权所有 (C) 1996 Blizzard Entertainment, Inc. 保留所有权利。Battle.net 和 Blizzard Entertainment 是 Blizzard Entertainment, Inc. 在美国和/或其他国家/地区的商标或注册商标。

Diablo(R) - 版权所有 (C) 1996 Blizzard Entertainment, Inc. 保留所有权利。Diablo 和 Blizzard Entertainment 是 Blizzard Entertainment, Inc. 在美国和/或其他国家/地区的商标或注册商标。

Devilution 及其任何维护者与暴雪娱乐 (R) 均无任何关联或认可。

About

暗黑破坏神:1996 年电脑游戏背后的魔法

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 93.2%
  • C 6.6%
  • Other 0.2%