Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts

Sunday, 16 November 2008

Piracy Makes Games Suck

I'm a geek. I'm not shy about that fact. Being a geek means you have friends who are geeks. Having friends who are geeks means that when a new game or movie comes out, you're sometimes offered a copy before it's even been released. Piracy is big, especially in the PC gaming world. Less so for console games, but don't think it doesn't happen.

Games are expensive. It's a fact. If you take into account the level of quality people want in their games these days, and what it costs to make them, it's not surprising the unit price is so high. And don't tell me movies are cheap games should be. In movies they only have to worry about how it looks, not what'll happen if the player decides to do something ridiculous. 

So when you're offered an opportunity to play the game, no strings attached, before you pay for it (if ever), people tend to go for it. But what are you missing?

Many times the process of cracking the game breaks some aspect of the game. Things like online play or achievements. In some cases the game may crash because of the workarounds involved. Some people may seize the opportunity to plant and distribute their virusses through these "cracked copies". Often, in an attempt to crack the game before the official release date, an unfinished or reviewer's copy of the game is used, which may include critical errors. Cracked games can also not be patched, leaving it open to vulnerabilities or flawed gameplay. For the online play that did work with the cracked version, the fact that you can't patch it means that now you can't play online because the servers require you to have the latest fixes installed.

And worst of all, your experience of the game is tainted. 

As a programmer I know how it goes. You sit for days writing a small part of the game or program, but you can't get it perfect. You've been working so hard on the whole project that you think this little problem can be fixed later, or is really not so bad. So someone gets a pirated copy of your game. They didn't pay for it so they're willing to install it and try it for an hour or two. If they don't like it, they skip it. Or worse yet, they go onto public forums and discredit your game because of that small niggle in gameplay you decided can be left. They are in general more critical of the game.

If they had payed for the game, they would see the niggle, but think to themselves "It's really not that bad. The rest of the game makes up for it. It's a good experience in general." Because they payed for it, they want to get their money's worth so they give the game a proper chance.

Personally, I enjoy a game more if I have the physical package I can put on my shelf. Often the game comes with some special trinket, or there's a collector's edition. It makes it an experience instead of a pastime while you wait for your pizza to be delivered or whatever.

The last problem I have with piracy is DRM. I know it sounds backwards, but it's simple. When games are pirated, the producers don't get money for it. So they need to stop a game from being pirated. They end up licensing outside software to do it for them (Starforce or SecuROM). These methods are never perfect because no two computers are set up the same, so by doing so you introduce a margin of failure to your games: a number of buyers for whom the game will not work because something on their computer isn't how it should be. In some cases it also introduces an install limit. Someday I'm going to look at an old game and think "I want to try this again", but when I try to install it, the game will firstly require internet access to a service that may no longer be available. If that service is still there, it may tell me that I've installed the game too many times. How can this be? I'm sitting with the disc in my hands. I payed for it. The slip is still in the case, although the writing has faded a bit... If I pay these exorbitant amounts for my game, I expect it to work when I want it to.

Even games with DRM gets cracked. Sometimes the DRM is only there to stop it from being cracked on release day, but it will be cracked within a week. However, it ruins the game for years to come.

Unfortunately piracy is here to stay. Unless they can find a way to make sure you can't do anything without a legal copy (WoW did it) you can really only rely on people's good faith and support.







Words:
"In the case of pirates, say, I would like to know whether that profession of theirs has any peculiar glory about it. It sometimes ends in uncommon elevation, indeed; but only at the gallows."
-Herman Melville

Sunday, 19 October 2008

Not Smart But Social

My friend Paul linked me to this article. It explains being able to conduct yourself socially is more of an advantage than being smart or well-read. And through personal observation, I tend to agree.

As a programmer, I come into contact with some very smart people. People who don't always have the best manners or quite know how to express themselves, because they spend all their time behind a computer, learning. Now when it comes to a corporate environment, your work doesn't always speak of your skills. Many times you need to convince the higher-ups that your idea is worth their time before they even see the first line of code. It's because of this that some of the greatest programmers out there end up in the lower jobs of a company. Their work is epic, it almost never breaks and when it does it takes only a quick glance to find and correct the problem, but because they can't communicate with others they will never get that managerial job. They can never teach others to do what they do. And this is a serious problem. Being in the right field of work may guarantee you a job in the future, but will it really be the job that you're capable of performing?

