Categories
Geek / Technical General Linux Game Development Marketing/Business Politics/Government

GPL v3 Released

The Free Software Foundation launched GPLv3 yesterday. You can read the wording of the license in its final form.

What does it mean for software developers and indie developers in particular? I don’t know. The GPLv2 was written over a decade ago, and this new version deals with software in the face of new technologies such as the World Wide Web. I know a number of businesses participated in the discussions so any silly arguments about the license being a tool for communism can hopefully be put to rest.

“By hearing from so many different groups in a public drafting process, we have been able to write a license that successfully addresses a broad spectrum of concerns. But even more importantly, these different groups have had an opportunity to find common ground on important issues facing the free software community today, such as patents, tivoization, and Treacherous Computing,” said the Foundation’s executive director, Peter Brown.

I am sure people will be talking about what the new license means and how it is different from GPLv2 for weeks to come.

Categories
Games Geek / Technical Linux Game Development

A Brief History of Linux Gaming

Thanks to LinuxGames.com, I learned about the blog kahvipapu and the Linux Gaming series of posts.

In part one, the author focuses on first-person shooters. Loki ported quite a few games from Windows, including Quake 3 Arena. I was able to purchase multiple copies in the distinctive metal packaging once Loki went out of the business. Besides mainstream titles such as Unreal Tournament 2004 and Wolfenstein: Enemy Territory, freely available games such as the Quake-based Warsow and Nexuiz. Both are beautiful looking and a lot of fun. I have yet to play Tremulous, which is a team-based FPS with real-time strategy elements. I really should check that one out.

Part two is focused upon strategy games. I have always felt that there is a definite lack of strategy games on Gnu/Linux. Besides Freeciv and Loki’s port of Civilization: Call to Power, which I do not own, I’ve found many games are uninteresting or still in alpha.

Then again, I haven’t played Battle for Wesnoth yet, and considering that it is one of the games that most people think of when you say “strategy game for Gnu/Linux”, I probably should. I’m downloading it right now. I have played Loki’s port of Myth 2, and it is always fun to set up a chain reaction explosion.

Another game I should try is UFO: Alien Invasion. I’ve never played X-COM, but I’ve heard plenty of good things about it. Warzone 2100 is one that I haven’t heard of before. It is supposedly one of the first 3D RTS games ever, and it is now open source. I’m downloading that one, too. I have also been meaning to purchase Robin Hood: The Legend of Sherwood.

Part three continues to list the strategy games available for Gnu/Linux. Bos Wars, Dominion 3, FreeOrion, and of course the Total Annihilation-based Spring are among the games listed.

Part four is all about MMOs. A Tale in the Desert is a popular one, and I recall the developers mentioning that there are more subscriptions from Gnu/Linux users than Windows or Mac users. While a number of games are only playable using Wine or Cedega, quite a few have native clients. Vendetta Online is one of them, and so is the indie game Dofus.

I am sure that more games will be listed in future articles. For instance, Frozen Bubble is a really popular puzzle game. Missing from the list of strategy games was Tribale Trouble and Defcon, two games from two different indie developers. Lux, Darwinia, Pioneers, and Widelands were also missing. Pioneers is a Settlers of Catan clone, but with all of the press Catan has received for being on XBLA, Pioneers should be mentioned.

Hmm…if it is hard to catalog all the games available for Gnu/Linux, perhaps “Linux has no games” isn’t such a true statement anymore.

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: June 18th

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 128.25 (current year) = 390.5 / 1000
Game Ideas: 616 (previous year) + 57 (current year) = 673 / 1000

I still have a 10-minute build process, which means I go from checking out the Killer Kittens project to a distributable tar.gz file in about 10 minutes. I spent this past week continuing the work of refactoring the menu system. I had plenty of opportunities for refactoring as there was a lot of code duplication in the menus. I still want to get rid of the individual menu classes since the only difference between them is the creation of different MenuOptions. For instance, MainMenu offers the options “PLAY A NEW GAME” and “EXIT”, while PauseMenu offers the options “RESUME GAME” and “RETURN TO MAIN MENU”. Instead of individual classes deriving from a Menu class, I should be able to load these menus from config files.

Of course, reducing these menus into config files would be nice, but what I currently have is a huge improvement over what I had last week. I was able to add a couple of new menus easily. Previously, adding a menu would be a big ordeal. I’d have to touch code in maybe four different files and then test the game multiple times to verify that my input handling worked as expected. I used to have problems with hitting ESC to pause the game, only to have the menu system think that the pause menu should be closed again. It thought I had hit ESC twice since I had to indicate that the button was being pressed BEFORE the menu system’s input handler was working. Since I had code duplication, I had code changes in some classes and not in others. Now, the input system works no matter what, and each menu is handled consistently. A new menu will be handled the same exact way every other menu is handled.

While I may be spending too much time on this system, I feel that the player will appreciate not feeling like the game is buggy or broken. Hitting ESC at any menu has a default option now. If you hit ESC at the MainMenu, it will open up the new VerifyMenu that asks if you are sure you want to exit. Hitting ESC at this menu will bring you back to the MainMenu. The best part is that my next project won’t have to reinvent a menu system, or if I do rewrite one, I will have enough experience to know what kinds of things I need.

It should be much easier for me to create an instructions screen now since it is basically just a menu with a background of instructions and a single option: “Play the Game”. It should also be easier to add a new feature to the menu system. I want a slider to allow the player to change the sound volume. Since the menu system’s code is much cleaner and easier to manage, implementing new features means I have less to worry about going wrong. I still need to think about creating a EULA for my game data, and I would like to get my main build system setup to build both a Gnu/Linux distributable and a Win32 distributable. Perhaps more important is updating the graphics. Maybe one day I will make a game themed on programmer art, but I need something better than a blue background with a green bar at the bottom to represent the sky and the ground. B-)

Categories
Game Development Linux Game Development

POTM for May: libSDL

The general idea of the Project of the Month is to donate some money to an open source project and write a blog post about it. Everyone knows about the major open source projects, such as the Linux kernel or Firefox, but there are plenty of examples of open source projects that impact you in some way that might not appear on most people’s radars.

For the month of May, I chose to donate money to the Simple Directmedia Layer, the popular cross-platform multimedia library designed to provide low level access to audio, keyboard, mouse, joystick, 3D hardware via OpenGL, and 2D video framebuffer. It is currently at version 1.2, is widely used in games and other media applications, and has bindings to a large number of languages. If you run an operating system, it is very likely that libSDL runs on your system.

Sam Lantinga created the SDL while working at Loki, although there are some people who think he may have written it at his previous job. SDL acts as a thin wrapper over platform-specific APIs. For instance, if you use it on Windows, it wraps around DirectX, but if you use it on a distribution of Gnu/Linux or BSD, it will use XLib. If you think of it as an abstraction, you can code once and compile anywhere. In fact, my Killer Kittens from Katis Minor project can be compiled for my Debian system and for Windows without any code changes if you use a compiler that doesn’t assume you need WinMain to replace the main function.

The documentation is available at the main site, and I’ve always found the SDL Documentation Wiki to be useful. Of the books I’ve read, I would highly suggest Focus on SDL by Ernest Pazera and Programming Linux Games by John Hall. While both books a few years old, they are still relevant and can get you up to speed quickly. You can also find SDL used in the example code a couple of game programming books by Erik Yuzwa at Wazoo Enterprises.

If you are trying to figure out what libraries to use for your project, even if you aren’t thinking about porting it to a second platform, I would suggest libSDL. If all it does is provide a simple abstraction for DirectX libraries, you will still come out ahead, and if you want to port it later, it should be much easier than completely gutting platform-specific libraries and replacing them with another platform-specific library.

Thanks go to Sam Lantinga and the libSDL development community for making a simple-to-use, cross-platform, freely-available tool for game development!

Categories
Game Development Geek / Technical Linux Game Development Personal Development

Interview with Ryan “icculus” Gordon

Over at LinuxGames.com, I found Interview with the Icculus, a discussion with Ryan “icculus” Gordon on the future of game development on Gnu/Linux.

The best quote:

I guess you’re asking what Linux gaming will look like in five years and, in a roundabout way, I’m answering: whatever we make it look like.

Ryan is doing his part by putting in his efforts into the next version of libSDL, which seems to integrate more with OpenGL behind the scenes, as well as the reincarnation of the Loki Setup program, called MojoSetup.

I’m hoping that GBGames can also make a significant difference in the future of gaming on this platform.

Categories
Game Development Linux Game Development Personal Development

Thousander Club Update: May 21st

For this week’s Thousander Club update:

Game Hours: 262.25 (previous year) + 110.5 (current year) = 372.75 / 1000
Game Ideas: 616 (previous year) + 44 (current year) = 660 / 1000

I spent a good portion of this week reducing the dependencies Killer Kittens has. I followed the advice of Troy Hepfner, owner of My Game Company and creator of Dirk Dash. He outlined what to do in the article Game Developer’s Corner: Linux Game Development: Distributable Binaries which members of the Association of Shareware Professionals would have seen in the May 2007 issue of the ASPects newsletter. If you’re not currently a member of the ASP, you can join and obtain access to the back issues in the archive.

If you install a game, it should install any dependencies if you don’t have them. On Windows, you’ll see games that try to install the latest DirectX drivers, although there is room for improvement. If I already have a later version of DirectX, don’t offer to install an older one!

Anyway, ideally the game should be as easy as extract-and-run. I shouldn’t need to tell someone that they need libSDL-1.2 and libSDL_image-1.2. If someone doesn’t have the required libraries on his/her system, the game should supply its own version of the libraries.

But I don’t want to provide hundreds of libraries. Besides bloating the download size of my game to possibly tens or hundreds of megabytes, making it less likely someone would want to download it and increasing bandwidth costs, it would be a hassle for me to deal with!

My game currently depends upon libSDL and libSDL_image. Using Troy’s helpful information, I was able to reduce libSDL’s dependencies dramatically by creating a custom version. I built the Kyra Sprite Engine as a dynamic library according to the instructions in this post.

Unfortunately, I had problems getting Kyra to build using my custom SDL libraries. Also documented in that post, I found that building the Kyra Sprite Engine actually builds two libraries: libkyra and libengine.

I ran configure with the following arguments: –prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib –with-sdl-prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib/ –with-sdl-exec-prefix=/home/gberardi/wc_KillerKittens/KillerKittens/lib/

If I run ldd libkyra.so, I find that it uses the libraries in the KillerKittens/lib directory. If I run ldd libengine.so, however, I find that it uses the system-installed libraries, which also brings in all of their dependencies.

If I can get libengine to build using the same libraries as libkyra, I can get my dependencies down to a handful. I believe the problem lies with a faulty implementation of autotools and libtool, but those tools seem incredibly difficult to work with. As a (possibly half-serious) joke, it is said that most people don’t actually know how to use autotools and simply copy and paste configuration files from one project to the next.

I’ve asked for assistance on the The Linux Game Tome game dev forums as well as the Linux Game Development Center mailing list. While I wait for any response, I’m still hunting through the configure, configure.in, ltmain.sh, and various Makefile files, trying to determine why one library builds with the options I pass to it while the other does not.

On a different note, if you are going to be in Chicago on May 24th, you can come see the game development tech talk I will be giving for the DePaul Linux Community.

Categories
General Linux Game Development

POTM for April: Vim

The general idea of the Project of the Month is to donate some money to an open source project and write a blog post about it. Everyone knows about the major open source projects, such as the Linux kernel or Firefox, but there are plenty of examples of open source projects that impact you in some way that might not appear on most people’s radars.

This month I donated to Vim, the improved vi editor that I use for all sorts of text editing, including coding and configuration editing. The main developer is using all donated money to help AIDS victims in Uganda, which is both a great cause and motivates him to do more development.

While a lot of developers like Visual Studio, and some of those developers use SlickEdit or Code::Blocks as alternatives, I prefer using Vim. It’s a text editor that I can use whether I am at my desktop or logging in remotely. If I move to a different computer altogether, Vim is pretty much going to work as I expect it to. Without it, I might have to relearn a different editor when I am at home, at work, at a friend’s computer, or anywhere else.

I used to use Nano when I first started experimenting with Gnu/Linux since it was the most similar to other text editors, such as Notepad. Once I learned that there are some editors that are much more efficient, I decided to to learn Vi/Vim. Now editing files requires less key presses, and my fingers almost never have to move far from the home row. If I could find a Vim plugin for Firefox to allow me to use it as an alternative editor for text boxes in forms, I’d use it.

I also find that I am still learning ways to improve my efficiency with Vim. Recently the main developer gave a talk called “The Seven Habits of Effective Text Editing 2.0”. There is a video, which is a little longer than an hour, and slides with notes. While I knew some of the tips, some of them were only recently learned, and the talk had a few new tips that should make my future text editing much more efficient.

I do have to say that it can take some getting used to if you are not familiar with Vim. Having a command and visual mode separate from editing mode in a text editor might seem counterproductive, but once you get over that hurdle, you can be up and running in no time. Text editing becomes much more fun and productive.

Even if you don’t care much for Vim, you can also think about using its cursor keys as training for Nethack. B-)

Categories
Game Design Game Development Games Geek / Technical Linux Game Development

Open Source Game Development Discussion Podcast

Thanks to LinuxGames.com, I learned about the latest podcast of Open Source On The Air. This podcast focuses on open source game developers from the Thousand Parsec and Wesnoth projects as well as Kruel Studios.

I find it interesting that the developers pretty much agreed that quality artwork was their main concern. I suppose when you are all programmers, finding good code isn’t a problem.

Categories
Game Development Games Geek / Technical Linux Game Development Politics/Government

Second Life Client Source Code Released as Open Source

I found this bit of news on LinuxGames.com. Second Life, the virtual world created by the players, has had its client code open sourced. Linden Labs released the client code under the GPL.

I’m excited by this news because it means that progress on the GNU/Linux client might actually move forward, putting it on par with the Windows and Mac clients.

Categories
Game Development Games Geek / Technical Linux Game Development

Why Flash 9 for Linux Is Taking So Long

Paul Betlem, senior director of engineering for Adobe, explained why Flash 9 for Linux is taking so long.

GNU/Linux users didn’t even see Flash v8, which meant that while Windows and Mac OS X users were able to use and view newer content, GNU/Linux users had to deal with a wide range of problems due to an outdated plugin.

The problem was that Adobe wanted to create a consistent experience for all distributions, and the Linux Standards Base has not addressed all of the different libraries used by Flash. Testing multiple configurations was also a challenge. The good news is that Adobe’s suggestions to the LSB aren’t falling on deaf ears, and it should be easier in the future to provide an application that can run on any distro without the user or developer worrying about tiny but important differences.

Also good news is that Adobe plans to ship Flash v10 for Windows, Mac, and Linux-based systems simultaneously, so the delay GNU/Linux users had seen with v9 apparently won’t happen again.

So what does it mean to GNU/Linux gamers? Flash games will no longer be off-limits. And for developers, it means an entirely new audience can be available to play their games.