Skip to content

yuanxiaoming8899/devilution

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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%