本页目录

Teeworlds(复古风多人射击游戏)

teeworlds · teeworlds/teeworlds

Teeworlds 是一款用 C++ 编写的免费在线多人射击游戏,采用复古 2D 画风,基于 OpenGL 与 SDL2,支持 Windows、Linux、macOS。官方介绍称单局最多 16 名玩家,提供团队死斗、夺旗等多种模式,并允许玩家自行设计地图。项目源码同时支持 C...

动作游戏 射击 多人对战 SDL 自研引擎 C++ 角色控制 游戏状态管理 网络联机 地图编辑器 中级
★ Stars 2,655 Forks 657 License 未明确 更新 2026-11-06

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
README 未涉及国内网络环境;克隆需拉取 git submodule,依赖包(SDL2、FreeType、pnglite、WavPack)需从各发行版仓库或 Homebrew 获取,国内镜像可用性待核验。

中文项目介绍

Teeworlds 是一款免费在线多人射击游戏,采用复古 2D 画风,可在主流操作系统上运行。官方描述中,单局最多支持 16 名玩家同场对战,提供包括团队死斗(Team Deathmatch)与夺旗(Capture The Flag)在内的多种游戏模式,玩家还可以自行设计地图。

项目最初由 Magnus Auvinen 编写,源码以「as-is」形式提供,不附带任何明示或暗示担保,完整许可与版权信息见仓库中的 license.txt。关于游戏的最新版本、自定义地图等动态信息,官方建议访问 https://www.teeworlds.com/ 获取。

从仓库定位看,这是一个已经具备完整客户端与服务端形态的多人游戏工程,而非示例或原型:构建产物中同时包含客户端 teeworlds 与服务端 teeworlds_srv,并额外提供 content、masterserver、tools 等构建目标。

核心功能

在线多人对战

官方介绍支持最多 16 名玩家同局竞技,围绕多人联机设计。

多种游戏模式

README 明确提到团队死斗与夺旗等模式。

地图自定义

玩家可以设计自己的地图,仓库构建目标中也包含 `content` 与 `tools` 相关内容。

跨平台

README 给出了 Linux、macOS、Windows 三大平台的构建说明,覆盖 CMake、bam、Visual Studio、MinGW 等多种工具链。

双构建系统

同时支持 CMake 与 bam,两者均有完整的依赖安装与编译步骤文档。

客户端/服务端分离

可单独构建服务端目标,便于在无图形库的无头服务器上部署。

技术架构分析

技术要点

从 README 与仓库元信息可以确认的技术栈包括:

  • 语言:以 C++ 为主(仓库同时带有 C 语言相关标签)。
  • 图形与窗口:依赖 SDL2 与 OpenGL。
  • 依赖库:构建依赖中包含 FreeType(字体)、pnglite(PNG 图像)、WavPack(音频)以及 Python 3。
  • 子模块:仓库使用 git submodule,克隆时需要 --recurse-submodules,已克隆的仓库需执行 git submodule update --init。
  • 构建选项:CMake 侧提供 -GNinja(更快的并行构建)、-DDEV=ON(调试模式、加快构建)、-DCLIENT=OFF(关闭客户端目标,适合无图形库的无头服务器)等开关;bam 侧支持 conf=release、arch=x86/arch=x86_64 以及 game、server、client、content、masterserver、tools 等目标。

这些信息说明项目在工程层面同时照顾了开发者日常调试与服务器部署两类场景。

构建与运行

Linux / macOS(CMake)

先安装依赖,README 按发行版给出了命令:

  • Debian/Ubuntu:build-essential cmake git libfreetype6-dev libsdl2-dev libpnglite-dev libwavpack-dev python3
  • Fedora:@development-tools cmake gcc-c++ git freetype-devel pnglite-devel python3 SDL2-devel wavpack-devel
  • Arch Linux:base-devel cmake freetype2 git python sdl2 wavpack(仓库中没有 pnglite)
  • macOS:brew install cmake freetype sdl2

随后克隆仓库并编译:

git clone https://github.com/teeworlds/teeworlds --recurse-submodules
cd teeworlds
mkdir -p build && cd build
cmake ..
make

编译完成后,./teeworlds 启动客户端,./teeworlds_srv 启动服务端;后续增量构建只需重复 make。

Linux / macOS(bam)

依赖与 CMake 方式基本一致,只是把 cmake 换成 bam(Arch 上 pnglite 同样不在官方仓库)。克隆仓库后直接执行 bam,产物位于 build 的子目录中。若系统没有 bam,可从 https://github.com/teeworlds/bam 获取并执行 ./make_unix.sh 安装。

Windows

README 给出三条路径:

  1. Visual Studio + CMake:安装带「Desktop development with C++」「Python development」「Git for Windows」组件的 Visual Studio,通过 Team Explorer 克隆仓库,等待 CMake 配置完成后选择 teeworlds.exe 作为启动项编译。
  2. MSVC Build Tools + bam:安装 Microsoft C++ Build Tools 与 Python,下载源码与 bam 0.5.1,在 x64 Native Tools Command Prompt 中先运行 make_win64_msvc.bat 构建 bam,再执行 bam conf=release 构建游戏。
  3. MinGW + CMake:安装 MinGW 相关组件、Git、Python、CMake,在 CMake GUI 中选择源码与构建目录,生成器选「MinGW Makefiles」,生成后在构建目录执行 mingw32-make。

补充说明

学习建议

  • 想研究多人联机架构的读者,可以从客户端与服务端分离的构建目标入手,先跑通 server 目标,再对照客户端代码理解网络交互。
  • 关注构建工程化的读者,可对比 CMake 与 bam 两套脚本对同一份源码的组织方式,理解跨平台构建的取舍。
  • 对 2D 渲染与输入处理感兴趣的读者,可结合 SDL2 与 OpenGL 的依赖关系,从客户端入口逐步深入。
  • 由于项目历史较长,README 中的依赖版本与工具链说明可能随平台演进变化,实际构建时建议以仓库当前文档与官方站点为准。

开源许可证与版权说明

许可证标识:未明确。源码、资源与依赖许可可能不同,请以官方仓库为准。本站仅做索引,不托管源码。

相似项目