Categories
Games Geek / Technical

Great Gaming Moments: Homeworld: Cataclysm

Homeworld:Cataclysm wasn’t a sequel, but it was a great extension to the story of the original Homeworld. Basically, you’re in charge of the Somtaaw’s ship, the Kuun Lan. The Somtaaw keep to themselves, researching and mining, but they are bound to aid and protect Hiigara when requested. Cataclysm made references to “The Beast” periodically in the documentation, and so I had a vague idea that there was some Borg-like enemy to fight.

The game starts with such a call to protect the homeworld from the attacks of the Taiidan. Providing support wasn’t too difficult in the first mission. The second mission involved saving and protecting a Manaan destroyer, the Bushan-Re. To research repair technology, you jettison the mining container and create the Engineering Module. I managed to protect the Bushan-Re from the Turanic Raiders, even though they sent some Mimics in pretending to be friendly support.

At this point, a distress call comes from a nearby object. I sent a worker out to return it to the ship.

Later, I reach the Somtaaw’s research frigate, the Clee-San, in another sector. They may have the ability to shed some light on the alien artifact. They docked with the Kuun Lan. We had to escape to deep space to avoid an attack, but once we were in isolated safety, they procede to experiment.

But something goes wrong. Power fluctuations, biohazard warnings, and screaming further the confusion. The research module turns an ugly shade of red, apparently from a biomechanical infection of some kind, and to save the rest of the ship, the hangar module is jettisoned. What just happened? The Clee-San will investigate, but wouldn’t move until I provided an escort of “10 fighters”.

Now, if the infected research module was going to attack me, I didn’t think I would send just 10 Acolytes. So I sent 30, just for good measure. After all, I was in the Cub Scouts. I was being prepared. If I was going to be attacked, I was going to have overwhelming force involved.

So I sent my fighters in as an escort for the Clee-San. Slowly the ship approached the module, as the Kuun Lan hung back. The Clee-San docked with the module while I watched in anticipation. It started to download the data recorders. That data should help in determining what happened.

Suddenly a particle beam shoots out from the module! The Clee-San‘s last transmission was for the Kuun Lan to stay clear. Screams from the fighters becoming infected horrified me. I moved as quickly as I could, but the infection spread too quickly. Any ships I ordered to retreat moved only moments before becoming infected. My efforts were futile. It was terrible. I just sent 30 fighters to their deaths! I didn’t know! I didn’t know!

I then realized that those infected fighters were going to be coming after the Kuun Lan. I didn’t have any ships left for defense. I spent a lot of my resources on those 30 ships!

Luckily for me, a group of raiders appeared, demanding the Clee-San. Unluckily for them, they ignored my pleas to avoid it and were infected. I used that distraction to hyperjump out of the sector. I was safe for now, but forever impacted by that moment.

Throughout the war with The Beast, I never forgot those 30 ships. Technically, they weren’t more than digital bits running through memory on my computer, but the screams were terrible. The drama was real. The details of the names or types of ships involved in the above story might be remembered incorrectly, but the feeling of dread when I realized that I had just caused the deaths of 30 good people will stay with me. It wasn’t a cut-scene or a FMV movie to watch passively. I participated in it. Logically, it wasn’t my fault. I couldn’t have known what was going to happen without cheating. Technically I could have restarted the mission and tried again. I normally prefer the challenge in similar situations, but the reason for not restarting this time was different. I didn’t want to dishonor the memory of the loss. Oddly, those 30 fighters were identical clones of each other. It wasn’t like you normally would have a tie to any one of them.

Still, I had made a bad decision, and the consequences were very real to me. My fight wasn’t just to play a game anymore. It was for honor. It was for redemption. Neither of these ideals were communicated directly by the game. There was no “Honor Meter”, for instance. I simply had a strong desire to make things right again.

Categories
Game Design Geek / Technical

Design Concepts I Just Learned

I was reading through the two Game Programming Gems books I have, and one of the gems describes a game entity factory. To understand this gem, you have to understand a few design patterns, including flyweight. I never learned exactly what a flyweight was or how I would use it. I still have a slight understanding that you would use a flyweight if you have data that is constant between different entities. Ask me anything else about it, and I’ll struggle. The Gang of Four book isn’t much of a help. It’s a reference book, which means it will be a better tool when I already understand it, but it is almost useless for learning.

I pulled out the Design Patterns Explained book, but it doesn’t have flyweight listed; however, there were a few interesting chapters on design principles. It’s been years since I cracked this book open, and I might have used it for class. I thought it was just a more in-depth version of Design Patterns, so I never found the chapters titled “How Do Experts Design?” and “The Principles and Strategies of Design Patterns”. The book refers to Christopher Alexander, the original author on design patterns. He was writing about physical buildings and architecture. While his approach doesn’t directly map to software design, his principles apply quite well.

