Thursday, September 29, 2005

Game(s) of the week

System Shock 2

This week I've been playing System Shock 2 again. It's an oldie, but one of the best games ever made, and one of the scariest. I don't mean in the way that Doom 3 makes you jump because every 5 feet there's an invisible closet that monsters jump out from. System Shock 2 is genuinely creepy and frightening, plus monsters jump out to scare you. However, they come from places which make more sense than Doom, and you can outmaneuver them from time to time.

If you like immersion, take a look at it. To compare it to Doom again, it features the same sort of PDA with emails and audio logs to advance the story. However, it did it first (by a few years) and better. It really is more of an Action-RPG, and is more comparable to Deus Ex (or the sequel) than to games like Doom.

Of course, it's old by now, and the graphics have aged a lot. If you look around online, various people have graphics upgrade mods. You can download an old package (from 1 year ago) that I like from my mirror of it. It upgrades most of the monster models and many textures. A warning, though, it has one particular creepy, risque model, though it fits the game. Or, look around online, and they've probably got better ones by now. People also continue to mod this game.

It takes some effort to make System Shock 2 work on Windows XP. Installation can be a problem. If you follow the link at the top, you can get to a forum with some posts on the topic. I mainly just set XP to use Win98 compatibility mode for both .exe files, and fixed the copy protection, and it worked.

If you want the game, go look on eBay, it should still be available from someone.

Vampire: Bloodines

I've also played Vampire: Bloodlines this week. A friend got into it, so I played it some more, as well. This time, I'm trying the Tremere clan. It's a fair amount different with that clan than my primary character, a Toreador who's good at unarmed and gun combat.

It's a great true CRPG, one of the best, even though it has a lot of action. It really is immersive, and fits the Vampire game, though I'm not an expert. I'm actually playing a bit to feel out a pen-and-paper RPG Tremere character I'm thinking to play, sort of.

The graphics of this game are amazing; hardly any game out of any genre can beat it yet. The conversations have voiceovers with lip-syncing, which is impressive to watch. It uses the engine from Half-Life 2, which also uses this lip-syncing, though not as well, as that's an action game. If you have a high-end system, Bloodlines is quite a sight.

These RPGs have a fair amount in common. They follow similar genres, are both dark and creepy, immersive, etc. However, they both share a downside. Both System Shock 2 and Vampire: Bloodlines have a poor ending, in my opinion. Vampire's is worse, but both work, I suppose. I just wish good games would finish as strong as they start.

Anyway, we'll see if I'm playing anything interesting next week. I may pick up Fable for the PC, or finish Dungeon Siege 2. When it seems at least marginally interesting to me, I'll post Game(s) of the Week.

Tuesday, September 27, 2005

Delegating

"It's hard to get good help these days."

"If you want to get something done, you have to do it yourself."

There are the cliches of the fictional evil overlord. He raises an army of minions to take over the world (or whatever), and then his plans are undone because someone beneath him messed up. The overlord then foists the failure on the peon, sighs exasperatedly while killing off the offender (if still alive), and attempts to finish off the hero him/herself.

I've felt like that overlord sometimes recently. I often feel that, if I do a piece of work, it would be done faster and probably better than if I gave it to someone else. If I'm responsible for meeting a schedule, it's frustrating to have to budget 2-5 times what I would need so that someone else has a reasonable amount of time to do the work. Even then, it often seems like substandard work. If I just did it quickly, it would be over and done with the way I want it done, and I wouldn't have to deal with the bureaucracy of giving to someone else.

Of course, it's not that simple. Besides the fact that I'm not that much faster/better than _everyone_ on my team, it's just not feasible for one person to do all the work. The project would never get done. I'm just not good at giving the right work to other people. There's real skill involved in figuring out who can do what, and helping them to have the right set of tasks to work efficiently.

However, it can be very reassuring to be able to hand things off to someone else. Just knowing that's one more thing you don't have to do yourself can take a lot of stress off. Once everything is split (roughly) evenly among everyone involved, the whole project becomes much more manageable. You just need people to work competently on each job.

Evil overlords everywhere make the mistake of killing off every minion who frustrates or fails them. It really sounds cathartic, doesn't it? But even setting aside the moral, ethical, and morale issues, they just guarantee themselves that the next minion will be even less competent. Nobody learns, nobody improves, and nobody learns to lead. (Anyone who's too worried by this, just translate 'killing' as 'firing' above).

I've been pushed towards taking management courses to learn these things (plus the whole realm of other management lore I don't have) before making the mistakes, but it always sounds like a boring waste of time. Someone just needs to write a management course using the greatest fictional villains as the examples. Find out what Darth Vader, Sauron, and every James Bond villain did wrong. Roleplay an evil overlord to learn management skills. I'd take that class a lot sooner.

