自定义 UI 系统
界面层不是简单贴图,而是项目内自建的一套 UI 框架。
Cytopia · CytopiaTeam/Cytopia
Cytopia 是一款免费开源的城市建造模拟游戏,采用复古像素美术,基于 SDL2 自研等距渲染引擎,使用 C++ 编写。已列出的特性包括自定义 UI、镜头平移与缩放、地形编辑、程序化地形生成、原创配乐与音效,以及基于 Qt 的瓦片编辑器;项目强...
Cytopia 是一款免费、开源、复古像素美术风格的城市建造游戏,开发重点之一是对模组(mod)的支持。项目由 CytopiaTeam 维护,代码以 C++ 编写,渲染层没有套用现成商业引擎,而是自行实现了一个基于 SDL2 的等距(isometric)渲染引擎。游戏的目标是让玩家在像素画风的地块上规划与建设城市,同时让社区能够通过模组扩展内容。
README 中的截图标注为「Work-in-Progress」,说明项目仍处于持续开发阶段:一部分能力已经可用,另一部分(生物群系、OpenGL 渲染器、完整玩法机制等)仍列在计划清单中。阅读源码或试玩时,建议以仓库当前状态为准。
项目对外提供的入口包括:官网 cytopia.net、Discord 社区服务器、itch.io 发布页,以及 GitHub 仓库;代码文档由 Doxygen 生成并单独托管。
界面层不是简单贴图,而是项目内自建的一套 UI 框架。
用 C++ 实现,负责等距视角下的地图绘制。
支持平移(panning)、缩放(zooming)与重新定位(relocating)。
可以在地图上修改地形。
地形可由算法生成,而非只能手工铺设。
由 Kingtut 101 带领的美术团队绘制。
包含原创配乐、环境音与音效,主要由 MB22 制作。
一个基于 Qt 的工具,用于编辑 TileData 的 JSON 文件,方便维护地块数据。
从依赖清单可以反推项目的技术构成:
整体架构上,这是一个「自研引擎 + SDL2 抽象层 + 数据驱动内容」的组合:渲染是自己写的,输入、窗口、音频等平台相关部分交给 SDL2 与 OpenAL,地块等游戏内容以 JSON 描述并通过 Qt 工具编辑。这种分层对学习「如何从零搭一个等距城市建造游戏」很有参考价值。
README 声明支持以下平台:
构建前置依赖包括: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」,即尚未完成或尚未合入的规划,不应视为已实现能力:
可以看出,项目的路线图分为「渲染与编辑器打底」和「玩法与生态补齐」两个阶段。对想要参与贡献的开发者来说,这些条目也提示了可能的工作方向。
这个仓库适合以下几类读者:
由于项目仍在开发中,部分模块可能变动频繁,阅读时建议对照 Doxygen 生成的代码文档与仓库的提交记录,避免依据过时的说明理解实现。若希望参与,README 邀请开发者加入 Discord 社区(历史上也提供过 freenode 上的 #Cytopia IRC 频道)进行交流。
id Software 公开的初代 DOOM 源代码,限非盈利使用。README 说明:运行仍需...
OpenRCT2 是《过山车大亨 2》(RollerCoaster Tycoon 2)的开源重实现项目,...
Endless Sky 是一款 C++ 编写的 2D 沙盒式太空探索游戏,玩法接近 Elite、Esc...