Categories
Game Development Geek / Technical Linux Game Development

Oracle’s Eye Development: I Broke The Build

A few days ago I updated my Debian Gnu/Linux system. Today I sat down to get some really productive work completed for Oracle’s Eye. Since I didn’t know where to start, I decided to build the project, run what I have, and then make a decision on what to do from there. Sounds good, right?

Except that when I went to build the project, I had a linker error. Unfortunately I lost the actual message, but it basically said that the library for Kyra didn’t reference std::basic_string.

Eh? How did the Kyra Sprite Engine lose access to the C++ Standard Library? Am I reading that error message correctly? Maybe the packages I updated were broken? Well, according to an active developer on #debian, he builds his projects just fine. So did the Kyra installation get corrupted or something?

Oddly enough, the Kyra demo still runs perfectly fine. Am I just building it incorrectly?

To make a long story short, I ended up removing Kyra 2.0.7, installing the latest 2.1.1, and finding that it won’t compile at all. Finally I decided that since I did updates to a number of packages, some of which might be graphically related, I might as well restart my display manager. When I did so, I reinstalled Kyra 2.0.7, and my project compiled, linked, and ran perfectly fine, just as I left it.

Of course, I didn’t want to stay up too late, so I am not really going to be able to do anything useful tonight. This problem really wasted a lot of my time. B-(

I’m going to bed. I just wanted to document this bug for the benefit of people like me who might be searching for a similar error and hoping to find a solution to their problem.

Categories
Linux Game Development

Learning Kyra: A New Version Released

Recently I received an email from the Kyra mailing list announcing the newest update to the Kyra Sprite Engine. It is now at version 2.1.1, and the tutorials and installation notes seem to have an upgrade as well.

A big change is the license. It used to be dual licensed. You could either make use of the GPL or the LGPL. Now it is under the LGPL for any purpose and without the requirement to display a splash screen.

One of the new features is Isogen, a tool for quickly and easily generating seamless tiles and walls for isometric games. It looks pretty cool and makes me think about the possibility of developing isometric games.

It can compile with Gnu/Linux, BSD, and MinGW32. There is the ability to compile for Mac OS X, but apparently the run-time performance leaves much to be desired…but the source is freely available to those who would be able to submit patches!

Another thing I’ve been interested in is learning the Python programming language. People have been suggesting it to me recently, and I think after I finish Oracle’s Eye I will look into the language. The cool thing is that I won’t necessarily have to find a new graphics library since there is a Python binding called PyKyra. It isn’t new, but I just noticed it was a possibility.

I’ll need to check and see how much it breaks backwards compatibility with the old version, but I am really looking forward to giving Kyra 2.1.1 a spin.

Categories
General Linux Game Development

The Death of John “overcode” Hall

Returning from Grand Rapids, I was shocked to learn that John “overcode” Hall had lost his war with stage IV melanoma on September 17th. I had posted about John Hall’s battle previously. He is the author of Programming Linux Games and used to work at Loki.

From his War blog:

One of my main purposes in blogging this is to alarm people into getting suspicious moles checked out by a doctor immediately. If you are even remotely concerned about anything on your skin, please make an appointment with a doctor today. You definitely won’t regret it.

Definitely good advice that merits repeating.

A number of people close to him have written on the subject, such as Ryan Gordon and Jamie Fristrom.

It was Stéphane Peter‘s post that really threw me for a loop. Up until I saw it, I didn’t realize how young John Hall was when he had died. I had assumed that he was young, but still a bit older than I am. I thought he was maybe 40 years old. It turns out that he was born only a year before I was. A YEAR!

In about the same span of time that I’ve been alive, the man became a pilot, a published author, a game programmer, and a musician among other roles. And on top of it all, he put up a valiant fight against cancer. According to people who knew him, he was enthusiastic, ambitious, and incredibly motivated. He was also a good friend and family member. I wish I would have known him or at least talked to him on IRC.

I didn’t know him, and yet the news of his death really hit home. Family members have died without stirring so much emotion in me. I didn’t know why it affected me so much, but I thought about it for some time. I’ve determined the following possible reasons:

  • For one, I’ve had almost the same amount of time as he did on this planet. Nothing stopped me from accomplishing great things in that time. How did I squander it? What did I do besides graduate from college?
  • For another, while I have been interested in improving my general health, I’ve been procrastinating with seeing a doctor for a physical as well as getting new health insurance to replace my expired plan. The application was frustrating to fill out, to be sure, but it was not so bad as to have delayed me for over a month. My eyes have been bothering me for months (I can read but I’m not sure why it is somewhat more difficult), but I haven’t gone to have them checked out. One of my knees was painful for months at a time, and I never went to see a doctor about it. It cracks loudly when I extend my leg these days.
  • Finally, what about my major goals in life? What are they? What’s taking me so long to define them and start making progress?

I feel terrible thinking about my own mortality because I feel like I am doing his memory a disservice by talking about me. On the other hand, I think the death of a person who has some connection to you, no matter how surprising the connection may be, is cause for introspection. It puts things into perspective. In the end, I know I have no excuses for what I have done or haven’t done, but I also know that I can’t just wallow in my past failures. My life shouldn’t be wasted by waiting for the perfect time. My life shouldn’t be wasted by waiting for the perfect circumstances. I’m living it, whether I’m ready or not. Time will pass, whether I’m happy with the moments or not. In the time I can do so, I would like to actually make a difference.

My thoughts and prayers go out to John Hall’s family and friends. He sounded like someone to look up to, and I know at the very least that he has inspired me.

Categories
Geek / Technical Linux Game Development Marketing/Business

Stupid ECommerce Website Design

I’ve been passively looking for a gaming laptop that can also run Gnu/Linux for some time now. It is easy to find laptops that run Gnu/Linux in general, and I know I can find some quality laptops with Gnu/Linux preinstalled from various websites such as Sub 300.

Desktop replacements can cost a lot of money as well, and I might be inclined to pay if I could guarantee that what I pay for actually works. I’ve read a number of articles on Linux on Laptops in which the laptops work…mostly. Things such as built-in wireless or hardware accelerated graphics or hibernate/restore functions can be unimplemented or poorly supported. Buying a laptop requires research for a Gnu/Linux fan in general, but a Gnu/Linux gamer needs to look even harder.

So I thought I found my salvation at Linux Voodoo when I found the X-Pad+ Wide Screen Gamer AMD. Holy cow! And it comes with Debian preinstalled and ready?! Sweet! How much?

Uh…how much?

You mean to tell me that I have to login just to see what the price is?!? Why?

Imagine if you wanted to buy some stuff online only to be told that you had to sign up at each and every website just to comparison shop. How many different accounts and logins would you have to keep track of? Would you like to keep tabs on that on top of the logins for the websites you actually shop at? I didn’t think so.

In the meantime, does anyone have a good suggestion for a gaming laptop that Gnu/Linux can run on?

Categories
Geek / Technical Linux Game Development Politics/Government

Blizzard Wins bnetd Case

Blizzard wins lawsuit on video game hacking. If you are not familiar with this case, basically Ross Combs and Rob Crittenden are two guys were fed up with Battle.net being unresponsive and decide to reverse-engineer their own version of it called bnetd.

My take? Just from the article, it sounds like if it wasn’t for the DMCA, the reverse-engineering wouldn’t have been considered that much of a problem. Of course, when you install Starcraft, you agree not to reverse-engineer anything anyway, so they are in violation of the EULA, but I think it is just another case of the DMCA being abused.

Blizzard obviously has a right to make sure that people aren’t playing with pirated copies, and they obviously have the right to dictate how people play online with their games. Apparently they have the right to tell people that they can’t find better service elsewhere. It wasn’t about piracy. The bnetd project had asked for assistance from Blizzard to make it possible to verify the copies used aren’t being pirated, but they were refused.

Power. Blizzard owns the copyright, and so they have the exclusive power to dictate what can be done with their copyrighted works. That’s fine. They want to control it and have the right to do so. But bnetd was not about allowing people to pirate the games. It was not about creating new games using Blizzard’s copyrighted works. It was about making it possible for people to play the game when they would otherwise have a high amount of lag. It was about a customer taking matters into his own hands to make it possible to enjoy the game he loves to play.

I personally think that bnetd was perfectly fine since it wasn’t software meant to facilitate copyright violations but to “interoperate” with Blizzard’s software. I mean, how is this situation different from the SAMBA project?

Some people have decided to boycott Blizzard games. I haven’t made that decision yet, but they don’t make Gnu/Linux games anyway so I guess I don’t have to worry about anything. I’m just getting tired of copyright owners thinking that they are also “customer owners”.

Related Links:

Categories
Linux Game Development

Books I Read: Write Portable Code

I recently read Write Portable Code by Brian Hook. I have to say that it was a nice introduction to what you need to worry about when writing code.

I didn’t pay attention to the fact that it was supposed to be an introduction, and at one point I was concerned that it was too high level. Of course, if it tried to cover each topic in depth the book would be way thicker. Still, it was very informative and gave me some things to think about when I write my code. It covered some issues that almost invariably come up when trying to port code.

If I learned nothing else from this book, it was the idea that writing portable code should never be done for the sake of it. If you want to write a program that is perfectly portable, you may end up sacrificing a lot of time and effort that doesn’t make it worth it. For me, I want to make games that run on at least three platforms: Windows, Mac OS, and Gnu/Linux. Ideally I would like to write code that compiles on anything I throw at it, but Hook points out that you should never just write portable code. It has to be portable for a reason, and the more you clarify why you want it to be portable and HOW portable you want it, the easier the job will be. For me, my three targets are very specific, and while BSD shouldn’t be too much of an issue to port to, I should decide up front if I want to support or it or not. I shouldn’t write my code and have an idea of a BSD port nagging at me from the back of my mind. Similarly, if I want to support something like the Pocket PC or Palm OS, I should not make that decision once a project is almost finished. As Hook says, when you write portable code, you write code to be portable. Even if I don’t know the exact platforms I want to support, I should have an idea if I will require multiple threads, megabytes of memory, or any number of things that can’t be assumed on different architectures and platforms.

I should always have clarity of purpose, and it was just eye-opening to think about it in terms of writing portable code. Write Portable Code is definitely a book I will be rereading and studying in the future.

Categories
Game Development Games Geek / Technical Linux Game Development Marketing/Business

Quake 3 Source Now Under GPL

It’s been in the news for some time, but it is still very cool news: Quake 3: Arena Source GPL’d

id has been pretty good about releasing the source to their older game engines. It’s not a new idea for the company. Apparently you still have people who think that the GPL is about stealing someone’s work, as this comment shows:

A Shame
Why did not you buy this game ?

Quake 3 is a great game, it costs few bucks

You want games for free, so I ask you to work freely, without salary.
Give your goods for free if you ask the games for free !

Huh?!? id released the source code to their engine under the General Public License. The game data and scripts remain proprietary, so you can’t legally play the GAME unless you pay for the proprietary data . It isn’t like some GPL zealots hacked into their servers and placed the code under the GPL. It isn’t like Carmack will come out with a statement like, “It is with great regret that I must inform everyone that we’ve lost our source code to the scourge of the GPL; however, we will not give up. We will fight back, and we will win!” It was a conscious decision to release the source, and no one is under the delusion that it is a free lunch except for people who think that the GPL equates to legalized piracy.

The Complete Text of General Public License
The GPL covers whatever an author wants to cover. Some games, source code and data, are covered under the GPL entirely, but the terms are restricted to the engine’s source code in this case. Therefore, the GPL dictates the terms of copying, modifying, and distributing the Quake 3 Arena source code. Not how you actually use the program. Not what you can do to the art or music that comes with the game. Copyright law gives id exclusive rights to the Quake 3 Arena engine source code. If they want to allow people to read the code, change the code, compile the code, redistribute the code, etc, they have the right to do so. The GPL is simply one of a number of standard documents to express what rights they are allowing others to have.

Don’t worry. No one is ripping id off.

Categories
Game Development Linux Game Development

Open Source Multiplayer Server/Client Library

Maybe a year or so ago I was trying to find something along the lines of a multiplayer lobby to include in my own games. I didn’t have any games in mind, but I knew that I would need this software if I wanted to make a useful multiplayer game. Unfortunately it was difficult to find, and I didn’t like the idea of using GameSpy’s software as there didn’t seem to be anything Gnu/Linux compatible about it. It’s even more out of the question since I want to release the code under a Free/Open Source license. I would have to write my own server/client software, and I basically took comfort that I wouldn’t have to worry about making a multiplayer game anytime soon.

Then I saw a post on gamedev.net:

GNS, or Game Name Search, is an open source game portal client/server package. Game developers may integrate the GNS client into their video games, and host an online GNS server to allow clients to find each other over the Internet. GNS servers also provide chat room functionality and content hosting.

It is under the MIT license, which makes it perfect for FOSS and proprietary software developers alike. It is currently at v0.1 Beta, but Gamieon, Inc already has plans to host gaming servers in the future. I imagine that charging for this service will be their main source of revenue from this product, although they do have others.

I think this software sounds like it has a lot of promise and would fit in perfectly with my own game development. When I get to the point where multiplayer games are a possibility for me, GNS will definitely be on the short list when I decide what tools to use.

Categories
Game Development Linux Game Development

Oracle’s Eye Development: First Week

Steve Chandler’s 100 Ways to Motivate Yourself mentions definitely planned work as being both motivating and productive. The idea, which has been repeated by many people, is that one hour of planning saves three hours of work. Also, once you have a definite plan, you can’t help but get motivated to actually start doing things according to that plan.

I thought that today would be a good development day. I had asked for the day off from work to attend a seminar today, met with a friend for lunch, and came home. Unfortunately, I took a nap for a few hours. Not a good start. But at one point, lying half-awake, I started to think about making the game. While the seminar was interesting, I did take some time while there to work on some designs for the classes I will need. When I thought about those classes, I thought about how much I clarified my future coding just by taking some time to write down ideas. The idea of doing even more design work got me motivated to wake up completely and get to work.

Right away, I hit my first challenge. I haven’t decided how the graphics or other data would be licensed yet, but the code itself will be licensed under the GPL. I didn’t need to think about it until I started to write some new code. While I was originally modifying my code from my GiD, I decided to try to make use of Joost Ronkes Agerbeek’s code from his post A Closer Look At The Game Engine. I was only working on main.cpp, and I made some modifications to the code. According to the ZLib license, I need to make it clear that the altered source wasn’t originally made by myself. I couldn’t remove the ZLib license either. Could I still use the GPL for my project if I used ZLib licensed code? Will I really have to rewrite main.cpp, which isn’t more than a few lines in the first place?

I googled “ZLib GPL compliant” and found the Free Software Foundation’s Various Licenses and Comments about Them. Regarding the ZLib license: “This is a free software license, and compatible with the GPL.”

Oh. So while my project can be under the GPL, portions of it can be licensed under other free licenses. I added some comments to main.cpp to specify where the source came from and the fact that I modified it. I also provided a listing of the ZLib license and maintained Joost Ronkes Agerbeek’s copyright noticed. I am new to mixing code under different yet compatible licenses.

All this before doing any “real” coding work. I could only imagine how difficult it is to work on a much larger project that might mix tens of hundreds of licenses. It is no wonder people have been complaining about license proliferation! Still, it left me wondering what I can do with my own code. I would like to clean up my existing engine. Would a single line change still need to be credited to Joost? My main.cpp is obviously just a modified version of his Main.cpp, but what about when I add functions to and remove members from my GameEngine class? Is that copying or is that reimplementation? I sent an email to the Linux Game Development Center’s mailing list to ask how other people mix code legally. After getting a quick response, I was quickly reassured that I didn’t have to keep detailed comments regarding which code belongs with which license.

Now to the real work: I spent a great deal of time just reworking my existing state machine engine to make it cleaner and work much more like Joost’s. Of course, I was trying to make my own project work with the Kyra Sprite Engine, so I had to make some modifications. In the end, I spent quite some time just trying to get the project to build cleanly. It doesn’t do anything other than create a window and quickly seg fault, but that isn’t bad for just a few minutes of coding.

But it is bad for the week. I didn’t spend much more time on the project. Besides writing down some ideas about the design, I really only spent that one session actually programming. But perhaps it isn’t a complete failure. One hour of planning saves three hours of work, so maybe this first week might make the rest of the month much more productive. At the very least it should now be obvious that I need to dedicate more time in a week to working on the project. B-)

Categories
Game Development Geek / Technical Linux Game Development

Writing Portable Code

I recently bought and received Write Portable Code by Brian Hook of Book of Hook fame. As I intend to make my games playable on multiple platforms, I need to learn how to not only write good software but also write good portable software. I believe that this book can be invaluable to that end.

And within the first few chapters, I’ve already learned about a new tool: Valgrind. It’s an open source suite of tools for debugging and profiling x86-Linux programs. Sweet! I’m definitely going to look into it.

Anyway, the book promises to be both practical and informative. Hopefully it won’t be like other books that are failures at both, and so far, I don’t believe it will.