Of course, what I really need to do is to manage less and program more. I didn't really want to be a manager, but it was necessary, and seemed like a good thing for the resume. It's just not always feasible to not lead, especially if you're the best programmer and manager on a team. In any case, I just have a couple more months of managing, and then I'll be working just as a team member again for a while.

Wednesday, September 21, 2005

The evils of copy protection

Everybody who sells software seems to love copy protection. The more protection, the merrier. Software which does not protect itself seems to be few and far between these days. I mean, it sounds like a good idea. Every time a company decides to use it, the copy protection is described as easy to use and transparent to the user.

Most companies use CD protection, a key, internet authorization, or a combination of the three. A key is the little string of numbers and letters they send you with the CD or in an email. The idea is that you run the installer, type in the key, and it works. A few companies run it over the internet or a dial-up modem. Then, you have to allow it to connect to the company, and then it works. A lot of games use CD protection, where you have to have the CD in the computer when you start the program, or it won't work.

I've argued for a long time that none of these are as good as it seems. Invariably, something goes wrong. It takes far more time to develop than you thought, or the software fails to run until the user calls tech support (or not even then). Either way, you piss off your users, and you waste money. I don't know which one's worse.

Copy protection bothers me as a user of various software, but since I'm at work, I'm going to talk about the business side of it.

Just developing copy protection can take a while. If you just want something REALLY simple and easy to crack, it may only take a few days to add to your software. What I've seen over the past couple of years is that a real system, working on both Windows and MacOS, and contacting a company server, takes many months. It breaks, you fix it, spin, repeat. Let's be generous and say 6 man-months. You pay a developer maybe $100k (including benefits and stuff, given a low cost-of-living). You just spent 50 grand on copy protection, plus the cost of actually buying the copy protection software (no clue there).

Now, you also piss off users when the copy protection breaks, and the software refuses to run. They call tech support and someone has to talk to them on the phone for a while until they can get it to work. If not, they return the software, and may spread bad publicity about your company. It's harder for me to figure this amount out, but it must be considerable. I know just the tech support time can cost many thousands of dollars to a small company.

The whole point of copy protection is to make sure you aren't losing sales to "piracy." How much do you really lose to piracy? A lot of "piracy" is people who have bought 5 copies installing on 10 machines. Would they really spend the money to purchase the other 5 copies? If not, you didn't LOSE the money, they were just infringing on your copyright. What about people who download binaries and install it for free altogether. Would they really have purchased the software if they couldn't download it? Sometimes, but usually not, in my opinion. If not, you still haven't lost the money, you are just being infringed upon.

As much as companies hate to have their Intellectual Property (all bow and worship the great IP!!!) "stolen", it doesn't necessarily hurt them that much. Generally, the company who made it didn't pay to copy or distribute the "pirated" copies. Nothing was literally stolen, only potential (questionably) sales were lost.

Now balance these possible sales against the CERTAIN expenses listed above. You have to balance out at least $50,000 in expenses before you make anything on it, and probably that much again later in for tech support. Is it really worth it?

Plus, you piss off employees, like me. And I matter (really I do).

I know I'm preaching to the choir. I doubt anyone who reads this is a big fan of copy protection. Maybe I'll enlighten someone, though.

Tuesday, September 20, 2005

Bitching

I'm sure everyone's had one of those days. Everything and everyone seem to frustrate you. That's today. I felt like bitching about it in detail, but I changed my mind. Instead...

I like Despair (.com). They have these great little Demotivators, each a small piece of black humor to brighten my day. They're a play on those "teamwork" posters that some offices have. Today, and often, my favorite is Incompetence. I wish they had a small poster of it. I've never actually bought it, because I figure I'd actually insult the people I want to insult. Maybe I'll get it for my home some day.

Most of the people I get frustrated with aren't truly incompetent, but they have their moments. It annoys me when one warns others about problems which will follow without quick action, nobody takes responsibility, and it happens. Saying "I told you so" just isn't productive, helpful, or fun for more than a moment. However, it would be nice to be listened to a little more often.

So much for not going into details.

In other news, my provider seems to have some problems with caching, or maybe it's my browser acting up. In any case, this page doesn't seem to always update unless you force-refresh. I suppose it saves me bandwidth. If anyone reads this, just hit refresh if you have problems.

Monday, September 19, 2005

Behind the times

As with blogs, I feel that I'm a bit behind the time with programming languages, too. Today, I spent some time at work learning C#. I've been programming in C++ for years, and have never had much of a reason or the time to learn C#. However, C# (along with Java) is the 'next generation' of programming languages. It really would be better if I had experience with them, rather than just an academic outline of the main points of the languages and the syntax.

At work, I'm a team lead. I try to program while managing the code design and tasks for a team of three others. At the moment, we've completed our primary development, and are just fixing the bugs that our QA and management deem important. Since I have few of these at the moment, and I will be moving to working in C# in a few months, I'm teaching myself C#.