One of the things I learned is that trying to put a bunch of pre-made components together to create software is not ideal. You should have a big picture of your project, and then you can decide what smaller components you’ll need. I never thought about the effects of trying to reuse components before thinking of the full scope of the project.

Another thing I learned was the principle of designing from context. I would periodically become stressed when thinking about the best way to design a class or relationship between classes. I don’t have nearly enough experience to be able to make judgement calls about the best way to design a project. I think I have enough of a grasp of programming that I can implement anything once I decide on a good design; I just need more practice with getting to that good design. I learned, however, that you can’t know how a pattern will be implemented until you understand the context in which it exists. For example, if you have a facade pattern, you can’t know how to implement it until you know what interfaces you need to link together. Essentially, you can’t just ask, “What’s the best way to implement XYZ?” You need to ask, “Under what circumstances will implementation A be a better fit than implementation B? How do those circumstances match up with my actual circumstances?”

I still don’t think I quite grasp the flyweight or its place in the game entity factory, but software design became a bit less mysterious. Heck, William Willing’s comments on a Timeless Way of Game Design make more sense to me now!

Also, since I’ve been researching design, especially software design, I found this helpful game engine design link: Object-Oriented Game Design: A Modular and Logical Method of Designing Games

Categories
Games Geek / Technical

Great Gaming Moments: Lock ‘n’ Chase

My first exposure to video games was through the Atari 2600. I was probably around five or six years old when I started playing Berzerk and Asteroids. It was before I learned that these games were ports from the original arcade versions which talked to you or used vector graphics. I still have the Atari and most of the games. Lock ‘n’ Chase stands out in my mind.

If you haven’t heard of this game, think of Pac-man, only instead of ghosts there are police officers, and instead of a yellow circle, you play as a thief. The dots are gold bricks. You can close and lock up to two of the many doors in the maze to hinder the officers chasing you. The doors reopen after a short time. Collect all of the treasure, and you unlock the door to the next level. Rinse, and repeat.

It was not unusual to narrowly avoid capture by a police officer. I’ve been chased without a pixel of difference between me and my pursuer and waiting for a door to open back up so I can lock another one. I’ve laughed when the thief’s hat looked like it was being worn by an officer who was a little too close for comfort. In either case, locking a door was a great way to get the officer off of my tail. Since the officers were always moving, locking yourself between two doors was a good way to delay until the officers chasing you moved safely away again.

One day I discovered a new trick. It was probably one of the first times I had learned a new way to play a game. I was being chased, and I closed a door to avoid the first officer. A second officer turned a corner and I disappeared down a teleporter. Well, the officer turned toward the door I just closed, so I went back through the teleporter. It thought that it was a risky maneuver for me to try, but I chased the officer and placed a wall on the other side of him.

And I did it! I trapped an officer between two walls! I either yelled “Whoa!”, “Cooool!”, or “Awesome!”, but I don’t remember. I received bonus money for doing it, and the game sang out in that always-different-yet-always-satisfying Bonus Noise.

I didn’t even know it was possible to do it, and I played this game a lot. All of a sudden, there was a entirely new way to play the game. Instead of just collecting money and avoiding the Law, I could try to trap the officers. Can I trap two? How about all four? Is there anything else I can discover?

Maybe it was in the manual for the game. Maybe it was on the side of an arcade cabinet somewhere. But I was a child, and all I had at the time was the game. I felt amazing for discovering something cool on my own. It was a great gaming moment for me.

Categories
Games Geek / Technical Linux Game Development

Total Annihilation Hawesomeness!

I believe I reported on TA Spring last year. TA Spring is a project to make a new RTS, but its current goal is to get a game running with the Total Annihilation data. The most exciting news for me is that the developers ported the project to Gnu/Linux. Now I can play Total Annihilation on my Gnu/Linux system AND play it in 3D!

Categories
Game Development Geek / Technical Politics/Government

Why DRM?

Charlie “Flayra” Cleveland wrote Want to Make a Game? Here’s How. He notes that making a mod of an existing game isn’t as easy as it was years ago. To break into game development, he suggests the PopCap Games Framework or Torque. Both make game development much easier than having to learn how to program the low-level bits yourself for years.

But then he says the following:

One vital feature that both of these engines are missing is some sort of digital rights management (DRM) and/or e-commerce system.

