`
rcfalcon
  • 浏览: 228686 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

小翻译一篇介绍SDL的文章

阅读更多

 

 

今天看到一篇大肆宣扬SDL的文章,介于我也小小的研究过一会这个2D游戏引擎,而国内对于这个引擎又推广不够,在此抛砖引玉 小小翻译一个吧。很多地方可能理解不对,大家多多包涵。

先说说我对SDL的一些理解

 

1.SDL是一个2D游戏引擎(国内这么说,但是我觉得把它称为“引擎”还是太过了,我觉得引擎级别应该至少到framework了,SDL提供的功能没有这么强大。),其提供一个游戏必要的一些简单的API接口,并且非常底层。

2.SDL最牛逼之处就在于其简单、跨平台。一切基于SDL的代码都应该是高度portable的。所以可以考虑做一个基于SDL的中间件,估计挺有卖点。。呵呵。

3.SDL免费,开源。

4.可以搜一下著名的linux下战略类游戏 韦诺战争(貌似没有WINDOWS版本)。就是基于SDL的大作。

5.SDL貌似经常用来写跨平台播放器,很方便。

6.曾经打算用SDL开发游戏。。结果发现功能太低级,于是乎转用HGE了,以后再慢慢研究吧。。



我曾经用SDL写的简单的界面。。由于一开始就没搭好framework,后来做不下去了。。

 

 

为什么选择SDL?

Bob Pendleton 2002年8月

  我在写这篇文章的时候,我已经用SDL将近一年了。在选择SDL之前,我花上了几年时间来寻找和尝试不同的游戏开发库(BY CG,此处game develop lib直译为游戏开发库,但是貌似国内一般直接叫游戏引擎,其实我觉得不该叫游戏引擎,其相当于一个中间层,还没有到framework的引擎级别,所以暂时我把它翻译成游戏开发库)。我当时想找一个有授权证书的游戏引擎——不会让我在写代码的时候为它的合法性担忧,并且在我写商业游戏的时候不用付太多的钱来获得它的许可。而且我还需要它横跨广泛的硬件设备和操作系统(BY CG:就是跨平台咯)——在笔记本电脑和手机飞速发展的现在没有任何理由让开发被束缚于单独的操作系统或者平台。在我找寻多年以后(呵呵,我承认我是更多的出于兴趣而不是为了赚钱),我发现了3个系统看上去比较爽。

  第一个是JAVA,我觉得JAVA无论作为一个语言还是一个系统来说都太爽了。你能想到的做游戏要用到的,它全都有。但是!它并不通用,并且我发现当我要让别人玩游戏的时候还得让他们先装超过20MB的JAVA安装包,这一点极大限度的限制了我游戏的发布。
  我还深入研究了一个来自Amiga(BY CG 应该是一个软件公司吧?)新的可移植多媒体系统,但是它让我越用越不爽。。在我浏览了几个免费的游戏开发库之后我决定仔细看看SDL。不看不知道,一看吓一跳,SDL很让我震惊,它不像你在网上找到的其他游戏开发库,SDL是由一群有经验的牛逼人设计和开发的,SDL被巨多优秀的程序员维护和支持,SDL是一个游戏开发者们写给游戏开发者的库!

  我觉得在我刚开始接触它时,它对我最有吸引力的是:SDL没有想在你的游戏开发中充当一切角色。它仅仅做每一个游戏需要做的最基本功能,在任何平台上你都可以用它编码。你可以在windows下写个程序然后直接在linux或者MAC OS(BY CG 苹果的操作系统)、或者手机终端等等..下重编译。它提供你需要的、实用的而不是丢给你一堆杂七杂八的功能。如果你在windows下运行,SDL是基于DIRECTX的。如果你在LINUX下,则它是基于 X 和其他的一些库。关键是,不管什么平台,他就是能运行!(BY CG 这个貌似有点夸大了。。)我花了几个月来写测试程序,一边用来学习SDL,一边尝试寻找SDL里的BUG。在这几个月里我仅仅发现几个文档性的小错误,并且是很容易解决的。我在SDL上进行了一些变态的尝试,比如写个10000个定时器的程序,而且这样还挂不了。。每次我发现我认为是BUG的地方,最后发现都是因为我对说明文档的误解。有次我认为我发现了一个严重BUG,然后上网一搜,这个BUG已经SDL开发者被修正了。

  SDL 小,可移植,而且可信赖。它只做你需要做的事情,SDL的基本哲学观就是集合“精简达意”和“简单”。

  SDL里有啥?

1.技术支持
SDL团队是我见过网上办事最有效率的团队。在Sam Latinga等帮助下,一帮牛逼志愿者维护其代码,并且不断移植到新的平台。SDL的mailing list(BY CG 请原谅我的火星,看了一下貌似国外很多网站都有这种机构,把对官方的询问EMAIL记录都贴到网上的一种机制。)为SDL用户们提供永远的快捷服务。mailing list提供庞大的SDL使用信息和在游戏开发过程中的问题解决方法。

2.初始化和释放
我们平时在每个平台下开发,都要求程序员写一些平台相关的代码,来指引操作系统做什么、硬件做什么。那么,你不得不写更多的平台相关代码。你需要设置显示模式、初始化音频系统、检测鼠标或者摇杆……而且在游戏结束之后你要清空或释放这些你用到的资源。。这些代码基本在每个工程里都相同,SDL提供一种简单的机制来检测硬件,只需要几行简单的代码你就能初始化资源,释放资源就更别提了。并且SDL离的代码可以到处拷贝和复用到其他工程。

3.基于事件的输入机制
SDL提供键盘、鼠标、摇杆输入,使用事件机制,这样就是的在X11、WINDOWS或者MAC OS上的开发者感到非常亲切了。不同的是,SDL不管你在什么操作系统上,都提供给你相同的事件,并且它不会让你处理操作系统相关的那堆让你写游戏过程中不爽的事件。

4.时间和定时器
每个游戏程序都需要知道时间,并且需要知道一个行动什么时候发生。SDL提供一个跨平台的,清晰、简单、可信的时间机制和定时器API。SDL的定时器API允许同时创建上千个定时器,而且比我以前用的其他库的定时器要用的爽。

5.声音
SDL提供一套简单的API控制声卡,根据需要操控不同的硬件设备。即时硬件支持度较低,它也能干活。在这一点上非常符合它的“精简达意”哲学观。在另一方面,还有许多SDL团队不断开发出来的SDL声音库。

6.光驱
SDL提供读、播放光驱的API。无敌了!(BY CG,谁告诉我这里 Can't beat it. 咋翻译?)

7.图像
SDL提供给你一个尽情发挥图形处理的机会。你可以从像素级拿数据然后随你怎么处理,或者你可以用OPENGL来做2D、3D的硬件加速。这是在任何硬件设备上都能做的,因为OPENGL支持所有的3D显卡,它是安全、可移植的,并且很生猛的跨平台3D库。SDL可以设置视频模式,可以访问帧缓冲区,如果你需要,还为你初始化OPENGL。SDL将解除你制作全屏游戏模式的痛苦(BY CG,不知道痛苦在哪。。没用过太底层图形库的人飘过),同样,也可以做窗口游戏。

8.网络
SDL包含了一组底层的网络API,让你可以控制基于TCP/IP或者UDP/IP的scokets。这一组API和UNIX、WINDOWS的网络API很像,不同的是它只让你用网络特性,可以跨平台。并且这些API已经实现一些底层的功能,不用让你在写网络通讯代码的时候觉得痛苦。

9.线程
SDL提供一套像pthreads简单版本(BY CG,又不知道是啥了。。我靠,我太弱了)的线程API。SDL线程提供线程管理的基本函数。而且也是跨平台的。

SDL的不足之处

唯一让我觉得不爽的就是它的文档,有的地方有小错误,有的地方给得太吝啬了。但是这比起这个伟大的游戏开发库来说不算什么,这些文档带来的疑惑你都可以在写代码的过程中 或者看其他示例代码来搞定。

SDL多少¥?

免费!SDL 基于LGPL(BY CG貌似是某种免费协议机制?),你只需要遵守一些简单的规章,每个人都能获得免费的SDL认证。

SDL哪有下载?

官网 www.libsdl.org ,心动不如行动,赶紧下载吧~读一下它关于版本的FAQ,你可以开始或者升级你手头的工作,用它上面提供的搜索功能找你需要的资源吧。

SDL对于我来说有什么?

对于专业的游戏开发者来说,SDL提供一个清晰明了的开发库来节约你的开发时间,提高产品质量,并且可以让你的游戏跨平台跑,扩展销售范围。但是无论对于专业人员、业余爱好者或者新手来说,最大的好处就是SDL让你把开发过程专制于游戏上面,而不是游戏运行/开发的平台上面。并且,你可以不用花费大量的财力来购买软件开发工具和游戏开发库。

每天在我的mailing list和私人邮件上我都收到来自世界各地游戏开发者的请求,他们都没钱购买商业软件开发工具。使用SDL和Linux+GCC+OpenGL你能开发游戏,不用花一分钱在开发工具上。即时在WINDOWS下,你也能用SDL+GCC+OPENGL来写高质量的游戏,除了你的电脑和WINDOWS之外不用花一分钱。SDL让初学者和爱好者们免费使用,如果他们想开发一些商业用途的程序,移植到例如WINDOWS或者MAC OS这种有着大量用户系统下都是可行的。不只代码本身可移植,他们的技术也能被移植。

总而言之,SDL能节约你的时间和钱,而且让你的游戏有更多的玩家。

分享到:
评论

相关推荐

    lazyfoo SDL游戏入门教程 紫冀魔王 翻译版

    《lazyfoo SDL游戏入门教程 紫翼魔王 翻译版》是一份专为初学者设计的游戏开发教程,由知名游戏开发资源提供者lazyfoo的原版教程翻译而来,紫翼魔王负责了中文版的翻译工作,使得国内的学习者能够更加方便地理解和...

    SDL 官方中文资料 介绍SDL用法

    本套官方中文资料深入浅出地介绍了SDL的使用方法,帮助开发者快速理解和掌握SDL的核心功能。以下将对主要知识点进行详细阐述: 1. **SDL初始化与窗口创建** - `SDL_Init`:这是启动SDL库的关键步骤,用于初始化所...

    SDL函数库详细介绍.doc

    【SDL函数库】是游戏开发和图形用户界面构建中常用的一个跨平台库,它提供了丰富的功能,包括图像处理、音频管理、输入设备控制等。本文将深入探讨SDL库中的几个核心函数:`SDL_Init`、`SDL_InitSubSystem`、`SDL_...

    SDL小游戏-打飞机

    SDL小游戏 利用SDL实现 类似雷电的小游戏 有音效~ SDL小游戏 利用SDL实现 类似雷电的小游戏 有音效~ SDL小游戏 利用SDL实现 类似雷电的小游戏 有音效~ SDL小游戏 利用SDL实现 类似雷电的小游戏 有音效~ SDL小游戏 ...

    SDL_image-1.2.3.zip_SDL.zip_SDL1.2.3_SDL_image-1.2.3_sdl_image.h

    SDL_image是用于游戏开发和图形编程的一个开源库,它为Simple DirectMedia Layer (SDL) 提供了图像加载和渲染的功能。这个"SDL_image-1.2.3.zip_SDL.zip_SDL1.2.3_SDL_image-1.2.3_sdl_image.h"文件组合包含了SDL_...

    SDL开发的小游戏

    在【标题】"SDL开发的小游戏"中,我们可以推断这是一个使用SDL库开发的简单游戏项目。SDL库因其高效、灵活和易于上手的特点,深受独立开发者和小型团队的喜爱,用于创建各种类型的游戏,从小型的2D游戏到复杂的3D...

    SDL-1.3 SDL.lid SDL.dll SDL.h

    标题"SDL-1.3 SDL.lid SDL.dll SDL.h"中,"SDL-1.3"代表这是一个关于Simple DirectMedia Layer(SDL)库的版本1.3的相关内容。"SDL.lid"、"SDL.dll"和"SDL.h"是SDL库在Windows环境下开发和运行时所需的三个关键文件...

    关于SDL的帮助文档翻译

    ### 关于SDL的帮助文档翻译 #### 1. 引言 简单直接媒体层(Simple DirectMedia Layer, SDL)是一款开源的跨平台多媒体开发库,它为开发者提供了多种媒体功能的支持,如音频播放、图像渲染、视频播放等。SDL广泛应用...

    SDL中文帮助文档

    SDL(Simple DirectMedia Layer)是一种跨平台的开发库,主要用于处理多媒体和图形界面。这个“SDL中文帮助文档”是为初学者和开发者提供的一份详尽指南,旨在加速对SDL的理解和应用。这份文档以中文呈现,使得国内...

    C++ SDL教程翻译 Lesson 03博文的附件

    **C++ SDL 教程翻译 Lesson 03 博文附件** 这篇教程将深入探讨C++中的Simple DirectMedia Layer(SDL)库,特别是在事件驱动编程方面的应用。在游戏开发和其他实时图形应用程序中,事件驱动编程是一种常用的方法,...

    SDL.rar_sdl_sdlref pdf_sdl中文教程_sdl教程_怎样学sDL画图

    **SDL(Simple DirectMedia Layer)** 是一个跨平台的多媒体库,主要被游戏开发者用于创建图形用户界面和处理音频、视频以及游戏输入。SDL的名字来源于它的功能:它为开发者提供了一个简单直接的方式来访问底层的...

    SDL游戏开发经典教程03源代码

    SDL(Simple DirectMedia Layer)是一个跨平台的多媒体库,它为开发人员提供了处理图形、音频和输入设备的能力,尤其适合游戏开发。这个“SDL游戏开发经典教程03源代码”是针对初学者的一个优秀资源,它帮助理解如何...

    SDL拼图小游戏

    【SDL拼图小游戏】是一款基于Linux操作系统的娱乐项目,它利用了C语言的强大功能和SDL(Simple DirectMedia Layer)库来实现。SDL是一个跨平台的开发库,专门用于处理图形、音频和输入设备,使得开发者可以轻松创建...

    SDL_net-1.2.7.rar_SDL_net-1.2.7_SDL_net.dll_sdl_sdl-ne_sdl_net

    同时,"sdl_sdl-ne"指的是SDL的非加密版本,它允许开发者查看和修改源代码,以便更好地理解和定制网络功能,这对于开源项目或者需要深度定制的商业应用尤其有用。而"sdl_net"则是对整个网络库的简写,强调了它是SDL...

    SDL SDK + SDL Image

    SDL是一个跨平台的多媒体库,而SDL Image是SDL的一个附加组件,专门用于加载和处理各种图像格式。 首先,让我们深入了解SDL。SDL(Simple DirectMedia Layer)是一个开源的库,主要用于创建多媒体应用,如视频游戏...

    SDL2源码包

    **一、SDL2简介** SDL (Simple DirectMedia Layer) 是一个跨平台的开发库,用于处理图形、音频和输入设备。它的全称是"Simple DirectMedia Layer 2",是SDL的最新版本,提供了一个低级别的接口来访问多媒体硬件,...

    SDL_ttf-2.0.8.tar.gz_SDL ttf_SDL_ttf_linux_linux SDL_ttf.h

    SDL_ttf,全称为Simple DirectMedia Layer TTF(简单直接媒体层TrueType字体库),是SDL库的一个扩展,专为在Linux操作系统上处理TrueType字体而设计。这个版本,即SDL_ttf-2.0.8,提供了丰富的功能,让开发者能够...

    SDL学习的小例子

    在这个小例子中,我们将探讨SDL(Simple DirectMedia Layer)的基础知识,这是一个跨平台的多媒体库,常用于开发游戏和其他图形应用程序。它的易用性和灵活性使其成为初学者和专业人士的理想选择。在Visual Studio...

    SDL2.0.3源码安装包

    1. **SDL库介绍**:SDL库是一个底层的跨平台开发库,提供了一套API,使得开发者可以编写出与操作系统无关的游戏和其他多媒体应用程序。它包括了窗口管理、事件处理、图像渲染、音频播放、视频播放、文件I/O、定时器...

Global site tag (gtag.js) - Google Analytics