![]() |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
圣安地列斯联机二十年: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" 消息一出,社区立刻沸腾。预告视频和截图开始在各大 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 官方论坛封号了! ——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 服务。我记录并上报了这次入侵。 第二段话语气更为强硬,是一封事实上的法律警告: 引用:"0.2.5 的源代码是通过计算机入侵从我们的服务器上盗取的。任何基于该代码发布软件的人,都涉嫌与我们作对的刑事共谋。 ——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: 引用:那么,请允许我给你们讲一段历史。结论由你们自己得出。 ——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 论坛的分享权限。 这篇文章表明,Kalcor 将 SA:MP 官方论坛作为个人政治立场的执行场所,并因此单方面剥夺了社区成员分享视频的权利。 第二篇:《我对版本命名系统的尝试》 同日,Kalcor 发布了一篇介绍其自创版本命名系统 "Kalver"(Kalcor Versioning) 的文章。文章详细阐述了 SA:MP 所使用的版本号规则,并在文末附上了这样一段话: 引用:"切勿超过 0.3。进入第 4 个大版本会给你的项目带来厄运,并给相关开发者带来死亡。如果你想在那个节点继续发布更新,请发布小版本更新。" 这便是 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 对玩家没有好处。它们中的很多已经偏离了原始设计和游戏艺术风格太远。 ——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 源代码? SAMPE 的存在,是 SA:MP 生态在官方停止维护后呈现出的"众人自救"状态的缩影之一。它明知使用了来源有争议的代码,但以 Kalcor 亲口宣告的放弃作为行动的道德依据——这种处境的两难,折射出整个社区在那段时期的集体困境。 第十三章 2019 年 11 月:Kalcor 的两段话与 SA:MP 的正式终结2019 年深秋,Kalcor 在 SA:MP 官方论坛那个关于 0.3.9 版本计划的讨论帖(帖子编号 #670043)中,先后留下了两段发言。这两段话,加在一起,构成了 SA:MP 官方时代真正的终章。 第一段话,是非正式的、散漫的,却信息量极大: 引用:"好吧,我不干了。我没有正式宣布,因为总有可能来个安全更新什么的。 原帖:https://sampforum.blast.hk/showthread.php?tid=670043 第二段话,是正式的,简短,措辞经过了斟酌: 引用:"我发这篇帖子,是为了让所有人知道:SA-MP 的开发即将终止。 ——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 的竞争对手,还有一点重要的附带说明:我没有在窃取任何人的代码。你们所有人都认为猫已经从袋子里跑出来了,因为一篇措辞糟糕、完全脱离对话上下文的帖子。你们透过袋子瞥了一眼,就认为整件事是愚蠢的——鉴于信息的缺乏,这是可以理解的。我试图只分享重要的要点,却没有透露太多细节,不幸的是这适得其反,因为现在你们只有半个故事,却要从中得出结论。> 引用:没有人介意他想要退出,这显然是合理的,完全自然的。我们反对的是他要把其他一切都一起拖下去。这是一个社区——这是一个拥有很多非常优秀的长期朋友的伟大社区,以一个封闭源代码的 mod 为中心,而这个 mod 有一个偏执的、控制欲强的领导者。我们想要移动这个中心,仅此而已。我们不想摧毁 SA:MP,我们不想分裂社区(之所以被发现,是因为我试图让长期被忽视的俄罗斯社区参与进来,从而重新吸引已经被分裂出去的人),我们想确保它的延续——因为 Kalcor 并不想。 这篇声明发布后,跟帖迅速增至数十条,来自世界各地的社区成员纷纷表态。 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] 一位来自罗马尼亚的用户 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 等)吗? 引用:关于这个话题我们收到了太多提问,请先去泡杯茶——这个回答会有点长。 问: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? 引用:等它准备好了。 第十八章 重写、内测与 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 发出了一封公开邀请函,以下是该信的完整内容: 引用:"你好, open.mp 开发者对此的回应出现了明显分歧。 MyU(open.mp 开发者)的个人意见: 引用:"首先声明:以下内容纯属个人观点,与 open.mp 项目及团队立场无关。 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(远程代码执行)漏洞的严重程度无需赘言——一旦被恶意服务器利用,玩家设备上可以被执行任意代码,后果不可估量。正是这一威胁,让 Kalcor 在沉寂三年之后重新露面,打了这最后一个安全补丁。 这也是 Kalcor 迄今为止最后一次以 SA:MP 开发者的身份公开发声。 RE: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - 小鸟unsigned - 03-24-2026 第二十章 2023 年 1 月 5 日:open.mp Release Candidate 12023 年 1 月 5 日,经历了约四年开发、两次全面重写、无数次内测之后,open.mp 团队正式发布了 Release Candidate 1(RC1)。 撰写这篇发布博客文章的人,是 Y_Less。他用了如下开场白: 引用:"终于来了! 在这篇文章的开头,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 改变了这一切——它是一次完整的重写,修复了长期遗留的问题,改善了脚本开发体验,移除了旧有限制,同时保持你现有代码的可用性。但这对你意味着什么?让我们来一一分析。" 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 发布的那篇博客,第一句话只有三个字: 引用:"终于来了。" 这三个字背后,是一个人十五年的等待、愤怒、坚持与释然。 这个社区的故事还没有结束。服务器仍在运行,玩家仍在连接,开发者仍在提交代码。圣安地列斯的街道,依然是成千上万人相聚的地方。 附录:原始资料索引本文所有关键叙述均有原始来源可供核验。凡正文中引用原文、转述当事人声明、或依据特定文献作出陈述之处,均可在下表中找到对应出处。 外部链接仅作考证之用,不构成叙述本身的一部分。 第一部分 人物声明与论坛原帖
第二部分 open.mp 官方博客与文档
第三部分 Kalcor 个人博客
第四部分 SA:MP 项目历史资料
第五部分 第三方项目与社区开发资料
第六部分 2016 年十周年问答葡文转述版
RE: 圣安地列斯联机二十年:SA:MP 与 open.mp 历史 - siwode - 03-26-2026 ![]() 哈哈有意思
|