Now, there are two problems I have with this statement. The first is that this post was supposed to be about making games, not selling them. A person trying to learn how to create his/her first game shouldn’t worry about marketing and sales. You’ll find that deciding between Plimus or Regnow is less important than figuring out how the standard game loop works. This issue is a minor one, so I won’t spend too much time on it.

The second problem, the one that I think is more important, is that I don’t think DRM is a “vital” feature. It’s weird how it keeps popping up. DRM & Unlock Codes at Greg Costikyan’s blog asks about DRM solutions. People are debating whether DRM should even be addressed by GPLv3. PC Gamer’s latest issue has an entire article on how to deal with Starforce and other stupid copyprotection schemes. Maybe it is a vital feature if your goal is to make playing your game a nuisance to potential and current customers. Maybe it is important if you intend to say to your customers, “I don’t trust you” while simultaneously claiming, “Our customers are incredibly important to us”. Maybe you can’t live without it if you have enough time to stop making games and to start playing with the trust of your customers.

I believe that so-called digital rights management is more about restricting the rights of customers and end-users than guaranteeing the rights of authors and artists. If new game developers are supposed to learn how to make the customer’s life difficult, then by all means consider DRM to be a “vital” aspect of a game development curriculum. I will continue to question why we’re supposed to assume that the customer is untrustworthy without any real evidence to suggest it.

Categories
Game Development Geek / Technical

How Can I Design Code Better?

In Getter Eradicator, Martin Fowler argues that there are cases when using getters and setters is entirely appropriate. There is the argument that using getters violates encapsulation, but Fowler argues that you shouldn’t think about hiding data so much as design decisions. The real case for avoiding getters is to discourage procedural design in object-oriented languages. Pulling data out of an object to decide what to do is just procedural programming, whereas telling the object to do something and letting it figure out for itself how to do so would be more appropriate. He referenced a few other articles, among them Tell, Don’t Ask which describes the principle above.

It made for great reading, but it made me a bit concerned. I know and have known beyond a doubt that I must be doing something wrong; there is no way that I can claim 100% accuracy and correctness with the code I write. What I don’t know is what exactly would be wrong. I might write some code that seems perfectly fine to me but would make someone more experienced roll his/her eyes.

Now, if I write code, and it works, and I manage to finish whatever project I am working on, someone might argue, “Hey! Who cares how ‘correct’ it is? It works, so it is good enough!” If my goal was to just finish a project and be done with it, yes, I would agree. If it works, it is correct enough.

But one of my goals is to improve my ability to create, and that includes improving my coding as well as my designing skills. It isn’t enough to be able to get something working, although doing so would be a great first step. I want to be able to write great code and know it. It may take years of practice, and the Thousander Club will certainly help, but I want to design and write better code.

Of course, practice doesn’t help when there is no one to look over your work except yourself. I might be doing something that works well enough that I don’t realize that I’ve done it completely backwards. It may be the source of some trouble, but if I am not aware that the trouble is optional, how can I do anything about it?

In the past, I’ve asked other game programmers to look over my work and provide some feedback. It is definitely enlightening to get an analysis on a real project and not just a grade in class for writing a function. I’ve asked questions on forums and IRC, but it usually depends on who is around to answer and if they feel the question is good enough. Otherwise, I’m on my own.

I’m sure I am not the only lone wolf out there, so please let me know: how do you improve your own abilities when you’re basically the only one to provide a “peer review”?

Categories
Geek / Technical Politics/Government

Broadcast Flag is Back and Worse Than Before

No Broadcast Policy Without Representation! is something I am still reading through, but it seemed important enough to merit mention here.

In summary, apparently international treaties are forcing the United States to agree to allow distributors of works to own an exclusive right to distribution. The “broadcaster’s right” is recognized in a number of other countries, but not in the United States. It’s not unheard of for a television channel to get exclusive rights to broadcast a program for decades. Now they want to expand the law to cover broadcasts over the World Wide Web.

What does it mean? Right now if you create a copyrightable work, you own the exclusive right to that work. No one else can legally distribute it unless they get permission from you. With this law, as pointed out by James Love:

The proposed treaty concerns a system of ownership for
material transmitted over wireless means such as television, radio and
satellite, as well as wired communications over cable networks, and also
over Internet computer networks.

This proposal expands or gives new rights to transmitters of information,
even if they are not the creators of that information. Rights that are
normally reserved to creators and performers would be afforded to
organizations that merely transmit creations and performances — even if
those works are in the public domain, even if those works’ authors wish to
have the works distributed without restriction.

The possible consequences?

