open source tools for game development - icculus.org · open source tools for game development ryan...
TRANSCRIPT
![Page 1: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/1.jpg)
Open Source Tools for Game Development
Ryan C. Gordon, icculus.org
![Page 2: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/2.jpg)
A few notes...
• Please tweet with #flourish
• Feel free to interrupt!
• Slides are at http://icculus.org/flourish/
![Page 3: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/3.jpg)
Who am I?
• Game developer, porter, hacker
• Ports video games, builds tools
• @icculus on Twitter
• http://icculus.org/resume
![Page 4: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/4.jpg)
![Page 5: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/5.jpg)
![Page 6: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/6.jpg)
![Page 7: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/7.jpg)
![Page 8: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/8.jpg)
![Page 9: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/9.jpg)
![Page 10: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/10.jpg)
But enough about me.
![Page 11: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/11.jpg)
DISCLAIMER: This is by no means a
complete list.
![Page 12: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/12.jpg)
SDL
![Page 13: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/13.jpg)
Simple Directmedia Layer
• Video, Audio, Input, Plumbing
• Low level
• Lots of platforms
• Easy to use!
• http://libsdl.org/
![Page 14: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/14.jpg)
A simple Direct3D example.
![Page 15: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/15.jpg)
WNDCLASSEX winClass; MSG uMsg; memset(&uMsg,0,sizeof(uMsg)); winClass.lpszClassName = "MY_WINDOWS_CLASS"; winClass.cbSize = sizeof(WNDCLASSEX); winClass.style = CS_HREDRAW | CS_VREDRAW; winClass.lpfnWndProc = WindowProc; winClass.hInstance = hInstance; winClass.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_DIRECTX_ICON); winClass.hIconSm = LoadIcon(hInstance, (LPCTSTR)IDI_DIRECTX_ICON); winClass.hCursor = LoadCursor(NULL, IDC_ARROW); winClass.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH); winClass.lpszMenuName = NULL; winClass.cbClsExtra = 0; winClass.cbWndExtra = 0; if( RegisterClassEx(&winClass) == 0 ) return E_FAIL; g_hWnd = CreateWindowEx( NULL, "MY_WINDOWS_CLASS", "Direct3D (DX9) - Full Screen", WS_POPUP | WS_SYSMENU | WS_VISIBLE, 0, 0, 640, 480, NULL, NULL, hInstance, NULL ); if( g_hWnd == NULL ) return E_FAIL; ShowWindow( g_hWnd, nCmdShow ); UpdateWindow( g_hWnd );
![Page 16: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/16.jpg)
g_pD3D = Direct3DCreate9( D3D_SDK_VERSION ); if( g_pD3D == NULL ) { // TO DO: Respond to failure of Direct3DCreate8 return; } // // For the default adapter, examine all of its display modes to see if any // of them can give us the hardware support we desire. // int nMode = 0; D3DDISPLAYMODE d3ddm; bool bDesiredAdapterModeFound = false; int nMaxAdapterModes = g_pD3D->GetAdapterModeCount( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8 ); for( nMode = 0; nMode < nMaxAdapterModes; ++nMode ) { if( FAILED( g_pD3D->EnumAdapterModes( D3DADAPTER_DEFAULT, D3DFMT_X8R8G8B8, nMode, &d3ddm ) ) ) { // TO DO: Respond to failure of EnumAdapterModes return; } // Does this adapter mode support a mode of 640 x 480? if( d3ddm.Width != 640 || d3ddm.Height != 480 ) continue; // Does this adapter mode support a 32-bit RGB pixel format? if( d3ddm.Format != D3DFMT_X8R8G8B8 ) continue; // Does this adapter mode support a refresh rate of 75 MHz? if( d3ddm.RefreshRate != 75 ) continue; // We found a match! bDesiredAdapterModeFound = true; break; } if( bDesiredAdapterModeFound == false ) { // TO DO: Handle lack of support for desired adapter mode... return; }
![Page 17: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/17.jpg)
// Can we get a 32-bit back buffer? if( FAILED( g_pD3D->CheckDeviceType( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, D3DFMT_X8R8G8B8, FALSE ) ) ) { // TO DO: Handle lack of support for a 32-bit back buffer... return; } // Can we get a z-buffer that's at least 16 bits? if( FAILED( g_pD3D->CheckDeviceFormat( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, D3DFMT_X8R8G8B8, D3DUSAGE_DEPTHSTENCIL, D3DRTYPE_SURFACE, D3DFMT_D16 ) ) ) { // TO DO: Handle lack of support for a 16-bit z-buffer... return; } // // Do we support hardware vertex processing? if so, use it. // If not, downgrade to software. // D3DCAPS9 d3dCaps; if( FAILED( g_pD3D->GetDeviceCaps( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, &d3dCaps ) ) ) { // TO DO: Respond to failure of GetDeviceCaps return; } DWORD flags = 0; if( d3dCaps.VertexProcessingCaps != 0 ) flags = D3DCREATE_HARDWARE_VERTEXPROCESSING; else flags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
![Page 18: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/18.jpg)
// // Everything checks out - create a simple, full-screen device. // D3DPRESENT_PARAMETERS d3dpp; memset(&d3dpp, 0, sizeof(d3dpp)); d3dpp.Windowed = FALSE; d3dpp.EnableAutoDepthStencil = TRUE; d3dpp.AutoDepthStencilFormat = D3DFMT_D16; d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD; d3dpp.BackBufferWidth = 640; d3dpp.BackBufferHeight = 480; d3dpp.BackBufferFormat = D3DFMT_X8R8G8B8; d3dpp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE; if( FAILED( g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd, flags, &d3dpp, &g_pd3dDevice ) ) ) { // TO DO: Respond to failure of CreateDevice return; }
![Page 19: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/19.jpg)
// TO DO: Respond to failure of Direct3DCreate8
![Page 20: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/20.jpg)
ಠ_ಠ
![Page 21: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/21.jpg)
The complex SDL version.
![Page 22: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/22.jpg)
SDL_Init(SDL_INIT_VIDEO);
SDL_SetVideoMode(640, 480, 0, SDL_FULLSCREEN | SDL_OPENGL);
![Page 23: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/23.jpg)
ಠ_ಠ
![Page 24: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/24.jpg)
• Video (2D and OpenGL)
• Audio (DSP and CD)
• Events
• Timers
• Joysticks
• OS stuff: Threads, DLLs, C runtime
SDL 1.2
![Page 25: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/25.jpg)
SDL 2.0
• Remove limitations, modernizes features.
• Multi-window, multi-audio, multi-input.
• Android, iOS, etc.
• Work in progress, but try it now!
![Page 26: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/26.jpg)
OpenAL
![Page 27: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/27.jpg)
OpenAL
• 3D positional audio
• Cross-platform
• Easy to use
• Good for 2D games, too!
• http://openal.org/
![Page 28: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/28.jpg)
bool initOpenAL(void) { ALCdevice *dev = alcOpenDevice(NULL); if (!dev) return false; ALCcontext *ctx = alcCreateContext(dev, NULL); if (!ctx) { alcCloseDevice(dev); return false; } alcMakeContextCurrent(ctx); return true; }
![Page 29: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/29.jpg)
![Page 30: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/30.jpg)
OpenAL
• Stateful objects, like OpenGL
• One Listener
• A handful of Sources
• Many Buffers
• Buffer queues
![Page 31: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/31.jpg)
SQLite
![Page 32: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/32.jpg)
SQLite
• Powerful embedded SQL engine.
• One file per database, in-process.
• One .c file, dropped into your project.
• You’re already using it.
• http://sqlite.org/
![Page 33: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/33.jpg)
Know your tools.
“SQLite doesn’t compete with Oracle. It competes with fopen().”
-- D. Richard Hipp, primary developer
![Page 34: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/34.jpg)
PhysicsFS
![Page 35: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/35.jpg)
Blatant self-promotion!
• I wrote PhysicsFS.
• It’s awesome.
• You should use it, so you can be awesome.
• http://icculus.org/physfs/
![Page 36: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/36.jpg)
PhysicsFS
• Virtual File System.
• Transparent archives and files.
• Makes game updates and mods easier.
• Security, functionality, flexibility.
![Page 37: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/37.jpg)
Look, I already know it doesn’t have anything to do with physics.
![Page 38: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/38.jpg)
So what about physics?
• Open Dynamics Engine (ODE)
• Box2D
![Page 39: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/39.jpg)
Ogg Vorbis and Speex
![Page 40: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/40.jpg)
![Page 41: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/41.jpg)
Ogg Vorbis and Speex
• Vorbis: compressed audio data
• Speex: compressed voice data
• Patent unencumbered, BSD licensed.
• http://xiph.org/
![Page 42: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/42.jpg)
ProTip
• Don’t use libvorbis directly.
• Use libvorbisfile.
![Page 43: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/43.jpg)
Ogg Theora
![Page 44: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/44.jpg)
![Page 45: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/45.jpg)
Ogg Theora
• Video equivalent of Ogg Vorbis.
• Based on On2’s VP3 codec.
• HD video at reasonable bitrates.
• Patent unencumbered, BSD licensed.
• http://theora.org/
![Page 46: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/46.jpg)
ProTip
There is no libvorbisfile for Theora!
![Page 47: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/47.jpg)
Blatant self-promotion!
• TheoraPlay makes Ogg Theora way easier.
• http://icculus.org/theoraplay/
![Page 48: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/48.jpg)
Lua
![Page 49: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/49.jpg)
Lua
• Dirt-simple scripting language.
• Crazy powerful, yet efficient.
• Easy to embed and bridge with C.
• Very popular in current AAA titles.
• http://lua.org/
![Page 50: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/50.jpg)
zlib, libpng, libjpeg
![Page 51: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/51.jpg)
ProTip...don’t use these libraries.
![Page 52: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/52.jpg)
stb_*
![Page 53: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/53.jpg)
stb_*
• Sean Barrett is a ninja.
• Decoders, decompressors, etc.
• Everything is in the public domain.
• http://nothings.org/
![Page 54: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/54.jpg)
miniz
• zlib in 300 lines of C.
• Faster than zlib.
• Other features.
• http://code.google.com/p/miniz/
![Page 55: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/55.jpg)
enet
![Page 56: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/56.jpg)
enet
• Networking is hard.
• Unreliable, fragmented, sequenced packets.
• Reliable streams over UDP.
• Channels.
• http://enet.bespin.org/
![Page 57: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/57.jpg)
MojoShader
![Page 58: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/58.jpg)
Blatant self-Promotion!
• MojoShader makes your compiled Direct3D shaders work on OpenGL!
• GLSL shaders, ARB programs.
• Shader assembler and preprocessor.
• HLSL compiler coming soon!
• http://icculus.org/mojoshader/
![Page 59: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/59.jpg)
I thought you said “tools!”
Hey!
![Page 60: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/60.jpg)
Google Breakpad
![Page 61: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/61.jpg)
Valgrind
![Page 62: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/62.jpg)
gdb7
![Page 63: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/63.jpg)
clang
![Page 64: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/64.jpg)
Blender
![Page 65: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/65.jpg)
Git and Mercurial
![Page 66: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/66.jpg)
The whole package?
![Page 67: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/67.jpg)
Game engines
• ioquake3, iodoom3
• Ogre
• Crystal Space
• Cube/Sauerbraten
• HGE
![Page 68: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/68.jpg)
![Page 69: Open Source Tools for Game Development - icculus.org · Open Source Tools for Game Development Ryan C. Gordon, icculus.org](https://reader035.vdocuments.us/reader035/viewer/2022071213/603f89fdf98e70396303c0a6/html5/thumbnails/69.jpg)
That’s all folks.
• Questions? Answers!
• Hire me.
• http://icculus.org/flourish/
• Ryan C. Gordon: [email protected]
• http://twitter.com/icculus
• http://gplus.to/icculus