I'm not the smartest kid on the block by far. I need something explained to me in quite ferocious detail before I understand it. But once I understand it, I have no problem in explaining it to others in a way that they can understand. And that's what I think will drive my career in the future. My work is sufficient, but often not perfect. I overlook things. My code needs a revisit or two before it can go live. But if someone asks me how I did it or why I did it that way, I can easily explain it to them. When I need someone from another department to do something for me, I know how to ask that they know what it is I need, and that gets the job done just that little bit faster.

The ability to explain also flows onto e-mails and written communications, where the lack of expression is a problem. Just because you know what you're saying doesn't mean the recipient will. Is all the information there that they need? Rather too much information than too little.

So here's my lesson to everyone: Talk to yourself. Not necessarily out loud, in your head. It'll not only help you wrap your head around what you're doing (explaining something forces you to simplify) it'll also make it easier to communicate with others what you're doing, what you need them to do, or what they did wrong.

I always used to complain to others that my head of development mumbled to himself the whole time. Now maybe I'll start doing it...





Words:
"I made a firm decision starting out that I wasn't going to have anything to do with any of those player-run corporations that game boasts. I've seen their recruitment threads on gaming forums and I'm frightened that interacting with such people to any great degree will infect me with some wierd desease that causes flowcharts."
-Zero Punctuation, EVE Online



Monday, 22 September 2008

When a Coder Plays Games...

I enjoy PC games. At the moment I'm playing Spore and awaiting delivery of Crysis Warhead. I buy between 1 and 3 games a month depending on releases. However, my day-to-day job differs very little from the work of the game developers. How does my knowledge of the internal workings of a game affect the way I experience a game?

We plan new features, build them in stages, spend much time messing with our own creations trying to break them, and when they break we figure out how to fix them. A rally driver can most probably tell you in quite boring detail how the internal structure of a car makes it drive the way it does, but it doesn't really affect the feeling of driving.

Also, like a rally driver, simply knowing how it works doesn't make you any good at it. I'll be first in line to admit that I'm not the best at any particular type of game. Actually I pretty much suck at RTS games. A quick glance at my bookcase tells me that the closest thing to RTS I own would be SimCity 3000 (in my opinion the best of the series) and Startopia, both more disaster management than RTS. Anyway, back to the point.

When I play a game, I approach it the same way I approach everything in life:
"What is my goal? How can I achieve it? Is there a better or simpler way of accomplishing this goal? Is this cheating?"
I don't go looking for every mistake in the game I can, and tell them how to fix it. All this does is deprive me of the pleasure of playing the game. I do notice the mistakes, the little glitch that nobody else noticed or was simply too small to devote time to this close to going gold. Some critics (reviewers?) will name and shame these little glitches like it's the end of the world, but in a world where games become increasingly complex and detailed, is it really possible to cover for every possibility? I think it's wrong to even expect developers to perform such feats. If anything, the fact that I understand the work that goes into a game makes me more lenient to the mistakes or oversights in games.

I heard a very nice analogy in a podcast today, either 1UP Yours or the last GFW Radio, not sure. Allow me to paraphrase it a bit. When a programmer plays a computer game it's like pulling the curtain away from a magic show to expose all the gears and pullies and tricks underneath. But the question is, now that you understand how the trick works, does it make the trick any less impressive?

I don't think so...




Words:
"We are united by a common element. Its not the color of our skin or our ideology or where we come from. No it's that we're a giant bunch of fucking nerds."
-Ken Levine, PAX 2008 Keynote(video)



Monday, 11 August 2008

Organic Computing

Anyone who's seen sunlight in the last 20 years knows that computers work in binary. Ones and zero's. On or off. There's no inbetween. It's structured, organised and predictable. It allows people like me to control a user's experience, anticipate their behaviour, and provide them with what they need. But why is this? Humans have a natural urge to organise. To put concepts into categories. To decide what is relevant and what can be ignored. But why is this? Because when we were barbarians (no offence to barbarians, they did a lot for our species) knowing what to pay attention to meant the difference between life and death.

Personally I don't make decisions until I know something about all the options presented to me. When there are only 2 options, the decision is easy. You can then begin assigning theoretical meanings to each value. "When this link changes colour, it means I've been to this page." The information that is given to you is simple, but you're willing to be more loosely coupled about the concept when it's in your mind, because then you're in control. As long as it's in the computer, the values of on or off means that electricity is flowing or it is not flowing, like a complex network of electric extention leads all plugged into each other, back and forth. Depending which lights you want on, you walk around flipping different switches. After a while you get bored and you start doing strange things such as synchronising Christmas lights to music.