The casting entities fundamentally want a layer of ownership over materials
that they did not create or previously own. They want the treaty to
declare they “own” what they transmit, even when the materials are in the
public domain (government works, older works, materials donated to the
public domain, etc), when they cannot be copyrighted (facts, data, other
non-copyrightable materials), or when owned by third parties, including
those who have no interest in suppressing distribution of works (speeches
by government officials, Al Qaeda tapes, listserves, newsgroups, etc).

More links to the topic:

Categories
Games Geek / Technical

Red or Blue?

The following just happened today at my day job:

Me: (out of nowhere) Red team or Blue team?
Coworker: … uhhhh…
Other Coworker: What?
Me: Red team or Blue team?
Coworker: What is this about?
Yet Another Coworker: What’s going on?
Me: Red team or Blue team?
Yet Another Coworker: What’s that about?
Me: Why does everyone ask me that?!?
Other Coworker: (pointing at me) Dweeb.

I’m the whimsical one at work, if you couldn’t tell. B-)

Categories
Geek / Technical Politics/Government

Free Software and the Power of Language

It’s been coming up a lot recently, and I, as a Gnu/Linux user and Free Software advocate, am getting tired of being lumped in with software pirates. Free Software and Open Source Software is not about getting something for nothing. They aren’t about stealing anyone’s livelihood. They aren’t about ripping off hard-working programmers.

The use of the word “free” is unfortunate in that people think it means “$0” or “no price”. The Free Software Foundation won’t use another word because they want to emphasize freedom; “open source” doesn’t call to mind the idea of freedom at all. The FSF philosophy is that all users should have the freedom to run, copy, distribute, study, change and improve the software.

Free Software refers to freedom, not price. Most people get that part.

What is frustrating is the number of people who support Free Software AND miss the entire concept of freedom. These people are worse than the ones who are against Free Software because they think it is about giving away things for free; they make it seem like the GPL was created specifically to prevent commercial use!

I’ve argued that the distinction between “free software” and “commercial software” is false; they are not mutually exclusive. A lot of people on all sides of the argument are careless with these words, which only muddies the waters and makes “free software” much more confusing to talk about. The use of the right words makes all the difference. “Death Tax” sounds a lot worse than “Estate Tax”, for instance, and the use of one term instead of the other helps to change the way you think, especially if you can’t be bothered to learn about the facts.

From gnu.org’s Words to Avoid:

“Free software” does not mean “non-commercial”. A free program must be available for commercial use, commercial development, and commercial distribution. Commercial development of free software is no longer unusual; such free commercial software is very important.

“Commercial”

Please don’t use “commercial” as a synonym for “non-free.” That confuses two entirely different issues.

A program is commercial if it is developed as a business activity. A commercial program can be free or non-free, depending on its license. Likewise, a program developed by a school or an individual can be free or non-free, depending on its license. The two questions, what sort of entity developed the program and what freedom its users have, are independent.

In the first decade of the Free Software Movement, free software packages were almost always noncommercial; the components of the GNU/Linux operating system were developed by individuals or by nonprofit organizations such as the FSF and universities. Later, in the 90s, free commercial software started to appear.

Free commercial software is a contribution to our community, so we should encourage it. But people who think that “commercial” means “non-free” will tend to think that the “free commercial” combination is self-contradictory, and dismiss the possibility. Let’s be careful not to use the word “commercial” in that way.

How many anti-Free Software zealots would be surprised at the above? Heck, how many pro-Free Software zealots would be surprised at the above? From flame wars on a forum to government reports to FUD spread by certain organizations and companies, the use of the word “commercial” as opposite “Free Software” or “open source” makes people think that FOSS must necessarily be non-commercial. It’s not.

When talking about free software, it is best to avoid using terms like “give away” or “for free”, because those terms imply that the issue is about price, not freedom. Some common terms such as “piracy” embody opinions we hope you won’t endorse.

Let me put that part in bold: Some common terms such as “piracy” embody opinions we hope you won’t endorse.

For those who think that the FSF is about supporting piracy, how do you explain that statement?

On the same page:

“Piracy”

Publishers often refer to prohibited copying as “piracy.” In this way, they imply that illegal copying is ethically equivalent to attacking ships on the high seas, kidnapping and murdering the people on them.

If you don’t believe that illegal copying is just like kidnapping and murder, you might prefer not to use the word “piracy” to describe it. Neutral terms such as “prohibited copying” or “unauthorized copying” are available for use instead. Some of us might even prefer to use a positive term such as “sharing information with your neighbor.”

Perhaps that last line might sound like support for piracy, and I have to admit that I also questioned what it meant. I sent an email to the FSF asking for clarification. The response was from Program Assistant Tony Wieczorek:

