Skip to content

Repository files navigation

OpenYR

GPL v3

概述

OpenYR 是由 sovietianqi 发起并维护的《命令与征服:尤里的复仇》开源引擎实现项目。项目基于对原版 gamemd.exe 可执行文件的二进制逆向分析,结合 YRpphttps://github.com/Phobos-developers/YRpp) 库的接口定义与数据结构研究成果,对原版引擎的核心逻辑进行独立重建与重新实现。OpenYR 旨在摆脱原版二进制文件的封闭性约束,为社区提供一个开放、可扩展、可移植的引擎替代方案,同时为 MOD 开发、工具链集成及跨平台适配提供更广阔的技术空间。

当前状态

🚧 早期开发阶段,持续建设中 —— 项目刚刚完成初始提交,核心架构与基础组件正在逐步搭建。由于基于逆向分析的重建工作存在固有的不确定性与理解偏差,当前版本尚未实现完整的游戏可玩性,且可能存在与原版行为不符的逻辑错误。欢迎开发者参与代码审查与测试反馈,共同完善引擎实现。

核心技术方向

OpenYR 从架构设计的源头出发,对原版引擎进行了全面重构,主要技术方向包括:

1. 模块化架构设计

项目采用模块化分层架构,各核心子系统独立封装,包括但不限于:

  • Core:引擎核心基础设施
  • Game:游戏主循环与状态管理
  • Combat:战斗逻辑与伤害计算
  • AI:人工智能决策系统
  • Audio:音频播放与管理
  • FileFormats:Mix / INI / SHP / VXL 等资源文件解析

各模块间通过清晰的接口交互,降低耦合度,便于独立测试与替换。

2. 现代化构建体系

  • 采用 CMake 作为构建系统,支持多平台编译配置
  • 使用 C++ 作为开发语言,充分利用现代 C++ 特性提升代码表达力与安全性
  • 依赖管理清晰,便于集成第三方库

3. 开放的游戏逻辑扩展

  • 游戏逻辑完全由源代码实现,不再受限于原版硬编码行为
  • 为 MOD 作者提供更直接的逻辑修改入口,无需依赖注入或 Hook 手段
  • 便于实现原版引擎难以支持的新机制与新玩法

4. 跨平台可移植性

通过独立于 Windows 专有 API 的抽象层设计,OpenYR 具备向其他操作系统(如 Linux、macOS)移植的潜力,为更广泛的玩家群体提供原生体验的可能。

技术架构

组件 说明
开发语言 C++
构建系统 CMake
逆向分析基础 gamemd.exe(尤里的复仇 1.001)
参考实现 YRpp 支持库(https://github.com/Phobos-developers/YRpp)
目标游戏 命令与征服:尤里的复仇
许可协议 GNU General Public License v3.0

目录结构

OpenYR/
├── src/
│   ├── AI/            # 人工智能系统
│   ├── Abstract/      # 抽象基类与接口定义
│   ├── Animations/    # 动画系统
│   ├── Audio/         # 音频引擎
│   ├── COM/           # 组件对象模型
│   ├── Combat/        # 战斗逻辑
│   ├── Containers/    # 容器与数据结构
│   ├── Core/          # 引擎核心
│   ├── FileFormats/   # 资源文件格式解析
│   ├── Game/          # 游戏主逻辑
│   └── Helpers/       # 辅助工具与实用函数
├── CMakeLists.txt     # CMake 构建配置
└── README.md          # 项目说明

构建指南

环境要求

· 支持 C++17 或更高版本的编译器(MSVC / GCC / Clang) · CMake 3.10 或更高版本 · 游戏原版资源文件(用于测试与运行)

构建步骤

git clone https://github.com/Sovietianqi/OpenYR.git
cd OpenYR
mkdir build && cd build
cmake ..
cmake --build . --config Release

具体构建细节将在项目稳定后补充完善。

免责声明

本项目为开源学习与研究工作的一部分,旨在促进对经典游戏引擎的技术理解与社区创新。使用者需明确知晓以下条款:

· 非官方性质:OpenYR 并非 Electronic Arts 或其关联公司的官方产品,亦未经授权或认可。 · 逆向工程风险:项目基于对原版二进制文件的逆向分析,可能涉及法律灰色地带。使用本项目的源代码或编译产物所产生的任何法律后果,由使用者自行承担。 · 不保证兼容性:由于逆向分析存在固有误差,OpenYR 的实现可能与原版行为存在差异,也可能导致游戏资源不兼容、存档损坏或其他不可预见的问题。项目团队不对因使用本软件而产生的任何损失负责。 · 仅供研究目的:建议使用者仅将本项目用于技术学习、个人研究或非商业用途,严禁用于侵犯任何第三方权益的行为。

贡献与支持

OpenYR 目前处于早期开发阶段,诚邀社区开发者参与共建。

· 问题反馈:请通过本仓库 Issues 提交 · 代码贡献:欢迎提交 Pull Request · 讨论交流:欢迎通过 Issues 或邮件与作者沟通


项目仍在快速发展中,后续将陆续补充设计文档、API 参考与完整的构建指南。

About

Open-source Yuri's Revenge engine reimplementation

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages