Open Source Game Development
Boudewijn Rempt writes "Amazon's recommendation system recommended me "Open Source Game
Development: Qt Games for KDE, PDA's and Windows" when I was looking
for an introduction to OpenGL. While it does contain two chapters on
OpenGL, there's much, much more. It's not just an introduction to writing
open source games, it's a complete introduction to participating in
open source projects like KDE." Read the rest of Boudewijn's review.
Open Source Game Development: Qt Games for KDE, PDAs and Windows
author
Martin Heni, Andreas Beckermann
pages
554
publisher
Charles River Media
rating
8
reviewer
Boudewijn Rempt
ISBN
1-58450-406-4
summary
Complete guide on writing small to medium games for Linux, Windows and PDA's using Qt.
As maintainer of Krita, the KOffice paint application, I need to know about graphics. Unfortunately, the four months of retraining from sinologist to Oracle Forms developer that launched me into a life of coding didn't include anything on graphics, and certainly not on OpenGL. Which is very much where Krita 2.0 is going.
So... I was looking for an easy introduction to OpenGL to kind of ease my way into the Red and Orange books. And Amazon's weird recommendations system recommended Open Source Game Development: Qt Games for KDE, PDAs, and Windows by Martin Heni and Andreas Beckermann to me. Intrigued, I ordered the volume forthwith. Turns out that that was a good move: this is an excellent book.
In the first place, the text is very clear and concise, but never dry. Forget about the ho-ho-I'm-funny chatty style that's prevalent in many technical books. This book comes to the point immediately. Then, the information is carefully ordered and the presentation very neat and clear. Those would be good points for any book.
But what makes Open Source Game Development: Qt Games for KDE, PDAs, and Windows even more interesting is that it's much more than its title indicates. It is squarely intended at the hobby coder who wants to work on what the book calls "desktop games" -- not the multi-million dollar multimedia productions that demand a new graphics card every half year, but the games that you play while thinking out a knotty problem or that have some educational value for your kids. The kind of project a single coder, or a small team can complete and maintain while still staying sane. And, of course, that kind of game, defender or zaxxon-type games, maze games or tetris-style games work are perfectly suited for pda's and mobile phones, too,
Actually, this book is the perfect introduction to joining a big Open Source project I've seen. Of course, the focus is on Qt and KDE, which means that if you always had this itch to join KDE development but didn't have the necessary skills, this book will help you get there in a very pleasant way.
One way this is done, is by always first giving a general introduction to a topic, and then more detailed discussion in the next chapter. So, first we've got a very good "Qt Primer", and three chapters "KDE Game Development", "Qt Game Development Using Microsoft Windows" and "Game Development and PDA's". And there's a chapter on "OpenGL" in general, and then a chapter on "OpenGL with Qt".
The first part of the book deals with this type of introductory material. The second part discusses "Artificial Intelligence", "Pathfinding" (this chapter was a revelation to me -- I never understood how that worked. If only I had this information while trying to write games for my ZX Spectrum!), "Particle Effects" and "Math and Physics in Desktop Games". The material in these chapters is foreshadowed by the very first chapter "Introduction to Desktop Gaming", which deals with game balancing, architecture and the ins and outs of developing free software. Armed with these chapters, you can add enough game play to your games to make them satisfying to play.
The next three chapters discussion the Qt network classes and how to use them in your games, the KGame library (free software, of course), that contains a lot of boring groundwork that's the same for most games -- players, input devices, network stuff. For me personally, the "XML" chapter wasn't that useful, but then, I'm a corporate cubby-hole programmer by day, and XML is my bread and butter. It's amazing how many billable hours XML can add to a business application project.
A very important chapter, "Open Source and Intellectual Property Rights" makes it very clear what's allowed and what not. The summary chapter, "A Practical Summary" is a novel idea -- at least, I hadn't come across something like this before -- and it works quite well, tying all strands together. There are plenty of references to earlier chapters, so if works like a kind of hands-on index. Not that the actual index isn't top-notch, too.
I should make clear that this book is not just about coding for KDE. That's what most interesting to me, but if you want to code a game for Windows, for a Qtopia or Qt/Embedded environment, then this is the right book. After all, with the release of Qt4 under GPL for Windows (Qt was already released under GPL for X11 and OS X, as was Qtopia), Qt is a good choice for Windows hobby programmers. You get a high quality toolkit that really helps with the boring ground work, and excellent documentation. Coupled with the clear text in this book, there's nothing to hold you back.
Andreas Beckermann is the author of Boson, an OpenGL real-time strategy game based on Qt and KDE. His experience in working on Boson really is apparent in this book. Martin Heni has written a couple of games that that are in KDE's games pack, and has won a prize for his QTopia game Zauralign.
Oh, and the chapters on OpenGL and OpenGL with Qt were enough to make me understand the OpenGL Krita already has and did prepare me quite adequately for the big Red and Orange books. And I've got the itch to write a little game now..."
You can purchase Open Source Game Development: Qt Games for KDE, PDAs and Windows from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
As maintainer of Krita, the KOffice paint application, I need to know about graphics. Unfortunately, the four months of retraining from sinologist to Oracle Forms developer that launched me into a life of coding didn't include anything on graphics, and certainly not on OpenGL. Which is very much where Krita 2.0 is going.
So... I was looking for an easy introduction to OpenGL to kind of ease my way into the Red and Orange books. And Amazon's weird recommendations system recommended Open Source Game Development: Qt Games for KDE, PDAs, and Windows by Martin Heni and Andreas Beckermann to me. Intrigued, I ordered the volume forthwith. Turns out that that was a good move: this is an excellent book.
In the first place, the text is very clear and concise, but never dry. Forget about the ho-ho-I'm-funny chatty style that's prevalent in many technical books. This book comes to the point immediately. Then, the information is carefully ordered and the presentation very neat and clear. Those would be good points for any book.
But what makes Open Source Game Development: Qt Games for KDE, PDAs, and Windows even more interesting is that it's much more than its title indicates. It is squarely intended at the hobby coder who wants to work on what the book calls "desktop games" -- not the multi-million dollar multimedia productions that demand a new graphics card every half year, but the games that you play while thinking out a knotty problem or that have some educational value for your kids. The kind of project a single coder, or a small team can complete and maintain while still staying sane. And, of course, that kind of game, defender or zaxxon-type games, maze games or tetris-style games work are perfectly suited for pda's and mobile phones, too,
Actually, this book is the perfect introduction to joining a big Open Source project I've seen. Of course, the focus is on Qt and KDE, which means that if you always had this itch to join KDE development but didn't have the necessary skills, this book will help you get there in a very pleasant way.
One way this is done, is by always first giving a general introduction to a topic, and then more detailed discussion in the next chapter. So, first we've got a very good "Qt Primer", and three chapters "KDE Game Development", "Qt Game Development Using Microsoft Windows" and "Game Development and PDA's". And there's a chapter on "OpenGL" in general, and then a chapter on "OpenGL with Qt".
The first part of the book deals with this type of introductory material. The second part discusses "Artificial Intelligence", "Pathfinding" (this chapter was a revelation to me -- I never understood how that worked. If only I had this information while trying to write games for my ZX Spectrum!), "Particle Effects" and "Math and Physics in Desktop Games". The material in these chapters is foreshadowed by the very first chapter "Introduction to Desktop Gaming", which deals with game balancing, architecture and the ins and outs of developing free software. Armed with these chapters, you can add enough game play to your games to make them satisfying to play.
The next three chapters discussion the Qt network classes and how to use them in your games, the KGame library (free software, of course), that contains a lot of boring groundwork that's the same for most games -- players, input devices, network stuff. For me personally, the "XML" chapter wasn't that useful, but then, I'm a corporate cubby-hole programmer by day, and XML is my bread and butter. It's amazing how many billable hours XML can add to a business application project.
A very important chapter, "Open Source and Intellectual Property Rights" makes it very clear what's allowed and what not. The summary chapter, "A Practical Summary" is a novel idea -- at least, I hadn't come across something like this before -- and it works quite well, tying all strands together. There are plenty of references to earlier chapters, so if works like a kind of hands-on index. Not that the actual index isn't top-notch, too.
I should make clear that this book is not just about coding for KDE. That's what most interesting to me, but if you want to code a game for Windows, for a Qtopia or Qt/Embedded environment, then this is the right book. After all, with the release of Qt4 under GPL for Windows (Qt was already released under GPL for X11 and OS X, as was Qtopia), Qt is a good choice for Windows hobby programmers. You get a high quality toolkit that really helps with the boring ground work, and excellent documentation. Coupled with the clear text in this book, there's nothing to hold you back.
Andreas Beckermann is the author of Boson, an OpenGL real-time strategy game based on Qt and KDE. His experience in working on Boson really is apparent in this book. Martin Heni has written a couple of games that that are in KDE's games pack, and has won a prize for his QTopia game Zauralign.
Oh, and the chapters on OpenGL and OpenGL with Qt were enough to make me understand the OpenGL Krita already has and did prepare me quite adequately for the big Red and Orange books. And I've got the itch to write a little game now..."
You can purchase Open Source Game Development: Qt Games for KDE, PDAs and Windows from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
A large amount of Linux Game programmers make incompotent descions.
Take Boson for example.
There is no reason why Boson should be tied to KDE the way it is.
Some game programs don't utilize automake or autoconf at all.
Another problem is that some Linux game Programmers program are Windows programs who put in a minimum effort nessessary to build a Linux version.
The fact is that we need people to work on better Linux games and Engine Source ports.
You can make your game opensoure X years later where X years is when you stop making a profit. The reason some of the big dogs don't do this is that they want to resell the game X years in the future in a classics pack. Or rerelease atari 2600 for example. Making a game open source brings more fame to it as more people enjoy mods on your game and your good heart for allowing it to happen, which brings fame to your company. Company fame results in more units sold in the future when you make new games.
God spoke to me.
That seems like pretty sensible advice - the phrase "game development" immediately brings to mind the big successful commercial games, but that's not the area in which open source seems capable of competing, and it is much more productive to realise that simple games can be more worthwhile to make.
As for why open source game development has problems when trying to emulate commercial game development, there was some discussion a while back; shamelessly reposting my comment from there:
The money comes later when you apply for a job in the industry, and can point out some first-hand examples of what you can already do. Plus you'll have some experience already.
With my own application for a job, I've actually used my own Open Source project and website as examples for the conversation, with great success. :-) Your milage may vary off course, and I must admit I've got lucky it's a small company with a technical-oriented atmosphere.
The best way to accelerate a windows server is by 9.81 m/s2
In my uninformed opinion there really is no reason for paid-account MMORPGs to be closed source. They might say that it's to prevent cheating, but I say that open sourcing would kill cheating dead.
--
The problem here is what happened to blizzard and bnetd, but, with an Open Source client it would be trivial to create servers and you wont be doing andy "reverse engineering" thus not breaking the law.
What is needed in these cases is the company to create a "community" with some value in order to persuade people to join. (Certified servers, fast servers, some kind of updates, etc)
Ubuntu is an African word meaning 'I can't configure Debian'
...then please please PLEASE first take a look at the hundreds of other OSS games out there and consider building on (read: contributing to) one of those.
It's sad looking at the large number of games that have shown promise but for one reason or another have been abandoned or development has slowed or forked. We really don't need another nethack clone, MMORPG or 3D engine. We have all of those in abundance. What we need now is to build on these, both with shader code and good content. It's often easy to tell the OSS games from the commercial ones from a single screenshot because the commercial studios have good artists and the OSS devs don't (I am being overly broad here and there are exceptions such as Frozen Bubble, but these are rare).
One not-quite example: I am a fan of the excellent OSS flight simulator FlightGear. The latest version 0.9.10 has some nice ground textures and real-world data that makes for a truly beautiful view when flying at 30,000 feet. But the planes themselves look like crap. The model detail and decals are average but what really lets it down is the way the plane interacts with light. The engine is badly need of work to take advantage of OpenGL shaders. And the sky looks completely wrong. As you ascend beyond 50,000 feet you should see the sky darken to a very deep blue with some stars becoming visible but the engine doesn't allow for this (you're basically inside a big solid-blue sphere). Not vital properties for learning to fly a 747 I know, but still important polish for a realistic flying experience.
If you have a truly original idea then by all means start from scratch if nothing existing fits the bill, but don't just fire up a text editor and start another MMORPG from scratch. The OSS gaming community don't need it.
"Nine times out of ten, starting a fire is not the best way to solve the problem." - my wife
I know what you're going to say, you're a programmer, you can't make content. Lies! No, I'm not seriously suggesting you break out Blender or even 3d Studio. What I'm suggesting is that you, as a programmer, develop new and exciting tools for content creations. For example, how many open source tree generators are there available that are suitable for use with open source graphics engines? Zilch. Another example, can you write an algorithm that can turn a description of an animal's skeleton and how much weight there is on various points of that skeleton into a walking animation? How about a running animation? How about fighting animations? Can you write an algorithm that turns that same input into a fleshed out 3d model? You can? Great, we're half way to making all the content we could ever want.
"Programmer art" should not be a derogatory term for content whipped up by non-professionals.
How we know is more important than what we know.
The problem is that you'd still be investing millions of dollars/man-hours to create this engine, and giving it away for free to your competitors. Sure, everyone can then create their own art/story/content, but why give should my competitors get to use an engine that I spent much dollars/man-hours creating, free of charge?
I really think Epic has a better understanding of this industry than random slashdotters or RMS. Epic spend years creating their Unreal 3.0 engine, and guess what, the *license* it to others for a *fee* (and the license may even include the source, but not for redistribution to others). I'm sorry, but open source is not amenable to creating things like Halo, Half-Life, World of Warcraft, etc. Stick with Tux Racer trivialities.
A sidenote:
I've worked on software for years, and the "art" (icons, pictures, sounds, etc) is considered part of the "source". So why do you separate the "art" from the "source code"? You say that devs can GPL the engine but keep the "art" 'closed'. Why not "GPL" the art as well? Seems that the true OSS advocate would advocate "open sourcing" the art/story/content, letting the "community" improve it, and reaping the benefits of the community's effort. That you concede that the art should remain 'closed', tacitly admits a flaw in the GPL model (as far as money-making is concerned).
-- "I never gave these stories much credence." - HAL 9000