samp | open.mp 联机社区论坛
圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - 打印版本

+- samp | open.mp 联机社区论坛 (https://open-mp.cn)
+-- 板块: SA-MP (https://open-mp.cn/forumdisplay.php?fid=12)
+--- 板块: 综合讨论 (https://open-mp.cn/forumdisplay.php?fid=13)
+--- 主题: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 (/showthread.php?tid=30)



圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - 小鸟unsigned - 03-24-2026

圣安地列斯联机二十年:SA:MP 与 open.mp 历史



2026 年。GTA6 即将在今年 11 月发售,新的时代正在敲门。

也是在这一年,《侠盗猎车手:圣安地列斯》PC 版上市整整二十年,SA:MP 的第一个可玩版本也已走过二十个年头。

一座从未被设计为联机游戏的城市,有人在这里认识了一辈子的朋友。有人在这里第一次学会了写代码。有人在角色扮演服务器里扮演一个JC或一个黑帮头目。有人在一个无聊的下午打开了游戏,然后就再也没有那个下午了。

SA:MP 从来不是一个精致的产品。它是一群人强行塞进一款单人游戏里的多人世界。它有数不清的 bug,有争议不断的管理者,有过漫长的停滞与分裂——它也有 open.mp,有一批不肯让它消失的开发者,有如今可以在手机上随时上线的客户端,不管你还记不记得服务器的 IP,不管你当年是服主、脚本开发者,还是只是一个普通的玩家——你在这里的时间是真实的。

GTA6 会带来它的世界。但圣安地列斯的街道,还在。服务器还在跑,玩家还在上线,有人还在第一次输入 /register。

前言



引用:本文以客观事实为准绳。所有关键事件、人物声明、原始帖文,均完整收录于正文之中,不以外部链接替代实质内容。链接仅作考证索引,供读者溯源查验,不构成叙述本身的一部分。

凡引用原文处,均以引用块标注,并注明来源与时间。凡转述处,均忠实于原意,不加渲染,不作价值评判。

这是一部关于热爱、控制、背叛与重建的故事,也是一个游戏社区在二十年间走过的记录。



卷首语:一个不该有多人模式的游戏



2004 年 10 月 26 日,《侠盗猎车手:圣安地列斯》(Grand Theft Auto: San Andreas)在 PlayStation 2 平台正式发售。2005 年 6 月 10 日,PC 版本上市。

这款游戏从未被设计为多人联机。Rockstar Games 为它设计了一个宏大的单人故事——主角 CJ 在帮派、JC与腐败之间挣扎求生,横跨三座城市、一片乡野。游戏没有联机大厅,没有服务器浏览器,没有任何供多人游玩的接口。

然而在 GTA 模组社区里,有一批人从不接受"这不可能"这个答案。

他们是一群来自世界各地的年轻人,大多数有着普通的日间生活——学生、程序员、上班族——他们一点一点地撬开这款游戏的外壳,试图将它改造成一个可以容纳数百人同时在线的多人世界。

这便是 SA:MP 的起点。



第一卷:诞生(2004–2006)



第一章 从 Vice City 到 San Andreas



在《圣安地列斯》PC 版尚未发售之前,GTA 模组社区已经有人在为《GTA 罪恶都市》(Vice City)制作多人联机改造,这个项目被命名为 VC:MP(Vice City Multiplayer)

领导这支早期团队的,是一个网名叫 kyeman 的开发者,真名 Kye Bitossi。他在 GTA 模组社区中颇有声望,是公认的技术核心人物。

2005 年 4 月初,kyeman 在全球最大的 GTA 社区论坛 GTAForums 上发布了一篇帖子,正式宣布 SA:MP 项目的存在。帖子标题是:

引用:"[WIP] SA-MP: Multiplayer for San Andreas PC"
——kyeman,GTAForums,2005年4月3日

消息一出,社区立刻沸腾。预告视频和截图开始在各大 GTA 论坛流传,项目的小型社区论坛在尚未开放任何测试的情况下,已吸引了约 120 名注册用户

公开 beta 测试期间,服务器承载能力远不及涌入的测试者数量,进入测试服务器需要排队等候,等待时间往往很长。这种盛况,是对整个项目最好的背书。

进入开发团队的成员,来自 GTA 模组社区的各个方向,过去的SA-MP 0.2开发者和测试者包括:kyeman、spookie、Y_Less、mike、jax、Mike、Cam、adamcs、bakasan、Born Acorn、Dalpura、Damian、Delfi、dexx、DrAke$、Drift、ECLiPSE、f3llah1n、him selfe、illspirit、littlewhitey、MrJax、njr1489、Posty、PsYcHoGoD、Shizz、Simon、sockx、squiddy、Static、steve-m、The Azer、Trix、Wacko、XcR、[ULK]Crack,其中许多人既是开发者也是测试员。

他们大多是业余爱好者,利用业余时间共同推进这个无人出资的项目。

第二章 合作模式的争议与团队第一次动荡



然而,SA:MP 从一开始便并非一片和谐。

开发团队内部,关于游戏核心玩法的方向,爆发了一场至今仍被一些老玩家提起的根本性争论:

一部分人主张将 SA:MP 建设为一款合作模式(Co-op)游戏,设想最多 6 名玩家共同游玩,保留完整的 NPC 行为、警察追捕系统与任务流程,让多人体验尽可能接近单人游戏的质感;

另一方,以 kyeman 为首,坚持将其建设为一个能够容纳大量玩家同时在线的大规模死亡竞技(Deathmatch)式多人服务器。

这场分歧并未在内部平息,而是溢出到了 GTANet 社区论坛,引发了玩家的大量公开讨论与批评,负面声音之多,令整个项目团队承受了巨大压力。

2005 年 9 月 18 日,kyeman 在持续的内外压力下,宣布因个人事务无暇继续领导项目,将主导权移交给团队二号核心开发者 spooky

spooky 接手后,将项目更名为 GTA:Multiplayer(GTA:M),以示风格与管理方式的转变。

然而,约一个月后,kyeman 重新归队。合作模式方案在此期间被彻底搁置,项目名称最终改回 San Andreas Multiplayer(SA:MP),方向确定为大规模多人在线游戏。

关于"Grand Theft Auto"字样是否应出现在项目名称中,团队在命名时也有过考量——使用 Rockstar 的商标可能引发法律风险,最终以缩写"SA:MP"作为正式名称,在一定程度上规避了这一问题。

第三章 2006 年:第一个可玩版本



在经历了那段动荡之后,SA:MP 于 2006 年 发布了第一个向公众开放的可玩版本。

从技术层面看,这是一项相当可观的成就:开发者们在完全没有官方支持的前提下,用逆向工程的方式强行将联机功能"嵌入"进一款从未被设计为多人联机的作品,使其能够支持最多 1000 名玩家同时在线,在同一片虚拟的圣安地列斯地图中驾车、射击、竞速。

服务器使用 Pawn 作为脚本语言,服务器主可以自行编写游戏模式(GameMode)与过滤脚本(FilterScript)。这一设计赋予了整个生态极高的开放性——任何人只要学会 Pawn,就可以在圣安地列斯的地图上建造出属于自己的世界。

0.2.2 版本是这一阶段的代表版本,也是现存有据可查的最早可玩 SA:MP 版本记录之一。



第二卷:黄金时代与暗流(2006–2009)



第四章 版本迭代与社区的兴盛



2006 年至 2014 年,是 SA:MP 最活跃的开发阶段。Kalcor(此时 kyeman 已开始使用这个网名)陆续发布了一系列重要版本:

0.2 系列(2006–2008)期间,SA:MP 奠定了基本架构,确立了 Pawn 脚本语言作为游戏模式开发的标准。这段时间并非全然顺利——一次大规模安全漏洞爆发,险些让整个团队就此放弃。而最终让他们坚持下来的,是一份在线请愿:短短时间内,数以千计的玩家签名支持 SA:MP 继续存在。这份来自社区的温度,让开发者重新燃起了动力。

0.3a(约 2010 年)是 SA:MP 历史上最具里程碑意义的版本之一。单服务器玩家上限从原来的数百人扩展至 500 人(后续版本更高),引入了鼠标驱动的记分板与聊天界面,增加了可编程的 NPC 机器人系统(允许服务器创建可驾驶火车、飞机的脚本机器人),网络同步质量大幅改善。

此后数年,0.3c、0.3d、0.3e、0.3x、0.3z 相继发布,带来了音频流媒体支持、延迟补偿模式、自定义对象渲染距离、新的安全更新等功能。每一个版本的发布,都在 SA:MP 官方论坛的"新闻与更新"板块留下了一条由 Kalcor 亲自发布的公告。

2015 年 5 月 1 日,Kalcor 发布了 SA:MP 0.3.7,这是 SA:MP 有史以来最后一个带有实质性新功能的正式版本。0.3.7 新增了超过 500 个物体 ID(含特技物件与地形物件)、界面字体大小调整选项、若干新版警察皮肤、服务端对车门与车窗的控制权、为未标记警车添加警报灯的能力,以及一个简单的静态 NPC actor 系统。

这个版本在此后数年间成为整个 SA:MP 生态的事实标准,直至今日仍是服务器主最常使用的版本。

与此同时,这个社区在技术之外也在野蛮生长。角色扮演(RP)服务器在这段时期走向成熟,玩家们在 SA:MP 的世界中建构起了拥有经济系统、帮派政治、法律体系的虚拟社会。来自世界各地大型服务器先后崛起。SA:MP 不再只是一个小众模组,它已经成为一个真实的、活跃的、跨越语言与国境的国际社区。

第五章 Y_Less 的双重身份与 YSI 的诞生



在 SA:MP 的所有社区开发者中,有一个人的名字几乎是无可回避的:Y_Less,真名 Alex Cole。

Y_Less 最初以 beta 测试员的身份加入 SA:MP 团队,随后正式成为开发团队成员,主要负责 Pawn 脚本语言相关的功能开发。然而,他与 Kalcor 之间的分歧,从他正式入队的第一天起便已埋下。

用 Y_Less 自己后来的话说:

引用:"加入开发团队之后,我开始开发 Pawn,但我发现自己能做的事被 Kye 严重限制。我们之间存在重大的意见分歧:他认为 90% 的开发精力应该投入同步(sync)工作,Pawn 几乎只是顺手提供一点额外功能的附属品。而我认为,虽然同步很重要,但他已经把同步覆盖得很好了,我更想专注于 Pawn 的功能与函数。然而他是老板,说了算,严重限制了我被允许做的事。此外,他有个坏习惯——每次版本迭代之后,只要在某个细枝末节的测试中有任何不稳定,就要来指责我,尽管测试本来就是我们有 beta 测试团队的原因。不用说,这不是一个好的工作环境,但我仍然喜欢 SA:MP 这个产品本身。"

在这种压抑的工作环境中,YLess 于 2007 年 开始独立开发 YSI(YLess' Server/Script Includes)

YSI 最初是他此前若干工具的整合与升级,同时也是他在 Kalcor 的管控边界之外,以纯 Pawn 脚本的方式,实现他认为 SA:MP 脚本系统应当具备的扩展能力。他在这个过程中也加入了一些辅助性的函数,例如 player objects 功能,最初是专门为了支撑他的对象流式传输器 e_objects 而写的。

用 Y_Less 自己的话说:

引用:"2007 年,我开始开发 YSI。这部分是对若干早期工具的更新与整合,部分也是在 Kye 的控制之外,以 Pawn 能力范围内的方式带来我认为 Pawn 所需的扩展功能——尽管以纯 Pawn 来做,能实现的事情自然有其上限。YSI 成为我的主要项目这一事实惹恼了 Kye,因为他认为这说明我没有把时间花在 SA:MP 上,尽管我实际上一直都在。"

YSI 涵盖了命令处理(ycommands)、玩家迭代器(yiterate)、钩子机制(yhooks)、INI 文件读写(yini)、多语言支持(y_languages)等数十个子模块,是当时 SA:MP 社区功能最全面、使用最广泛的第三方脚本库。

至于"YSI"到底代表什么,连 Y_Less 本人也说不清:

引用:"最初的想法是'Y[i]Less' Server Includes',但 Server 和 Script 经常被混用,而且现在参与的开发者不止 YLess 一人,所以'Y'就变成了一个递归缩写,代表'YSI'本身。"[/i]

第六章 2008 年底:GTANet 风波与团队大出走



2008 年底,SA:MP 开发团队内部爆发了一场与 GTANet 社区相关的严重矛盾。关于这场风波的具体细节,现有的公开资料已难以完整还原,但其结果是清晰且影响深远的:Mike、aru 和 Peter 等多名核心开发者相继以此为由宣布离队。

Y_Less 在日后的声明中这样描述这段经历:

引用:"2008 年底,GTANet 风波爆发,Mike、aru 和 Peter 因此离开,我也因为团队氛围实在太差,加之大家都在走,便也一同离开了。"

这一波出走之后,SA:MP 的开发工作几乎完全落回 Kalcor 一人肩上,这进一步强化了整个项目对他个人的高度依赖,也使得社区的任何集体意见都更加难以产生实质影响。

然而事情并未就此平息。Y_Less 出走后,出于他自己也说不清的原因,重新回归了团队。他在后来的声明中写道:

引用:"不知为何,真的记不清了,我之后又重新加入了团队。那时候 Kye 想要关闭 SA:MP,我提出愿意接手,他拒绝了。然后我再次退出——不是因为我没接手到,这一点需要说明——于是 Kye 决定封禁我的论坛账号,而且不只是封号,而是彻底抹除——删掉了我所有的帖子。这意味着原版《实用函数》帖没了,旧版 FAQ 帖没了,大量迷你教程没了,《Pawn 关键词》帖也没了——我只有在非常必要的时候才发帖,那些帖子都有其存在的价值,它们的消失被大量用户注意到并提出了强烈抗议。"

这便是 2008 年底那次"第一次封号"事件的始末——相对低调,但已经是一个信号。真正震动整个社区的风波,还在后面。

第七章 2009 年 1 月:YSF 封号事件



从团队再度离开之后,YLess 没有停止为社区创作工具。他开发了 YSF(YLess' Server Fixes)——一个以服务端插件形式存在的 bug 修复集合。

YSF 的设计理念很简单:SA:MP 有很多 Kalcor 长期忽略或拒绝修复的 bug,既然拿不到源代码,那就通过内存操作(memory patching)的方式,在运行时强行修正这些行为。这个方法技术上相当复杂,但效果立竿见影。

Y_Less 事后这样形容 YSF:

引用:"YSF 是我最成功的项目,因为它做到了所有人都想要的事。它本质上是一个更新版的服务端——人们总是渴望新版本带来修复和新功能,功能方面已经有其他插件(包括 YSI 插件)覆盖了,所以我选择了修复这条路(以及一些小功能——显然正是这些小功能引发了麻烦)。"

YSF 在社区中广泛流传,大量服务器安装并使用它。



2009 年 1 月 19 日,事件的直接导火索被点燃。

当天,Kalcor 私信给 Y_Less,表达了对 YSF 的不满。他的顾虑有两项:

第一,他认为 YSF 可能与 SA:MP 未来版本产生脚本兼容性问题;第二,他认为 YSF 代码中存在与 SA:MP 服务端源代码相似的内容,以 functions.cpp 中的 IsNickInvalid 函数为例。

Y_Less 对此逐一作出回应。关于兼容性问题,他指出 YSF 恰恰是在让脚本对未来版本更加兼容,而非相反;关于源代码问题,他坦言:

引用:"这实际上并非盗用,但我承认看起来非常相似,因为它做的事情完全一样,而且也不是什么复杂的函数,我懒得争,就直接把它彻底重写了。"

他还顺带提到,Kalcor 自己曾主导过一些令他反对的修改决策——比如改变服务端的默认运行风格,以及在 0.3 版本中移除对象(最后改为以 IPL 文件形式替代,而非完全移除)——当初他的反对意见被 Kalcor 直接否决。

双方讨论的最终结果,表面上是达成了共识:Kalcor 表示接受了 Y_Less 的解释,YSF 可以继续存在。

然而,Y_Less 第二天登录论坛,发现自己已经被封号。

他在后来的声明中还原了这段过程:

引用:"就在我们讨论同意 YSF 可以继续存在,之后,他发现了 SetServerRule,并意识到它可以用来修改只读控制台变量——比如服务器版本号——从而让人们能够违反 SA:MP 服务条款第(g)条:'你不得人为地增加玩家数量,或向 SA:MP 查询机制提供虚假信息。'"

Kalcor 认为,Y_Less 在 YSF 中提供了这样一个功能,就等同于为违规行为提供了手段,因此必须承担责任。

封号通知的原文如下(Y_Less 在声明中直接引用):

引用:*"抱歉 ssǝן‾ʎ,你已被禁止使用本论坛!
滥用前开发者身份。入侵服务器,并为他人违反服务条款提供手段。"*

封号的同时,Kalcor 再次删除了 Y_Less 在 SA:MP 官方论坛上的全部历史帖子。大量教程、工具发布帖、FAQ 就此永久消失,众多用户注意到这些帖子的蒸发,并提出了强烈抗议。

Y_Less 随即在社区发布了一篇完整声明,以下是他原文的核心段落:



引用:"基本上,我因为 YSF 被 SA:MP 官方论坛封号了!

历史:

200x 年(实在记不清了),在与 Spookie 讨论之后,我以 beta 测试员的身份加入了 SA:MP 团队——那还是第一次公开 beta 之前的事——并开始编写 Pawn 相关的代码。

没过多久,我正式加入了开发团队,专注于 Pawn 的开发,但我很快发现自己受到 Kye 的诸多限制,做不了想做的事。我们之间存在重大分歧:他认为 90% 的开发精力应该用于同步(sync),Pawn 只是顺手提供一点额外功能的附属品;而我认为,虽然同步很重要,但他已经把同步做得很好了,我更想把时间花在 Pawn 的功能扩展上。然而他是老板,说了算,严重限制了我能做的事。更让人受不了的是,他有个习惯——每次版本迭代后,只要在某个犄角旮旯的测试里出了任何小问题,就要来责怪我,哪怕我们有 beta 测试团队本来就是为了发现这些问题的。说实话那不是一个好的工作环境,但我还是喜欢 SA:MP 这个产品本身。

2007 年,我开始开发 YSI。这一方面是对此前一批旧项目的整合升级,另一方面也是想在 Kye 的管控之外,以纯 Pawn 脚本的方式实现我认为 Pawn 所需要的扩展功能——尽管能做到的事情有限,毕竟纯 Pawn 本身有其局限(我确实额外添加了一些辅助函数,比如 player objects 功能完全是为了写我最初的对象流式传输器 e\_objects 而专门实现的)。YSI 成为我的主要项目这件事惹恼了 Kye,因为他觉得我没有把时间花在 SA:MP 上——尽管我实际上一直都在。

2008 年底,GTANet 社区风波爆发,Mike、aru 和 Peter 因此离队。我也因为团队氛围实在太差,加上大家都在走,便也跟着离开了。

不知为何(真的记不清了),我之后又重新回归了团队。那时候 Kye 想要关闭 SA:MP,我主动提出愿意接手,他拒绝了。然后我再次退出——不是因为没接手到,这一点需要说清楚——于是 Kye 决定封禁我的论坛账号,而且不只是封号,而是彻底抹除,删掉了我所有的帖子。这意味着原版《实用函数》帖没了,旧版 FAQ 帖没了,大量迷你教程没了,《Pawn 关键词》帖也没了——我只有在非常必要的时候才会发帖,那些帖子都有其价值,它们的消失被大量用户注意到并提出了抗议。

不管怎样,我还是喜欢 SA:MP 和这个社区本身(至少喜欢其中的一部分),所以我还是留了下来(现在回想起来真不知道当时为什么,深感后悔),并继续努力让 SA:MP 变得更好——尽管 Kye 的存在让这件事很难。我继续开发 YSI、写教程和帮助帖,后来又创作了 YSF。YSF 大概是我最成功的项目了,因为它做到了所有人都想要的事。它本质上就是一个改进版的服务端——人们总是渴望新版本带来修复和新功能,功能方面已经有其他插件(包括 YSI 插件)覆盖了,所以我选择了专注于修复这条路(以及一些小功能——显然正是这些小功能引发了这次麻烦)。

总之,Kye 和我一般都各自行事、互不干扰(至少我是这么以为的),有一段时间相安无事。直到 2009 年 1 月 19 日,我收到了 Kye 的消息,说他不太喜欢我在 YSF 里做的事。经过一番交涉,才明白他的顾虑在于:YSF 可能与未来版本的脚本产生兼容性问题(这话从他嘴里说出来真是讽刺——我当初就反对过他把默认运行方式改掉,以及 0.3 版本里删除对象的决定,但他否决了我;对象最后是改成了 IPL 文件的形式,而非完全删除,但也没有了 per-player objects,至少我最后听到的消息是这样)。此外,他还质疑 YSF 里有 SA:MP 服务端的源代码——他举的例子是 functions.cpp 里的 IsNickInvalid 函数。这个函数其实不是照抄的,但我承认看起来确实很像,毕竟它做的事完全一样,而且也不是什么复杂的函数,我懒得争,就直接把它彻底重写了。在我指出 YSF 并不会造成兼容性问题(恰恰相反,它让脚本对未来版本的兼容性更好),并同意日后不再使用 SA:MP 源代码(尽管我此前一直在刻意避免这样做)之后,他让步了。

第二天我上论坛,发现自己已经被封了……

原来在我们达成共识之后,他又发现了 SetServerRule 这个功能,意识到它可以用来修改只读控制台变量(比如服务器版本号),从而让人能够违反 SA:MP 服务条款第(g)条:'你不得人为地增加玩家数量,或向 SA:MP 查询机制提供虚假信息。'

我解释说,我本人根本没有这样做,这个功能的设计初衷是好的,只是不幸被人滥用了。我甚至想过反问他:他提供论坛和 IRC 频道,同样也给人们提供了违反条款(c)(d)条的方式,按他的逻辑,他也应该被封号——但我懒得说了。封号通知的原文是:

'抱歉 ssǝן‾ʎ,你已被禁止使用本论坛!滥用前开发者身份。入侵服务器,并为他人违反服务条款提供手段。'

所谓'滥用',是指我用它改善了所有人的游戏体验;所谓'入侵服务器',是指我修复了它;所谓'提供手段',意思是人们可以拿我提供的工具做坏事——但这不代表我支持或认可这种行为,这只是一个有用工具所带来的无奈副作用。

Kye 说 YSF 的事已经覆水难收,他只能发布新版本来屏蔽它,伤害已经造成,它已经广泛传播,人们正在用它黑自己的服务器,没有人能阻止,所以我必须被封。我回应说,如果我没被封,我本来可以发布最新版本,在修复拾取物 bug 的同时,加入对规则的只读标志检查——虽然这无法彻底解决问题,但能大幅减少滥用,因为几乎没有人会主动把它改回旧方式,大多数人会为了这个重要修复而升级。说到这里,他就不再回复我了(我觉得他是意识到自己断掉了快速、高效解决这件事的唯一合理途径,然后不想认账了——如果不是这样,我欢迎他来回应)。

总之,我决定把当时正在写的那段代码(YSI 的示例脚本)收个尾,毕竟我还是喜欢使用 YSI 的那些人,上传最终版本,然后就此结束。

所以,截至目前:YSI 1.0、YSF 1.0、YSI2 1.0、YPI 1.0,到此为止,我不干了。

附言:Kye 正在研究一种过滤"修改版本服务端"并将其列入黑名单的机制——我可能会发布一个不自动修改版本号的 YSF 版本,这样用它的人就不会因为我的失误被连坐;请留意这里的动态(我可能也会顺带加入拾取物修复,但不会保留只读变量相关的功能)。

附言二:IRC 才是王道,我还活跃在 GTANet 的大量频道里,包括 #YSI 和 #Y_Less,欢迎来找我。

附言三:不知道 MTA 的源代码长什么样……"

——Y_Less,2009年1月,TMS Forums



这篇声明在社区引发了强烈反响。数日后,经社区压力,Y_Less 得以解封,YSF 在不修改只读变量的前提下被允许继续使用。从表面上看,风波平息了。

但那句"附言三"——"不知道 MTA 的源代码长什么样"——如今读来,已不再只是一句无心之语。



第三卷:停滞、管控与分歧(2014–2019)



第八章 0.3.7 之后的沉寂(含源码泄漏事件)



2015 年 5 月 1 日,SA:MP 0.3.7 发布。此后,Kalcor 在新功能层面的开发近乎陷入停滞。

2018 年前后,Kalcor 发布了 SA-MP 0.3.DL——一个支持服务端向玩家客户端推送自定义模型(Download Content)的版本。这是社区长期以来最渴望的功能之一,玩家们可以在 SA:MP 服务器上看到服务器自定义的车辆、皮肤、物件模型,而不再局限于原版游戏资产。

然而 0.3.DL 的推出并不顺利:安全问题(恶意服务器可能推送损坏的模型文件危害客户端)和与旧版 0.3.7 的兼容性问题,使得相当一部分服务器拒绝迁移。SA:MP 社区自此一分为二,0.3.7 阵营与 0.3.DL 阵营长期并存。

这种分裂令社区感到困惑与沮丧。有人多次在论坛呼吁将两个版本合并,但得不到任何回应。



源码泄漏事件(2010 年起源,2018 年爆发)



在 0.3.DL 引发社区分裂的同一时期,另一条隐患也终于浮出水面。

2018 年 11 月 15 日,SA:MP 官方论坛上出现了一篇由用户 Kshishtof 发起的帖子,标题是《SA-MP 源代码泄漏》。帖子指向一个名为 rw-mp.net 的项目,该项目被认为是基于泄漏的 SA:MP 源代码构建的独立多人联机分支。

帖子引发了社区的激烈讨论。一部分人对 rw-mp 持同情甚至欣赏的态度,认为它至少在做 SA:MP 不再愿意做的事;另一部分人则斥之为对原作的窃取与侮辱。

2018 年 11 月 16 日,Kalcor 亲自在帖子中出现,发表了两段回应。第一段揭示了这批泄漏源码的来历:

引用:"SA:MP 的源代码于 2010 年被一名法国人从我们的服务器上黑掉,目的是为 IV:MP 这个 mod 服务。我记录并上报了这次入侵。

GitHub 上大约有十个副本。我一直没有把它们下架,是因为提交 DMCA 申诉需要将我的真实姓名录入 GitHub 的公开 DMCA 数据库,否则就得花钱请律师。"

第二段话语气更为强硬,是一封事实上的法律警告:

引用:"0.2.5 的源代码是通过计算机入侵从我们的服务器上盗取的。任何基于该代码发布软件的人,都涉嫌与我们作对的刑事共谋。

SA:MP 所使用的 RakNet 版本并非开源,而是通过付费许可证使用的。BASS 音频库同样是付费许可证使用的。整个游戏 mod 社区正在被那些删除原始版权信息、将他人成果冒充自己作品重新发布的蠢货所伤害。

我给他们几天时间关闭并停止任何与 SA:MP 相关的活动。"

——Kalcor,SA:MP 官方论坛,2018 年 11 月 16 日 原帖:https://sampforum.blast.hk/showthread.php?tid=660866

这段声明揭示了几个此前从未公开过的重要事实:

其一,SA:MP 源码泄漏的根源远早于 2018 年——2010 年就已经发生了一次有据可查的服务器入侵事件,是一名法国黑客为了支持 IV:MP(GTA IV 的多人 mod)而实施的。这与 Kalcor 在 2019 年 pawn.wiki 文章中所说的"R* 给 MTA 的代码被用于攻击 SA:MP"形成了完整的脉络——他所遭受的代码安全威胁,来自不止一个方向。

其二,Kalcor 之所以始终不对 GitHub 上的泄漏副本提交 DMCA,并非不知情或不在意,而是出于一个极具讽刺意味的现实顾虑:提交 DMCA 需要将他的真实姓名公开录入数据库,而他不愿意这样做。源码在网上流传的同时,他本人却因为隐私顾虑而放任不管。

这次事件在社区中引发了新一轮关于"Kalcor 应不应该直接将 SA:MP 开源"的讨论。部分社区成员认为,既然源码已经通过非法途径广泛流传,不如主动开源,至少可以让社区以合法的方式参与改进。这个声音 Kalcor 听到了,但他的答案,在两年后的 pawn.wiki 那篇文章里已经说得很清楚。



第九章 Kalcor 眼中的历史:MTA 的旧账、R\* 的源码,与闭源的真实理由



编年史至此已经写了许多关于 Kalcor 的事——他的决策、他的封号、他的沉默——却始终没有给他一个真正完整的出场。他是从哪里来的?他为什么那样做?他拒绝开源的理由究竟是什么?

2019 年 10 月 25 日,就在 Kalcor 于 SA:MP 官方论坛发布某条帖子后不久,俄语 Pawn 开发者社区 pawn.wiki 上出现了一篇由用户 m1n1vv 整理、转述并翻译的长文,标题是《SA-MP 0.3.9 与 Kalcor 的新故事》。这篇文章完整记录了 Kalcor 这篇帖子的核心内容——那是迄今为止他对自己技术履历与闭源立场最完整、最直接的一次亲口陈述。

以下是 Kalcor 在那篇帖子中所说的全部内容,经 m1n1vv 翻译并整理,原文以俄文发布于 pawn.wiki:



引用:那么,请允许我给你们讲一段历史。结论由你们自己得出。

2003 年,在 MTA 的 IRC 频道上待了一周之后,我被邀请加入 MTA:VC(Vice City Multiplayer)的开发。几个月后,我晋升为 MTA 的首席开发者。以下是一张截图,记录了我和 Si|ent 一起尝试让 MTA:VC 中的船只同步正常工作的画面,日期是 2003年12月31日。

我是 MTA:Blue 的少数开发者之一——这是 MTA 针对罪恶都市的新版本。那时候除我之外,大多数人都被现实生活拖住了。我开发了玩家上下文切换同步系统,并引入了 RakNet 库。同样的系统至今仍被 SA-MP 和 MTA:SA 所使用。

这种处境让我感到沮丧——一周又一周过去,只有我一个人在提交代码,而论坛上却有一堆"开发者"在大谈特谈一切将会如何运作。

于是我离开了 MTA 的开发。在我离开期间,另一个叫 eAi 的人加入了项目,开始研究我的代码,试图弄清楚它是怎么工作的。至少有人在做事了——他的方式是去主动联系各方,于是他通过 ICQ 找到了我,还找到了 R(Rockstar Games)开发者的电子邮件地址,并与他们取得了联系。*

那时候我对 GTA 多人联机并不感兴趣。我有一个乐队,还参与了 ipodlinux 等项目,但 eAi 似乎非常热衷于推动 MTA:Blue 取得进展。于是我重新加入了项目,持续了几个月。

以下是 2004年底 MTA:Blue 的公开宣传页面存档。

正是这件事导致了我和 MTA 其他开发者之间的决裂:我想要构建一个服务端系统——就像 VC-MP 的 ini 脚本系统,以及 SA-MP 中基于 Pawn 脚本的服务端系统;而 MTA 的开发者们则想要客户端扩展,就像那个宣传页面上描述的那样。

2005年初,我再次离开了 MTA。就在那段时间,R North 在 PS2 上发布了 GTA:SA,并正在开发 PC 版本。eAi 与 R 的技术总监有联系,还通过 ICQ 向我炫耀说,他拿到了大量 GTA:SA 源代码的头文件。我注意到,MTA 的开发者们似乎打算放弃罪恶都市版的 MTA:Blue,转战 GTA:SA。

不相信 MTA 及其开发能力,2005年中,我开始独立开发自己的多人联机。我发布了 VC-MP,基于玩家上下文切换和 RakNet。

随后,我与 jax、spooky 以及其他一些人一起开发了 SA-MP。它远比之前的 mod 庞大得多。我们与 GTANet/GTAForums——最大的 GTA 非官方粉丝站——有着较为密切的联系,这使我们获得了更大的知名度。

到 2008 年,SA-MP 的玩家数量是 MTA 的 10 到 20 倍。MTA 的开发者们感到在这种竞争环境下已无法与之抗衡,于是他们公开了自己的源代码。MTA 的开发者们从未询问过我或任何前任开发者,是否可以公开这些源代码。他们声称所有东西都已经被重写了,但事实并非完全如此。时至今日,MTA:SA 中仍然有我的代码。我没有费心去追究他们,因为他们看起来太蠢了——但我猜,这里那些呼吁公开 SA-MP 源代码的人,很可能是受到了 MTA 的启发,尽管他们或许不应该这样。

而这就是现在正在发生的事:我为 MTA 开发的"游戏"代码,以及 R\ 给 MTA 的源代码,正在被移植进 mod\so\beit——一款流行的 SA-MP 外挂工具。*

你们知道这意味着什么吗?R\ 给 MTA 的那部分源代码,有相当大一部分被用来——攻击 SA-MP!*

从一小批相当专业的 MTA 开发者起步,这件事已经演变成了极度肮脏的东西。那些想要摧毁 SA-MP 的人,对于是否违法毫不在意。

看起来,任何被公开的源代码都可能被用来攻击 SA-MP——尽管它本可以被用于提供有价值的更新。

公开 SA-MP 源代码这个决定,归根结底取决于:我们是否仍然处于这种充满敌意的环境中——人们在攻击我、想要攻击 SA-MP——还是这一切已经成为过去。我想说,这取决于 mod 的规模以及对外挂工具的需求程度。封闭源代码让我可以在每次发布时重新洗牌所有内部结构,使大量外挂工具失效。SA-MP 的许多"安全"更新,实质上就是我在重新排列数据,以清除现有的外挂工具。

最终,SA-MP 将会走到这样一个时刻:所有人都彼此友善和尊重,外挂与欺诈变得罕见——但届时玩家数量将极为稀少,我们中的大多数人也已不在了。

——Kalcor,2019年10月,SA:MP 官方论坛
(由 m1n1vv 转述并整理,经 Типичный Скриптер 译为俄文,发布于 pawn.wiki,2019年10月25日)



这篇陈述,是理解 Kalcor 其人与其决策的关键文献。

它第一次完整地揭示了他的来历:他不是凭空出现的 SA:MP 创始人,而是一个从 MTA 内部出走的人。2003 年至 2005 年间,他在 MTA 团队中担任首席开发者,亲手构建了玩家同步系统与 RakNet 架构——而他愤而离开,正是因为他坚持的"服务端脚本系统"方向遭到其他成员的反对。SA:MP 的诞生,某种程度上是一次对 MTA 的报复性创业。

它也第一次给出了 Kalcor 拒绝开源的真实逻辑:他不是在藏私,也不是单纯的控制欲作祟——在他看来,闭源是他对抗外挂工具的核心武器。他承认 SA:MP 的许多所谓"安全更新",实质只是重新排列内部数据结构,使依赖固定内存地址的外挂工具在新版本中失效。一旦开源,这条防线便彻底坍塌。

而他与 MTA 之间的积怨,在这篇文章里也首次有了完整呈现:他认为 MTA 在开源自己的代码库时,从未征得他这位最初作者的同意;更令他愤怒的是,他随后发现,R\* 曾向 MTA 提供的部分 GTA:SA 源代码头文件,辗转流入了 SA:MP 外挂工具的制作者手中——成为攻击 SA:MP 的武器。这份偏执与防御,贯穿了他此后对待社区和开源请求的所有态度。

这篇发布于 2019 年 10 月的文章,距 Kalcor 宣告放弃 SA:MP 仅剩不到一个月。这是他在离开之前,最后一次试图解释自己。





RE: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - 小鸟unsigned - 03-24-2026

第十章 Kalcor 的个人博客:Youtube 封禁与版本迷信(含2016年十周年)



2018 年 11 月 21 日,Kalcor 在他的个人 WordPress 博客(kalcor.video.blog)上发布了两篇文章,给这段历史留下了几段不寻常的记录。

第一篇:《我为何封锁了 SAMP 论坛上的 YouTube》

文章全文如下:

引用:"大约一周前,我封禁了 You(Them)tube 在 SA-MP 论坛的分享权限。

2018 年 8 月 6 日,Infowars 被 YouTube 封禁。不久后,Apple、Spotify 和 Facebook(这群唯唯诺诺的应声虫)也跟着封禁了 Infowars。

言论自由发生了什么?为什么这些被洗脑的社会正义战士要对真相如此敏感?如果我想从一个正规渠道而非 CNN 假新闻公司获取新闻和信息,我应该有这个权利,但显然那些硅谷精英们不同意。

所以我做了我该做的事。任何在 SA:MP 论坛上分享 YouTube 视频的人将被封禁。

现在你可以上传视频到哪里?目前有 Twitch、Steam、Streamable 和 Dailymotion 等几个选项。这个列表将来可能会改变。

让我们保护 Infowars 继续存在。"

——Kalcor,2018年11月21日,kalcor.video.blog

这篇文章表明,Kalcor 将 SA:MP 官方论坛作为个人政治立场的执行场所,并因此单方面剥夺了社区成员分享视频的权利。

第二篇:《我对版本命名系统的尝试》

同日,Kalcor 发布了一篇介绍其自创版本命名系统 "Kalver"(Kalcor Versioning) 的文章。文章详细阐述了 SA:MP 所使用的版本号规则,并在文末附上了这样一段话:

引用:"切勿超过 0.3。进入第 4 个大版本会给你的项目带来厄运,并给相关开发者带来死亡。如果你想在那个节点继续发布更新,请发布小版本更新。"

"总之,Kalver 可能是你所能接触到的最好的版本命名系统。我是对的。如果你认为我错了,那你就是错的。"

——Kalcor,2018年11月21日,kalcor.video.blog

这便是 SA:MP 的版本号为何始终徘徊在"0.3"从未前进的官方理由:Kalcor 本人迷信数字"4"不吉利,因此宁可将版本号以字母(0.3a、0.3b……0.3x、0.3z)和 R 修订号(0.3.7-R1、R2……)无限延伸,也不肯踏入"0.4"的门槛。



2016 年十周年问答——Kalcor 关于开源的另一套逻辑



在 2018 年博客文章之前,Kalcor 曾有过一次更为系统的公开表态。

2016 年,适逢 SA:MP 十周年,Kalcor 在官方论坛开设了一个专题问答帖,回答社区多年来积累的各类问题。这是自 0.3.7 发布后他难得的一次主动与社区互动。

在被问及是否考虑将 SA:MP 开源时,他的回答如下:

引用:"我曾经让 VC-MP 开源,结果并不令我满意。当你将一个游戏相关的项目开源,你不是真的在开放代码,你是在放弃它。VC-MP 大概有四五个不同的 fork,没有一个真正成功,这说明碎片化的 mod 对玩家没有好处。它们中的很多已经偏离了原始设计和游戏艺术风格太远。

我认为一个像 SA-MP 这样项目最核心的部分,除了技术水平之外,是让项目在相当长的时间里保持在正确的轨道上——即使偶尔会稍微偏离。

如果 SA-MP 是开源的,而我仍然在主导项目,这会让我陷入一个不得不审查和接受/拒绝来自随机陌生人的代码修改的处境。我不想在 SA-MP 上承担这个角色。"

——Kalcor,SA:MP 官方论坛,2016 年十周年问答帖

这段话与 2019 年 pawn.wiki 文章中的安全论点构成了两个不同维度、互相补充的闭源理由:

2016 年的理由是项目控制——开源意味着碎片化,意味着他必须成为代码审查员,这是他不愿承担的角色。他以 VC-MP 开源后一盘散沙的结局为前车之鉴。

2019 年的理由是安全防御——封闭源代码是他对抗外挂工具的核心武器,开源即意味着将自己的防线拱手相让。

两套逻辑都是真实的,都来自 Kalcor 本人。但它们所折射出的,是一个将 SA:MP 视为个人领地而非公共资源的心态——在这片领地里,社区是使用者,不是参与者。

这一立场,与日后 Y_Less 在《我的声明》中所说的"我们不想篡夺他,我们只是想确保它的延续"形成了最直接的对立。



第十一章 社区的自我拯救



在 Kalcor 停止更新的这些年里,社区并没有坐以待毙。

除了 Y_Less 的 YSF 之外,社区还涌现出另一个重要项目:fixes.inc——一套以纯 Pawn 脚本形式提供的 SA:MP 服务端修复库,由 pawn-lang 社区维护,无需安装任何插件即可使用。

然而,无论是 YSF(插件形式)还是 fixes.inc(脚本形式),都面临同一个根本性的天花板:在没有服务端源代码访问权限的前提下,某些深层的、与服务端核心逻辑相关的 bug,无论用多高明的外部手段,都无法从根本上修复。

用 open.mp 官方博客后来的话说:

引用:"SA:MP 长期陷于困境,没有更新,到处都是权宜之计,只为让一切继续运转。open.mp 改变了这一切——它是一次完整的重写,修复了长期遗留的问题,改善了脚本开发体验,移除了旧有限制,同时保持你现有代码的可用性。"

fixes.inc 和 YSF 所能抵达的边界,就是 open.mp 存在的起点。

第十二章 SAMPE:基于泄露源码的民间分支



在官方停止维护、社区自救能力接近极限的背景下,一些开发者走上了另一条路。

SAMPC(后改名 SAMPE,San Andreas Multiplayer Extended) 是这些民间尝试中较为知名的一个,由开发者 teredokot 等人在 GitHub 上公开维护。

SAMPE 的 README 文件对自身的来源与性质做出了坦率的说明,以下为原文(英文)及其内容:

引用:"这是否使用了泄露版本的 SA-MP 0.2 源代码?

是的,我知道我绝对不应该使用它,即使 VCMP 的 0.1 源代码是官方发布的,在没有任何书面许可的情况下尤其如此。这个项目的目的不是伤害 SA-MP 的世界,而是为玩家提供更好的游戏体验和/或为服务器主提供更好的脚本体验,并延续其生命周期。正如 Kalcor/kyeman——SA-MP 唯一的开发者——于 2019 年 11 月 11 日在官方 SA-MP 论坛上所说:'我发这篇帖子,是为了让所有人知道:SA-MP 的开发即将终止。'……我知道这在法律层面仍然没有权利使用,但是非曲直请你自行判断。

SAMPE 是否与任何官方 SA-MP 版本兼容?

不,而且永远不会兼容,至少你无法用 SAMPE 客户端连接任何 SA-MP 服务器,反之亦然……如果你在寻求拥有出色界面和功能的兼容性方案,你应该看看 OPEN.MP!https://www.open.mp/"

SAMPE 的存在,是 SA:MP 生态在官方停止维护后呈现出的"众人自救"状态的缩影之一。它明知使用了来源有争议的代码,但以 Kalcor 亲口宣告的放弃作为行动的道德依据——这种处境的两难,折射出整个社区在那段时期的集体困境。



第十三章 2019 年 11 月:Kalcor 的两段话与 SA:MP 的正式终结



2019 年深秋,Kalcor 在 SA:MP 官方论坛那个关于 0.3.9 版本计划的讨论帖(帖子编号 #670043)中,先后留下了两段发言。这两段话,加在一起,构成了 SA:MP 官方时代真正的终章。

第一段话,是非正式的、散漫的,却信息量极大:

引用:"好吧,我不干了。我没有正式宣布,因为总有可能来个安全更新什么的。

在这里待了跟我一样久的人,没有一个还在玩这个游戏。如果他们还在这里,也只是为了和多年前认识的人聊天。

你从头写一个 SA-MP 脚本是在浪费时间,除非这只是你个人感兴趣的事。现成的脚本已经堆积如山了。

2019 年你不会去开一个 SA-MP 服务器。如果你想做点跟 SA-MP 有关的事,去建一个有论坛的游戏社区,运营多款游戏。

我计划迁移到 Linux 桌面很久了。在计算机专业人士和科学家圈子里,这是个趋势。"

原帖:https://sampforum.blast.hk/showthread.php?tid=670043

第二段话,是正式的,简短,措辞经过了斟酌:

引用:"我发这篇帖子,是为了让所有人知道:SA-MP 的开发即将终止。

我从来没有要求就 DL 展开辩论。我已经说得很清楚了,我不打算在下一个安全更新里加入 DL 功能。

具体会包含哪些功能,我们内部可以自己决定。不需要任何投票或话题抗议。

我咨询大型服务器主的原因,是因为他们花钱维护服务器,花在这个 mod 上的时间比任何人都多。如果服务器主对我们粗鲁或者想坑我们,我通常就直接无视他们。"

——Kalcor,SA:MP 官方论坛,2019 年 11 月



这两段话合在一起,远比一句"SA-MP development is coming to a close"更能呈现 Kalcor 在这一时刻的真实状态。

第一段话里有疲惫,有放弃,也有某种居高临下的告诫——他告诉所有人不要再写 SA:MP 脚本了,不要在 2019 年开 SA:MP 服务器,他自己要去转向 Linux 桌面了。这些话,听起来不像是一个宣告退休的开发者,更像是一个已经在心里把这件事翻篇、只是在补最后一个手续的人。

第二段话里没有感谢,没有对社区十余年陪伴的任何致意,没有对未来的任何祝福。他用了"我们内部可以自己决定"——一个始终存在的管控口吻,即便在告别的时刻也未曾松动。

这篇帖子的发布时间,是 2019 年 11 月,距 Y_Less 在 open.mp 论坛发表《我的声明》已过去约七个月。

社区的反应在这一时期是分裂的。有人感到悲伤,有人表示理解,也有人已经在向前看。一名社区成员写道:

引用:"Kalcor 值得自由。他做了这个 mod,虽然人们有时候不认同他的决定,但这是他的 mod,他的决定是最终决定。你不喜欢 Kalcor 的决定?说声谢谢他花时间做了一个我们理所当然享用的 mod,然后走人。"

另一名成员则留下了更冷静的判断:

引用:"SA-MP 不会很快死去。失败的人会离开,新人会到来。"

这两种声音并存。但在这两种声音之外,还有一支二十二人的团队,正在以另一种方式回答这个问题——他们选择了既不离开,也不等待,而是动手重建。



第四卷:open.mp 的秘密与公开(2019)



第十四章 暗中启动的二十二人团队



就在表面上一潭死水的 2019 年初,事情已经在地下悄然开始。

一支由 SA:MP 社区最资深成员组成的团队,在不作任何公开宣传的情况下,启动了 open.mp 项目。

这支团队的规模,后来在 Y_Less 的公开声明中被披露:22 人,横跨多个国家,来自 SA:MP 生态的各个层面——有运营大型服务器数年的服务器主,有熟悉 SA:MP 底层结构的脚本开发者,有参与过 SA:MP 历代 beta 测试的老测试员,还有在俄语、罗马尼亚语、西班牙语等非英语社区拥有大量追随者的社区领袖。

从项目启动的第一天起,团队便确立了一条不可动摇的原则,并在之后反复公开强调:

绝不使用任何 SA:MP 泄露的源代码。

整个项目必须从零开始、完全独立地重新实现每一个功能。这一立场,是与 SAMPE 等使用泄露代码的民间分支项目的根本区别所在,也是 open.mp 在法律意义上站得住脚的核心。

团队原计划以一次完整的"横空出世"作为首次公开亮相——在 1.0 版本完全就绪之前,对外界保持绝对沉默,让发布本身成为最大的惊喜。

这个计划,后来被迫改变了。

第十五章 2019 年 4 月 13 日:意外曝光与 Y_Less 的声明



2019 年 4 月 13 日,open.mp 项目在尚未准备好的时候意外曝光。起因是社区中流传出一条缺乏上下文的帖子,引发了大量错误解读、猜测和混乱。

同日下午,Y_Less 在当时 open.mp 团队所使用的临时论坛(burgershot.gg,也是 open.mp 论坛的前身)发布了一篇题为 《我的声明》(My Statement) 的长文。

这篇声明至今仍保存在 open.mp 论坛。以下是其完整内容的中文译文:



引用:"是时候说出我的立场了。你们都有一部分是对的,但可能不是你们认为的那个方向。我并不是要分裂社区,我并不是要创建 SA:MP 的竞争对手,还有一点重要的附带说明:我没有在窃取任何人的代码。你们所有人都认为猫已经从袋子里跑出来了,因为一篇措辞糟糕、完全脱离对话上下文的帖子。你们透过袋子瞥了一眼,就认为整件事是愚蠢的——鉴于信息的缺乏,这是可以理解的。我试图只分享重要的要点,却没有透露太多细节,不幸的是这适得其反,因为现在你们只有半个故事,却要从中得出结论。

所以让我们把一切都摆出来。

我并不是要分裂社区。 然而,有人 正在 试图摧毁它——他们垄断了信息,扣押了社区长期渴望的更新,上周威胁要删除整个论坛,并封禁任何表示这或许不是个好主意的人。这个人已经亲手分裂了社区——发布了两个相互独立的平行版本,然后疑惑为什么其中一个的用户迁移并不像最初设想的那样全面。超过一年里,人们一再请求将 0.3.7 和 0.3dl 合并,而他只是坐在那里,自顾自地疑惑是否真的有人想要这件事。他说他相信社区正在死亡,SA:MP 正在死亡,只剩一两年;他很满足地旁观这一切发生。我们中的一些人持不同意见,并试图说服他要么继续维护,要么将主导权传给别人。社区在萎缩大概是不可避免的,但只有在得不到支持的情况下它才会死亡——而这正是现在正在发生的事。

有一个非官方的 Discord,是的,那里人们有时候会开玩笑、互相打趣。但它不是作为一个反叛之地而创立的。它的诞生是因为人们喜欢 SA:MP,而人们使用 Discord,于是社区自然而然地想将两者结合。还有一个非官方论坛,Kalcor 自己以前曾说过,如果你不喜欢这里,就去创建你自己的,但现在却封禁那些这样做的人。然而,这个论坛和 Discord 都不是由我运营的。它们只是官方渠道未能前进的自然结果。这不是分裂,这是进步。

我并不是要创建 SA:MP 的竞争对手。 这句话里有两个词是错的——"创建"和"竞争对手"。我不是在"创建"任何东西,我只是在试图衡量人们对一个已经进行了相当长时间的项目的进一步兴趣。这是过去一年里仅来自该项目的提交记录:[图片]。这没有什么新鲜的,那么这是什么?为什么它不是一个竞争对手?

我确实曾经离开过 SA:MP,是的,但那是六年前的事了——请翻篇吧!

我并没有背叛 SA:MP,我也没有背叛 Kalcor——是他在背叛 SA:MP,但大多数人无法将两者分开。是的,他创立了它,但这不意味着它属于他。数百名其他人花费了无数的小时、天、周、在这上面,让它成为今天的样子,但仅仅因为 Kalcor 独占了其中一个小小的部分——服务端代码,他就认为自己是最重要的部分,可以决定项目的去向和终结时间。在一开始,是的,他做了大部分工作,但请扪心自问,你真心认为在过去几年里,谁为这个 mod 做了更多——Kalcor,还是以下这些人中的任何一个:[图片]

我们不想篡夺他,我们不想贬低他或他的贡献。他创立了这个 mod,他让人们参与进来,但所有那些其他人帮助他把它带到了今天的位置,而正是那些人——社区——正在被压制和忽视。我曾多次试图充当调解人,将 Kalcor 的观点带给人们,将社区的观点带给他,并为此从双方都受到了无尽的批评。我也多次试图让 Kalcor 把 mod 的运营/更新传给别人(不一定是我,但没有其他人站出来)。得到的回应是什么?

- 他不相信我有能力添加重大新功能。当然他自己也没有在添加,而且实际上根本不认为有任何值得添加的功能,所以这又有什么关系呢?
  • 他想要一个计划。我的主要优先事项是修复 bug,改善 API 中明显的空白,以及为其他语言创建一个更好的平台——也就是一个合适的 C/插件 API。这些甚至不是困难的任务,而且我早已证明了自己有能力完成。但显然这不算是一个计划。
  • 用他的原话说——"他们不配拥有它。" 这就是他对这个社区——而我显然是在试图分裂的那个社区——以及有人试图延续它这件事的评价。
>
引用:没有人介意他想要退出,这显然是合理的,完全自然的。我们反对的是他要把其他一切都一起拖下去。这是一个社区——这是一个拥有很多非常优秀的长期朋友的伟大社区,以一个封闭源代码的 mod 为中心,而这个 mod 有一个偏执的、控制欲强的领导者。我们想要移动这个中心,仅此而已。我们不想摧毁 SA:MP,我们不想分裂社区(之所以被发现,是因为我试图让长期被忽视的俄罗斯社区参与进来,从而重新吸引已经被分裂出去的人),我们想确保它的延续——因为 Kalcor 并不想。

所以我给你们:

open.mp

这就是这个项目(和域名,burger-shot 论坛只是一个临时方案,直到我们建立真正的论坛,这还没有完成)。来自圣安地列斯多人联机顶端的二十二名成员——服务器主、脚本开发者、测试员和其他社区领袖——正在合作,从头开始重建整个项目。创建一个新论坛很容易;始终巩固 Kalcor 控制权的东西,是他对 mod 源代码的独占访问权。确实存在一个泄露版本,但从一开始我就绝对明确地表示,我们将在这方面走正道,并断然拒绝以任何方式使用它。所以我们一直在从头开始重新实现整件事。我们最初想要发布一个完整的 1.0 版本——以那个公告作为任何人听说此事的第一次——但这现在不会发生了。但它也不太远。

有过一些分支项目,但它们有两个主要问题:1)它们使用了被盗的代码,这是我们没有做的,2)它们试图重新发明轮子——新的脚本语言、完全不同的功能等等。我们正在制作完全向后兼容的版本。 你可以将你的服务器切换到我们的平台,运行相同的脚本,你的玩家甚至不会注意到任何不同。当然,随着时间的推移,新功能和改进的计划是有的,但目前重点是向后兼容性、稳定性和 bug 修复(我们作为社区已经以前做过的修复,因为 Kalcor 不会做)。

我为与 Kalcor 合作改进 SA:MP 而努力了超过一年,只是碰巧有一个备用计划。所以你可以坚守他的阵营,如果你相信他的方式即将改变,更新突然会发生(如果这场风波迫使了这一点,那我们实际上已经成功实现了最初的目标)。或者你可以坚守社区的大多数,他们知道存在问题并想要解决它——那些一直在那里支持你的人,帮助、教导、托管和领导。

由你来决定你认为谁背叛了 SA:MP……你知道在哪里可以找到我们。"

——Y_Less,open.mp 论坛《我的声明》,2019年4月13日



这篇声明发布后,跟帖迅速增至数十条,来自世界各地的社区成员纷纷表态。

TommyB(open.mp 团队成员,德克萨斯州,美国)写道:
引用:"很遗憾事情不得不走到这一步,但让我们向着更美好的明天干杯!!!"

adri1 提出了质疑:
引用:"你被重新加入了论坛 beta 测试员名单(所以 Kalcor 信任你),而你和其他人却在秘密进行那个项目,你本应该拒绝那个职位。我认为,如果你只是说'嘿,看,我们在开发一个新的多人联机!'而不是攻击 Kalcor,什么都不会发生。你基本上说的是'Kalcor 正在杀死 SA:MP,来加入我的新 MP mod'。我认为是他所信任的人的失望让他做出了大规模封禁的决定。"

Y_Less 对此只简短回应了四个字:

引用:"正好相反。"

TommyB 随即补充了更详细的背景:
引用:"公平地说,Y[i]Less 并没有要求重新进入 beta 测试员名单。他只是在与 Kalcor 公开互动之后被直接加入了,在那次互动中他表达了愿意接管 mod 开发的意愿,这是 Kalcor 之前曾拒绝过的。在他短暂回归期间,发生的事情几乎只有在 beta 区域发了一些关于 SA:MP 未来的论坛话题。这些话题里充满了对 Kalcor 就 SA:MP 未来方向应该去哪里的宣传和建议,几乎所有东西都要么被忽视,要么被否定,因为'samp 只剩 1 到 2 年了'。几乎每个想法都被否决了,或者从未走到任何地方。YLess 在 beta 区域多次询问是否可以接管 SA:MP 的方向和开发,但这也被拒绝了,因为 Kalcor 根本看不到这个必要性。[/i]

当面对一个已经拿定主意、坚持自己的立场、不会让任何人动摇其看法的人时,继续与他争执的意义何在?很明显,社区中还有很多人希望看到 SA:MP 继续发展繁荣,但数百位社区用户的抱怨和建议都落入了聋耳。现实地说,当你走到这一步的时候,你可以做什么?你可以继续与一个显然不会改变立场的人来来回回,或者你可以另起炉灶,自己继续推进。Y_Less 和 open.mp '团队'选择了后者。"

一位来自罗马尼亚的用户 Reachless 写道:
引用:"我可以向你保证,每天拥有超过 5000 名独立玩家的罗马尼亚社区将支持 open.mp。我们已经等了太久太久的 SA:MP 更新了。"

这场声明,就是 open.mp 历史上真正意义上的"宣誓就职"。



第五卷:从无到有的漫长建设(2019–2022)



第十六章 2019 年 11 月:Kalcor 的最后声明



2019 年 4 月,Y_Less 的《我的声明》在社区引爆了一场风暴。open.mp 的存在公开了,二十二人团队的名字公开了,Kalcor 多年来的所作所为也被逐字逐句地摆在了所有人面前。

在那之后,Kalcor 没有回应。

没有公开反驳,没有公开澄清,没有任何公开表态。open.mp 团队继续推进,社区在争论与期待中等待,服务器还在运行,玩家还在上线。

七个月后,2019 年 11 月,Kalcor 终于再次出现在 SA:MP 官方论坛,在一个关于 0.3.9 版本计划的讨论帖里,留下了他最后的话:

引用:"我发这篇帖子,是为了让所有人知道:SA-MP 的开发即将终止。"

一个存在了将近十五年的游戏模组,以这样一句话,宣告了它官方时代的终结。

而那支在地下已经耕耘了将近一年的团队,此刻正在继续写另一个故事的开头。



第十七章 2020 年 4 月:open.mp 的公开答疑



2020 年 4 月,open.mp 团队通过 VK 平台发布了一份面向社区的 FAQ 文档,系统回答了社区最关心的问题。以下是该 FAQ 的完整内容:



问:GTA SA 和 SA:MP 中的 bug 会被修复吗?

引用:会的!你也可以向我们反馈我们尚未知晓的 bug:github.com/openmultiplayer/samp-bugs/,或在论坛提交:burgershot.gg/showthread.php?tid=99

问:哪些 SA:MP 版本将受到支持?包括 0.3DL 吗?

引用:我们不会支持 0.3.7 以下的版本,但你可以自行实现(这正是开源的魅力所在)。如果大多数项目愿意尝试 0.3DL,我们会支持它们。我们也进行过调查,多数人支持 0.3DL,所以我们很可能会做,但肯定不会在客户端的前几个版本中。

问:open.mp 客户端会有固定的更新周期吗?

引用:不会。固定周期需要一支流程成熟的大型团队,而我们目前是一支志愿者队伍。也许情况将来会有所改变,我们不敢打包票。代码开源之后,你们可以随时关注项目进展。我们会尽一切努力在版本更新之间保持与社区的沟通。

问:我们可以提交新功能建议吗?

引用:我们非常欢迎社区参与,可以在这里留下建议:burgershot.gg/forumdisplay.php?fid=42\&page=6。当然,我们无法保证每个想法都会被采纳和实现。但由于代码是开源的,你随时可以自己动手实现。

问:会有反作弊系统吗?

引用:会有。

问:open.mp 会继续使用 Pawn 吗?可以使用其他语言吗?

引用:所有的开发工作、测试和文档均以 Pawn 为基础完成。不过,我们提供了 C API,允许任何人在此之上实现其他语言的支持。我们也讨论过引入一些半官方的语言模块,但 Pawn 依然是主要且受官方支持的脚本语言。

问:SA:MP 的插件能在 open.mp 中使用吗?

引用:"插件"这个词目前用来指代旧式插件——即那些为 SA-MP 编写的插件(例如 sscanf、MySQL 等)。open.mp 提供了加载这些现有插件的 API。我们对新式插件的称呼是"模块"——无论是外部插件还是内部代码,只要使用 open.mp 更新、更强大的 API,统称为模块。旧式插件仍然可以正常运行,并会持续得到支持,除非它们依赖内存黑客手段(例如 YSF),因为那类插件依赖特定的内存地址和数据结构,而这些在 open.mp 服务端上是完全不同的。不过,大多数老式内存黑客当初存在的意义,恰恰是为了补全一些功能——而这些功能将直接内置于 open.mp,所以那些插件本来也就用不着了。

问:数据库功能只能用 SQLite,还是也可以用 MySQL?

引用:默认的数据库功能与以前一样,仍然是 SQLite。但如前所述,open.mp 提供了加载现有插件的 API,因此数据库方面无需在内部做任何改动——通过现有插件依然可以实现。第三方模块在 open.mp 中是完全受支持的"一等公民"——无论是回调还是原生函数,其可用性与内部代码完全一致,因此将功能放入外部模块不存在任何劣势。

问:会有更多自定义选项(HUD、体力值、小游戏、CEF 等)吗?

引用:关于这个话题我们收到了太多提问,请先去泡杯茶——这个回答会有点长。

我们的开发团队里有 Hual(SA:MP+ 的作者),未来会带来什么,谁知道呢?

SA:MP 与 MTA 最本质的区别,其实在名字里就说得很清楚了——SA:MP 就是字面意思上的"圣安地列斯多人联机",是 GTA 圣安地列斯这款游戏的多人版本;而 MTA 则是一个架设在这个世界观之上、更偏向通用平台的存在。SA:MP 在加入新功能时,始终紧扣原版游戏的体验感,尽管走出框架并非不可能,但整体风格一直非常保守。我们之所以长期坚守 SA:MP,正是因为认同这种态度。但我们希望拥有更多一点的自由度(这也是我们另起炉灶的原因),同时又不想走得太远。我们会引入一些新功能,其中有些在原版游戏中并不存在,但我们仍然会审慎地权衡每个功能带来的影响。

让对话框稍微宽一点,算是突破 GTA 正统边界的疯狂改动吗?大概不算。加入 CEF 是否走得太远了?是的,这不会发生。平衡点就在两者之间。

主要的顾虑集中在客户端层面。我们不希望服务器主可以向玩家分发任何具有潜在危害的内容。圣安地列斯本身并非为多人联机或 mod 而设计,许多文件加载器对损坏或恶意文件缺乏防护——当初根本没有这方面的需求。这正是 SA:MP 在引入自定义模型时遇到的难题,对我们来说同样如此。

至于资源保护——坦率地说,这在根本上是无法实现的。要让客户端显示一个自定义模型,就必须把这个模型文件传给它。文件一旦传到客户端,它就在对方的电脑上了,对方拿它怎么做,我们管不了。有些方法可以让盗取变得麻烦一些,但没有哪种方法是绝对可靠的。

问:NPC 会有更好的支持吗?

引用:这不是我们当前的优先事项,但从客户端角度来看,NPC 本质上与普通玩家没有区别。我们至少希望 open.mp 的 NPC 功能能够对标 FCNPC 插件的水平,这是未来版本中我们可以认真考虑的方向。

问:你们说 open.mp 移除了所有限制——这具体是怎么实现的?它像 streamer 插件一样吗?

引用:原理类似,但与 streamer 相比集成度更高,因此我们同样可以对载具和玩家进行流式处理,并能以远超插件能力的方式操作本地 ID。

问:玩家可以被附加到物体上吗?

引用:可以,我们已经实现了这个功能。

问:可以用 SA:MP 客户端连接 open.mp 服务器吗?

引用:SA:MP 是通过逆向工程对第三方程序进行交互的 mod,open.mp 也是如此,我们的法律立场与 SA:MP 完全相同。我们没有使用任何 SA:MP 的泄露源代码——这一点已经反复强调,代码开源之后,社区自然会看得清清楚楚。

问:五年后,你们认为 open.mp 会是什么样子?

引用:不必担心这个,我们有很多长远的想法。

问:五年后,你们认为 SA-MP 会是什么样子?

引用:那是 SA-MP 团队的事,不是我们该操心的——在这个问题上我们没有立场去猜测。

问:你们有没有想过放弃 open.mp?

引用:有过,因为我们也是普通人。

最后,也是被问得最多的问题:我们什么时候才能看到 open.mp?

引用:等它准备好了。

祝大家接下来的一周愉快!带着满满的爱,open.mp 团队 ?



第十八章 重写、内测与 MTA 的合并提案



2021 年 6 月,open.mp 团队宣布启动第二次完整重写。第一轮开发的代码库由于架构过于复杂、协作成本过高而被整体放弃,团队重新确立了核心原则:先做 SA:MP 行为的 1:1 兼容替代,功能新增置于其后。

2022 年 1 月 1 日,open.mp 团队发布《2022 年更新》公告,宣布启动首批半公开服务端内测,面向服务器开发者招募测试员,同时披露团队正在探索为《GTA SA 终极版》开发客户端的技术可行性,目标是实现 PC 原版、Android 版与终极版三端玩家的跨版本互通(cross-play)。公告中附有史上第一段三端客户端同时在线的测试视频。

也是在这一时期前后,MTA(Multi Theft Auto) 的团队代表 Jusonex 发出了一封公开邀请函,以下是该信的完整内容:



引用:"你好,

在正式开始之前,先允许我做个自我介绍。我是 MTA 团队的成员,长期深度参与多人联机模组的开发工作。本帖内容也已获得团队其他成员的认可。

过去这几天,我们一直在默默关注 SA-MP 的近况,以及你们测试团队的动向。我们刻意等待了一段时间,让局势稍微平息,这也是我们迟迟没有表态的原因。

在我们看来,眼下的局面对 MTA:SA 和 SA-MP 来说,恰恰是一次难得的相互靠拢的机会。我们理解你们对现状的不满,但我们认为,为《GTA 圣安地列斯》这款已有相当历史的游戏再从零搭建一个多人联机项目,似乎并不是最明智的选择。我们对圣安地列斯的热爱,与你们一样深厚。尽管近来在线玩家数量基本保持稳定,但不可否认的是,吸引新玩家的难度正在与日俱增——尤其考虑到玩家群体结构的变化。

因此,我们诚邀你们加入 MTA 社区。从技术层面来看,我们认为最务实的方案是实现从 SA-MP 到 MTA 的兼容层,这样也能帮助你们更快推进前期更新的发布。

说几个数据:过去三年,我们发布了四个新版本,并持续推出大量迭代更新和反作弊升级;而 SA-MP 的最后一次官方发布,距今已超过四年。

除少数例外情况,MTA 在技术上已基本能够"模拟"SA-MP 的全部功能。我们相信,凭借你们作为资深开发者的经验,双方完全可以共同实现客户端兼容。此外,我们已有一个名为 amx 的资源,可在 MTA 内部运行 Pawn 虚拟机。该资源目前版本较旧,可能需要重构,但核心功能依然可用。

我们相信这将是一个对双方都有利的合作,也是两个社区难得的机遇——不仅能汇聚各自优秀的开发者和新鲜想法,还能为玩家带来真正丰富的游戏体验,甚至可能吸引新玩家加入,并催生一批概念全新的脚本功能。

如果你们对潜在问题有任何顾虑,欢迎随时与我们深入探讨。谨致问候,代表 MTA 团队。"

——Jusonex,MTA 团队代表



open.mp 开发者对此的回应出现了明显分歧。

MyU(open.mp 开发者)的个人意见:

引用:"首先声明:以下内容纯属个人观点,与 open.mp 项目及团队立场无关。

事实上,已经有一些人指出,MTA 和 SA-MP 本质上是两种完全不同的东西——确实如此,差异相当显著。MTA 走的是不断创新的路线,而 SA-MP 则始终'守着老传统';正因为长期没有更新、也不理会社区的功能需求,才会是今天这个局面。

我个人两款都玩过(MTA 是大约两三年前,当时 OOP Lua 刚加入不久,玩了一两个月)。玩了一段时间后,MTA 对我来说变得有些'吃不消'——那时候我的电脑配置比较低,加上遇到了一些 CEF 相关的问题,虽然我相信这些问题现在应该都已经解决了。

SA-MP 相当'轻量':一个压缩包、一个 samp.dll、一个启动器,再加一两个文件,就全了。而 MTA:SA 则捆绑了 CEF 文件、CGUI 文件、本地化文件等一大堆内容。我个人认为,把这两个多人联机合并在一起是行不通的——它们太不一样了,目标也各不相同。SA-MP 里安装 mod 极其简单,丢进游戏文件夹就能用;MTA:SA 则更像是一个经过精心打磨、功能完整的多人联机模组,但玩家有自己的偏好,这无可厚非。

简单总结一下:SA-MP → 轻量、易上手,但在某些方面存在局限;MTA:SA → 体量较重,但功能全面,有时略显复杂,稳定性却强于 SA-MP(玩家们甚至会利用 MTA:SA 的崩溃报告来排查问题——这本身就说明很多问题)。

不过我认为,玩家并不希望社区就此一分为二、各走各的路。竞争本身,以及由此带来的优胜劣汰,对整体发展是有益的。"

Sasino97(open.mp 软件开发者):

引用:"我认为加入 MTA 最大的好处,是可以直接接触到庞大的现有玩家群体,以及 MTA 客户端本身极为强大的功能上限。至于缺点嘛……他们的论坛实在是太丑了,抱歉直说。不过,我个人很认可 open.mp 这个项目的理念,所以我觉得两边应该作为独立项目,各自继续发展下去。"

JustMichael(open.mp 论坛跟进者):

引用:"我们需要在团队内部充分讨论之后,才能就该提案给出正式回应。这绝非一个小提案,我们需要时间消化并核实帖子中提及的所有信息。因此,请不要将这条回复理解为拒绝——我们绝对没有在拖延,会尽快给出正式答复。"

最终,这场讨论以双方维持独立发展收场,没有发生任何形式的合并。



第六卷:发布、传承与现状(2022–2026)



第十九章 2022 年 11 月:Kalcor 最后一次现身



距 Kalcor 宣告放弃 SA:MP 已过去整整三年。

2022 年 11 月 16 日,他在个人博客(kalcor.video.blog)发布了一篇简短公告:



引用:"一个重要的客户端更新(SA-MP 0.3.7-R5)现已在下载页面提供。

客户端存在一个漏洞。这是一个严重的 RCE(远程代码执行)漏洞,允许服务器主在玩家电脑上执行未授权代码。此更新修复了该漏洞。0.3.7 服务器运营者应检查客户端版本,并建议仍在使用旧版本的玩家进行更新。-R 版本包含 bug 修复和安全更新。请始终使用最新版本。"

——Kalcor,2022年11月16日,kalcor.video.blog



RCE(远程代码执行)漏洞的严重程度无需赘言——一旦被恶意服务器利用,玩家设备上可以被执行任意代码,后果不可估量。正是这一威胁,让 Kalcor 在沉寂三年之后重新露面,打了这最后一个安全补丁。

这也是 Kalcor 迄今为止最后一次以 SA:MP 开发者的身份公开发声。


RE: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - 小鸟unsigned - 03-24-2026

第二十章 2023 年 1 月 5 日:open.mp Release Candidate 1



2023 年 1 月 5 日,经历了约四年开发、两次全面重写、无数次内测之后,open.mp 团队正式发布了 Release Candidate 1(RC1)

撰写这篇发布博客文章的人,是 Y_Less。他用了如下开场白:

引用:"终于来了!

终于来了!

经历了四年、两次重写、争论与风波,以及无数其他的障碍;它终于来了!

open.mp 服务端 Release Candidate 1(RC1)。

这希望代表了我们 1.0 发布的最终代码版本,如果这个版本进展顺利,我们将能够在几天之内最终 open 这个所谓的 open.mp。"

在这篇文章的开头,Y_Less 向参与了整个项目的所有团队成员逐一点名致谢:

引用:Amir、Cheaterman、Freaksken、Graber、Hual、Josh、JustMichael、kseny、Nexius、pkfin、Potassium、Southclaws、TommyB、Y_Less、Zeex,以及可能还有更多……

RC1 带来的内容包括:

Pawn 脚本系统的全面升级:

引用:下载包含官方 includes,不再需要用 omp.inc 打补丁到旧的 SA:MP includes,现在我们正在以正确的方式做这件事!它还有一个新的编译器。你是否曾想过 3.10.11 什么时候来?等待已经结束!(如果你自己构建的话,可以把这个版本看作 3.10.12)!有了这个组合,你可能会得到大量新的警告,但别担心——我们也为此提供了工具,可以自动升级大量代码,在所有正确的地方添加明确的符号名称、const 等等。也许你已经注意到了,你已经使用它好几个月了,但虚拟机(服务器内部的那个部分)也已经更新了!哦,还有那些你熟悉和喜爱的字符串原生函数,比如 SendClientMessage 和 AddMenuItem?它们现在全都支持格式化了。全部都支持。

具体改进包括:符号名称长度上限提升至 64 字符(告别 OnPlyrDoTheTing 式缩写);多个原生函数名称解压缩(Col 到底是 Colour 还是 Collision?现在你知道了);全面的 Tag 类型标签支持;官方 includes 终于 const 正确;编译器更新增加了 __nameof__addressof 等特性;switch 语句执行速度大幅提升;-O2 最高优化等级在新编译器和 VM 下可正常使用;以及一个自动升级工具。

C++ SDK 首次开放:

引用:Pawn 是为服务器编写模式的长期且仍然是官方的方式。它不会消失,但对于那些想要更多控制的人,我们终于发布了完整的 SDK(软件开发工具包)。这是一个到服务器的 C++ 接口,与所有构成核心 open.mp 代码的组件使用的接口相同。他们能做的,你也能做(相比于插件,插件只被设计成向 pawn 提供函数,而不是编写模式)。

新功能包括:

引用:除了所有为 pawn 宣布的新功能之外,服务器中还有几个新的(和新宣布的)功能:按玩家的帮派区域(如 YSF 中所有的);按玩家的拾取物,也如 YSF 中所有的;AttachPlayerObjectToPlayer;更好的 PawnPlus 支持;:memory: 和其他特殊名称在 SQLite 中的支持;SQLite 打开标志;exclude 配置选项以不加载某些组件;显示配置解析错误,不再默默失败;SDK 主版本检查……

社区捐赠渠道正式开放:

引用:尽管它被多次提供,我们明确抵制到这一点为止的任何资金;因为我们认为,在我们通过发布证明自己之前,接受资金是不对的。有了这篇文章,那个时候现在已经到来,所以如果任何人想要帮助支持我们(所有捐款将用于基础设施和未来的客户端开发工作),将是最受欢迎的。

第二十一章 2023 年 9 月:sa-mp.com 永久关闭



2023 年 9 月,运营了约 17 年的 sa-mp.com 官方网站在没有任何提前公告的情况下,永久关闭。

这是 Kalcor 时代最后的物理遗迹的消失。

open.mp 团队与社区成员随即合作搭建了 sa-mp.mp 作为 SA:MP 的官方继承站点,提供客户端下载、服务器列表等基础服务,并在站点上注明:

引用:"2023 年 9 月,sa-mp.com 网页关闭,sa-mp.mp 自此成为唯一的官方 SA-MP 继承站点——由 SA-MP 社区成员与 open.mp 团队合作建设与维护。"

第二十二章 2024 年至今:迁移指南与持续演进



2024 年 3 月 6 日,Y_Less 在 open.mp 官方博客发表《迁移至 open.mp》技术指南,系统梳理现有 SA:MP 脚本迁移至 open.mp 时需要注意的各类差异。文章开篇这样描述 open.mp 诞生的背景:

引用:"SA:MP 长期陷于困境,没有更新,到处都是权宜之计,只为让一切继续运转。open.mp 改变了这一切——它是一次完整的重写,修复了长期遗留的问题,改善了脚本开发体验,移除了旧有限制,同时保持你现有代码的可用性。但这对你意味着什么?让我们来一一分析。"

"很长一段时间以来,人们已经清楚地看到 Kalcor 不再有兴趣维护 SA:MP;这本身是可以接受的,但作为唯一拥有官方源代码访问权限的人,这使他成为了新更新的瓶颈。YSF 和 fixes.inc 都是为了填补这个空缺而创建的——以插件形式修复服务端 bug 而无需访问源代码;前者是插件形式,后者是 include 形式。尽管做出了一些惊人的努力,使这些(和其他)项目尽可能地稳定、全面且易于使用,它们自然开始触及其极限,新一代的修复被需要。这就是 open.mp 的用武之地。

open.mp 建立在相同的原则之上,吸取了社区十年来开发的无数改进成果,是对原始 SA:MP 服务端的从头重写,包含了来自其直接前辈的所有修复,以及更多在以前无法管理或完全不可能实现的修复。"

2025 年,open.mp 启动器因被 Windows Defender 误判为威胁而发布专项说明与修复更新,并在官方博客留下了相应的记录。

截至 2026 年,open.mp 服务端当前最新版本为 v1.5.8.3079,持续发布修复与新功能。官方 Discord 服务器成员超过 44,000 名,GitHub 组织(openmultiplayer)保持活跃,论坛(forum.open.mp)运营中,文档(open.mp/docs)以 25 种语言持续维护,覆盖了从简体中文、繁体中文到阿拉伯语、波兰语等全球主要语言社区。



尾声:一条未竟的路



二十年前,一批没有薪水、没有资源的年轻人,用逆向工程把一款单人游戏改造成了一个世界。二十年后,这个世界依然在运转,尽管它的道路上布满了控制与争吵、放弃与重建。

Kalcor 从未正式道歉,也从未再度现身。他亲手建造了 SA:MP,也亲手将其锁在门后。宣告放弃之后,他只回来过一次——为了修补一个危险的安全漏洞,然后再度沉默。

Y_Less 和他的同伴们最终完成了他们承诺的那件事:一个向后兼容、完全开源、从零开始的 SA:MP 替代品。RC1 发布的那篇博客,第一句话只有三个字:

引用:"终于来了。"

这三个字背后,是一个人十五年的等待、愤怒、坚持与释然。

这个社区的故事还没有结束。服务器仍在运行,玩家仍在连接,开发者仍在提交代码。圣安地列斯的街道,依然是成千上万人相聚的地方。



附录:原始资料索引



本文所有关键叙述均有原始来源可供核验。凡正文中引用原文、转述当事人声明、或依据特定文献作出陈述之处,均可在下表中找到对应出处。

外部链接仅作考证之用,不构成叙述本身的一部分。



第一部分 人物声明与论坛原帖



编号 内容描述 来源链接
[A] YLess 2009年封号事件——YLess 本人完整声明原文(含 YSF 事件经过、封号通知原文、GTANet 风波背景) https://forums.tms.sx/threads/y_less-banned-from-samp-forum-ysf-deleted.1018/
[B] Y_Less 2019年《我的声明》(My Statement)——open.mp 项目公开宣布帖,含团队规模、项目原则、对 Kalcor 的完整评价,以及 TommyB、adri1 等人的跟帖回应 https://forum.open.mp/showthread.php?tid=54
[C] Kalcor 2018年11月:源码泄漏事件回应帖——揭示 2010 年服务器被黑来龙去脉、不提交 DMCA 的真实原因、对 rw-mp 的法律警告原文 https://sampforum.blast.hk/showthread.php?tid=660866
[D] Kalcor 2019年11月:SA:MP 开发终止声明完整原文——两段发言(非正式放弃表态 + 正式声明),含"2019 年你不会去开 SA:MP 服务器"等原话 https://sampforum.blast.hk/showthread.php?tid=670043
[E] Kalcor 2016年SA:MP十周年问答帖——含关于开源问题的完整回答("开源等于放弃"论)、game-mp 付费服务说明等 https://sampforum.blast.hk/showthread.php?tid=606613 (葡语转述版:https://sampforum.blast.hk/printthread.php?tid=606613)
[F] Kalcor 2019年10月 SA:MP 官方论坛帖子——pawn.wiki 用户 m1n1vv 转述与俄文翻译,含 Kalcor 自述 MTA 经历、RakNet 贡献、闭源安全逻辑完整原文 https://pawn.wiki/index.php?/topic/48820-sa-mp-039-i-novaja-istorija-ot-kalcor/
[G] open.mp 与 MTA 合并讨论完整对话——Jusonex(MTA)合并提案全文、JustMichael 回应、MyU 个人意见、Sasino97 个人意见 https://vk.com/@open_mp-openmp-and-mta
[H] open.mp 论坛:Kalcor 被确认不再开发 SA:MP 的讨论帖 https://forum.open.mp/showthread.php?tid=828
open.mp 论坛:SAMP and Kalcor/Kyeman 讨论帖——含 Rintos 整理的 SA:MP 历史、Kalcor 版本命名体系说明 https://forum.open.mp/showthread.php?tid=2852
[J] SA:MP 论坛社区讨论:玩家对 Kalcor 与 SA:MP 的评价(含"Kalcor 值得自由"等原话) https://sampforum.blast.hk/showthread.php?tid=670137
[K] post4vps.com 第三方转帖——完整收录 Kalcor 2019年11月两段声明原文,是该声明现存最完整的第三方存档之一 https://post4vps.com/Thread-SAMP-Updates-will-be-discontinued-DEAD



第二部分 open.mp 官方博客与文档



编号 内容描述 来源链接
[L] open.mp 博客:Release Candidate 1(Y_Less 撰写,2023年1月5日)——RC1 完整功能说明、团队成员逐一致谢、捐赠渠道开放公告 https://open.mp/blog/release-candidate-1
[M] open.mp 博客:迁移至 open.mp(Y_Less 撰写,2024年3月6日)——SA:MP 历史困境叙述、open.mp 技术差异完整说明 https://open.mp/blog/porting
[N] open.mp 博客:2022年更新(2022年1月1日)——项目启动时间、两次重写经过、首批内测计划、DE 客户端跨版本互通探索公告 https://open.mp/blog/update-2022
[O] open.mp 博客:SA-MP Android 声明(2021年1月30日)——官方立场、不支持非法版本的理由、移动端社区邀请 https://open.mp/blog/samp-mobile
[P] open.mp 博客:Windows Defender 误报声明(2025年)——启动器被误判事件说明 https://open.mp/blog/launcher-false-positive
[Q] open.mp 文档首页——SA:MP 官方维基迁移说明、贡献指引 https://open.mp/docs
[R] open.mp 官方主页——项目定义、功能概述、当前版本号 https://open.mp
[S] open.mp 论坛 https://forum.open.mp/



第三部分 Kalcor 个人博客



编号 内容描述 来源链接
[T] Kalcor 博客:SA-MP 0.3.7-R5 安全补丁公告(2022年11月16日)——RCE 漏洞说明原文 https://kalcor.video.blog/2022/11/16/sa-mp-0-3-7-r5-client-update-strongly-recommended/
[U] Kalcor 博客:《我为何封锁了 SAMP 论坛上的 YouTube》(2018年11月21日)——全文 https://kalcor.video.blog/2018/11/21/why-i-blocked-youtube-from-the-samp-forums/
[V] Kalcor 博客:《我对版本命名系统的尝试》(2018年11月21日)——Kalver 系统说明、"数字4不吉利"原文 https://kalcor.video.blog/2018/11/21/my-attempt-at-a-versioning-system/



第四部分 SA:MP 项目历史资料



编号 内容描述 来源链接
[W] GTAForums——kyeman SA:MP 项目宣布帖(2005年4月3日)——SA:MP 最早的公开宣布记录 https://gtaforums.com/topic/186651-wip-sa-mp-multiplayer-for-san-andreas-pc/
[X] GTA Wiki——San Andreas Multiplayer 词条——项目早期历史、Co-op 风波、kyeman 离队与回归经过 https://www.grandtheftwiki.com/San[i]AndreasMultiplayer
[Y] SA:MP 论坛版本发布存档——0.3a 至 0.3.7 全部版本发布时间与公告 https://sampforum.blast.hk/forumdisplay.php?fid=74
[Z] SA:MP 官方继承站点 sa-mp.mp——sa-mp.com 关闭声明、继承站点建立说明 https://www.sa-mp.mp/
[AA] SA:MP 论坛 Kalcor 个人主页——注册日期(2005年4月3日)等基础信息 https://sampforum.blast.hk/member.php?action=profile&uid=3
[AB] ModDB——SA:MP 0.2.2 模组页面——"2006年起最早可玩版本"说明 https://www.moddb.com/mods/san-andreas-multiplayer/downloads/sa-mp-022-re-release



第五部分 第三方项目与社区开发资料



编号 内容描述 来源链接
[AC] SAMPE(SAMPC)GitHub 项目页——含 SAMPE README 全文(泄露源码坦白、Kalcor 2019声明引用、早期 SA:MP 0.2 开发者完整名单) https://github.com/teredokot/SAMPC
[AD] GitHub——aFakeCmd/SA-MP——另一 SAMPE 分支,同含 Kalcor 2019声明引用与开发者名单 https://github.com/aFakeCmd/SA-MP
[AE] YSI-Includes GitHub 项目页——Y_Less 持续维护至今的脚本库 https://github.com/pawn-lang/YSI-Includes
[AF] GitHub——openmultiplayer 组织首页——open.mp 全部开源代码仓库 https://github.com/openmultiplayer
[AG] Discord——SA:MP & open.mp 官方服务器(成员数据) https://discord.com/invite/samp



第六部分 2016 年十周年问答葡文转述版



编号 内容描述 来源链接
[AH] SA:MP 论坛葡语版——Kalcor 十周年问答帖转译,含开源问题回答、game-mp 付费逻辑、SA:MP 与 RP 服务器关系等原话译文 https://sampforum.blast.hk/printthread.php?tid=606613





RE: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - siwode - 03-26-2026

Big GrinBig Grin 哈哈有意思