Wednesday, June 16, 2010

So, you're making a PC game!

For those of you who don't know me that well, first a little background on myself. I am a programmer by profession and I've recently obtained my full degree in Computer Science (in fact, convocation is this Friday). I just want you to know that the claims I make about programming are not coming from an unaccredited hack. I also want to warn you that while I'm going to try to keep things as high level as I can, I may get a bit carried away.

So, you're making a PC game! Congratulations! The PC is, by far, my favorite platform. In my opinion, it is unparalleled in flexibility and potential. It has lead the technological advances in gaming for nearly the entirety of our beloved hobby, only perhaps now being "beaten" by motion controls on the consoles if you really care about that kind of thing.

However, there are many things developers do poorly in the PC field and - in true rant style - you're going to hear about what are, to me, the biggest mistakes one can make when developing and especially porting a title to the PC.

1) Porting games late and expecting an avalanche of sales
If a game is ported to the PC 8 months after they're released with no care at all I don't want to hear "BAWWW I ONLY MADE 50 MILLION DOLLARS ON THE PC VERSION, WHY DIDN'T IT SELL?!?" Do you want to know why it didn't sell? Well I'll tell you why!

2) Assuming I ONLY play on PC
There seems to be this myth in the gaming industry that every market is entirely isolated. That there are PC gamers, 360 gamers, PS3 gamers, Wii gamers, DS gamers... etc. I don't really know if companies just like to do this for simplicities sake or whatever - but this is a dirty, filthy lie.

I am the proud owner of every current gen console, a great PC and tons of older consoles. Not everyone, of course, has such financial flexibility but you know who is the MOST likely to be a multi-platform gamer? PC gamers. My reasoning is fairly simple; if you have enough money to spend on a $2000 gaming PC then a $300 console is really not out of the question. Also considering all new monitors have HDMI ports in them a PC gamer, already comfortable in his or her domain, wouldn't need a ginormous TV for HD capable graphics.

So what am I getting at with all this? Well, when your PC port comes out months after your console release and you didn't even tell me a PC version was in development, the odds are if I wanted to play your game I already have. And, call me what you will, but I'm not buying it again - end of story. Thus, it is infinitely infuriating for me to read when a developer flips out when their PC games don't sell very well even though it's a port of a game that's a year old that I already own on the 360 (I'm looking at you EPIC with Gears of War). But that doesn't get to me as when it's combined with the next fatal error:

3) Your port is just terrible: Rebinding Keys
Maybe if you took care to port it, and I didn't already own it on one of the several consoles I own I would buy it. I'm sure PC gamers reading this are far too well aware of awful ports ruining our day. This, in fact, happens so damn often it's made us into the stereotypical jaded asshole who hates everything ever. Surely I can't be the only one whose erupted into an internet nerd rage when some gamer makes an insolent comment online and unleashed a thunderstorm of nostalgia and game history. Beware PC gamers, they're forged with fury and tempered with the hate of 1,000 bad ports, which is exactly what I want to talk about (the bad port part that is).

So WHAT makes a bad port? Surprisingly, it's exactly what makes any PC game bad. Let's take, for example, BLUR on the PC. You can't rebind your controls in that game.

Yes, you read that correctly. It's 2010 and You can't do something as TRIVIAL is rebinding controls. As a game developer and programmer by profession I can tell you this is an immensely simple thing to do unless your game engine is an architectural nightmare. In that case, you have WAY bigger problems.

It always boggled me, why are the standards of console games so low? Rebinding a controller is just as easy on a console, yet barely any console games do this. To the other console gamers out there, have you never played a game where you thought "Man, I wish the shoulder buttons were switched" or whatever? Wouldn't you love to be able to make the controller work exactly like you wanted to? I know I'd, personally, love this in some games I own.


4) Your port is just terrible: Field of View in FPS Games
Another thing that FPS games in particular are guilty of - low field of views on console ports. This comes from the fact that the eye is more comfortable with a lower field of view when playing the game from a couch to TV distance. When playing closely at a monitor though, the eye is much more comfortable with a higher FOV. These aren't changed - why?

If you can't change your FOV in engine, then the FIRST incarnation of the Quake and UT engines were, in my opinion (which is what you're here to read by the way), much more advanced than whatever you are using. Altering a frustum is simple - OpenGL and DirectX have them fucking built it, it will take 5 minutes + compile time to fix these.
Since you were just about to google what a frustum is, here's a picture of one.

5) Your port is just terrible: Screen Resolution
This is directly related to our frustum friend above. You see the X and you see the Y in the above picture? That is what will reflect your screen resolution, and just like field of view it is very simple to alter. I will admit, you can "squash" your view if you don't also play with the FOV when changing aspect ratios. It is easy to fix by adjusting the horizontal and vertical FOV correctly for your aspect ratio.

There is absolutely no excuse, at all, to not be able to run your game at any resolution unless it is a 2D game (as scaling sprites looks like crap). That was kind of one of the big deals about going to 3D, wasn't it? If you, like I do from time to time, boot up Unreal Tournament 99 to this very day, it detects every resolution your PC is possible of and adjust it's view frustum correctly.

That's right, I can play Unreal Tournament 1999 on my 1080p monitor at 1920x1080 and it's fantastic. It doesn't flake out because it's 16:9 resolution, it doesn't put black bars at the edges of the screen, it doesn't fuck up at all.

THIS GAME IS 11 GOD DAMN YEARS OLD. If your game can't properly adjust to a ratio, you have a LOT of problems and it is perhaps time to dig out those old linear algebra notes, as an 11 year old game engine has surpassed yours - this should not be happening. Poll the PC for what resolutions it's capable of and use those. Don't hard code in a list that's "good enough".

6) Your port is just terrible: User Interfaces
This is really the cream of the crop here. Maybe we can crack open the config files and change our keys manually. Maybe we can find whatever key the resolution is stored in and change that. Maybe even the FOV or we can just live with a low one - but we can't rewrite your UI. And if we can, we really don't want to.

Without going ultra UI theory here the Joystick is a relative positioning device and the mouse is generally a clutched positioning device. Keeping this simple, as I really can't teach an entire UI course in this blog post, developers should know what UI techniques work with a mouse and what work well with a joystick. Since every UI needs to fit a different purpose, allow me to just throw out a few generally good ideas.

Use drag and drop techniques when you can
Think of an inventory system in an RPG. On the console, if you wanted to swap two items how I generally see this done is you select one item, navigate to another with the joystick, and again press the button again to confirm the swap. On the PC I don't want to click the mouse button, go to my new item, then click again to swap them. This feels very wrong. Instead, how about I simply press down the button, fling the cursor over to the one I want to swap with then let it go? Drag and drop can make your UI 10x more intuitive when done correctly.

Remember, the mouse has more than one button
If a secondary, but quite common action can be bound to the right mouse button you should probably do that.

If the game doesn't use the mouse, your UI shouldn't either
I bet a lot of people will disagree with me on this. But, for instance, when I'm playing the racing game using just a keyboard, it's awkward to shift my playing position to use the mouse to navigate your user interface. I have no qualms with ALSO using the mouse, but it shouldn't be manditory.

Get those damn Xbox 360 Icons off my screen
I don't mind if I have a 360 controller plugged into my PC, but NOTHING says "this game is a cheap port" then when the main menu says "press to continue" and to continue I press enter.

Well, that's about it for today! I hope you've learned something and it would bring me nothing to joy to see higher quality PC games in the future! Remember, we're not dead yet!

1 comment:

  1. I love your rants :)
    I've made a live bookmark of them!
    7) "Do not switch off your machine while saving is in progress"
    -.-

    -Aegis

    ReplyDelete