SDL游戏开发教程13(总结和代码调整)

本教程分享了作者首次接触SDL游戏开发的经历及心得,包括开发环境选择的重要性、SDLCore.h文件设计的迭代改进等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    到目前为止,该教程已经涵盖了开发一般桌面游戏所需要的大部分技术,后续主要集中在网络这块的开发,到时候将会介绍一些基本的网络编程知识。

    SDL游戏开发是我第一次接触,写这个教程也是对自己的学习过程做一个记录和总结,希望对想要了解SDL游戏开发的人有些帮助。在编写这个教程的过程中,暴露了一些问题,在此,自己总结一下:

    1、开始这个教程的时候,用的是MINGW+ECLIPSE环境,最初的想法是通过熟悉这套环境,以后到LINUX环境下做SDL游戏开发,会容易上手。结果是,这套环境在windows下并不太好用,一个原因是GCC和VC8两个编译器有些差别,错误提示的方式不一样,并且对异常的处理方式也不一样。另一个原因是DEBUG不好用,速度慢,还常启动不起来或者出些莫名其妙的错误。通过这次得出的结论是:对于开发环境的选择,一定要选当前系统平台下的主流开发工具,毕竟用的人多,BUG少。对于学习来说,如果代码量少,可以尝试选择其他系统平台主流开发工具的当前系统版本,为以后跨系统平台的开发积累经验。

    2、SDLCore.h文件的设计。开始的时候,将这个头文件设置成这样主要有三个目的:a、工厂类模式,这里统一生成常用类的对象,并且保证对象只有一份。b、将常用类集中到这里,便于使用的人了解这个库提供了哪些功能,提供一个统一的代码查看入口。c、使用方便,只要一个SDL::就什么都出来了。但造成的结果是过渡依赖,比如你只用到了sceneManager,并没有用到别的类,那么包含了这个头文件后,当其他类的头文件发生变化,当前类也需要重新编译,造成编译时间变长;同时由于过渡依赖,造成头文件包含关系过于复杂,常常出现找不到类定义的错误。

 

基于第二个原因,重新设计了SDLCore.h文件,将它定位为只供外部模块调用的头文件。模块内部类之间相互包含的时候尽量最小化依赖,只包含自己依赖的头文件。

SDL入门教程 SDL是Simple DirectMedia Layer(简易直控媒体层)的缩写。它是一个跨平台的多媒 体库,以用于直接控制底层的多媒体硬件的接口。这些多媒体功能包括了音频、键盘鼠标 (事件)、游戏摇杆等。当然,最为重要的是提供了 2D图形帧缓冲(framebuffer)的接口, 以及为 OpenGL 与各种操作系统之间提供了统一的标准接口以实现 3D图形。从这些属性我 们可以看出,SDL 基本上可以认为是为以电脑游戏为核心开发的多媒体库。 SDL 支持主流的操作系统,包括 Windows Linux。在官方的介绍中,我们可以找到 它所支持的其他平台。(SDL supports Linux, Windows, Windows CE, BeOS, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD/OS, Solaris, IRIX, and QNX. )。SDL 本身从 C 语言开发, 并且能很好的在C++等高级语言中使用。在官方可以看到SDL所支持的语言很多。(Including Ada, C#, Eiffel, Erlang, Euphoria, Guile, Haskell, Java, Lisp, Lua, ML, Objective C, Pascal, Perl, PHP, Pike, Pliant, Python, Ruby, Smalltalk, and Tcl. ) SDL在GNU LGPL version 2 下发布,这意味着你可以免费的使用。并且可以免费的用 于商业软件的制作(只要你直接使用 SDL 的动态链接库,Windows 下的 SDL.dll)。如果你 将 SDL 库编译进了自己的二进制代码中,你需要指明你所使用的 SDL 库的版本以及包括你 自己修改的源代码,并说明这些代码的原始出处。这是很宽松的法律,你可以用如此强大的 多媒体库完全合法的免费开发商业游戏。 1.2:本教程是为谁准备的? 本教程是为电脑游戏制作的发烧友准备的。因为Linux的普及以及不受$M的牵制, SDL 在过去的几年中,成为了跨平台开发 PC 游戏的首选。即使是在 Windows 平台下,SDL 有 具有自身的优势。与 MFC 使用不成熟的 C++外表伪封装的 win32api 以及一家独唱推崇的 COM 风格.net 相比较,SDL 是更纯粹的 C 风格。无论你是喜欢纯 C 还是 OOP 的 C++, 你都可以按照你自己喜欢的方式对 SDL 进行再次封装,只要你自己愿意,可以让自己的程 序更接近 C/C++的标准风格,让代码更加优美也更加容易阅读。 事实上,在我看来,有了标准 C++(兴奋的期待 C++0x 的发布),SDL OpenGL 这 些标准或免费库的支持,完全可以扔掉与 C++标准并不怎么谐的“Windows 编程”了。没有 谁愿意被别人牵着鼻子走,这个道理在软件行业尤其的明显
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值