Experienced Points

Experienced Points
The 200th Column - You Asked For This

Shamus Young | 23 Dec 2014 15:15
Experienced Points - RSS 2.0
ExperiencedPoints 3x3

This is the 200th Experienced Points column. As hinted at in earlier columns, I'm going to use this space to answer reader question about programming and technology.

At the moment when browsing for games on Steam a user have to know their own computer specifics to know if their system will be able to run the game in question. My question is: why isn't there some way of sorting games on "will my machine be able to run this?" as a default option?


For the record, I'm pretty sure Steam does this to some degree. Back when I was still using Windows XP I remember Steam warning me that I wouldn't be able to run Just Cause 2 when I viewed it at the store. However, I'm sure Joakim is asking why they don't take this idea all the way. Rather than require every PC gamer to understand all those stupid numbers, why can't Steam just sort it out and give you a simple "Yes / No" for meeting the minimum requirements?

Obviously I don't have any magic insight into what is happening at Valve. Gabe Newell never answers any of my creepy love letters. My guess is that that reason Steam can't tell you if a game will work on your machine is much more to do with customer service and less to do with the simple task of figuring out if the current machine has enough memory to run the current game.

This whole "minimum system requirements" thing is inherently messy business. What do you expect from a game if you have the "minimum" specs? To be able to launch it? To be able to run it at a decent framerate? How do you define "decent"? On top of this, the numbers are a bit of guesswork on the part of publishers and developers. Near the bottom of the spectrum you run into situations where a machine technically meets the requirements but can't actually run the game because the user has some outlandish configuration. Maybe their Windows install is insanely bloated by cruft or malware.

Right now if you buy a game and it doesn't run, it's a problem between you and the publisher. They have to make it right (or more commonly, just ignore your complaints and wait for you to give up) and it's not Valve's problem. But if Valve built a system for detecting if your machine could run a particular game, then they would be giving an implicit endorsement of those figures. If you get a game and it doesn't run, then suddenly the blame falls on Valve, because "They LIED and said this game would work!"

And finally, there's the problem of people who use multiple machines. Steam has no way of knowing if that top-end Alienware machine you used last week is yours or if you were just borrowing it at a LAN party.

I have a question about your latest article. If C is a dinosaur taking up space, what languages should a wanna-be game programmer learn? I started on trying to teach myself C++ just two hours before I read the latest Experienced Points, and now I'm wondering if I should focus on learning something different. I know C is important, but I've no real interest in trying for triple A style games. I just want to make fun stuff. Is C a good choice? Is there a better way?


The answer to this question is simple: There is no answer.

The variables in choosing a good starting language are so numerous, interconnected, and situational, that just outlining a problem would take an entire column. Some people will tell you to go for something raw and powerful like C, because it will help you understand how the computer works at a low level. Other people will tell you to start with something light and easy, because then you can get results right away and then refine your skills over time.

C is indeed old, but it's far from obsolete. It still drives the industry. And even if you don't get a job in games, there are going to be C jobs out there for decades to come, just because so much of our software is built on it. On the other hand, if you start there you're going to be studying for weeks before you have what you need to even begin to understand how to start drawing polygons on the screen. You'll spend a lot of time hammering away at text-based output before you're ready to make windows with graphics in them.

The usual suggestions for "easy" languages I hear from people are: C#, Java, Python. (Particularly Python.) My advice is to go with what is convenient for you. If you get frustrated, try another language.

If you're on Windows, get Visual Studio Community 2013 for writing your programs. It's free, and it's popular in the industry, and it's really,really good.

Good luck!

Comments on