open-sourcegamefpsmultiplayercube-engineshooter type: concept 创建: 2026-04-09 更新: 2026-04-09

AssaultCube

免费多人 FPS,基于 CUBE 引擎,低延迟网络,可协作地图编辑

基本信息

项目 内容
GitHub https://github.com/assaultcube/AC
语言 C++
构建系统 Makefile (clang++/g++)
渲染/引擎 OpenGL + SDL2,基于 CUBE Engine
许可 ZLIB (极宽松,可商用、可再许可)
平台 Windows, Linux, macOS
包大小 ~50MB

核心技术点

CUBE Engine 派生架构

  • 源于 Wouter van Oortmerssen 的 CUBE Engine (2003, ZLIB License)
  • 继承 CUBE 的轻量级设计理念:高效带宽利用、低延迟网络
  • 源码结构:source/src/ 为主代码目录,source/enet/ 为网络库

低延迟网络系统

  • 使用 ENet 库进行可靠 UDP 网络传输
  • 设计目标:56 Kbps 仍可流畅游戏
  • server.cpp (57471 bytes 最大文件) 处理服务器逻辑
  • clients2c.cpp 处理客户端-服务器通信协议
  • 支持 master server 发现机制 (master.cpp)

协作地图编辑 (Cooperative Editmode)

  • 核心特性:多人实时协作编辑地图
  • editing.cpp 实现所有编辑命令
  • worldio.cpp 处理地图加载/保存
  • 支持 editmode 切换,可随时进入/退出编辑状态
  • 内置编辑菜单 (menus_edit.cfg)

Bot AI 系统

  • 完整 Bot AI 实现:source/src/bot/ 目录
  • ac_bot.cpp/h — AssaultCube 专用 Bot
  • bot.cpp/h — 通用 Bot 框架
  • bot_waypoint.cpp/h — 路点导航系统
  • bot_ai.cpp/h — AI 决策逻辑
  • botmanager.cpp — Bot 管理器

武器与游戏逻辑

  • weapon.cpp — 武器系统(枪械、近战等)
  • clientgame.cpp — 客户端游戏逻辑
  • game/ 子目录包含游戏模式逻辑

音频系统

  • audiomanager.cpp — OpenAL 音频管理
  • oggstream.cpp — OGG 流媒体支持
  • 低带宽音频设计

渲染架构

  • rendergl.cpp — OpenGL 渲染器
  • renderhud.cpp — HUD 渲染
  • texture.cpp — 纹理管理
  • MD2/MD3 模型支持 (md2.h, md3.h)

游戏特点

游戏模式

  • Deathmatch (团队/个人)
  • Survivor
  • Capture the Flag (CTF)
  • Hunt the Flag
  • Keep the Flag
  • Pistol Frenzy
  • Last Swiss Standing
  • One-Shot One-Kill

内置功能

  • 地图编辑器:实时协作编辑,支持 2D/3D 编辑模式
  • Bot 系统:单人训练,支持 Bot AI 路径学习和行为决策
  • Demo 录制:回放系统录制游戏过程
  • 自动下载:服务器间地图/资源自动同步 (autodownload.cpp)
  • 服务器浏览器:发现和连接服务器 (serverbrowser.cpp)

配置系统

  • 配置文件:config/ 目录,.cfg 文件格式
  • 命令系统:command.cpp 实现命令解析和别名
  • 控制台:console.cpp 实现游戏内控制台

架构图

source/
├── src/                 # 主源码
│   ├── main.cpp         # 入口、初始化、主循环
│   ├── server.cpp       # 服务器逻辑 (最大文件)
│   ├── client.cpp       # 客户端网络
│   ├── clients2c.cpp    # 客户端-服务器协议
│   ├── bot/             # Bot AI 系统
│   │   ├── ac_bot.cpp   # AC 专用 Bot
│   │   ├── bot.cpp      # 通用 Bot
│   │   ├── bot_ai.cpp   # AI 决策
│   │   └── bot_waypoint.cpp  # 路点导航
│   ├── editing.cpp      # 地图编辑器
│   ├── worldio.cpp      # 地图 I/O
│   ├── weapon.cpp       # 武器系统
│   ├── rendergl.cpp     # OpenGL 渲染
│   ├── renderhud.cpp    # HUD 渲染
│   ├── texture.cpp      # 纹理管理
│   ├── audiomanager.cpp # OpenAL 音频
│   └── crypto.cpp       # 加密工具
├── enet/                # ENet 网络库
├── include/             # 公共头文件
└── lib/                 # 预编译库

对公司 AI 游戏的参考价值

方向 启示
网络同步 ENet + 可靠 UDP 的低延迟设计适合实时竞技游戏
协作编辑 多人实时协作编辑模式可作为 AI 辅助关卡设计的参考架构
Bot AI 架构 路点系统 + AI 决策分离设计可用于游戏中 AI 对手
轻量引擎 CUBE 引擎简洁设计(50MB 包体积)适合快速原型验证
确定性感 CUBE 系列引擎的确定性设计是多人竞技平衡性的基础
游戏 MOD ZLIB 许可允许商业使用,可作为技术研究基础

衍生项目

  • Cube 2: Sauerbraten — CUBE Engine 的后继者,3D 渲染增强
  • Red Eclipse — 同样基于 CUBE Engine 的竞技场射击游戏
  • AssaultCube 可视为 Cube 的"射击游戏特化"分支