This is the core of all electronics: Flipping switches really fast to make it do what you want.

The truth is, nothing is coldly logical. A computer may present itself in ones and zero's, but when you drill all the way down, those digits are stored somewhere on a disc. On that disc there's some physical medium being forced into a positive or negative state. The medium may well be able to store more values, such as half-on or almost off. But if it did, it would be much more complicated to control.

But now we've become used to the basic functionality of computers. (I use the term "basic" loosely) Now we want a computer that can think and deduce like a person. We want a computer in our fridge that will order milk over the internet when you're running low. We want a door that unlocks when you ask it to. We want computer-controlled players in games that can play against us as if we're playing against a friend, making mistakes like a human player would. So we programmers end up trying to get ones and zero's to seem like they're thinking. To appear to have several options such as half-on or almost off. We end up taking the analogous medium, forcing it into a controllable digital medium, only to create a pretend analogous experience.

In my opinion, the only way we can create machines that can think, is to leave the electronic and robotic environment behind and work with something pure, something natural. Something that works like a brain. As long as we're stuck behind coldly logical situations, we have to think of every possible scenario and prepare for it. We can never just leave the thing to learn. A computer, no matter how advanced, can never truly be spontaneous. The problem is, creatures have spent millions or years making mistakes, only the lucky few surviving, to develop the natural ability to learn. Even a child of a few weeks old can learn from their own experience (with a little help).

As far as I know the closest we've ever come to a human-created thing teaching itself is Lucy the Android (pictured).

There isn't really a point to this. I'm just putting out there something that was mulling around in my head the last few days... It's all very interesting once you start reading up on it a bit. Comments welcome, especially if it's philosophical...





Words:
"Anyway what went wrong with A. I.? Well its all this guy’s fault and I presume most of you recognise Alan Turing. He was probably the one person qualified to expect that by now nobody would be making me stand up here and talk about how we were going to achieve human like intelligence because we would have done it. Because 52 years ago, he made this prediction 'By the end of the century one would be able to speak of machines thinking without expecting to be contradicted'. Well the end of the century came and went a couple of years ago and coincidentally the time ran out for Turing's prediction the exact second when computers were destined to tell us how stupid they were on account of the fact that they couldn't add up the date properly. So it all went horribly wrong and around the turn of the century I started thinking about why it went wrong. I considered it carefully and came up with the following considered opinion "its because we A. I. researchers are all narrow minded, domineering, chess playing computer nerds'."
-Transcript of Steve's keynote speech, "Machines Like Us," given at the Applied Knowledge Research Institute's 2002 Biennial Seminar


Monday, 7 July 2008

Consistant Innovation

Everyone seems to be moving to "web-solutions" for several reasons:
  1. Your programs, and their settings and data, are available everywhere you have internet access.
  2. In most cases it works on your PC and on your phone.
  3. You don't have to worry about backups going sour or crashing hard drives destroying your data.
But there's another point that I never noticed... until this morning when I opened Google Reader and there's was a new button saying "Share with Note". I thought to myself "Hey that's handy. I wonder when they added it..."

And that's when it hit me: If your application runs on the web, you can add little features and updates without telling anyone. You don't have to roll our a whole new version of the software.

Google have(has?) been doing this for years. You would open your GMail account one day, and suddenly that little irritation that was the bane of your mailing was gone... or fixed... or some new feature has appeared overnight, like a new interface with coloured tags. It's probably the one reason I've been using my Google account for so long (5 years). Everytime I see something is owned by Google (or bought out by them) I automatically prefer it over any other service in the same sector, such as this Blogger account. I even subscribed to Google's RSS feed so I can know when something happens.

As a developer it's your job to think of the things other people don't. That's what gets you ahead in this business.

There is one other thing worth mentioning: Auto-updating apps. If you can engineer your application or game in such a way that it updates itself with new features, with small enough downloads that users don't mind waiting, you immediately have an upper hand.

So for the other programmers out there reading this, take it as good advice.




Words:
"In every project there is always one file that strikes fear into the hearts of all programmers everywhere. These files are usually full of code that could render a battle-hardy coder to complete gibbering tears within seconds and that is just for looking at it – if they have to make changes to the file then they usually make their farewell calls to their loved ones, have a swift drink of something to bolster their courage and run into the battlefield screaming as they go. Somewhere in the world is an honour monument to those who fell."
-Byron, Introversion