内容提要
作者从探望性格迥异的侄女侄子却相处融洽中获得灵感,联想到图形编程中不同后端(GLFW/OpenGL与SDL3)可实现同一游戏逻辑且代码几乎相同,由此开发了GLAM抽象模块,将复杂后端封装为简单调用,让开发者专注游戏逻辑,仅需改一行代码即可切换后端,并以Carrom棋盘游戏为例说明其应用。
延伸解读
从生活冲突到代码抽象
作者用侄女侄子性格迥异却共处一室的日常,类比图形编程中不同后端(GLFW/OpenGL与SDL3)的冲突。两者虽实现方式不同,但游戏逻辑几乎一致。这种类比引出GLAM的核心思路:将差异抽象掉,让开发者专注于共同部分。
GLAM如何简化后端切换
GLAM提供GLAM::OpenGL和GLAM::SDL两个模块,封装了键盘鼠标事件捕获、用绘制三角形渲染所有图形、以及游戏循环的启动与退出。开发者只需更改一行代码即可切换后端,无需重写游戏逻辑,降低了学习图形编程的门槛。
对间歇开发者的实际价值
对于像作者这样偶尔写代码的人,GLAM让注意力从复杂的图形工具构建中解放出来,专注于游戏逻辑。同时,若某个后端安装困难,可轻松换用另一个。目前支持两种后端,但未来可能扩展更多,为小型游戏和工具开发提供了便利。
Q&A
GLAM是什么?它有什么作用?
GLAM是图形层抽象模块(Graphics Layer Abstraction Module),它将复杂的图形后端(如GLFW/OpenGL和SDL3)封装成简单的调用,让开发者只需更改一行代码就能切换后端,从而专注于游戏逻辑。
GLAM是如何被开发出来的?
作者从Reddit上看到两个功能相同的演示(一个用GLFW/OpenGL,一个用SDL3),发现它们的游戏逻辑代码几乎相同,于是像解联立方程一样提取出公共代码,从而诞生了GLAM。
GLAM目前支持哪些后端?
GLAM目前提供两个模块:GLAM::OpenGL和GLAM::SDL,分别对应OpenGL和SDL后端。
使用GLAM有什么好处?
使用GLAM可以让开发者专注于游戏逻辑,而无需记忆复杂的图形工具构造;同时,如果安装某个后端有困难,可以轻松切换到另一个后端。
GLAM提供了哪些具体功能?
GLAM提供三个主要功能:1) 捕获键盘和鼠标事件以改变游戏状态;2) 仅使用绘制三角形的能力来图形化表示游戏状态;3) 启动和退出游戏循环。
可以用GLAM开发什么类型的游戏?
可以用GLAM开发各种游戏,例如Carrom棋盘游戏(一种南亚游戏,在棋盘上用棋子击打入袋),文章第二部分展示了如何用GLAM创建类似游戏。