Friday, May 18, 2012

SSX! It's pretty damn fun!

SSX: Deadly Descents is a really well-made game. It's just... fun. The gameplay is well-balanced, with a really nice slew of difficulty levels. There's an astonishing number of courses available to you, and every single one has a plethora of paths. On the other hand, some of them get kind of monotonous, and it's often difficult to tell which one to use in races where the course you pick is almost 100% of the battle.
The thing that really impresses me about SSX is the number of ways to get enjoyment out of the game. I count at least five fun ways to play it: there are race, trick, and survival events, which are all fun on their own. You can compete in global events, which are startlingly fun. Finally, you can go around collecting the geotags left all over the mountains by anyone else playing the game, and finding faraway corners to hide your own geotags in. Everything is uploaded to the network so you can compete against anyone you meet, anyone who picks up your geotags, anyone whose geotags you pick up, anyone who bests your record in a global event...

Global events are really fun - basically, you choose an event (survive, trick, or race on one of the mountains 150-some mountain slopes) and you're entered into a competition over the next few hours/days/week. As scores are collected by everyone playing in it, the total pot of credits available goes up, and everyone's sorted into fairly wide brackets. At the end, you get a payout according to how well you did. I regularly get gold and platinum brackets (second and third out of five), and it's really rewarding. Having constantly varying goals is a really nice change over single player. Also, they introduce restrictions of not using certain equipment. It's an interesting way to level the field a bit, I think. I was surprised by how fun the global events were - in a lot of these things, winning seems like an impossibly far-off goal, but the bracket system is really rewarding.

It's really god-damn fun to rocket off a mountain, do a 4000 degree rotation, break out your wingsuit, and land on a rail. Man. My hands are on fire.

Sunday, May 13, 2012

Clustering and communities in multiplayer

So, playing SSX has been fun. It's nice to play with everyone, but the problem is that I don't actually have any friends who play sports games. Or racing games. Or hands-on-fire snowboarding games. So I friended some people on SSX  who picked up my geotags or whatever - but it felt kind of hollow. I've got numbers showing up on my global overview, which is nice, but I just don't care. There's nothing that actually links us.
Similarly, in Mass Effect 3, I play a game with people and then... never see them again. It's a problem in any game without persistent servers and communities and chats. I wonder if there might be a way to foster interpersonal interaction a little more.
The ME3 leaderboards will show you the performance of other people in your country, and in the world, and you can see the top of the rankings and you can see your vicinity in the rankings.
What if a game grouped you with a set of people, completely arbitrarily? Say that when you first log into the network, you get seeded with twenty other people, and it'll disproportionately choose those people when matchmaking. That way, you would consistently see the same people - you could get to know strangers by the way they play.
Better yet, it could be self-regulating, so that if you consistently lose with someone, they get filtered out - or do it by ranking and voting. The point is that it would essentially choose some set of people, arbitrarily at first, and give you those people as playmates.
Maybe it'd shift your 'location' in the space of players periodically - so you'd go a few weeks playing with some group of people, and get the chance to befriend them, and then you'd spend a while playing with other people.

I like Steam/browsable lobby multiplayer because I get consistent people to play with, and I like PSN/XBL multiplayer because I don't have to specifically find a group to play in. Why not get the best of both?

Tuesday, May 8, 2012

layers of code, and why you should have paid attention in cs 201

I've run into an issue a number of times now. In my mindjail engine, there're several levels of development - I think of there as being four levels, of which I'm concerned with two.

At the lowest level, there's window management. I've shoved this off onto pyglet, a lightweight (their website tells me) GL windowing library for python. Pyglet does some things that I know - in an abstract way - how to do: drawing basic shapes, interfacing with the operating system to draw windows, and keeping track of input.

At the next level up, most of the meat of my engine is present. The main game's state is in a mindjailengine class, with lists of entities, rules on how and when to update and draw, and a basic physics engine. This level is what I think of as low-level game programming, and I chose to develop in python largely 'cause I felt it'd be easiest to code this 'meat' in an easy language. I'm doing the hard thinking here, so I do it how I think best - in python.

Problems really start in the next level - where entities in the game world have behaviors defined. Suppose a missile hits a robot. The previous level of abstraction determined if the missile was currently striking the robot - physics is a universal thing and so it shouldn't happen here*. But missiles explode when they hit things, so the missile should explode - definitely missile-specific behavior.