Our concerns with people referring to piracy are that companies use that pejorative term to denounce all of our efforts. We are afraid that people will call our legitimate and legal practices piracy for lack of a better term. That, of course, is not the case at all. We believe that software should be free, and we use the law (copyright law, in the case of the GPL) to achieve that (albeit in a way that most people don’t use that law – this is the idea of copyleft).

I think that paragraph is also meant to point out that equating copying software with raping and pillaging ships is gauche. The two crimes are nowhere near similar and people should make that point when they speak of illegal copying.

So the FSF doesn’t endorse piracy and wants to make sure that Free Software is considered distinct from something illegal. I feel that they are making two arguments at once and make their points needlessly confusing, but the second argument was that copyright infringement isn’t something comparable to what pirates did/do.

For an example of why the confusion about FOSS and commercial software is a problem, check out this news item on Linux Games announcing Caravel Games’ DROD: Journey to Rooted Hold. One comment in response to the idea of an open source shareware game:

WTF? What on earth is open source shareware?

Nevermind that id had released the source to a number of their older games while still requiring you to purchase the game to play it. The idea that Free and Open Source software can also be commercial software is too confusing for a lot of people. The expectation is that if it is commercial, then it can’t possibly be Free Software.

There are practical concerns, of course. You can’t just release your software under the GPL and expect to be able to sell it the same exact way you sold your proprietary software. Still, it is possible to make a profit by way of software that doesn’t restrict your customers’ freedoms. While it is easier to earn revenue through an MMO game through subscriptions — “The client can be both Free and free, but to play on our awesome servers, you’ll need to pay” — it is also possible to sell a non-MMO, open source game and make a profit. If you immediately make the argument that EXAMPLE XYZ proves that Free and Open Source Shareware can’t work, recognize that you are coming to a conclusion based on one counterexample. Rather than asking “How can I make it work?”, you are simply stating “It can’t work.”

If you think that the effort to make a profit from Free and Open Source Software is too great to justify, that’s fine. You’ve made what is hopefully a well-informed decision for yourself. Just realize that it isn’t impossible to make money from FOSS, that it isn’t illegal to use or create FOSS, and that it isn’t about getting something for nothing. Free Software is not about supporting piracy. It isn’t the opposite of commercial software. It’s about freedom, and when it comes to the GPL specifically, the license requires that commercial software be possible. It’s not a contradiction.

You’ll find people online who support FOSS but also make confusing statements about licensing. For a good example, the Linux Gamers’ Game List at icculus.org lists games that are available for Gnu/Linux. The license section would presumably tell you what the license for the game entails, but it actually doesn’t. It tells you whether or not it costs money. The reason I was given was that someone’s grandmother would get confused about the idea that a game could be Free and cost money. I think that the column shouldn’t be called “License” if it isn’t really about the license. I would think labeling it “Cost” would avoid confusion if the purpose of the listing is to help out people who would be confused about licensing issues. I also think that most grandmothers probably wouldn’t think to look for the list in question, let alone find it.

Another example? Pick one out of the many Free games, and you’ll most likely find one. The GPL was for computer code. It makes no sense when it comes to an image or a piece of music. Still, most authors will simply license the entire game under the GPL without a thought.

People will argue that the best part of FOSS is that it doesn’t cost anything. Now, when you were first told about the FSF, the GPL, and Free Software, who did you hear it from first? Was it from people who said, “It’s about freedom! Here, let me explain what I mean…” or was it from “It doesn’t cost anything!” Most detractors seem to hear it from the latter. For example, you’ll see lines like “But the FSF is in the minority when it comes to convincing developers that giving away their software for free is the right thing to do.” Reading that line, you’d think that the Free Software Foundation WAS trying to convince people to give away code at no cost. You’d also be more inclined to believe that the GPL was about giving away something for nothing and that FOSS is about stealing the livelihood of those would dare to try to make their software into a commercial product. The funny part is that the same people who complain that the GPL is about giving away software also prefer to use code licensed under BSD, MIT, and similar licenses that basically allow you to take code and make it your own…essentially, taking without giving. So while the GPL is supposedly guilty of forcing people to give away their code for nothing, the accusors prefer code that actually is available for nothing. Interesting, eh? But I digress…

Multiply each of the above with the millions of people on the World Wide Web, and you can see why people would be confused about the nature of Free Software. There is a definite minority who are “on message” for Free Software, but they have to compete with the language of those who think FOSS is evil — calling it a cancer or referring to supporters as communists — as well as those who think it is great but don’t actually get the idea behind it.

Categories
Geek / Technical General

Blonde Joke Getting Out of Hand

Thomas Warfield has posted about the best blonde joke ever. It’s a good one so I thought I would post it here.

It’s also got the geek in me thinking. Who came up with it?