本页目录

Cytopia(开源像素风城市建造模拟游戏)

Cytopia · CytopiaTeam/Cytopia

Cytopia 是一款免费开源的城市建造模拟游戏,采用复古像素美术,基于 SDL2 自研等距渲染引擎,使用 C++ 编写。已列出的特性包括自定义 UI、镜头平移与缩放、地形编辑、程序化地形生成、原创配乐与音效,以及基于 Qt 的瓦片编辑器;项目强...

★ Stars 2,182 Forks 132 License GPL-3.0 更新 2026-11-13

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:SDL 暂无中文教程标记 未标记站长实测
README 未提供国内构建说明;依赖 CMake/Conan 及 SDL2、OpenAL、libnoise、imgui 等,首次配置可能需从 GitHub/Conan 源拉取依赖,国内网络建议准备镜像;具体可用性待核验。

中文项目介绍

Cytopia 是一款免费、开源、复古像素美术风格的城市建造游戏,开发重点之一是对模组(mod)的支持。项目由 CytopiaTeam 维护,代码以 C++ 编写,渲染层没有套用现成商业引擎,而是自行实现了一个基于 SDL2 的等距(isometric)渲染引擎。游戏的目标是让玩家在像素画风的地块上规划与建设城市,同时让社区能够通过模组扩展内容。

README 中的截图标注为「Work-in-Progress」,说明项目仍处于持续开发阶段:一部分能力已经可用,另一部分(生物群系、OpenGL 渲染器、完整玩法机制等)仍列在计划清单中。阅读源码或试玩时,建议以仓库当前状态为准。

项目对外提供的入口包括:官网 cytopia.net、Discord 社区服务器、itch.io 发布页,以及 GitHub 仓库;代码文档由 Doxygen 生成并单独托管。

核心功能

自定义 UI 系统

界面层不是简单贴图,而是项目内自建的一套 UI 框架。

基于 SDL2 的渲染引擎

用 C++ 实现,负责等距视角下的地图绘制。

摄像机操作

支持平移(panning)、缩放(zooming)与重新定位(relocating)。

地形编辑

可以在地图上修改地形。

程序化地形生成

地形可由算法生成,而非只能手工铺设。

像素美术

由 Kingtut 101 带领的美术团队绘制。

音频内容

包含原创配乐、环境音与音效,主要由 MB22 制作。

Qt 瓦片编辑器

一个基于 Qt 的工具,用于编辑 TileData 的 JSON 文件,方便维护地块数据。

技术架构分析

技术要点

从依赖清单可以反推项目的技术构成:

  • 图形与窗口:SDL2,配合 SDL2_ttf(字体渲染)与 SDL2_image(图像加载)。
  • 音频:OpenAL 负责播放,libogg / libvorbis 负责 Ogg Vorbis 解码。
  • 数据与资源:zlib 压缩、libpng 图像读写。
  • 地形生成:libnoise,用于程序化噪声地形。
  • 界面:imgui(Dear ImGui),与项目自建的 UI 系统一同使用。
  • 构建体系:CMake 作为构建系统,Conan 作为 C/C++ 包管理器来拉取依赖。

整体架构上,这是一个「自研引擎 + SDL2 抽象层 + 数据驱动内容」的组合:渲染是自己写的,输入、窗口、音频等平台相关部分交给 SDL2 与 OpenAL,地块等游戏内容以 JSON 描述并通过 Qt 工具编辑。这种分层对学习「如何从零搭一个等距城市建造游戏」很有参考价值。

构建与运行

README 声明支持以下平台:

  • Linux:使用 clang 或 g++-5 及以上版本
  • Windows
  • Mac

构建前置依赖包括:CMake、Conan、SDL2、SDL2_ttf、SDL2_image、OpenAL、zlib、libnoise、libogg、libvorbis、libpng、imgui。

具体的编译步骤没有直接写在 README 里,而是指向仓库 Wiki 的 Build instructions 页面;编码规范同样放在 Wiki 的 Coding guidelines 页面。因此实际构建时,应以 Wiki 中对应平台的说明为准,而不是照搬依赖列表手工配置。

补充说明

计划中的功能

以下内容在 README 中被列为「Planned features」,即尚未完成或尚未合入的规划,不应视为已实现能力:

  • 生物群系(Biomes)
  • OpenGL 渲染器
  • 玩法机制(Gameplay mechanics)
  • 游戏内模组下载机制
  • Android / iOS 移动端
  • 面向模组的脚本语言(例如 LUA 这类)

可以看出,项目的路线图分为「渲染与编辑器打底」和「玩法与生态补齐」两个阶段。对想要参与贡献的开发者来说,这些条目也提示了可能的工作方向。

学习建议

这个仓库适合以下几类读者:

  • 想了解等距渲染实现的开发者:可以重点看基于 SDL2 的渲染部分与摄像机平移/缩放逻辑。
  • 对程序化地形感兴趣的人:结合 libnoise 的使用方式,观察噪声如何被转换为可编辑地块。
  • 想学习数据驱动内容设计的开发者:TileData 的 JSON 结构配合 Qt 瓦片编辑器,是一个小而完整的内容管线样例。
  • C++ 工程化实践:CMake + Conan 的依赖管理方式,可作为中型 C++ 游戏项目的构建参考。

由于项目仍在开发中,部分模块可能变动频繁,阅读时建议对照 Doxygen 生成的代码文档与仓库的提交记录,避免依据过时的说明理解实现。若希望参与,README 邀请开发者加入 Discord 社区(历史上也提供过 freenode 上的 #Cytopia IRC 频道)进行交流。

开源许可证与版权说明

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

相似项目