Our issue is how to separate our code. Presently, it's all close together - all of the missile's behavior is encapsulated in the Missile class in missile.py. But why is this? If we truly think of the behavior of entities in the world as being a totally separate thing then my instincts say they should be in different places in the code.
I did a bit of Lua scripting way back when to make tools in Garry's Mod, and it seems like a scripting language might be the answer. Object management and physics would be handled in python, and then at some point the game would instantiate a Missile object, and in the process would hook in the Missile.lua file to manage how the missile behaves.

But here's my biggest problem: I don't know how to interpret lua, and my game is still under a hundred kilobytes. I don't know how to include a Lua interpreter, which is a stickier subject still - how would I have the Lua scripts adjust things like position and velocity, which are hard-coded into the physics engine? The script/engine interface is more complex than the engine/windowing interface.

This level of abstraction is easy to brush aside when I'm dealing with simple objects, with behaviors as simple as "when I hit something, remove it", but it's going to balloon out horrendously when we get to, say, enemy AI. 

A similar problem is presented at the next level, which is the broad-scale game design - the things that make a game Fun. It's not the physics engine, I'll tell you that.
By analogy to object behavior, this would involve having a separate language or interpreter for levels. I was toying with the idea of having levels stored as vector graphics files, with lists of circles drawn at specific locations. I've since thrown that idea mostly out, but the problems remain - if I have a format for my files, I can either have
  • a hand-grown format (where my level editor will be notepad and my parser will be a loop with a case-switch statement) or
  •  I can use someone else's format (where I might be able to have a graphical editor and parse by means of a call to FormatParser.ParseFile("level1.lvl")).
The second is much nicer - but then I need to include a parser, figure out how formats work, and... it's generally very confusing if I don't know what scale the game's going to have.

In the mean time? I'm blocking the game out as best I can all in python. My level format is a text file that gets parsed with a case-switch loop, and my object behaviors are defined in distinct classes. Basically, I'm trying to keep everything separated by sheer force of will, which is okay because I know how everything works.

I've seen this become a major problem, and a major reason for code becoming confusing, in just about every team project I've worked on, and it's a serious argument for having paid attention in software engineering class. This kind of architecture is something to pay attention to, because it means the difference between
  • a game with two enemy types because they're such a pain to code that only one person can make them work and
  • a game where it's easy to add new enemies and levels and weapons, because it just means adding a few lines to a clean file called 'enemies.py' or 'weapons.py'
I'd like all my game design to happen like the latter. I've made it happen once, but it was right at the end of a project riddled with other holes.

Friday, May 4, 2012

flOw is a really good game and you should check it out.

It's been a while since I last posted. I've got two posts bouncing around in my head, as yet unfinished - one about the excellent SSX, and one about an issue I've encountered in a number of game programming experiences.

Right now what I want to talk about is an older game called flOw, which is really pretty. Really pretty. This is the part where I want to go on and on using phrases like "exquisitely beautiful" and "rapturously gorgeous", but instead of boring you with purple prose I'm just going to post some screenshots.
flOw, annoying as its capitalization may be, is a perfectly calming game with a surprising depth of gameplay. Your objective is to grow your avatar larger and larger and progress to the end of a set of levels. You have a choice of unlockable creature types to play with, each of which has their own peculiarities. The controls are incredibly simple and, basically, the game gets an amazing depth of experience out of not much that you need to do. Really good.

It's available on PSN (about $10 and very worth it) and in a free version as a flash game (not nearly as good, if you ask me)..

flOw is a production of the notable thatgamecompany, responsible most recently for Journey but also for the art game Flower (in which one controls a gust of flower petals blown on a breeze) and Cloud, an incredibly poorly publicized art game which was, I'm pretty sure, the first exposure I had to games as an art form. I remember playing Cloud in my room in middle school, having downloaded it when it was just a project by a group of friends, and being awestruck by how somber it was. It moved me to tears.

Wednesday, April 25, 2012

REVIEW- Warp

The best thing about indie games on PSN is that they're shorter, which means that it doesn't take as long for me to get through one, and I also don't have to write as much about it. As indie games, they are often also more exciting or innovative, but me being as incredibly lazy as I am, the main draw is the shorter time commitment required. So on that note, next up is Warp, by Trapdoor.
The premise of Warp is that you are an alien that has crashed on Earth. Incapacitated by the rough landing, you are captured, taken to a secret underwater facility, and experimented upon by scientists. However, you manage to break out using the titular ability, and proceed to wreak havoc throughout the facility in an attempt to break out a fellow alien and escape the facility. As you progress, you'll gain various other abilities that will help with your bid for freedom, such as being able to create an 'echo' of yourself that draws enemy attention. The levels are well designed, and the player can either aim to be stealthy or warp into enemies and tear them apart from the inside, and each method is generally equally viable. Following the main path tends to be fairly simple through the course of the game, but the levels have collectible grubs hidden or well placed throughout the level that require some more creative thinking to reach and obtain.

