Wow, it's been a while since I attended a gamedev event! This time my resolution is to prevent my notes from vanishing somewhere in Dropbox and actually publish a few impressions.
but more importantly, it's fun, go outside and play it!
Honestly, it's rather easy to pick at this new game because of the horrible bugs and overloaded servers. I really hope that Niantic rewrites the game client from scratch without Unity (they should afford that after such success, right?), so that we get better battery life and, hey, maybe even we could run the app in the background and hatch eggs without awkwardly keeping an unlocked phone in the pocket. We'll get there. We've got to work with what we have: Niantic released what looks like a prototype and I think that's cool! All lean startups are supposed to do that, no? "If you're not embarassed by your release, you don't release early enough" and stuff.
But that's not why we're here! Complaining about bugs is not constructive. It's also tempting to rant about the game's approach to micropayments, but let me leave this for another day. (Should I still call them micropayments when a bag upgrade and two bunches of lure modules total up to half of Minecraft?)
Instead, let's talk about something more civilised: Game design!
Arrr, kids, Back in my days, when you got a brand new game, your goal was to start it and finish it. Some games were short and you'd finish them in half an hour. Some games were long, you'd only finish them after 50 hours in or more. Good games were replayable: I'd finish it once, and then start over: to find all secrets, do all the side quests, win on higher difficulty or make different decisions along the way, perhaps to find out another ending. Endings were meaningful and I'd stick to the game for a long time, looking forward and expecting it to be awesome. What happened to all of this?
I've lost hours and days to various kinds of games, but one genre that appears quite often is the one where you're supposed to do the most proverbially insane activity: doing the same thing over and over while expecting different results. I kind of think I should have a problem with that, but I don't really feel guilty. Somehow this gets recorded for me as "valid entertainment".
Before we analyse this further, let me open with a question: What does Mahjong have in common with Diablo?
So I was reading "A Theory of Fun for Game Designers" and one idea particularly resonated with me. Idea is: "Games are like story generators".
The book elaborated on the distinction between "stories" and "games". If you take, say, a book, the story is there on purpose and you consume it by reading. Most computer games (the non-abstract ones) have their storylines, and - in similar manner - you learn the story by playing. That's not what I mean. This is not "story generation" because the story is sort of already there. Non-abstract games tend to be like movies and books in this regard, even if the story branches off into different variants in predefined monents. The best stuff happens when it's not the game designer, but the game and the player who create the story together.
"Which gamepad should I buy for PC?"
A reasonable question, but with no single good answer, other than "er, it depends, what game would you play on it?". Gamepad support on PC is decent nowadays, much better than it used to be before the advent of Xbox360, but there's a mess here. Let's try to untangle things a bit.
Gamepads used to be available in tremendous variety and have now pretty much converged to a standard layout: 2 analog sticks, a D-pad, 4 face buttons, 2 shoulder buttons, 2 analog triggers, select, start and 2 secret buttons that you mostly press by accident. There's some variety on top of that, like vibration, left analog positioning, touchpads, motion sensors, but the general idea stays the same between PC, PlayStation 2-4, Xbox 1-360 and even Android (kind of, if you count the NVidia Shield). Would you believe that?
So the funniest thing happened recently: Risk of Rain, a well-acclaimed video game, has received an update 1.2.1 that introduced a silent bug that has significantly affected the gameplay. The circumstances are more than entertaining.
We've had a lot of discussions about what should go as a "bug" and what should be a "feature" in our tracker. Turns out there's quite a big gray zone here.
"The Good Parts" has been a good read. The language has been described briefly and consistently from ground up, including a thorough explanation of objects, functions, closures and arrays. A great addition to the mix is a description of the numerous pitfalls and design problems. It seems opinionated at some points (more on this later), but very valuable as a whole. (That's correct - "The Good Parts" actually has two appendices dedicated to the not-really-good ones.)
My commentary for selected parts of the book follows.
Recall methods. A method is some piece of code that can be "called on objects". There are two things to methods: They're meaningful with an object to call on, and their interface looks like "they can be called with some arguments to return a value".
Properties are similar to methods, in that a property is meaningful when paired with an object. They have a different interface than methods, though: you don't "call" them; instead you "get" and "set" their "current value".
We normally consider properties and methods to be some abstract "traits" of objects. But why not treat them as first-class objects too? Imagine properties and methods as building blocks for object interfaces. A method would be an object that describes callable parts of other objects, while a property describes readable and assignable parts.