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

SuperTuxKart

免费开源卡丁车派对游戏,强调趣味而非物理真实性,支持多人在线竞速

基本信息

项目 内容
GitHub https://github.com/supertuxkart/stk-code
语言 C++ (~274K LOC,927 个源文件)
构建系统 CMake (3.12...4.0)
渲染/引擎 OpenGL 3.3+ / OpenGL ES 3.0+ / DirectX 9 (可选)
许可 GPLv3
平台 Windows, Linux, macOS, Android, Nintendo Switch
物理引擎 Bullet Physics (btKart)
网络库 ENet (UDP) + OpenSSL/MbedTLS 加密

核心技术点

Bullet Physics 卡丁车物理 (btKart)

  • src/physics/btKart.cpp/h — 基于 Bullet Physics 的卡丁车物理实现
  • btKartRaycast.cpp — 射线检测用于碰撞
  • 强调趣味性而非真实性:漂移加速、道具攻击
  • kart.cpp/h — 核心 Kart 类,含速度/方向/氮气加速
  • kart_motion_state.hpp — Bullet 物理状态同步

渲染引擎架构

  • src/graphics/ — 主渲染子系统,含光照/阴影/PBR
  • CBatchingMesh.cpp — 批量网格渲染优化
  • b3d_mesh_loader.cpp/h — B3D 格式骨骼动画加载
  • 支持 OpenGL / GLES / DirectX 9 多后端
  • abstract_renderer.hpp — 抽象渲染器接口

网络同步架构

  • src/network/ — 完整 client-server 网络层
  • protocol.cpp/h — 协议管理(协议类型枚举 protocol_enum.hpp)
  • stk_host.cpp/h — STK 网络主机,管理 peers
  • server.cpp/h — 专用服务器,可 SERVER_ONLY=ON 无 GUI 构建
  • event_rewinder.cpp/h — 事件回滚系统(确定性重放)
  • rewind_manager.cpp/h — 回放管理器
  • smooth_network_body.cpp/h — 平滑网络身体位置
  • IPv6 支持,NAT 穿透(STUN 检测 stun_detection.hpp
  • 加密:crypto_openssl.cpp/hcrypto_mbedtls.cpp/h

在线系统

  • src/online/ — 在线功能:玩家档案、排行榜、好友
  • http_request.cpp/h — HTTP 请求抽象层(curl / URLSession)
  • database_connector.cpp/h — 数据库连接器
  • server_config.cpp/h — 服务器配置 XML
  • 支持公开服务器列表,在线账号注册系统

赛道与道具系统

  • src/tracks/ — 赛道系统
    • arena_graph.cpp/h — 竞技场寻路图
    • check_cannon.cpp/h — 传送门检测
    • bezier_curve.cpp/h — 贝塞尔曲线(赛道轨迹)
  • src/items/ — 道具系统(香蕉、氮气等)
  • src/modes/ — 游戏模式(竞速、道具赛、足球等)

可视化与 UI

  • src/guiengine/ — 游戏 UI 引擎(EGG 菜单系统)
  • src/karts/kart_gfx.cpp/h — 卡丁车特效(尾迹、碰撞特效)
  • src/animations/ — 骨骼动画系统
  • src/guiengine/ — 内置关卡编辑器 GUI

构建变体

  • SERVER_ONLY=ON — 无图形纯服务器二进制,适合 VPS
  • USE_IPV6=ON — IPv6 支持
  • USE_CRYPTO_OPENSSL=ON/OFF — OpenSSL vs MbedTLS 加密选择
  • BUILD_RECORDER=ON — OpenGL 录制器
  • USE_WIIUSE=ON — Wiimote 手柄支持

玩法特点

  • 道具赛模式:收集和使用各种道具(香蕉、皮娜炸弹、氮气等)
  • 竞速模式:纯速度比拼
  • 足球模式:团队合作将球踢入对方球门
  • 故事模式:线性关卡挑战
  • 内置关卡编辑器:玩家自制赛道
  • Kart 添加系统:玩家自制卡丁车模型和皮肤
  • Addon 在线分享:社区制作的赛道和卡丁车

对公司 AI 游戏的参考价值

方向 启示
物理系统 Bullet Physics 卡丁车物理调优,趣味性 > 真实性设计原则
网络架构 ENet UDP + 事件回滚 + 确定性重放,适合多人竞速同步
服务器部署 SERVER_ONLY 无 GUI 构建方案,适合云端部署
加密通信 OpenSSL/MbedTLS 可切换加密层设计
跨平台渲染 OpenGL/GLES/DX9 多后端抽象架构
道具系统 数据驱动道具效果(src/items/),可扩展性强
在线服务 HTTP API + 数据库的账号/排行榜系统
NAT 穿透 STUN + IPv6 支持,无需端口转发