<!-- title: 《FreeKill》武将技能，不过是几行Lua -->
<!-- domain: games -->
<!-- repo: Qsgs-Fans/FreeKill -->

# 《FreeKill》武将技能，不过是几行Lua

## 仓库档案

把它放进“小而美”清单里其实是有点反差的：它不是那种一个周末写出来的小玩具，而是一套带服务端、客户端、扩展包体系的完整桌游平台。但它身上有两个特质，恰好是个人开发者最值得扒的——**玩法骨架小到一周能吃透，工程结构却完整到可以直接抄作业**。

## 这游戏是什么：一个“引擎”，不是一张“地图”

一句话说清：FreeKill 是三国杀类身份局卡牌游戏的完整开源实现，但它的野心不止于“复刻一副牌”——它把自己做成了引擎，**每一张武将、每一个技能、每一副扩展包，都是一段可以热插拔的 Lua 脚本**。

如果你没玩过三国杀，补一句玩法：开局每人暗抽一张身份牌（主公、忠臣、反贼、内奸），再选一个有独特技能的武将，然后围着桌子摸牌、出牌、互相伤害，直到某一方的胜利条件达成，身份牌翻开，有人社死，有人封神。

核心循环长这样：

```mermaid
flowchart TD
    A["开局：暗抽身份牌"] --> B["暗选武将：决定本局技能组"]
    B --> C["回合循环开始"]
    C --> C1["准备阶段：结算判定区"]
    C1 --> C2["摸牌阶段：白嫖两张牌"]
    C2 --> C3["出牌阶段：杀 / 锦囊 / 装备"]
    C3 --> C4["弃牌阶段：手牌上限瘦身"]
    C4 --> D{"有人倒下吗？"}
    D -- "没有" --> C
    D -- "有" --> E{"一方达成胜利条件？"}
    E -- "还没" --> C
    E -- "结束了" --> F["翻身份牌：赢家亮底，输家复盘"]
    F --> G["再来一局：换武将换身份"]
    G --> A
```

注意这个循环里最妙的一段：**“翻身份牌”到“再来一局”之间几乎没有冷却**。上一局的悬念在翻牌瞬间兑现，而“换一个武将、换一套技能”的成本低到只需要点两下——这正是它敢叫自己“引擎”的底气：内容换一茬，循环一个字不用改。

## 为什么上头：身份局的三层钩子

拆开看，这类游戏的成瘾结构是三层叠着的，每一层都有可以直接搬走的机制。

**第一层：信息不对称，社交推理的爽感。** 手牌是明的还是暗的决定了游戏气质。身份局里，所有人都知道场上有一个主公、几个反贼，但不知道谁是谁——于是“他为什么杀我”“他是忠臣还是内奸”这种推理，把一副卡牌玩出了狼人杀的味道。这是零成本的上头设计：**你甚至不需要任何美术和动画，光是“信息隐藏”这一个规则就能撑起整局的情绪**。

**第二层：随机奖励，但比例调得很刁。** 摸牌阶段每回合稳定来两张——底薪；锦囊牌和判定（比如“闪电”这种劈谁看脸的牌）——彩票。稳定保底加小概率暴击，这个配比和 Scraton 里讲的 variable reward 是同一个配方。更刁的是“装备”系统：装上+1马别人杀不到你，装上诸葛连弩一回合能出无限张杀——**随机牌库里捞出来的某些牌，会永久性地改变你的能力，而不是一次性生效**。这一招在 roguelike 里叫 build 成型，在这副牌里叫“手感来了”。

**第三层：每局都是新 build，复盘欲拉满。** 上头游戏的终极形态是“再来一局”不需要理由。身份局里，你的武将是暗选的、身份是随机的、队友是对面五个人里猜出来的——三重随机叠加，意味着**任何一局的输赢都可以归因于“我这武将没选好”或“我下把换他试试”**。玩家永远带着一个未验证的假设离场，这就是回流率。

对应到细节上：五人局、八人局的节奏差异（人越多内奸越爽）、濒死求桃的集体博弈、无懈可击的套娃响应——每一个都是“在别人回合里也给你事做”的设计，等待时间被填满了，掉线率自然就低。

## 技术拆解：C++ 管骨架，Lua 管灵魂

这个仓库对个人开发者最有价值的，是它的分层方式。按仓库公开介绍和品类通行架构整理（细节以源码为准）：

```mermaid
flowchart LR
    subgraph Client["Qt 客户端"]
        UI["界面 / 动画 / 音效"]
    end
    subgraph Server["Qt 服务端"]
        Lobby["大厅与房间"]
        Rule["规则裁决引擎"]
    end
    subgraph LuaLayer["Lua 脚本层"]
        Skill["武将技能脚本"]
        Card["卡牌效果脚本"]
        Pack["扩展包 / 剧本"]
    end
    UI <-->|"结构化消息"| Lobby
    Lobby --> Rule
    Rule <-->|"事件触发 / 回调"| Skill
    Rule <--> Card
    Rule <--> Pack
```

拆三个关键决策：

**决策一：规则裁决全在服务端。** 客户端只负责表现——你手里有什么牌、别人出牌的动画，都是服务端“广播”下来的结果。这意味着作弊空间被压到最小（客户端拿不到不该拿的信息，身份牌才能藏得住）。个人开发者做联机卡牌，这条是保命规则：**凡是“暗信息”，永远只存在服务端内存里**。

**决策二：玩法逻辑全下放 Lua。** 引擎本体（C++/Qt 那一层）只认抽象概念：伤害、判定、回合阶段、询问响应。而“张飞的技能是出杀次数不限”这种具体规则，是 Lua 脚本挂在这些抽象事件上实现的。好处立竿见影：**改一个技能数值不用重编译引擎，写一个新武将甚至不用碰 C++ 一行代码**。社区为什么能给它贡献几十个扩展包？因为贡献门槛被降到了“会写 Lua 就行”。

