Open Source in Game Development

hedgebornabaloneΛογισμικό & κατασκευή λογ/κού

2 Δεκ 2013 (πριν από 3 χρόνια και 8 μήνες)

71 εμφανίσεις

Ori Hanegby

Pixtazy

ori@pixtazy.com

Blog:
www.copperbit.com



Open Source is Everywhere!


Operating Systems


Linux, FreeBSD


Web Servers


Apache, PHP, Python, Ruby


Embedded Systems


Embedded Linux


Hardware


Open Cores


Web Browsers


FireFox, Chrome

.

.

.


GAMES


How can Open Source help my
project?



Almost every aspect of game development
has an Open Source solution these days,
below is a (very) partial list:


Libraries and SDKs


3D, Sound, Networking


Tools


Modeling, Art, Sound Editing


Full games:


http://en.wikipedia.org/wiki/Alphabetical_list_of_
open_source_games


Choosing an Open Source engine


Platform


What are the target platforms that your
game runs on?


Languages


Does the project has binding to your
development language?


Some projects has “parallel” projects for
other languages


Example: Bullet vs JBullet





Choosing an Open Source engine


How active is the community?


Successful open source projects have active
community


Forums




Wiki


Releases


How often is there a new release of the project?
Make sure it is not a “dead” project, even if it
used to be an active project.


For example: OpenTNL last update
-

22
-
Feb
-
2005


Licensing


Licensing


Open Source licenses might be
restrictive


Some are not suitable for commercial
projects


Some projects offer dual licensing
models to enable commercial needs

Licensing cont’d.


GPL


Any project using GPL must be GPL itself


Not suitable for commercial projects


http://www.gnu.org/licenses/gpl.html


LGPL


“Lesser GPL”


Used to license libraries in a less restrictive manner than
GPL.


LGPL libraries can be used in propriety software and
distributed in binary format. Any modifications to the
library itself must be shared.


… as long as the end user has the ability to replace the
library, hence statically linking is not permitted.


Suitable for PC games but
not for console games
.


http://www.gnu.org/licenses/lgpl.html







Licensing cont’d


BSD, MIT, ZLIB and alike


Very liberal licenses


Suitable for any kind of application


http://www.opensource.org/licenses/bsd
-
license.php



Games related domains at a
glance


3D Rendering


Physics


Networking


Sound


Game Engines

3D Engines


Some of the features that are provided
by 3D engines:


Cross platform 3D rendering


Loading models exported from 3D software


Scene Graph management


Particle systems


Materials and Shaders


Good selection of 3D Engines today:


Ogre3D, Irrlicht, Open Scene Graph, G3D
etc.



Focus: Ogre3D


High end features


Active community


Used in commercial games


C++


Has ports and binding to Java, .NET,
Python and Ruby


Dual Licensing


LGPL / Propriety



Focus: Ogre3D

Focus: Irrlicht


Easy to learn


Good for beginners


Active community


Cross platform


Support for older hardware


ZLib license (very permissive)


Focus: Irrlicht


Physics



2D and 3D physics libraries


Collision detection


Rigid Body Dynamics


Soft Body Dynamics


Forces simulation


Good selection of engines available


ODE, Bullet, Box2D, Chipmunk etc.

Focus: Chipmunk


2D Physics engine for games


Easy to use


MIT License (unrestricted)


Fast


Many Languages bindings


Ruby, Python, Java, C++ and more


Flash port exists as “Glaze” engine


Focus: Chipmunk

Focus: Bullet


High end features


Rigid and Soft Body dynamics, Vehicle,
Ragdoll, PS3 and CUDA optimizations and
more


Used in commercial applications and
AAA games.


ZLib license


Lacks good documentation.

Focus: Bullet


Networking



Networking libraries supplies a higher level
communication structure than plain
sockets. Some common features are:


RPC


Authentication


Remote object management



Messaging


Time synchronization



Current open source networking libraries
appear to be lagging behind
commercial/indie solutions.



Focus: Games Networking Engine
(GNE)


Connection and bandwidth handling


Packet ordering


Object serialization


Time synchronization


Cross platform


LGPL license



Sound


Some of the common features that are
supported by sound engines are:


Loading and playing sound files


Decoding MP3/OGG or alike


3D sound emulation


Open Source sound libraries tend to be
lower level and tend to supply less
complete solutions than propriety solutions


Additional libraries can supply missing
features


i.e. Ogg Vorbis libraries for .OGG music
decoding.


Focus: OpenAL


Maintained by Creative Labs


Focused on 3D sound features



No special sound formats decoding such as
MP3 or OGG


Cross Platform


LGPL license



Game Engines


Game engines provides a more
complete framework for game
development


Some of them are comprised of other
open source engines


Good open source engine options are
available today


Crystal Space, Panda3D, Wintermute and
more

Focus: Panda3D


Disney’s game engine


Python


High end 3D graphics


Sound


2D and 3D sound, music streaming


Network


Low level and high level object distribution API


Physics


Basic physics support


Used in commercial games


Modified BSD license.


Focus: Panda3D


Resources


Ogre3D:
http://www.ogre3d.org


Irrlicht:
http://irrlicht.sourceforge.net


Chipmunk:
http://wiki.slembcke.net/main/published/Chi
pmunk


Bullet:
http://www.bulletphysics.com


GNE:
http://www.gillius.org/gne/


OpenAL:
http://connect.creativelabs.com/openal


Panda3D:
http://panda3d.org/








Thanks!