macronator/StonedAges

GitHub: macronator/StonedAges

一个基于 Dark Ages 引擎的 2D 同人游戏客户端的社区源码重建项目,旨在通过逆向重建和教育保护的方式保存这一经典 MMORPG 的客户端技术。

Stars: 0 | Forks: 0

# Stoned Ages 一个基于 Dark Ages 引擎的 2D 同人游戏**客户端**(C# / .NET Framework 4.0;通过 Tao 使用 OpenGL,使用 SDL 窗口,irrKlang 音频)。 ## ⚠️ 你必须提供自己的游戏数据 本代码仓库**仅包含代码**。它**不**包含游戏数据(`dats/`、`maps/`、`music/`、`jsons/`、`Images/`)——这些是第三方资产,不在此处分发。要运行客户端,你必须将你自己的该数据副本放置在构建好的可执行文件旁边(请参阅**运行说明**)。 ## 构建说明 需要 **.NET SDK**(或 Visual Studio 2022): ``` dotnet build "Stoned Ages.slnx" -c Release ``` 输出:`StonedAges/bin/Release/net40/Stoned Ages.exe`(+ `Engine.dll`)。 依赖项已包含在 **`lib/`** 目录中(Tao OpenGl / Platform.Windows — MIT;SDL — zlib;Newtonsoft.Json — MIT),**但 irrKlang 除外**,它是专有的,**未**包含在内。请从 下载 *irrKlang .NET 4*,并在构建之前将 `irrKlang.NET4.dll` 放入 `lib/` 目录中。 ## 运行说明 将以下内容放置在构建好的 `Stoned Ages.exe` 旁边: - 数据文件夹:`dats/`、`maps/`、`music/`(`.ogg`,包含一个名为 `68.ogg` 的文件)、`jsons/`、`Images/`、`players/` - 原生运行时库:`SDL.dll`、`OpenAL32.dll`、`alut.dll` 以及 irrKlang 的原生 DLL - `font.fnt`、`font_0.png`、`vers.xml` ## 项目布局 - **`Engine/`** — 图形/数据/IO 库:DAT/EPF/HPF/MPF/SPF/调色板读取器、`TextureManager`、`SoundManager`、输入、字体、图块集、渲染辅助程序。 - **`StonedAges/`** — 游戏客户端:`GameWindow` + 游戏循环、菜单/游戏状态、网络(`ClientSocket`)、实体、地图、物品栏/UI。 ## 架构 一个跨越两个项目的 2D 客户端:**`Engine/`**(图形/数据/IO 库)和 **`StonedAges/`**(游戏客户端 + 约 29k 行的 `GameState.cs`)。客户端运行 `Update`/`Render` 帧循环,通过 Engine 读取器从 `dats/` 归档中加载精灵,并使用 Dark Ages 风格的二进制协议与服务器进行通信。 请参阅 **[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md)** 获取完整指南——包括如何浏览 `GameState.cs` 以及数据包处理器(`…P`)和发送器(`Send…`)的工作原理。 ## 路线图 / 协助方向 进一步开发本项目的好方法: - **记录网络协议** — 将 `…P` 处理器和 `Send…`/`Request…` 发送器转换为书面的操作码表,以便构建兼容的服务器。 - **兼容的服务器** — 该协议是 Dark Ages 风格的;将客户端与开源服务器配对是使其恢复可玩性的关键。 - **外部化服务器地址** — `ServerConnect()` 硬编码了(已下线的)原始地址;将其移动到配置文件可让客户端开箱即用地连接到任何服务器。 - **完成反编译清理** — `GameState.cs` 中剩余的“巨无霸”方法(`Update`、`UpdateInput`、`InitializeMenu`、`Render`、`DialogPopup`、`ChatMsg`、combat)。具体方案请参阅 CONTRIBUTING。 - **记录 Engine 数据格式** — DAT/EPF/HPF/MPF/SPF/调色板读取器即为规范;一份书面的格式参考和资产工具将对所有人大有裨益。 - **现代化** — 一旦 net40 的清理工作进展足够顺利,便将其并行移植到最新的 .NET 版本。 ## 免责声明 同人 / 保护项目。**未**得到 KRU Interactive / Nexon 或任何版权持有者的附属、认可或关联。“Dark Ages”及任何游戏资产均属于其各自所有者的财产;你必须拥有与此客户端一起使用的任何数据的合法副本。仅出于教育和保护目的提供。 ## 许可证 请参阅 [`LICENSE`](LICENSE) — MIT,归功于原作者。这是一个社区重建项目;如果原作者要求移除,我们将予以尊重并执行。
标签:2D游戏, .NET Framework, OpenGL, SDL, 客户端, 游戏开发