**决策三：扩展包即目录。** 一个扩展包就是一组 Lua 文件加资源文件，放进目录就能被加载。这个“内容即插件”的形态，本质上就是游戏界的 App Store 雏形——引擎方管平台，社区管内容。

**可以直接复用的组件**，我数了数至少三样：事件驱动的技能系统（把“当X发生时，若Y条件，则Z效果”做成数据表+脚本，这是所有卡牌游戏的地基）；服务端权威的房间系统（大厅、建房、断线重连的骨架）；以及暗信息管理（哪些数据下发给谁，一张权限表就够）。这三样东西，换成 Godot、换成 JS、换成 Unity，骨架一模一样。

## 变现观察：品类是印钞机，仓库自己不谈钱

先说仓库本身：至少从公开信息看，FreeKill 没有任何商业化痕迹——没有广告 SDK、没有付费墙，纯社区驱动，靠爱发电。但这不妨碍它背后的品类是一本活的变现教科书。

**三国杀本体就是国内桌游变现的天花板。** 游卡靠武将抽取、皮肤、会员这一套，把这个 2008 年的桌游 IP 变成了十几年长青的现金牛。后来 Steam 上线的那版虽然因口碑翻车出圈，但“翻车不妨碍品类赚钱”这件事本身就是信号：**身份局卡牌的付费意愿是被反复验证过的**。

**单机化改造的先例也都活着。** 《月圆之夜》把桌游卡牌改成单机 PVE 闯关，买断加内购，在移动端活得很好；《杀戮尖塔》把卡牌构建做到极致，全球卖了千万份级。共同点：都只借了“卡牌+技能构建”这个骨架，把联机社交层整个砍掉——而恰恰是砍掉的部分（服务器、联机匹配）最烧钱。

**开源同类的生态也有参照。** 同为开源三国杀类项目，无名杀（noname）那边衍生出了庞大的换皮 MOD 生态，社区创作者靠打赏和定制接单——说明“给这个品类做内容”本身就能换到钱，哪怕只是零花钱级。

至于 FreeKill 这类项目合理的变现位置：皮肤打赏、赞助、或者在它之上做原创规则的付费剧本——它自己没做，但位子是留着的。

## 给我的灵感：三条路，从换皮到卖铲子

**灵感一：换骨不换皮——做一套原创身份局。** 三国杀的玩法规则本身不受版权保护，但武将名、插画、台词受保护。所以路子是：保留“暗身份+技能武将”的骨架，题材换成修仙宗门、职场会议室、或者宠物公寓——人名美术全原创。MVP 路径也清晰：直接给 FreeKill 写 Lua 扩展包，几天就能验证一套新武将的强度和手感，引擎一分钱不用花；要独立发行再迁去 Godot 做自己的客户端。工作量：扩展包验证 1 周，独立 MVP 4-6 周。变现：移动端看广告解锁武将皮肤，或 Steam 低价买断。

**灵感二：砍掉联机，做单机 PVE 卡牌。** 身份局最劝退新手的恰恰是联机门槛——凑五个人、等每个人行动。反过来的机会就是：**保留技能构建的爽感，把对手换成 AI**，做成一关一个 Boss 的单机闯关（月圆之夜的公式）。技能系统照抄“数据表+脚本挂事件”那套，AI 甚至可以先用简单规则糊弄。MVP 工作量：2-4 周。变现：这是三条路里最成熟的——移动端内购+去广告，或 Steam 买断制，先例全都跑通过。

**灵感三：不卖游戏，卖铲子。** 把“事件驱动技能系统”抽成一个引擎无关的模板（Godot 版或 Unity 版），挂 itch.io 或资源商店卖 10-30 美元——买的人就是想做卡牌游戏的开发者，他们不缺想法，缺的就是一套“技能如何配置化”的干净实现。再进一步，给模板配一个可视化武将编辑器，让买家自己造武将，UGC 内容反哺模板口碑。MVP 工作量：2 周（模板本身你从 FreeKill 的分层思想里就能推出来）。变现：一次性买断+付费更新，个人开发者最省心的现金流。

三条路的共同起点是同一件事：**把 FreeKill 当架构教材读，而不是当游戏玩**。它已经替你把“卡牌游戏怎么分层才不会被需求压死”这道题做完了。

## 上手

- 仓库：https://github.com/Qsgs-Fans/FreeKill
- 在线 Demo：无网页版（Qt 客户端游戏）；据仓库页面，客户端可从 Releases 获取，覆盖 Windows/Linux/Android（本次未逐项核实，下载前自行确认）
- 上手建议：先别读引擎代码，直接看仓库里自带扩展包的 Lua 文件——挑一个技能最简单的武将，顺着“这个技能挂在哪个事件上”往下读，一小时就能摸清引擎和脚本的边界
### 1. 完成摘要（What was done）

### 2. 下一步计划（What's next）

- 文章已按规范输出，可直接发布；下一轮候选：deck-of-cards（⭐3153，扑克组件+玩法demo）、pokerth（⭐656，德州扑克）、daltonbr/Match3（⭐470，三消）
- 若可联网，建议先核实 FreeKill 的 License 与最新 release 时间，替换文中“未核实”标注

### 3. 注意事项（If applicable）

- FreeKill 是社区组织维护（非个人账号），已在文中透明说明；如编辑对“个人开发者”口径要求严格，可改选 pokerth 或 deck-of-cards 备选
- 灵感一涉及“玩法不受版权保护但美术/人名受保护”的边界，文中已明确提示须原创替换

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
