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.
one thing I noticed is that despite the huge steps computer graphics have taken in recent years, it is still really rare to see true mirrors in games. It’s especially weird because nowadays games have reflective surfaces like water everywhere,
but if you look at the ground you won’t see your player character reflected there.
For example, in BioShock Infinite, there is a scene right at the beginning where you actually see a reflection of your face (when pressing a button). But shortly afterwards, you enter a hall with water flowing on the ground, and you *cannot* see your reflection in this water. Even though the NPCs are reflected.
Right now, the most recent-ish next-gen game I remember which had a true mirror is Doom 3, and this is really quite old by now..
Do you know why that is?
There are several reasons for this. The most obvious is that it tends to look awful. If you remember Doom 3, your reflection always had a certain comedic quality to it. The player “walks” at running speed, changes direction in an instant, can spin in place, and can hop vertically without needing to coil themselves first. This all looks ridiculous when compared to your motion-capped secondary characters.
But the biggest reason is probably expense: Having a true mirror means that the player character must be at least as detailed as the other characters in the game. They need tons of different animations to cover all the possible movement states: Running sideways, hopping, crouching, looking up and down, etc. That’s a lot of work for what is essentially ten seconds of goofing off in front of the mirror before the player walks away and returns to the game.
So it’s expensive, it looks dumb, and it doesn’t add much to gameplay.
It’s a shame. I do find it sort of odd to walk into an in-game bathroom with no mirror.
Here’s a question I recently asked some of my video game developer friends and no one had a really clear answer. I’d love it if you could take a stab at it, and I apologize if you’ve discussed this somewhere else and I missed it.
Why do so many video games (on the PC) that have the third person over-the-shoulder perspective have movement that feels so darn… squishy?
I’m referring specifically Dragon Age: Inquisition, but I’ve also experienced it with similar games like Kingdoms of Amalur: Reckoning. When using WADS and moving the character at the normal “run” speed, releasing the the “w” causes the character to make a weird lurching motion before coming to a complete stop.
This was particularly annoying when I was in a small cluttered room and was trying to maneuver my character around a desk and chair to reach a an interactable item on a table. The character’s movements were so imprecise and sloppy that I felt like was attempting to move a drunk person through an obstacle course!
Does this squishy, lurch-y movement have something to do with the game being created for the console first and then ported to the PC? Or is it due to something else entirely?
Thanks so much!
The answer to this question is related to the previous one: Zero-inertia movement looks odd in “photorealistic” games. I actually messed around with this a decade or so ago when I was trying to make our MMO avatars look more interesting. There’s a clear tradeoff between player freedom and precision on one hand, and smooth realistic animations on the other.
Again, everyone else (all the NPCs) have these wonderful blended animations built from motion capture performances. They move basically like real people. If movement was precise so that you came to a halt the instant you took your finger off the button, then your character would look sort of like the Doom 3 marine I discussed above. The character would be in the middle of a running animation and suddenly they need to be standing. Snapping instantly from one to the other looks glitchy and cheap. Worse, as characters become more detailed this effect becomes more pronounced.
Shamus Young has been writing programs for over 30 years, from the early days of BASIC programming in the 80’s to writing graphics and tech prototypes today. Have a question about games programming for Shamus? Ask him! Email firstname.lastname@example.org