Start Game:SDL2简介
官网简介:
Simple DirectMedia Layer是一个跨平台开发库,旨在通过OpenGL和Direct3D提供对音频、键盘、鼠标、操纵杆和图形硬件的低级别访问。它被视频播放软件、模拟器和流行游戏使用,包括Valve的获奖目录和许多Humble Bundle游戏。
SDL正式支持Windows、macOS、Linux、iOS和Android。对其他平台的支持可以在源代码中找到。
SDL是用C编写的,本机与C++配合使用,还有可用于其他几种语言的绑定,包括C#和Python。
SDL 2.0是在zlib许可证下分发的。此许可证允许您在任何软件中自由使用SDL。
API类型分类
SDL 按照 API 的类型可以分为几个部分:
Basics ,用于系统初始化、错误处理、日志打印等基本功能。
Video,用于窗口管理和显示、像素纹理渲染等功能。
Input Events,用于处理各种事件,包括键盘、鼠标、手柄等外设。
Force Feedback,主要用于各种“力反馈”的设备支持。
Audio,用于音频设备管理,包括播放、录制等操作。
Threads,用于多线程、原子操作以及线程管理等功能。
Timers,用于定时器的支持。
File Abstraction,文件系统相关操作。
Shared Object Support,用于动态库的加载以及函数查找等相关操作。
Platform and CPU Information,主要用于平台检测、CPU检测、字节序、位运算等功能。
Power Management,电源状态管理。
Additional Functionaliy,平台相关的附加功能。
除了上述子系统外,SDL 还基于这些功能开发了几个扩展库:
SDL_image 用于支持额外的图片格式,包括常见的 PNG、BMP、WEBP、GIF、JPEG、TIFF 等。
SDL_mixer 用于支持额外的音频格式,包括 MP3、OGG、WAV 等。
SDL_ttf 用于 TrueType 字体的渲染。
SDL_rtf 用于简单的 RTF 渲染支持。
SDL_net 用于网络相关的支持。
游戏开发基本模块
虽然上面的模块看起来很多,但是真正的需要学的的知识并不多,个人觉得制作简单的2D游戏大致需要掌握下面几个部分:
窗口部分。制作一个游戏最基本的就是显示一个窗口,所有的有些画面都是在窗口之内。在历史的文章中已经介绍过直接使用 Win32 API 搭建窗口的方法,但是对于 SDL 来说,它已经对这些步骤进行的二次封装,如果创建窗口可以直接使用 SDL 窗口管理的相关 API 即可。
事件部分。事件处理对于游戏来说非常重要,因为游戏中涉及大量的鼠标、键盘、手柄的外设交互,这些外设都可以看作一种事件产生装置,每种操作都会产生与之对应的事件,你可以在游戏中捕获这些事件,从而执行你游戏中对应的逻辑。
显示部分。游戏画面对于游戏的重要性无需多言,而显示部分主要的功能就是用来渲染游戏画面的,在不同的平台,可以使用不同的显示接口,SDL 已经将这些差异性进行了封装,在使用 SDL 过程中,你无需关注不同平台的差异性,不过在这份教程中并不会过于关注跨平台的问题,重点还是围绕 Windows 平台,关注 SDL 游戏开发的基本过程。
声音部分。声音对于游戏也非常重要。教程中主要会使用 SDL_mixer 扩展库实现对声音的播放,当然你也可以使用 音频播放教程 中的方式进行声音播放,只不过那些 API 只能在 Windows 平台使用而已。
除了上面的部分,其实还有网络模块、碰撞模块、动画模块等功能,但是这些并不是必须的,你不使用它们仍然可以制作一些游戏。当我们真正使用它们的时候再去了解显然比你一下子学习很多暂时用不上的知识要好的多。