最近不少公众号,甚至是大V都在转发红警代码开源的文章,有的是23年6月份就说这事了,有的是这几天发布的,而文章内容大都有这么一词,“最近”,也就是红警代码开源的时间。小义就纳闷了,红警95版代码2020年的时候不就开源了吗?难道又开源其他东西了,仔细核查才发现是同一件事,互联网果然是没有记忆的,以前的热点现在拿出来炒也很香。
红色警戒,是当年西木头(WestWood)打造的爆款即时战略游戏之一,可以说是很多80后90后的回忆。在零几年网吧还火遍大江南北的时候,红警也是网吧必装游戏之一。那时候去网吧,一眼望去一半以上机子都是红警画面。猜猜下面这版本的红警全名叫什么?
在2020年6月份的时候, GitHub Trending榜单,有个项目偷偷爬上了热榜的位置,它就是:CnC_Remastered_Collection。里面存放的,就有国外知名电子游戏公司 Electronic Arts所开源的经典游戏代码:Red Alert(红色警戒)。项目地址https://github.com/electronicarts/CnC_Remastered_Collection,具体代码见Red Alert文件夹。
这款游戏主要是用 C++ 写的,随便打开一个文件,都可以发现其代码之整齐,注释之详细,方法之巧妙,让人不得不佩服。
/***********************************************************************************************
* AircraftTypeClass::From_Name -- Converts an ASCII name into an aircraft type number. *
* *
* This routine is used to convert an ASCII representation of an aircraft into the *
* matching aircraft type number. This is used by the scenario INI reader code. *
* *
* INPUT: name -- Pointer to ASCII name to translate. *
* *
* OUTPUT: Returns the aircraft type number that matches the ASCII name provided. If no *
* match could be found, then AIRCRAFT_NONE is returned. *
* *
* WARNINGS: none *
* *
* HISTORY: *
* 07/26/1994 JLB : Created. *
*=============================================================================================*/
AircraftType AircraftTypeClass::From_Name(char const * name)
{
if (name != NULL) {
for (int classid = AIRCRAFT_FIRST; classid < AIRCRAFT_COUNT; classid++) {
if (stricmp(As_Reference((AircraftType)classid).IniName, name) == 0) {
return(AircraftType)classid;
}
}
}
return(AIRCRAFT_NONE);
}
当然,当时开源的红警1代码也只是一部分,是为了允许 Mod 社区更好的改变游戏行为,从而帮助EA公司发布这款游戏的重置版。当时还有不少人爆料之所以红警2不开源是因为西木头工作室被EA收购了之后红警2的源码没人保管造成了丢失,不得不说是一个遗憾。
让我们再把时间拉回到现在,相信不少人还是不知道红警1代码开源,所以才会有不少公众号断章取义,盲目跟风报道,不过只要打开git项目地址就可以发现端倪。虽然是炒冷饭,4年前的事还要拿到现在来说,但小义也希望能够有更多人关注这个事情,共同回忆我们这一代人的青春。