One of my favorite parts about Warp is the whimsical feel of the characters. Your character communicates through adorably unintelligible gargles, and acts like a curious small child when dealing with humans (even while gruesomely tearing apart their bodies). The scientists in the facility are total pansies, and upon sighting you will scream and run away, bemoaning their fate (and how they've had such an awful day) as they cower in a corner. On the other hand, the soldiers that patrol the facility are stereotypically gung-ho in their efforts to kill you, spouting macho lines about how you must have run away from them, you chicken. The extreme silliness that ensues whenever I revealed myself in a room was more than a little motivation to keep going even on the occasions that I got somewhat bored with the puzzles the game threw at me.
That's all for now! To sum things up, Warp is a short and fun stealth stealth'ish puzzle'ish game. Definitely give it a try if you like warping based puzzles, top down stealth games, or if you like warping into the bodies of enemies and tearing them apart from the inside out. Maybe next time I'll write about a bigger/longer game.

Saturday, March 31, 2012

Journey

Every now and then, I decide to do something different. Take a break from the standard action shooter beat'em up whatever, and just relax. And this time, that something different is Journey.
Made by thatgamecompany, the creators of Flower (which Maggie mentioned in her demo round-up), Journey is a bit more involved than the relaxed petal guiding that is Flower. You play as a traveler, making your way through a vast desert towards a glowing mountain far in the distance. The mechanics are simple: move towards the mountain with the left stick, look around with either the right stick or by tilting the controller. Shortly into your journey, you will discover a scarf that allows you to jump and fly as long as it is magically charged, and throughout the various levels you can collect golden fragments that extend the length of the your scarf (allowing you to jump and fly farther before running out of charge). Your character sings at the press of a button (holding the button has the character sing a louder note), which is the primary means of interacting with the world, and with other players. Environments are beautiful, and it's a ton of fun flying around when you have a longer scarf.

Speaking of other players, Journey's 'multiplayer' is among the most intriguing I've ever encountered. Though your journey is usually a lonely one, you can and will encounter other travelers along the way. There isn't much you can do in the way of interaction. The only way you can interact with the other players is through your character's singing, which replenishes your companion's scarf, to provide some incentive to sticking together and cooperating. However, it's hard to convey much of a message through the simple chimes your characters make, unless by some coincidence both you and your companion are fluent in Morse code. Despite this lack of ability to communicate, or perhaps because of it, I felt far closer to my companion in Journey than essentially anybody else I have interacted with in games or on the internet. In particular, I think my experience of the final chapter would have been significantly different (though I don't know that it would have been worse) had I not had a companion for almost the entire chapter.
I don't have much else to say about Journey, so I'll end it here. In short, Journey is an extremely unique experience, the best words I can come up with to describe it are gorgeous and tranquil. I highly recommend it to anybody looking for something different.

Sunday, March 4, 2012

Demo Roundup!

I haven't had much time to finish games recently, and I don't like to review them before they're done, so I've been a little quiet on here. Thanks to Jeremy though, I've been playing more demos than usual, so I thought I'd give my thoughts on a few of them. Some have come out and I haven't read full reviews, but I think the impression a demo gives is a very important thing.

1. Syndicate
This futuristic first-person shooter tries to innovate a little with your ability to hack things, including your teammates, who you can heal or revive. While it didn't stand out to me as terribly special, and I'm rather ambivalent towards the whole FPS genre, it worked pretty well. I enjoyed the system, though I think you can hack things from a ridiculous distance. Jeremy and I played the co-op demo, which was designed for four people. Even on a low difficulty level it kicked our asses. I had fun doing it, but it steadily wore on me as we had to do the same part over and over and over. There are checkpoints, but again, they're designed for four players. 

It makes sense from a design perspective to have levels designed for a certain number of players - it makes it easier to balance. But from what I can see, there aren't any for just two. And I suppose they mean for you to play online with random people or have more friends than I do, but that's not really my thing. So they lost me a bit there. 

Will I buy it: No, not likely. Because FPS isn't my favorite genre, one really has to stand out for me to like it, and this one just didn't.

2. Binary Domain
Here's another futuristic shooter that hasn't gotten a lot of hype. It takes place in a world where robots are created by two companies, one in Japan and one in the US, but both are forbidden from creating humanlike ones. One shows up, and you're sent in to investigate. So you shoot lots of robots. They boast a complex damage system where if you shoot a robot's leg, just the leg blows up and they limp along. That's all well and good, and it works well, but it strikes me that it's been done before. What really intrigued me was the promise of a comrade approval system, affected by everything from what you say to them to what you do on the battlefield. In turn, this affects whether they will take orders from you or not.

The demo, however, let me down. The buggy AI often couldn't figure out what to do, including taking cover beside me when I was leaving more than enough room. The combat system was never explained, and while it's related to standard FPS controls, that doesn't do me much good when I don't play them much. From the beginning, then, I felt shut out of the demo. My companions were nagging and annoying, and they disapproved the longer I sat in cover trying to figure out what to do. In particular, I was trying to figure out what I had that would be good against a riot shield. In the end, I tried a few failed charges and got so fed up with the system that I shut it off.

Will I buy it: No no no. The interesting premise falls flat in practice, and the demo alienated me from the start. (For the record, Jeremy was similarly annoyed, but managed to finish that second mission.)

3. The Darkness II
I've never played the Darkness, though I have a vague idea of what happens. You play as Jackie, who's a high-profile hit man in the mafia. For some reason, you've got a symbiotic relationship with this demon called the Darkness. Doesn't really matter - the point is that you're a badass. Jeremy convinced me to try out this demo, and while he had to get me past the more gruesome parts (such as watching yourself get nailed to a cross...), I really enjoyed it.

The combat was amazing. I've never shot a real gun before and am reasonably recent to shooting games, but the feel of the gun was perfect. I've never specifically noticed the design of shooting in a game before, but this stood out as very smooth. In addition to shooting, you can use your Darkness-fueled demonic arms to grab enemies and items as well as just lash at things. I impaled guys with parking meters and executed them by ripping out their hearts. So fighting is pretty gruesome, but awesome.

Will I buy it: Not sure. I got a little squeamish at some stuff, but on the other hand, you feel insanely powerful during combat. From what I've heard, they do some decent emotional storytelling too. I may give it a shot.

4. Mass Effect 3
Oh man. I'm having such a love affair with Bioware right now. I just beat ME2 a couple weeks ago and finished up the Arrival DLC earlier this week. I adore the world that they've built and could (and probably will) babble on about the various alien races and the powers in combat and everything. Between that and the trailers with the tagline "Take Earth Back" I was more excited for Valentine's Day than ever before. Sadly, as a PS3 player, I had to wait to play the demo, but it was well worth it.

They've tweaked the health system, which was a little weird, but as I play more, I like it. The same combat system is back, and the Vanguard has a new power called Nova where you detonate your shield to cause area damage around you. Combined with Charge, it's the most fun I've had since they gave me a flamethrower. The story is quite compelling, as the game opens with the Reapers arriving at Earth. They then jump to a later mission where you are moving from checkpoint to checkpoint battling Cerberus agents with Liara and Garrus at your side. The new enemy types are lots of fun, including the intimidating Atlas mechs. And it's so pretty on the PS3.

A few interesting changes: They've removed the veteran level of difficulty, which is what I played the end of ME2 on. While it wasn't much of a step up from normal, I'm now stuck between cruising on normal and being frustrated by hardcore. It's a minor grudge, and I'll probably give hardcore a shot, but I found it a little odd. They've also added in two new modes: story and combat. In the former, combat is really easy so that players can make it from cutscene to cutscene with minimal dying. For the latter, all dialogue choices are made for you so that you can get back to killing things. I find this an interesting way to open the game up to new players by refocusing the core engagement, though I'm curious to see whether anyone uses them.

The multiplayer is where the demo has really shone for us. The three of us have spent hours playing it already along with another friend. I've been playing as an Engineer, and I never thought I'd leave Vanguard, but now I'm thinking of doing a new playthrough of ME2... Anyways, the two maps provided in the demo are a lot of fun. You get four characters per class, a human male and female and two aliens, either asari, salarian, turian, or quarian. The class shares experience points, so you can easily switch between the characters, who have slightly different sets of powers. As you complete objectives, you accrue credits which can be used to buy supply packs, which include med packs and other characters.

Will I buy it: It gets here on release day. :-)

5. Flower
This was a fun little demo that Jeremy handed me when I was stressed out. It's gorgeous. Gameplay is very simple - you tilt the controller to guide your growing storm of petals over budded flowers to make them bloom and rejuvenate the surrounding area. It's a pleasant experience, if somewhat simplistic. And oh man is it pretty.

Will I buy it: Maybe. Simple, but pretty and relaxing. I may need that after all those shooters.