[红警2MOD 自定义引擎向导]打磨属于你自己的Mod制作利器-Ares
掉叶粽
2020年08月10日 17:02
收录于文集
共3篇

Ares可以说是现代红警Mod都会集成的一个模块了,对于玩家来说,可以不在意;对于Moder来说,要学习它的用法。然而对于一位想修改YR平台,在其上大展身手,就必须要了解怎么修改编写Ares了。

Ares是什么?

Ares的官方介绍如下:

Ares is the new tool to extend the capabilities of Yuri’s Revenge and to fix bugs in the game engine. It was conceived by pd near the end of 2007, developed over the years by The Ares Contributors and first released to the public in 2010.

This documentation is aimed primarily at mod authors wishing to make use of the new functionality that Ares offers.

Ares is incorporated into Yuri’s Revenge via the use of Syringe, a program initially developed by pd to ‘inject’ DLL code into a running executable without modifying the executable file itself.

In this case, the Ares DLL is injected into the Yuri’s Revenge 1.001 main executable, gamemd.exe. The properly patched original CD version as well as the compilations The First Decade and The Ultimate Collection are supported.

Syringe can be run directly via a command line prompt or automatically run from external launcher applications provided by a mod. See the respective documentations of those programs for further details.

简单来说就是:Ares大大的增加了YR的可扩展性,使得Moder能在其上做到更多效果,以及修复的各种Bug。它通过注入器(Syringe)来将自己的代码注入到YR中,是外挂式扩展模块。

Ares的logo

为什么需要改引擎

在以前,到现在,引擎都存在着巨大的限制。

关于存在的各种引擎限制,在此引用@日小皮Fantasycho的文章:

https://space.bilibili.com/242987347​

如果引擎越强大,那么moder可发挥的空间就越大。以前的moder无奈于引擎的限制,各种奇思妙想难以实现,只能被迫砍设定。然而,其中偶尔有出少许鬼才,通过各种一般都想不到的方式实现了自己的想法,在极大的引擎限制下,走了各种不寻常的道路,饶了地球114514圈,实现了自己的奇思妙想,引得众moder拍手叫绝,纷纷表示很彳亍。

先辈也觉得很彳亍

现代moder发挥空间相比以前,扩大了许多,但仍有巨大的引擎限制。即使是能把代码写的天花乱坠的鬼才也无法想到方案解决。这时候,只能给引擎修改者甩锅了。

木得界人才十斗,其他约十斗,引擎修改者约零斗(噔噔咚),所以引擎修改者是稀缺的,无法满足大量moder的各种需求。目前Ares的官方团队仅剩AlexB一人,本人在工作之余抽出空来给自己所爱的游戏编写Ares,由于是一人团队,已经无法满足大量moder的需求。

 

于是我们现在在此给各大红警爱好者指路,指明引擎修改的学习方向,希望能改变零斗的惨状。

为什么选择Ares?

以前引擎修改者们通过直接修改YR引擎本身,在无源码的情况下手撕汇编。难度可想而知,不是大牛是难以进行修改的。

Ares相比NP,在编写代码上有着极大的方便性。Ares用C++编写代码,混合少量汇编代码,可阅读性大大提高,能迅速了解编写者在写什么,使得功能实现起来更容易,更容易进行模块的管理等。

自己定制Ares有什么好处?

①    添加你希望实现的功能,但是还没有人做过的。

②    针对问题编写特殊功能,或者抽象出泛用性更高的逻辑功能(推荐)。

③    修复还没有人修复过的Bug,但这对你来说是需要解决的。

④    修改你觉得不实用的官方功能,让它符合你的喜好。

⑤    通过自己编写有趣的逻辑,让MOD的可玩性增强。

⑥    通过对引擎的绘制微调,让你的MOD可以有绚丽的画面表现力。

⑦    使得制作者们能够在更大的空间内进行创作,满足各种奇思妙想。

⑧    让YR与外部软件对接,例如YR与DTA的对接。

Ares怎么修改?

各大爱好者首先遇到的第一道门槛:无法编译

由于github上的资源介绍较少,我们又难以跟外国开发者进行交流。所以大多数爱好者们就连开锁的钥匙都没找到。

 

不过不必担心,我们已经整理好了可以马上就编译的版本。

整理好的源码(Ares0.A)地址:

https://gitee.com/Zero_Fanker/Ares

注意Ares依赖于YRpp(详细见页面的Readme),要编译必须要有YRpp,同时也必须是0.A版本的YRpp。

 

由Hares团队编写的wiki:

https://gitee.com/Zero_Fanker/Ares/wikis/%E5%BC%95%E8%A8%80

 

我们在wiki上编写了一些可能会需要的知识和遇到的问题,以解决各位修改者的疑问。

由于编写时长较短,wiki很不完善,欢迎各位提出问题(提issue),也可以加我们建的群:820888931,我们会适当的给出建议,但不会明确给出解决方案,例如贴代码。

 

下面我们给不同层次的人提出一点建议。

啥都不懂的小白:先学C++,掌握类,指针,宏,模板等的用法,可以尝试阅读源码。

掌握C++,不会反汇编:建议多看源码(特别是YRpp)可以在已有的功能上进行修改,但是难以添加大部分功能,建议进一步学习反汇编知识。

掌握C++和反汇编:看几遍Ares和YRpp的代码就知道怎么搞了(大概)。

结语

其实本文章早已有计划发布,由于各种原因一直咕到现在(

Ares仅仅是一个部分,现代Mod出现了另外一种标配,Cncnet Client(全称XNA Cncnet Client,俗称DTA)各大爱好者可以选择不同的魔改道路,同样可以加入我们的群讨论。

 

各路大牛在熟悉了Ares的魔改之后,若有兴趣,可以加入我们Hares团队,共同打造更好的平台,但是不一定会马上共享源码,请见谅。

 

现代MOD更追求用现代的方法使得Mod更容易制作,追求批量化高质量,例如艾木魁在编写沙雕警戒时的批量化代码生成;DTA的作者Rampastring制作的client使得mod能拥有更高级的UI,更容易被定制,调试;以及某个正在开发中的全新地图编辑器。在此欢迎各路神仙八仙过海各显神通。

 

希望各大爱好者不要滥用技术(用于非法用途,不道德用途、引起他人厌恶甚至非法牟利等)。

 

后面我们会不定期在码云或者B站上更新资料和视频,各位爱好者可以酌情观看。