AX 爱鲜报

GameLib 单头文件 C++ 游戏库

面向 C++ 初学者的单头文件 2D 游戏库,无需 SDL/DirectX/OpenGL,拷贝 GameLib.h 即可绘图、播放声音、处理键鼠与碰撞,十行代码就能跑起可玩的小游戏。

爱鲜报评分

0.0

0 人评分

519

星数

是

中文

C++

主语言

是

活跃

3

贡献者

人工分析

EDITORIAL

推荐理由

它把 C++ 初学者最头疼的环境配置问题直接抹掉:一个头文件、零链接依赖,兼容 Dev C++ 自带的 GCC 4.9.2,非常适合课堂教学与自学。内置绘图、精灵、声音、Tilemap、UI 控件等常用能力,并附带 15 个由浅入深的示例,从 Hello World 一路做到太空射击。对想快速看到成果、而不是先折腾构建系统的开发者来说,这是极低门槛的入门选择。

适用场景

  • C++ 课程作业与教学演示
  • 2D 小游戏快速原型(贪吃蛇、打砖块、太空射击)
  • 零配置交付的课堂/实验项目
  • 初学者学习游戏循环与碰撞检测
  • 通过 SDL2 版移植到 Linux/macOS/Web

优点

  • 单头文件、零依赖,拷贝即用,无需配置链接参数
  • 兼容 Dev C++ 与 GCC 4.9.2,对学校环境友好
  • 绘图、精灵、声音、Tilemap、UI 控件等 API 覆盖完整
  • 附带 15 个渐进式示例,学习路径清晰
  • 提供 SDL2 移植版本,可跨平台到 Linux/macOS/Web

缺点

  • 仅面向 2D,缺少 3D 与高级渲染能力
  • Win32 主线主要面向 Windows,其他平台需走 SDL2 版本
  • 功能偏教学与轻量原型,不适合大型商业项目
  • 中文文档与社区资料相对有限,主要依赖仓库内英文文档
上手难度 入门

GameLib 是什么

GameLib 是一个面向 C++ 初学者的单头文件 2D 游戏库。它的核心卖点只有一句话:把 GameLib.h 拷进项目文件夹,写一句 #include "GameLib.h",就能开始做游戏。

不需要安装 SDL、SFML、raylib,不需要配置头文件路径,也不需要链接任何库——窗口、绘图、键盘鼠标、精灵、声音、碰撞检测全部内置。

为什么值得关注

很多 C++ 初学者学了几周,仍然只能在黑窗口里 cout 一行字。想用成熟游戏库,往往先被环境配置劝退:SDL 要配路径和一堆 dll,SFML 要懂 CMake,raylib 需要一定的数学与 C/C++ 基础。

GameLib 的目标就是干掉这段痛苦,让第一行图形代码尽可能早地出现在屏幕上。它专门兼容 Dev C++ 自带的 GCC 4.9.2,也支持任何 C++11 的 Windows 编译器。

十行代码跑起来

#include "GameLib.h"

int main()
{
    GameLib game;
    game.Open(640, 480, "My Game", true);

    int x = 320, y = 240;

    while (!game.IsClosed()) {
        if (game.IsKeyDown(KEY_LEFT))  x -= 3;
        if (game.IsKeyDown(KEY_RIGHT)) x += 3;
        if (game.IsKeyDown(KEY_UP))    y -= 3;
        if (game.IsKeyDown(KEY_DOWN))  y += 3;

        game.Clear(COLOR_BLACK);
        game.FillCircle(x, y, 15, COLOR_CYAN);
        game.DrawText(10, 10, "Up/Down/Left/Right to move!", COLOR_WHITE);
        game.Update();
        game.WaitFrame(60);
    }
    return 0;
}

编译时通常只需类似 g++ main.cpp -o game.exe -mwindows 的命令,无需额外链接参数。

主要特性

  • 零配置:单头文件拷贝即用,兼容 GCC 4.9.2(Dev C++)
  • 开箱绘图:点、线、矩形、圆、椭圆、三角形(描边与填充),内置 8×8 像素字体,支持可缩放字体与 UTF-8
  • 精灵系统:整数 ID 管理,无需手动释放资源,支持 PNG/JPG/BMP、帧动画、翻转、缩放、旋转与 Alpha 混合
  • 键鼠输入:按住/按下/松开检测,鼠标三键与滚轮,窗口失焦自动暂停
  • 声音:WAV 音效与 MP3/MIDI 背景音乐,独立通道互不干扰
  • 碰撞检测:矩形重叠、圆碰撞、两点距离
  • Tilemap:双层瓦片地图、视差滚动、只渲染可见区域,支持 .glm 数据存取
  • UI 控件:Button、Checkbox、RadioBox、ToggleButton,即时模式零依赖
  • 场景与存档:整数标识场景配合 switch 切换;SaveInt/LoadInt 一行读写
  • 跨平台:SDL2 版 GameLib.SDL.h 支持 Linux/macOS/Web

示例与学习路径

仓库 examples/ 目录提供 15 个由浅入深的示例,同时兼容 Win32 与 SDL 两条产品线:

  • 入门基础:Hello World、键盘移动与弹跳小球、图形绘制、简易画板
  • 精灵与声音:精灵与帧动画、声音播放、简易射击
  • 完整小游戏:打砖块、贪吃蛇
  • Tilemap 与文字:双层视差卷轴、可缩放字体与 UI
  • 高级特性:精灵缩放旋转、裁剪矩形、太空射击、UI 控件

适合做什么

太空射击、横版卷轴、俄罗斯方块、贪吃蛇、打砖块、走迷宫、接水果、弹幕游戏、回合制 RPG、视觉小说、地图编辑器、画板程序,以及各种课程作业演示。

环境与文档

  • Win32 主线:Windows 7+,任意 C++11 编译器(GCC 4.9+ / MSVC 2015+ / Clang),推荐 Dev C++、Visual Studio
  • SDL 版:Linux/macOS/Windows,需要 SDL2 及可选扩展
  • 文档入口包括 docs/quickref.md(API 快速检索)与 docs/manual.md(完整接口说明)

项目采用 MIT 协议,可自由使用。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。