Linux游戏开发工具收集 |
FMOD FMOD是一个非常容易使用的跨平台声音引擎,能够在WINDOWS,WINDOWS CE,LINUX,MACINTOSH,GAMECUBE,PLAYSTATION 2和XBOX上使用。支持C/C++,VB,DELPHI和MASE。如果你在以上说明的任何一种平台上使用任何一种语言,那么FMOD适合你。本篇中使用的是C语言,同样他也适合其他平台。 相关的声音库 另一个相关的声音库是OPENAL。OPENAL是另一个跨平台的适应API,也同样支持WINDOWS,LINUX和MACINTOSH。同样能应用于C/C++,DELPHI和JAVA。风格有点象OPENGL。 http://www.fmod.org 开始之前,请将FMOD.DLL拷贝到你的工作目录下,也就是和你的项目文件在一起。 与C语言用户相关 在你的编译器下加入"fmod.h" 文件和库文件: fmodvc.lib for Microsoft Visual C++ and Codewarrior fmodbc.lib for Borland fmodwc.lib for Watcom fmodcc.lib for LCC-Win32 libfmod.a for MingW and CygWin fmod-3-7.lib for GCC 在我们用FMOD播放我们的声音文件时,我们要先初始他。像下面这样: FSOUND_Init (44100, 32, 0); 第一参数是输出率,用赫兹表示。在这里,我们取44100。第二个参数是我们最大的软通道。第三个参数是我们想表明的一些符号。在这里,我们取0; 下面,我们将播放一些声音了。我们播放的声音有哪些格式呢?是歌,例子或流? 歌,例子或流 FMOD支持两种API:FSOUND和FMUSIC。具体用哪个将由你要播放的声音决定。 通常的音乐格式有:.MOD,.S3M,.XM,.IT,.MID,.RMI,.SGT和.FSB,这些都被FMUSIC API支持。 而FSOUND API支持压缩的.WAV,.MP2,.MP3,.OGG or .RAW。 DEV C++下依靠上面的代码编 |
zlib linux文件压缩工具 1、编程环境:winxp sp2+Dev-C++4.9.9.2 2\在devc++中下载更新zlib库 3\新建控制台应用程序. 4\在工程属性中设定其链接参数为-lz 5\编辑源程序如下,假设其工程文件名为ccc: #i nclude <cstdlib> #i nclude <iostream> #i nclude <stdio.h> #i nclude <zlib.h> using namespace std; int main(int argc,char **argv) { gzFile zip; int c; if (argc<2) return 0; zip = gzopen(argv[1],"rb"); while ((c=gzgetc(zip))!=EOF) putchar(c); gzclose(zip); return 1; } 编译这段程序,可执行程序为ccc.exe 6\在这段源程序所实现的功能就是将压缩文档按字节一个个的读取并显示出来. 7\将devc++的bin目录下面的zlib1.dll拷贝到windows\system32目录下面,或是放到应用程序所在的目录. 8\下载一份gzip for windows,我所下载到的是1.3.5版本. 9\随便建立一个文件,如abc.txt 10\在gzip目录下面执行如下命令 gzip -9 <abc.txt> abc.txt.gz,相当于把abc.txt压缩成文件名为abc.txt.gz的文件了. 11\执行ccc abc.txt.gz,会看到已压缩文件abc.txt.gz中的内容了. www.info-zip.org 包含文件: zlib1.dll |
Other free archiver: TUGZip http://www.tugzip.com/ TUGZip对压缩与镜像的支持,林林总总有30个以上,支持自製外掛, 使用介面也是多语言的,有如瑞士刀一般的万用工具,他不能压RAR, 如果你认为必要,可以透过插件方式添加,基本上强力推荐这个。 FilZIP http://www.filzip.com/ FilZIP同样也发展了很久的时间,但是他支持的格式不是很多, 但他可以处理一些奇怪的格式包括网路传输的UUE与XXE等, 不失为一个另类选择,但是TUGZip可以做这个大部分的工作。 IZarc http://www.izarc.org/ 这个的神奇之处在於可以解些非常稀有的格式像是GCA/DEB/GZA... 更神奇的是他可以解开linux用的RPM包装程式,这个工具比较可惜之处, 在於不支持Unicode多国编码压缩的文件,但在未来会更新就是了。 ultimatezip http://www.ultimatezip.com/ zipgenius http://www.zipgenius.it/ UPX 可以修改,假如你希望保护你的文件的话。 http://upx.sourceforge.net/ |
openal 3D音频编码 有OPENGL编程精练的人将很快掌握OPENAL。OPENAL有建立3D环境音效的能力。 #include <conio.h> #include <stdlib.h> #include <al/al.h> #include <al/alc.h> #include <al/alu.h> #include <al/alut.h> 你会发现再OPENAL头和OPENGL头的定义上有许多的相似之处。除了“al.h","al u.h","alut.h"与”gl.h","glu.h","glut.h"相似,还增加了一个"alc.h".ALC( AUDIO LIBRARY CONTEXT)处理声音通过不同的平台,她也处理你在几个窗口下共 享设备的环境。 // 存储声音数据 ALuint Buffer; // 用于播放声音 ALuint Source; 这是程序处理结构的初始化。在OPENAL中三种不同的结构,所有关于声音播放和 声音数据存储在一个内存中,源(source)是指向放声音的空间。明白源是非常 的重要。源只播放内存中的背景声音数据。源也给出了特殊的属性如位置和速度。 第三个对象是听者,用户就是那唯一的听者。听者属性属于源属性,决定如何 听声音。例如,不同位置将决定声音的速度。 http://www.openal.org/ |
libogg - 音频编码。有关oggvorbis开发,主要为*.ogg码流结构及封装的文件,和vorbis-tools,libvorbis一起使用 http://www.vorbis.com/ 包含文件 vorbisfile.dll,vorbis.dll,ogg.dll |
libmad MP3流媒体解码器,播放mp3文件 libmad附带了一个示例程序minimad, 但是仅仅是将解码结果输出到屏幕上,不爽,而libao则可以将pcm输出,通过多种方式播放出来,因此可以考虑将两者结合起来,编写一个可以播放mp3的小例子 #include <sys/soundcard.h> #undef putchar int soundfd; int putchar(int c) { return write(soundfd, (char *)&c, 1); } void set_dsp() { int rate = 441000;; /* 采样频率 44.1KHz*/ int format = AFMT_S16_LE; /* 量化位数 16*/ int channels = 2; /* 声道数 2*/ soundfd = open ( "/dev/dsp", O_WRONLY); ioctl(soundfd, SNDCTL_DSP_SPEED, &rate); ioctl(soundfd, SNDCTL_DSP_SETFMT, &format); ioctl(soundfd, SNDCTL_DSP_CHANNELS, &channels); } http://www.underbit.com/products/mad/ |
freetype 一个流行的字体函数库,在游戏中解析显示TrueType汉字 GTK+(基于DirectFB)的字体绘制是通过pango+freetype+fontconfig三者协作来完成的,其中,fontconfig负责字体的管理和配置,freetype负责单个字符的绘制,pango则完成对文字的排版布局。 void load(const char* font_file , int _w , int _h) { //加载一个字体,取默认的Face,一般为Regualer if (FT_New_Face( m_FT2Lib, font_file, 0, &m_FT_Face )) exit(0); FT_Select_Charmap(m_FT_Face, FT_ENCODING_UNICODE); m_w = _w ; m_h = _h; m_FT_Face->num_fixed_sizes; //大小要乘64.这是规定。照做就可以了。 //FT_Set_Char_Size( m_FT_Face , 0 , m_w << 6, 96, 96); FT_Set_Pixel_Sizes(m_FT_Face,m_w, m_h); }... http://www.freetype.org/ |
TinyXml 轻量级XML解析器,游戏中常用解析简单的配置文件。 游戏中是使用一个INI文件来定义。这是一个好的办法,我们每次使用时从外部导入我们的数据,而不用每次修改时都编程一次。而我们今天在这里要讲解的是用XML文件来设置 许多人将XML用到很多需要活动设置的应用,比如服务器参数的设置,玩家数据的管理(最近才发现的,原来以为是在数据库中进行管理的,后来发现XML文件也能管理玩家数据,并且比操作数据库要方便的多)。还有人甚至用XML文件来设置窗口界面。看来掌握XML是非常有意义的。 我们下面来看一下tinyxml是如何在C/C++中建立XML文件的。 char floader[200],buffer[200]; TiXmlDocument* m_xmlDoc = new TiXmlDocument(); TiXmlElement xElement("player"); sprintf(buffer,"%d", 1); xElement.SetAttribute("admin", buffer); TiXmlElement xPos("pos"); sprintf(buffer,"%d",2); xPos.SetAttribute("x", buffer); sprintf(buffer,"%d",3); xPos.SetAttribute("y", buffer); sprintf(buffer,"%d",4); xPos.SetAttribute("zone", buffer); xElement.InsertEndChild(xPos); m_xmlDoc->InsertEndChild(xElement); sprintf(floader,"%s.xml", "antking"); m_xmlDoc->SaveFile(floader); delete m_xmlDoc;...... 这段简单的代码的作用就是将用户数据保存在XML文件中。不同的是我对其做了一些简化。 www.grinninglizard.com/tinyxml/ sourceforge.net/projects/tinyxml |
libjpeg
解析jpeg图片格式
如何使用libjpeg.lib函数库
如何在C++中使用libjpeg.lib函数库如果想在自己的应用程序中集成处理jpeg图片功能,IGL提供了很好函数库,如果善加用之则可达到事半功倍的效果。因为是该函数库是opensource所以我们不必担心软件版权问题!(呵呵,毕竟我们要尊重别人的软件成果)。可以从网络下载获得最新的函数库,下载地址:http://www.ijg.org
我则以libjpeg-6b版本介绍与自己用VC++6.0的开发应用程序整个集成过程。
1、下载最新的函数库,解压缩后放到一个目录中例如: c:\temp\jpeglib-6b\
2、生成头文件jconfig.h,新建一个文件命名为jconfig.h,拷贝程序库中jconfig.vc内容到刚建立的文件中。
3、进入命令行模式RUN->CMD,然后执行 nmake -f makefile.vc 生成所需要的libjpeg.lib函数库。
4、用VC++6.0创建自己的应用程序,在需要引用函数库的地方加入
extern "C" { #include "jpeglib.h" }
因为函数库是用C语言写的所以,记住一定要用extern包装起来整个编译预处理文件,否则在编译连接的时候就会产生一大堆的unresolved link error...。
经过以上的步骤我们就可以在自己的应用程序中调用库函数中提供的函数了。
http://www.ijg.org/ 补充2个 http://www.libtiff.org/ http://www.libpng.org/ http://sourceforge.net/projects/libungif |
DOSBOX
DOSBox 是一个基于 SDL 开发的 DOS 模拟器,也是 Windows 下最好的 DOS 模拟器。可以轻易在大部分平台上模拟 DOS 环境,比如 Windows、BeOS、Linux、MacOS X 等。其定制的模拟标准为真实的 286/386 环境,目录标准支持 XMS 和 EMS,支持 Tandy/Hercules/CGA/EGA/VGA/VESA 图形算法,支持SoundBlaster/Gravis Ultra 声卡等。 作为应用最广泛的 DOS 模拟器,DOSBox 的功能型及兼容性早已被用户们认可。针对 PC 游戏玩家来说,可以在 NT 内核的 Windows 系统下利用 DOSBox 运行以前的 DOS 游戏;针对模拟器玩家来说,甚至可以利用 DOSBox 运行那些只允许在 DOS 下运行的模拟器
使用方法 : 首先安装然后运行DOSBOX 然后屏幕就进行了命令行模式 (也可以说就是DOS模式) 现在使用这个命令 MOUNT C: d:\dos 兰色的字表示你在DOSBOX虚拟的DOS环境中建立的虚拟盘符 也可以用A、D、E代替 红字就是这个虚拟磁盘映射的真实磁盘路径 根据你的路径变化 在刚才的提示符下输入 c: ,这样就切换到虚拟的c盘,也就是你要的游戏目录 运行C目录下的游戏,以后操作按DOS命令。 http://dosbox.sourceforge.net/news.php?show_news=1 |
StellaX 早期的游戏机雅达利Atari 模拟器程序
主机的处理器是8-bit的6507,主频1.2MHz,16KB的RAM/ROM,分辨率为160x192。它被誉为现今电子游戏的开山之作。我国市场上见到的溢龙7000、皇冠等电视游戏机均为港台的仿制品。
| http://stella.sourceforge.net/ |
CVS CVS (Concurrent Version System),可翻译成并行版本系统,它主要用于版本的管理,尤其在多人团队合作的开发模式中作用巨大。 为什么要使用 CVS 呢? 如果各位有过团队合作开发的经验就会知道,在团队合作开发中,要对整个项目的各个文件进行控制是多么繁琐的一件事情,经常会出现不同的人修改了同一个程序,而需要人工合并整理。更糟糕的是,项目会出现多个版本,连开发者自己都不知道自己修改了哪些文件,大量的精力消耗在各个版本,各个文件的整合中。这些精力完全可以避免,而省下更多的精力用在项目本身之中。 CVS 还有一个更加重要的特性: 能记下每个文件的每次修改,以及如何被修改...对于基于 Internet 的合作方式来说,这些特性太重要了。一个地域上分散的自愿者组织显然不可能投入很多的时间来训练其成员彼此合作。因为这样的话,当该组织有成员变更的时候,为此付出的投资将损失殆尽。所以需要指定一套基本的项目分配方案,以确保新成员能较容易的适应工作,同时也需要设置一个自动的系统来接受外来代码,并使每个成员能及时得到最新修改的代码。 http://www.nongnu.org/cvs/ 微软代码管理工具VSS(Microsoft Visual SouceSafe ) 有个BUG。它的目录是完全共享的,任何一位都可以删除修改。其他的版本管理工具还包括:PVCS、VCS、RCS等。 |
语法加亮显示工具: GeSHi是Generic Syntax Highlighter的缩写,即通用语法高亮工具。 GeSHi由PHP写成,是目前最流行的代码语法加亮工具,可以在phpBB、WordPrss、Mambo、mediawiki、DokuWiki等众多程序中发挥作用。 GeShi能够处理50多种计算机源代码的加亮,这几乎包括了所有的常见计算机代码,例如网页脚本、面相对象编程或者其他程序文本。 GeSHi是Nigel McNie的作品,遵从GFDL协议。本程序仍在持续更新,最新稳定版本为1.0.7.16(2006-11-26),测试版本1.12alpha3(2006-9-17)。 GeSHi出差不多是世界上最好的语法高亮工具的代名词。 http://geshi.org/ |
|