2008 Austin GDC Coverage Part 1
Developing Games with Open Source TechnologiesAll day session sponsored by Sun MicrosystemsThis is an all-day discussion of various free technologies out there and how they're viable alternatives to commercial products. Views from the Big Chair – first panelDaniel James – Three Rings (Puzzle Pirates) – Much of Puzzle Pirates infrastructure has been open-sourced Online products benefit from lack of boxed deployment, and many open-source licenses deal with that kind of distribution. And that makes things a bit easier, as stuff running server-side isn't as rigidly controlled. Lack of knowledge of licenses and the tangle of several conflicting licenses is a problem when using open-source software. Sun has moved from a custom open-source license to GPL version 2 for their open-source products. GPL can be scary if you don't know the pitfalls. Oftentimes, getting bugs fixed in open-source software depends on how much money you have, either to give to the community or to hire someone to fix the problems. One advantage of open-source software is that you can see the code, so if the code is horribly designed, you can see it. The benefits are not only financial, but are also technical. Successful open-source communities are not democratic. They all have associated communities, but the most successful ones are the ones that have one or two people at the top who maintain the vision of the site. Communities can fracture (example Emacs vs Xemacs) over features and fixes. In the end, one or two people are driving the boat. Yes, it's undemocratic, but it's necessary to keep the product as a coherent whole. Meet The jMonkey engineJoshua Slack – lead developer
Why use jMonkey?
NASA is using it at their robots center in California. OGRE: An Object Oriented Graphics Rendering EngineDavid Williams What is Ogre: It's not a complete game engine (no sound, networking, or physics). It's strictly an open-source graphics engine. It provides and easy-to-use high level API. It's written in C++ but has bindings for other languages, and it deploys on Windows, Linux, or MacOS. It's run by a small team of committed developers and is backed by Torus Knot Software (a consulting company that consults on Ogre-based projects). It's been used in many commercial projects. Scene Management – determining what should be drawn and when. The default scene manager uses a bounding volume hierarchy. Octree and terrain scene managers are also provided. You can also create custom scene managers is the default ones won't suit your needs. For most projects, the default ones will work. Ogre provides its own mesh format, and exporters are available for Blender, 3D Studio and other modelers. Per-vertex animation is available as well as skeletal animation. Level-of-detail control is supported. Scripts control the material objects (like shaders). Fixed function and programmable pipelines are supported Particle systems are supported and are defined through scripts. Shadow volumes or shadow maps are supported. Compositors – used for post-processing effects, and can be chained together. Ogre is integrated with loads of third-party API's from multiple software companies. Integrates with C#, Java, and Python. Coming up is a DX10 rendering system, geometry shaders, portal-based scene manager, parallel-split shadow maps, and new script compilers. Panda3D – Jesse SchellPanda3d Came out of Walt Disney's virtual reality studio. Originally it was intended to be deployed in Disney's DisneyQuest VR theme park. Built on an architecture similar to SGI's “performer”. When Toontown Online came about, they decided they needed something more platform-agnostic. PANDA = “Platform Agnostic Networked Display Architecture” Toontown online and Pirates of the Caribbean Online is built from Panda3D. Uses OpenAL, OpenDynamics (open source) or PhysX (not open source). Originally designed to have replacable scripting languages, but Python seems to have taken over. Late-binding scripting is a cornerstone of the system. Things do not have to be shut down to adjust subsystems. Panda 3D recently changed ownership, and it's been given to Carnegie Mellon University. The license is being changed from a custom Apple-inspired license to something else that should generate fewer problems with the community. The original aim was to work closer with universities, and since Disney is a content company and not a technology company, they felt they would benefit from having a high quality community (universities) with access to the product. Another side-effect of the university emphasis is that since things work on a semester-level, people need to be able to ramp up on it quickly. You can't spend 2 ˝ months learning an engine for a project that must fit in a 3 ˝ month semester. It is currently used extensively in Carnegie Mellon's “Building Virtual Worlds” class. Type “building virtual worlds” in YouTube for numerous examples of virtual worlds written using the system from the class. Strengths – character animation integration. The community for Panda3D is centered at Carnegie Mellon. The project is currently in a bit of upheaval, as one of the main people has left for a commercial project, but they're hoping that things will settle down and the project will eventually be stronger for it. The Bullet Physics EngineErwin Coumans – Simulations lead at Sony's US R&D Bullet Physics – open source physics engine. Eventually hopes to be a physics standard ala OpenGL or OpenAL. The name is inspired by the classic “bullet through paper” conundrum that physics engine developers face. Bullet is a rigid and soft body dynamic engine. It's portable, debuggable, and multi-threaded. It supports PS3, 360, Wii, PC, Mac, and iPhone. It's modular and open-source, and is free for commercial development. The demos are pretty impressive, showing seamless interaction between rigid and soft bodies. GTA4 uses some Bullet physics in the game. You probably didn't know that because Bullet doesn't have an advertising clause forcing you to mention that Bullet physics is being used. Bullet is also used in some movies both “Hancock” and the upcoming movie “Bolt” uses Bullet physics for some realistic effects. Disney is using “Dinamics”, which is a Bullet physics plugin for Maya, used in its pre-rendered movies, not games. Disney contributed the plugin back to the community as open source. Blender also has built-in Bullet support. A recent book called Bounce, Tumble and Splash! uses Bullet in a physics tutorial. Bullet supports COLLADA physics. For more information, check out www.collada.org Havok tools can work with Bullet physics, as the Havok physics file format (HVK) can be converted to Collada (DAE) format. www.producingoss.com has a very good book on open-source development. The book is available free on the site. The project was originally available on sourceforge, but it eventually moved to googlecode. It's now available on bullet.googlecode.com. Google Code is nice because it can import complete subversion repositories, including history. Bullet is based on the Zlib license, which is about the most liberal one out there. MIT is also pretty liberal. BSD has an advertising clause which runs afoul of some projects that can't advertise a project's underlying libraries. GPL was out of the question, because it's incompatible with the major game consoles (PS3, Xbox, Wii). It's also very difficult to change the license after-the-fact if you want to change license terms later. There's also a Java port of Bullet called JBullet. It's a one-to-one mapping classes of Bullet's C++ classes to Java. Performance is actually fairly good, not on par with the C++ version, but not bad. Unfortunately with the port from C++ they also ported some of the bugs, so it's still very much a work in progress. Free IDE'sRebelMonkeyIn years past, you'd expect to pay at least $200 for a reasonable IDE. Today there are some great tools for free. Netbeans 6, Eclipse 3, IDEA, and Visual Studio.
It has support built-in for CVS, SVN, and Mercurial out of the box. Netbeans can support just about anything as a plugin, and you can build editors for anything. Eclipse 3 is also open source and written in Java, so it has the same platform support as Netbeans. It's sponsored by IBM and supports Java, PHP, and XML out of the box. Source control systems are supported as plugins. The Subversive plugin for SVN is recommended for Subversion support. There's a profiler built in, but it's fairly broken. IDEA from IntelliJ. It's open source, but you must apply to be approved. Java developers like this one quite a lot. Visual Studio Express. It supports C++, C#, and VB as a .NET tool. Java support (via J#) has been officially dropped. The tool itself isn't open source, but it's free. XNA Game Studio Express. Also from Microsoft. It's $100 a year for console support, which makes it pretty-much the cheapest console development tool out there. Filling the Gaps in your toolchainEmanuel Greisen of Gamalocus StudiosGood tools can get you 90% of the way there, but there's no perfect tool that'll solve all your problems. Open source tools get you access to the source so you can alter tools to better fit your toolchain. Or you can write plugins if your tool supports such a metaphor. Eclipse plug-ins are written in Java. For the project, they needed a tool to convert a MySQL database to a binary format that could ship with the game. Eclipse plug-ins are pretty easy to write, but you will need to dig through some documentation to get there. Since Eclipse is made of plugins, the process if pretty well-refined and documented. Blender plug-ins are written in Python. For the project, they needed to assemble, optimize, and export models to jMonkey format. The plug-ins were easy to write, especially regarding visual feedback (easier than the database project). GIMP plug-ins are also written in Python, as well as other languages (scheme, perl). Unfortunately the Windows version doesn't support Python well at all, so they ended up rewriting their plug-in in C. Jeff Kesselman – Chief Technical Monkey – Rebel Monkey IncWhat is a game engine? At minimum, it's a game loop with input handling, drawing functions, and sound functions To add to that, it can have advanced drawing features like particle systems, image processing, and dynamic shadow casting. It can even encapsulate all game logic, like an isometric engine or script language interpreter. Slick – Written in Java. BSD License. Based on the LWJGL (lightweight Java game library). This is a basic 2D engine with a game loop, time management, routines for music and sound effects (OGG, MP3, and WAV), and drawing routines to load common image file formats and in common meta-usage (sprite sheets, tiled maps, bitmapped fonts). One good example is the 2D space game “StrafeFighter”. PyGame - Written for Python. It's based on SDL and handles the game loop and time management, music and sounds. It loads lots of bitmap formats. Unlike Slick, it also supports vector objects. AS3GE - Game Engine for Flash CS3. Flash keyframes == 1 game “screen” or state. Each keyframe has its own update method. Input is polled globally. Everything else is done via AS3. It will be appearing on Google Code soon. I got the strong impression that this is just a demo that will never pan out as an actual product Ffilmation – Isometric engine designed for use with Flash CS3. Has advanced lighting and dynamic shadows. Automatic tile warping and animation system with movement and blocking. HGE – C++ engine and unlike the previous ones is Windows-only. One very cool game done with HGE is “Freakwave”. Torque Game Builder – not free but is very reasonably priced. Available on Windows, Mac, and Linux. Has every feature of the above engines including physics. It also has its own toolchain and scripting language. Project DarkstarSun Microsystems What is Project Darkstar? It is a software platform for the server-side that simplifies the development of multiplayer online games. It's written completely in Java and is 100% open source. It automatically handles communications, thread management, contention management, persistence, and scaling. Problem 1: Communications. Just setting up a system to handle logins is hard work. Darkstar abstracts away all network programming mechanics. It provides an intuitive API to handle all of the coarse-grained behavior of the communication between client and server. Interfaces on the server side are just response functions and all of the communications are handled for you. The client side is language-agnostic. The Java API has one class and one interface. Problem 2: Multi-client communications. How do you communicate messages to multiple clients? Project Darkstar provides a mechanism to group clients together to minimize traffic. On server-side, there is a ChannelManager class with methods to add and remove clients to the channel. There's a ChannelListener that processes incoming messages coming into a channel. Problem 3: Thread Management. How can we efficiently process messages in parallel. Darkstar is a multi-threaded environment under the hood. Tasks appear single-threaded to the developer, as threads happen at a lower level than where you're working. Problem 4: Data Consistency. When working with multiple threads, contention is a problem. Transactions are required if you need to maintain game state. In Darkstar all state management stuff is transacted. All persistent objects must be marked as managed. Problem 5: Persistence. When running a large virtual world, you must protect against server classes and other unrecoverable problems. Darkstar's default data store is implemented as a Berkeley DB database. Problem 6: Scalability. The current industry industry solution is “zones and shards”, but Darkstar is trying to work around this. The goal is automatic multi-node scalability and balancing. There's a good demo (a multiplayer snowman game) available at project-snowman.dev.java.net Coverage by John Hattan
|
|