The team I lead develops a software application written in C++, using a UI framework called wxWidgets. It's a nice UI toolkit, supporting multiple platforms, including Windows, Linux, Mac, and various others, with even some support for PDAs and embedded devices. I like cross-platform support. It's also open source, which I also like.

Unfortunately, it's not a really big open source project. The big projects get lots of support, and tend to be well-written, stable, and quick to respond to change. The main platforms I write for at work are Windows 2000/XP and MacOS X. The Mac portion of wxWidgets is somewhat lacking, as most of the open source developers use the Windows or Linux ports. It works fine for small projects, or if you are willing to accept a functional, but quirky and sometimes ugly, UI. However, for a company writing apps they want to look perfect (or so they say), it's a real pain. You write 90% of the app relatively easily, and then spend seemingly forever on the agonizing minutiae of the project.

C# doesn't solve all of these problems. At the moment, most of the problems it may solve for my company are a result of just not supporting the Mac any more (on some new products). However, Microsoft's Visual Studio does nicely support the language in a way I've not seen before. Development using that environment may speed up development a good bit. Also, the protected and guided nature of C# relative to C++ may also help developers avoid stupid mistakes. It should be especially helpful for the programmers who are not as experienced, and make mistakes with pointers all the time.

It really is very easy using Visual C# to set up projects, draw out dialogs and windows, document code, add event handlers, and many other things. Of course, just like other apps, Visual Studio has quirks that you have to work around, but it seems a lot smoother for C# so far. Now, this comes with a price, about $750 a seat (Visual Studio Pro). Not great for the entry level amateur or open source developer. However, it isn't much for a professional working for most companies.

So, at work, it seems like C# is the winner for projects which don't need to work on the Mac. In the future, Mono may support the Mac well, and then it will be a better choice for that, as well. For my own projects, it seems like a toss-up between C# and C++ (with wxWidgets). I guess it depends on whether I want things I write to work on Linux or the Mac, as well as Windows. I do own the expensive Microsoft tools (bought by my employer). If I didn't, C# might not be worth it.

Now, the people at work who insist on using plain old C, I just don't understand. All of my colleagues were given the chance to take C# classes on company time, fully paid by our company, and to get a reward once they complete a certification test. Many seemed disdainful of this offer. Why would you want to continue using a non-object-oriented language if you didn't have to do so? Object-oriented programming has been the clear way to go for 10-15 years, if not more. I feel like I'm a few years behind, but I'm usually trying to learn something new, but some people are satisfied just doing what they've been doing for more than 10 years. Human nature?

Sunday, September 18, 2005

Starting a blog . . . for some reason

I'm not even quite sure why I'm making a blog. Blogs are a trend which seem to have passed the height of their hype. Who knows if anyone will read this except my friends. I guess I just feel like writing some things down, and who knows, someone may be interested.

Last night, I watched The Empire Strikes Back with some friends. Afterwards, I felt like rereading The Darth Side, which is a great Star Wars fiction blog. There's a PDF of the whole thing (as it's done now), and it contains some interviews with the author. In one, he discusses the phenomenon of blogging, and I reconsidered making a blog.

So I'm home alone, I had a drink, and I'm watching Aliens (one of my favorite movies), and I decided to make a blog. (Yes, I am making links to movies everyone has heard of, nice of you to notice.) Now, do I have anything worthwhile to write tonight?

The same author who wrote The Darth Side is now writing a blog-published science fiction novel, "Simon of Space." It's rather good. (Make sure to hit the table of contents for the whole story from the beginning.) He's definately an author to watch. He seems to be winding towards the end of this novel, his proclaimed 'test novel', and is planning to write another in traditional book format after. I'll definately look at purchasing that one.

This brings me to the book I really want to read, the upcoming "A Feast for Crows" by George R. R. Martin. It's the fourth book in his series, "A Song of Ice and Fire." These are currently my favorite books. I really like Tolkein-style fantasy, but it did get old with some of the later writers who imitate it. This is a different style of fantasy, a moderately realistic-feeling world, where the elements of the fantastic are subtle, and the affairs of humanity darkly realistic. I only wish I could write so well. I just wish Martin could write a little faster :)

My outlet for writing is to write scenarios and such for the RPGs I run. Currently, I'm running a GURPS fantasy game set in a world of my own devising. I'm not a great GM, but I'm getting better. I try to throw in enough social elements and a touch of realism into my game to keep it away from traditional, simple dungeon crawls. We'll see how well I do this time around. We're about to start playing again after a few month hiatus. I should really be prepping and writing that game instead of doing this.

However, I'm not in the mood, yet. I think I'll go play Urban Dead, my current game of choice for some reason. I don't recently seem to get into the games I usually like, so I'm playing this web-based free MMORPG, instead. Mmm, zombie-killing. It might be getting a bit old, but it's a work-in-progress, and the author seems committed, and may fix it.