|Diecast||By Shamus||Mar 2, 2015||109 comments|
Show notes: Continue reading »
|Diecast||By Shamus||Mar 2, 2015||109 comments|
Show notes: Continue reading »
|Programming||By Shamus||Mar 1, 2015||97 comments|
The annotation continues…
Exceptions are where you run a bit of code, but you sort of leave a note for the program, “If anything goes wrong, jump to this bit of code and spit out such-and-such message.” Here is the video Blow mentioned, which talks about why exceptions are such a mess.
My experience with exceptions is pretty limited. In my professional work, we used a large codebase that began life in 1994 as vanilla C. Somewhere around 2000-ish we migrated (in fits and starts) to C++. So I didn’t even have a chance to use exceptions until 2000, and we didn’t really have a lot of need for them. Our software was pretty mature and we already had all the error handling we needed.
|Programming||By Shamus||Feb 27, 2015||108 comments|
The annotation continues…
In C++, you have manual memory management. You need to request enough memory to hold all your space marines. If you need more marinesWho doesn’t? you have to allocate more memory. When you’re done with a marine, you have to tell the system you don’t need that chunk of memory anymore. You can’t ever make a mistake, because using memory you’ve freed causes a crash. Using memory you haven’t yet obtained causes a crash. Trying to free the same bit of memory more than once causes a crash. And forgetting to free memory causes a memory leak where your program will consume more and more until it crashes.
And by “crash” I mean, “It might crash or it might malfunction badly somewhere later and you’ll have NO IDEA where it all went wrong.”
|Music||By Shamus||Feb 26, 2015||17 comments|
I think this is the last track of this project. It’s nothing special. It’s just more fun with audio samples. We recently wrapped up our play-through of Half-Life 2: Episode One, and it got me thinking about good old Dr. Breen.
I think I met my goal. I’ve sat down and re-listened to the entire Button Masher collection…
…and I find myself thinking, “Yeah, I see what I did wrong there” and “I could do this so much better now”. Of course, finding out you were recently incompetent and you’re slightly less incompetent now isn’t a massive boost to the ol’ ego. But it’s something.
I’m moving onto other projects now. I’ll probably get back to music making eventually, but now is the time to write code. Thanks for listening.
|Programming||By Shamus||Feb 25, 2015||177 comments|
John Blow is the designer of Braid and one of the first of the new-wave indie auteurs. Back in September of 2014 he made a video talking about his ideas for a new computer language focused on game development.
I wanted to write about this when the video came out, but I was in the middle of a move. Then there was Christmas. Then other projects. But now almost half a year later, I’m finally coming back to this. His project has moved on and I don’t know where it is now, but it’s this first video I want to talk about.
That’s an hour and a half talk about why he thinks game development needs a new language, why the existing languages don’t quite cut it, and a few things he thinks the new language ought to do. It’s pretty heavy-duty in terms of technical jargon, so if you’re not a coder I don’t know if you’ll get much out of it.
I’ve seen people criticizing his suggestions saying that other languages already do what he wants, or that he’s not qualified to design a language. I’m not really qualified to comment on that and not really interested in that debate. I’m more interested in his talk as a sort of “Everything annoying, frustrating, inefficient, or scary about the C languages”.
So I want to comment on what he’s said, and I’m going to do my best to say it in language that should be comprehensible for non-programmers. We’re not so much discussing his language ideas as using them as a launching point for talking about things that make programming less fun.
Consider this a consolation that we didn’t get an annotated version Carmack QuakeCon address last year like we have in years past. Sadface.
Timestamps are approximate:
|Escapist||By Shamus||Feb 24, 2015||81 comments|
So I did a column encouraging more user paranoia, like I promised last week. I’m not happy with how this turned out. It’s one of the longest pieces I’ve done in the history of the column, and I feel like I barely scratched the surface. It was too big a topic to ram into a single column but I didn’t feel like it was wise to make it two or three parts long. (I didn’t want to embark on an epic three-part series and then after part 1 realize that nobody cared. I’d end up with the Too Human of articles.
I should have just replaced the whole column with a link to the comments section last week. That was a pretty cool discussion. I find the social engineering side of security so much more interesting than the technical side.
|Diecast||By Shamus||Feb 23, 2015||107 comments|
Show notes: Continue reading »
|Spoiler Warning||By Shamus||Feb 20, 2015||103 comments|
And so it ends.
For the record, I actually like all the constant encouragement and praise from Alyx. Although maybe I’m just unskilled and emotionally needy. It is a little jarring when you hear the comments close together, but during the course of a normal game (as opposed to sprinting through the content the way we do) they feel more like a pat on the head from the game designer and less like Alyx going all fangirl on you.
I really wish we’d get more shooters like this.
I played Wolfenstein: The New Order last year. It felt like they were aiming for Half-Life 2 in terms of gameplay, but didn’t quite nail it. It’s got quiet. It’s got combat. It’s got areas where you can wander around and listen to people talk, or get on with your job. It’s got a novelty weapon that works as either weapon or tool. It has run-and-run style combat instead of stop-and-pop. You gun down fascist humanoids in prisons, ruins, and bases. It’s not Half-Life, but I think it tried.
Josh just finished the game and was somewhat less delighted. I haven’t got the whole story from him. (It might end up as a segment on next week’s Diecast. It’s also on the short list of consideration for Spoiler Warning. We’ll see.)
Still, there’s nothing quite like Half-Life, and nobody seems to be making more. Sadface.
EDIT via Josh: So no, despite how funny it turned out, the episode was NOT supposed to end with Rutskarn singing out the apocalypse. There was actually another five minutes that were cut off in the initial video because of an encoding error that someoneI won’t name any names, but it begins with J and ends with “Why are my pants on fire?” didn’t check for before falling asleep in a drunken stupor.
The embedded video has been updated with the fixed and complete version of the episode. Sorry about that.
|Music||By Shamus||Feb 19, 2015||24 comments|
I’m taking it easy this week. We’re not trying to copy any particular style. Not trying to emulate certain instruments. Not trying to figure out what gives a soundtrack its particular sound. I’m just making music and posting the result. This is my attempt to take everything I’ve learned and see if the quality of my work improved.
If there’s anything that inspired this track it’s this em… skit(?) from Machinima: Deus Ex: The Recut.
There is something really delightful about re-cutting and subverting the Deus Ex dialog. The conversationFor the impatient: It’s at the three minute mark. in this week’s song was really fun to put together.
This one is a lot more complex than my usual project. I also took the time to make everything myself, including mapping out the drums. (I usually use pre-fab drum loops.) Most of the instruments were built by hand. Note that I’m not saying it’s better or anything, but it is a pretty big step up in complexity and effort. Here’s the track map:
A funny story about the audio clips in this song:
|Spoiler Warning||By Shamus||Feb 18, 2015||58 comments|
At the two minute mark Josh says, “What’s up with the lighting on this thing?” He’s looking at a closed door that mysteriously has bright light flowing through it. The image doesn’t make sense until the zombie breaks the door. I know Chris already explained it a bit, but let me go over it in more detail:
This is a side-effect of the old 1990’s style baked-in lightmaps. Computers weren’t fast enough to recalculate lights on the fly, so the shadows are calculated by the artist before the game ships. This means the shadows can’t move. The shadows that do move – the shadows cast by the NPCs and objects in the scene – use a completely different technology. As Alyx walks around, the game picks the nearest light source and creates a silhouette of her from the viewpoint of that light. It then projects that silhouette onto the groundIt might do this for the nearest two or three light sources, depending on the game and your graphics settings.. The drawback is that these shadows don’t really match the baked-in shadows. They’re crisper, and so the shadows cast by the level geometry (walls and floors and such) look blurry by comparison.
Also, the two different lighting systems don’t react to each other properly. If I’m standing under the midday sun, then I’ll have a shadow at my feet. If I step under an umbrella, then my shadow will vanish behind the shadow on the umbrella. But Alyx’s shadow doesn’t work that way. It’s always there, regardless of where she’s standing in relation to the light.
This was why Carmack was so excited about the idea of “unified lighting” in Doom 3. There was no longer one system of lighting for the level and another for all the characters and props. There was one lighting system shared by everything, and it all worked together.
Half-Life 2 has aged really well, but I guess there’s limits on everything. It was 2006 when this game came out, and its lighting model was already pretty far out of date. Valve wouldn’t really solve this issue for good until Portal 2, five years later.
Also, while Valve does seem to love their seesaw puzzles a little too much, I just can’t bring myself to get mad about them in a world where Ubisoft makes me climb a hundred and fifty identical towers in every stupid game.
The next episode is the end of Episode One.
|Escapist||By Shamus||Feb 17, 2015||163 comments|
I need to start this one off with an apology. Last week we talked about the two-weapon limit and Halo. (The conversation actually spanned multiple episodes of Spoiler Warning: Half-Life 2: Episode 1.) Everyone said what they had to say and we all moved on. So it will probably come off as obnoxiously passive-aggressive that my column this week is basically having the same argument all over again. Sorry. At one point in the debate I realized this was a lively enough topic for an article, and I really wanted something catchy after the collective “meh” everyone gave my column last week at The Escapist.
Writing for a game site is so different from writing on a blog. Here, I can post any dumb thing and you folks will at least give the first paragraph a look. You’re here for the words, after all. The article title doesn’t need to be eye-catching and nobody minds when I run long. (In fact, some people prefer longer articles.) On a gaming site, all of this is inverted. Your readership rises and falls on the strength of your headline, and when I go over 1,000 words I usually notice a blatant increase in the number of people who jump into the comments after reading only the first page of the article. And having an eye-catching headline really works: In the last hour or so this column got as many comments as the previous column got in a week.
I don’t want to sound like I’m complaining. It’s just a different kind of gig. If you’re a stand-up comic, then sometimes you get a half-hour in front of a fun crowd in your home town, and sometimes you get ten minutes in front of stony-faced seniors who are just waiting for the headline act to come out. It’s not like the people at The Escapist are obligated to read my stuff. They can read it or not, and it’s my job to grab those eyeballs.
Whatever. This is mostly a stealth rant about Destiny anyway. Don’t tell Josh.
|Projects||By Shamus||Feb 17, 2015||212 comments|
I’m planning the column I’m going to write for the Escapist in a couple of weeks, and I’m looking to do a kind of public service-y kind of piece on how to judge the security of a website from the position of a user. If you play videogames then you most likely have a lot of accounts: MMO’s, gaming sites, DRM systems, etc. That’s a lot of data entrusted to a lot of idiots, and obviously it doesn’t always work out.
So I think it would be good to encourage a little more security-savvy among the masses. Normally I wouldn’t crowdsource my columns like this. I realize this probably comes off as rude and lazy. It’s my job to write stuff, not yours. But this is for a good cause and I’d rather beg for help than get it wrong on this topic. And I’m not confident enough in my knowledge to write this without some input and half-assed peer review.
I really want people to read this, so I want the list to be breezy and easy to digest. This is not a technical column. I might even make it a top N list. The whole point is to come up with things that should cause concern when a website does it. Here is what I have so far:
(I know Xbox had a problem with this, but I can’t remember how it worked. I’ll read up on this before I write the column, obviously.)
Anything you’d add to the list? Remember that I’m looking for ways that a typical user can spot bad security policies. “Has open ports on the server” might be a sign of trouble, but it’s not the kind of thing the average person can detect. (And even if you teach them, it’s not the kind of fooling around people want to do when creating an account. Also, probing for open ports is dangerous and not something I’d teach Joe and Jane Internet.) Likewise, while “Asks for too much personal information” is a sign that a breach would be more damaging, it doesn’t necessarily mean the system is inherently insecure.
So if we could just have a general discussion on horrible security policy, that would be great.
Also, this is my favorite security story. It’s not the most destructive (not even close) and it didn’t make headlines, but it is a glowing display of incompetence and stupidity. Tom Scott describes what happened at MoonPig:
So… what are some major indicators of bad security policy?