游戏日常 【CS2宠物系统】Valve 真的给小鸡做过一套宠物框架吗?
多运动别熬夜xD
2026年05月29日 20:21

本文主要挖掘 CS2 当前游戏文件中,与“小鸡 / 宠物系统”相关的一批可疑线索。

这些线索并不是单独出现的 pet 字符串,而是分散在地图实体、客户端结构、服务端结构、库存 UI、物品预览和文本提示等多个位置。 把它们放在一起看,未来CS2 的小鸡,似乎并不只是普通的地图环境动物,而是曾经可能被 Valve 纳入过一套更完整的“宠物 / 跟随 / 交易”框架之中。

我们先把“普通小鸡”和“宠物系统”分开 CS2 里本来就有普通小鸡。这个不神秘。 比如文件里有: models/chicken/chicken.vmdl materials/models/chicken/... particles/critters/chicken/...

这些说明:CS2 继承并重做了小鸡实体。 但可疑的不是这些,而是另一些更像“玩家宠物系统”的东西: petpopulation cs_pet_placement C_CSPetPlacement CCSPetPlacement Inventory item definition name: pet models/pets/egg_pristine.vmdl

普通小鸡只需要模型、AI、死亡特效。 但“宠物系统”会需要更多东西,比如: - 地图希望生成多少宠物 - 宠物和玩家有没有关系 - 宠物是不是一个库存物品 - 宠物是不是能被命名、装备、展示 - 宠物能不能预览 而以下这批文件,恰恰出现了很多这种迹象。

第一层证据:地图层已经有了“宠物数量”和“宠物放置点” 在 game/csgo/csgo.fgd 里,有两个非常关键的东西。 第一个是地图信息里的:

宠物数量

意思是:地图可以设置多少宠物数量。(当前是0) 这里命名不是chicken,而是pet population,这就很微妙。 V社如果只是想让地图里随机刷几只鸡,用 chicken 命名就够了。 但它用了 pet,就说明在代码层面,鸡可能被放进了一个更泛化的“宠物框架”里。

第二个是实体:

模型文件

意思是:Hammer / 地图编辑器里存在一个 cs_pet_placement 实体,用来指定宠物放置位置。 这非常可疑。如果只是地图里这种普通环境鸡,V社完全可以只用 chicken 实体,或者直接用小鸡生成系统,不需要单独搞一个 cs_pet_placement。

Hammer 宠物数量

所以第一层可以这样理解: CS2 并不只是有“小鸡实体”,而是额外保留了“宠物数量”和“宠物放置点”的概念。

证据等级:强。 因为这是地图编辑器 FGD 里明确写出来的。

第二层证据:客户端和服务端都有宠物放置实体类

在反编译 schema 里,有两个文件: DumpSource2/schemas/client/C_CSPetPlacement.h DumpSource2/schemas/server/CCSPetPlacement.h

虽然没有复杂字段,但还是暗藏玄机。 这说明 cs_pet_placement 不是 第一层 CSGO.FGD 里随便写的假东西。它在客户端和服务端 schema 里都有对应实体类。

我们换句话来说: - 地图编辑器有 cs_pet_placement - 客户端知道 C_CSPetPlacement - 服务端也知道 CCSPetPlacement

这就是一条互相对应的证据链。

证据等级:强。 但注意,它只证明“宠物放置实体存在”,不证明“宠物系统已经能完整运行”。

第三层证据:地图信息结构包含对应字段m_iPetPopulation

在客户端和服务端的 cmapInfo.h 里,都有这个字段:

它对应前面第一层的 csgo.fgd

这说明 petpopulation 不是单纯给 Hammer 看的描述,而是会进入地图信息结构里。

你可以把它理解成: - 地图作者可以告诉游戏:这张图希望有多少宠物。 - 游戏客户端和服务端的数据结构里,也确实预留了这个字段来接收它。

证据等级:强。 这比普通字符串强很多。

第四层证据:物品预览里有 petindex(宠物)

在 Protobufs/cstrike15_gcmessages.proto有一条很关键的线索

optional uint32 petindex = 19 这个很关键,因为它不是地图实体文件,而是 经济物品预览数据。

同一个数据块里通常会放物品预览的相关信息,比如贴纸、音乐、升级等级、实体索引等。这里出现 petindex,说明经济系统层面也认识某种“宠物索引”

