本页目录

BaseService 微信小游戏/卡牌房间服务器(C++ 底层 + Lua 逻辑)

BaseService · li9chuan/BaseService

面向微信小游戏与 Facebook Instant Game 的房间及卡牌类游戏服务器,支持 WebSocket、WSS 与 TCP 协议,游戏逻辑用 Lua 编写,Lua 函数支持不停机热更新。C++ 底层据仓库描述已支持四十余款线上产品并跨平台,仓库内含一个斗地主游戏逻...

其他 无明确引擎 C 碰撞检测 物理系统 中级
★ Stars 2,410 Forks 363 License GPL-3.0 更新 2026-11-03

国内开发环境适配

Windows
官方声明支持
Linux
官方声明支持
macOS
官方声明支持
引擎 / 框架:无明确引擎 暂无中文教程标记 未标记站长实测
项目已迁移至 Codeberg,国内访问 GitHub 或 Codeberg 可能受网络影响;构建依赖 CMake、GLUT/libxmu(Linux)或 Xcode/Visual Studio,建议使用镜像或代理获取源码,具体网络情况待核验。

中文项目介绍

Chipmunk2D 是一个用 C 语言编写的轻量级 2D 刚体物理库,目标是为 2D 游戏开发者提供与新一代 3D 游戏同等质量的物理模拟能力。项目采用 OSI 认可的 MIT 许可证,限制极少,适合商业与非商业用途。

根据 README 说明,该项目已迁移至 Codeberg,作者目前会在两个站点同时维护,但最终计划完全离开 GitHub。仓库 Topics 标注了 2d、2d-physics、c、rigid-body,首页为 chipmunk2d.net。

核心功能

核心特性

README 列出的功能覆盖了 2D 游戏物理的常见需求:

  • 专为 2D 电子游戏设计。
  • 提供圆形、凸多边形和倒角线段三类碰撞图元。
  • 同一个刚体可以挂载多个碰撞图元。
  • 宽相碰撞检测使用包围盒树(具有较好的时间连贯性)或空间哈希,速度较快。
  • 基于 Erin Catto 的接触持久化算法进行冲量求解,速度极快。
  • 支持休眠已静止的物体,以降低 CPU 负载。
  • 支持基于用户自定义对象类型的碰撞事件回调。
  • 灵活的碰撞过滤系统,包含层、排除组和回调,可用于实现单向平台、浮力区域等效果(附示例)。
  • 支持最近点、线段(射线检测)、形状和包围盒查询。
  • 可以获取碰撞冲量大小,用于游戏效果、音效等。
  • 提供多种关节,便于制作载具、布娃娃等。
  • 支持关节回调,可轻松实现可断裂或动画关节(附示例)。
  • 维护所有碰撞物体的接触图。
  • 轻量级 C99 实现,除标准 C 库外无外部依赖。
  • 提供多种语言绑定。
  • 文档简洁易读。
  • 采用限制宽松的 MIT 许可证。

技术架构分析

技术要点

Chipmunk2D 的核心实现使用 C99,不依赖标准 C 库之外的第三方库,因此便于嵌入不同平台和引擎。其碰撞检测分为宽相与窄相:宽相通过包围盒树或空间哈希快速筛选潜在碰撞对,窄相则处理圆形、凸多边形和倒角线段图元之间的精确接触。求解器利用接触持久化算法提升冲量求解效率,并支持物体休眠来减少静止场景的 CPU 开销。

碰撞过滤系统允许开发者通过层、排除组和回调组合出复杂的交互规则,例如单向平台或浮力区域。查询接口支持最近点、射线、形状和包围盒检测,碰撞冲量数据也可读出来驱动音效或特效。关节系统覆盖多种类型,并支持回调,方便实现可断裂关节或动画关节。

构建与运行

README 按平台给出了构建方式:

  • Mac OS X:仓库包含 Xcode 工程文件,可构建静态库和演示程序;也可以使用 CMake 文件或 xcode/ 目录下的 macstatic.command 脚本构建静态库并打包头文件。
  • iPhone:包含原生 Objective-C API。Xcode 工程可以构建静态库;也可以运行 xcode/ 目录下的 iphonestatic.command,生成设备 release 与模拟器 debug 的 fat library,之后将 Chipmunk-iOS 目录拖入 iPhone 工程即可。
  • UNIX 类系统:社区用户提供了 CMake 文件,需要先安装 CMake。执行 cmake . 然后 make,会构建动态库、静态库和演示程序。README 提到部分用户在 Ubuntu 上因缺少 GLUT 或 libxmu 而遇到构建错误。
  • Windows:msvc/ 目录包含 Visual Studio 工程。README 说明作者尽量保持 MSVC 10 工程更新,但没有 MSVC 9 环境来定期维护该工程,可能无法工作,欢迎协助修复。

补充说明

入门与文档

C API 文档位于 doc/ 目录。README 建议从自带的 Demo 应用入手:演示程序只负责搭建 Chipmunk 模拟空间,并直接从该空间绘制图形,因此可以在不关心图形代码的情况下理解 Chipmunk API 的用法。演示中的绘制例程可以自由用于自己的项目,但 README 也指出这并不是推荐的 Chipmunk 对象绘制方式,因为它会触及未文档化/私有的 API。

迁移与获取最新代码

README 顶部说明项目已迁移至 Codeberg。若要从现有 GitHub 检出迁移,可执行:

git remote set-url origin https://codeberg.org/slembcke/Chipmunk2D
git fetch origin master
git reset origin/master

之后可能还需要运行 git checkout . 清理已删除的文件,但这会丢弃本地修改。README 还提到,如果从点版本下载获取源码,可以考虑从 GitHub(现为 Codeberg)获取最新源码,因为 bug 修复和新功能会定期加入,大改动会在分支中测试后再合并,点版本下载通常并不比最新代码更好或更少 bug。

开源许可证与版权说明

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

相似项目