OpenDiablo2
加入我们的 Discord!
开发直播
在 Patreon 上支持我们
我们还在开发一个工具集:
https://github.com/OpenDiablo2/HellSpawner
请考虑也帮助这个项目!
关于这个项目
OpenDiablo2 是一款与2000年代游戏相同的 ARPG 游戏引擎,并支持玩 Diablo2。该引擎是用 golang 编写的,并且是跨平台的。但是,请注意,该项目未附带玩《暗黑破坏神2》所需的资产或内容。您必须在计算机上安装合法购买的《暗黑破坏神2》及其扩展的《毁灭之王》(Lord of Destruction)副本,才能在此引擎上运行该游戏。如果您有磁盘的原始副本,那么这些文件也应该可以正常工作。
我们目前正在开发完整播放暗黑破坏神2所需的功能。完成后,我们将致力于扩展该项目,以包括用于改装的工具和插件支持,以及使用引擎编写全新的游戏。
请注意,该游戏并非由暴雪或其母公司 Activision 开发或认可。
暗黑破坏神2及其内容是 ©2000 Blizzard Entertainment,Inc. 保留所有权利。
Diablo 和 Blizzard Entertainment 是 Blizzard Entertainment,Inc. 在美国和/或其他国家/地区的商标或注册商标。
所有其他商标均为其各自所有者的财产。
构建
要把项目拉下来,请运行 go get github.com/OpenDiablo2/OpenDiablo2
在 Windows 上,此文件夹很可能位于 C:\users\{you}\go\src\github.com\OpenDiablo2\OpenDiablo2
在根文件夹中,运行 go get -d 下拉所有依赖项。
要运行项目,请从根文件夹运行 go run。
您也可以在 VSCode 中打开根文件夹。 确保已安装 ms-vscode.go 插件。
Linux
有几个依赖项需要额外安装。 要安装它们,可以在项目根文件夹中使用 ./build.sh -- 该脚本为您完成安装。
贡献
该项目的导入使用 github.com/OpenDiablo2/OpenDiablo2。 这意味着即使您克隆了存储库,也不会进行更改,因为它仍将从主存储库的文件中提取。 为了使用您的本地版本,将以下内容添加到基本文件夹中的 go.mod 中:
replace github.com/OpenDiablo2/OpenDiablo2 => /your/forked/import/path
这将告诉 go 使用您的本地路径,而不是正式的仓库。 确保从您的请求请求中排除此更改!
如果发现要修复的东西显然已损坏,请创建一个分支,提交您的代码,然后提交拉取请求。 如果您想查看它是新增功能还是缺少的功能,请添加问题并进行说明!
如果您想提供帮助并且不确定如何操作,则可以浏览所有未解决的问题和任务,或者在我们的不和谐服务器上询问任务。
VS Code 扩展
建议使用以下扩展名来处理此项目:
- ms-vscode.go
- defaltd.go-coverage-viewer
第一次打开工作区时,Visual Studio Code 将自动建议安装这些扩展。
另外,您也可以通过以下方法进行设置:转到设置 Ctrl+,展开“扩展”并选择“转到配置”,然后在 settings.json 中单击“编辑”。只要在适当的地方粘贴该部分即可。 或者你也可以点击设置 Ctrl+,展开扩展并选择 Go configuration,然后点击 settings.json 中的 Edit。把这个部分粘贴到合适的地方。
配置
引擎是通过 config.json 文件配置的。默认情况下,该配置假设你已经通过官方的暴雪暗黑2安装程序使用默认的文件路径安装了暗黑2和资料片。如果你不在 Windows 上,或者已将游戏安装在其他位置,则可能需要调整基本路径。
概要分析
有许多分析器选项用于调试性能问题。可以通过提供以下命令行选项来启用它们,并将它们保存在 pprof 目录中:
go run . --profile=cpu
可用分析器:
cpu
mem
block
goroutine
trace
thread
mutex
您可以使用以下命令导出分析器输出:
go tool pprof --pdf ./OpenDiablo2 pprof/profiler.pprof > file.pdf
在游戏中,您可以通过按〜并键入 dumpheap 来创建堆转储。 将 heap.pprof 写入 pprof 目录。
您可能需要安装 Graphviz 才能转换探查器输出。
路线图
有一个正在进行的项目路线图,它将随着时间的推移、随着新的需求而更新。
致谢
- Diablo2 Logo
- Jose Pardilla (th3-prophetman)
- DT1 File Specifications
- Paul SIRAMY (http://paul.siramy.free.fr/_divers/dt1_doc/)
- Other Specifications and general info
- Various users on Phrozen Keep