这意味着什么? 可能有几种解释: 1.V社曾经设计过 宠物作为经济物品 2.V社曾经允许过 库存物品预览里带宠物 3.小鸡/宠物可能和玩家库存、装备、展示系统有关

但是这里要谨慎。petindex 只是一个字段,还不能说明宠物已经有完整道具系统。

证据等级:中 如果未来还能看到 petindex 继续变化,那这个证据会升级。

第五层证据:Panorama UI(用户界面) 把 pet(宠物) 当成一种可装备物品

panorama/scripts/common/iteminfo.js 里有一句非常重要:

这段逻辑的意思是:有些东西不是武器,但仍然是可装备的物品。

这里列了: flair0 徽章/装饰类 musickit 音乐盒 spray0 喷漆 customplayer 探员 pet 宠物

如果 pet 只是地图里的小鸡,那它不应该和音乐盒、喷漆、探员这种库存装备物品放在一起。

同一个文件里还有:

意思是:UI 会判断某个库存物品是不是 pet 类型。

这说明 UI 层曾经认真考虑过: 宠物 = 一种库存物品定义 宠物 = 可以像喷漆、音乐盒、探员一样被识别 宠物 = 可能有自己的物品图标或预览图

证据等级:中强。 但目前我没有在 items_game.txt 里看到完整的正式 pet 物品定义。这就是为什么我们不能说它一定会上线。

第六层证据:库存预览数据里有宠物

items/inventory_image_data.vdata 里有一个条目:

并且注意,下面配置了可用于库存物品预览的摄像机、灯光、物品位置等参数:

这说明 UI 资源里曾经为 pet(宠物) 这种物品类别准备过库存预览方式

可以这样理解: 如果宠物只是地图上的环境动物,那它根本就不需要库存预览参数。

但如果宠物是一个玩家可以拥有、可以查看、可以装备的物品,那就需要类似这样的库存渲染配置。

这个证据 和 第五层iteminfo.js 的 subslot === "pet" 是有关联的: iteminfo.js:识别宠物是可装备物品 inventory_image_data.vdata:给宠物准备库存预览参数 protobuf:经济预览数据里有 petindex

这三者放在一起,就很有意思。 证据等级:中强

第七层证据:疑似“宠物蛋”资源引用

有两个地方提到了: models/pets/egg_pristine.vmdl

一个在第一层csgo.fdg

另一个在:scripts/tools/anim_preview_archetypes.vdata

这个非常像一套“蛋”的世界模型和第一人称预览模型配置。 但是我这里只见到配置文件引用,并没找到完整模型资源

包括在我最新一期b站视频,片段末有提到捏鸡蛋动画:

所有这一层证据,也是一套完整的链。 证据等级:中强

这里再补充几张,有关抚摸小鸡、抱小鸡的检视动画:

抱起小鸡
抚摸小鸡
人物抱鸡

V社原本可能想做什么?

我觉得有二种可能,从保守到大胆

可能性一:地图宠物生成系统 这是最保守的解释。 就是:V社给地图做了一套更高级的小鸡/宠物生成机制。

地图设置 petpopulation 地图放置 cs_pet_placement 游戏按地图配置生成小鸡/宠物

这不一定是玩家可拥有的宠物,可能只是更灵活地控制地图动物。

可能性二:真正的库存宠物 / Vanity Pet

目前证据还不够完整。 以上证据看起来像是玩家可以拥有一个宠物,并在某些 UI 场景展示。

但反证是: 没有完整 pet item definition 没有宠物商城 没有明确宠物模型列表 没有完整 models 资源进入索引

只能说: V社至少做过“宠物作为库存/展示物品”的准备或原型,但目前无法确认它会以正式系统上线。 这更像是一套没有完全公开上线的“宠物小鸡原型框架”

声明: 这些内容并不代表 Valve 一定会在未来上线宠物系统,也不能直接等同于官方爆料。它更准确的性质,是游戏文件里遗留下来的功能痕迹、实体结构、UI 判断和本地化文本。 文中所有判断均会按照证据强度区分,勿将单个字符串、旧版本残留或开发占位符直接解读为确定爆料。如后续游戏文件或官方更新出现新变化,本文观点也可能随之修正。 本文为原创内容,未经授权禁止转载、搬运、洗稿或用于商业用途。如需引用部分内容,请注明作者及原文链接。欢迎补充资料、指出错误,也欢迎一起讨论 CS 系列中这些被文件记录下来的历史痕迹。