Categories: games

My 2014 in Video Games

2014 was a somewhat crazy year overall - if someone would've told me that Seth Rogen and James Franco would be involved in one of the biggest network security scandals, I would ask them if they overdosed on Swift on Security. Anyway, let's talk about video games, because that stuff is fun and 2014 has been a fun year for me.

In March, Facebook bought Oculus VR for $2 Billion. In late december, there are still no real games that actually work on it, but more DevKits, Samsungs Gear VR, Sony's announcement of Project Morpheus and Googles Cardboard VR Kit. All this stuff is neat and my original Oculus Kickstarter Kit sure was impressive. But behind the hype and impressive technology, I'm still waiting for the actual games. Not just proofs of concept or fancy YouTube videos but real actual products. Because at the moment, I fear that VR's second incarnation is facing the same fate as the Kinect. (If someone says Augmented Reality now, it's important to remember that the Google Glass is dead in the water. I think that overall, wearables are too cumbersome but it will be interesting to see if Smart Watches can do something, despite their pathetic battery runtimes. I doubt it.)

Speaking of the Kinect: Dance Central was amazing, and I had high hopes for Fantasia: Music Evolved. I even made space in my living room. Fantasia has all the ingredients of a fun game, except for two things: The menu structure is weird and there is no real "Free Play" mode. This game is predestined to have some fun especially with children, but there is no way to just have fun without being stopped by the game. I guess that it's more suited for teenagers and older. It's a great game, I guess I just had the wrong expectation.

Early in the year, Might & Magic X: Legacy was released. I have blogged about the game before and even though it's not Game-Of-The-Year-good, it was an enjoyable trip down the memory lane, back to Parts 5 and 6. It's missing the giant story arc that made the first five games so memorable, but I got what I wanted out of it.

Many of my Kickstarters arrived - beginning with Redux: Dark Matters and Broken Age. Redux ironically isn't as good as the original DUX 1.5, but I enjoyed the soundtrack (especially Stage 6 Alarming Area, The End). Broken Age made headlines because it was split in two, with Part 1 being released in January and Part 2 still pending. I haven't played Part 1 yet because I want the adventure to be complete and play it as a whole. Despite the massive delays (There are lessons how going too far above the Kickstarter target is actually a bad thing as scope explodes), I'm hopeful that the game will be awesome - I've avoided reviews due to spoilers, but what I heard was positive.

In February, Broken Sword 5 followed, also split into two parts (Part 2 followed in April). I enjoyed it very much - it was classic Broken Sword again, with top notch voice acting and an engaging plot (I loved the Gnostics stuff). I wish that they would've extended the last location though, because I'd have loved to see more of the architecture and history.

Jane Jensen's Moebius: Empire Rising was the next adventure and the first one I'm on the fence about. Mainly because it was too much forced in one direction and I felt I was as helpless as the main character (who's kind of an asshole) and just had to go along with the plot (I called out the ability to say 'no' because Moebius just didn't give me a convincing reason to go along with the plot at the beginning.

Next up in May, one of the games I absolutely loved this year: Tesla Effect: A Tex Murphy Adventure. Yes, it is cheesy and technically unimpressive but a) It's Tex Murphy and b) it's a really enjoyable B-Movie. There was a bittersweet announcement that Aaron Connors was working on two more novels, the second which might be the basis of one last Tex Murphy game. I'd love them to remake the old games to have a more modern interface, but I guess the FMV just wouldn't hold up? If you like detective pulp fiction, I recommend picking up the book as well.

Wasteland 2 came out in September, and proudly held up the old school flag. The game's first act was significantly stronger than the second, where it lost a bit of its cohesiveness. I liked the turn based combat system and the dry, cynical humor in it. The mad monks were fun, and Damonta was a good finale to the first act. The second act had good set pieces - the Angel Oracle for example - but it just felt too loosely connected. Enjoyable nevertheless.

I'm still waiting for my Dreamcast version of Pier Solar HD but from what I'm seeing, reviews are good. It's out on Steam, so that's what I'll play once I find enough time. Jagged Alliance: Flashback is another kickstarter-backed game that I didn't have time to really play, although I immediately ran into a bug that made me lose the game - definitely an authentic Jagged Alliance game :) It looks and plays good though.

Last but not least, Elite: Dangerous was released, with a lot of fanfare. The fanfare was mostly centered around the removal of offline-play. This is one of the caveat emptor lessons with Kickstarter: Just because you give money doesn't mean you actually get exactly what's promised. It sucks that the controversy takes away some of the hype of the game, but that fault lies in the creators. Overall though, 2014 has been a year where the fears of Kickstarter-backed games have been dispelled. There were many releases, and for the most part the games were good, or at least good enough to be worth the money.

Apart from Kickstarter, there have been a bunch of Indie and Semi-Indie games. Divinity: Original Sin was funded through Kickstarter, but I bought it regularly through steam. It's a bit confusing at the beginning (Who are we and what are we doing?) but it's one of the best isometric RPGs in recent years. Once it got going, I enjoyed the ride all the way to the end. It's one of the best games of 2014, indie or not. A true indie game, Escape Goat 2 came out on PC and PS4 and is a really fun puzzle game. It reminds me a lot of early 8-Bit games like Solomon's Key or Spherical, even though it's very different. In any case, I recommend playing it.

Speaking of Goats: Goat Simulator is one of the most glorious games of the year, to the point of them adding a free MMO Simulator DLC. Words cannot do the game justice. One one side it's like a fart joke that's funny but going on too long, but on the other hand it never stops being funny. Whether you play it for 5 minutes or 5 hours, it's hilarious just because you discover so many more ways to break things.

On the topic of glorious releases: Suikoden II was finally released on the playstation network, for PS3 and PS Vita. This is one of the best RPGs ever made, and we've been asking for years to get it on the PSOne classics store. It's $9.99 and the only excuse for not buying it is if you only have a PS4, because for some stupid reason Sony doesn't have PSOne Classics support on their flagship console. This might be a good time to look into a PS Vita, because not only do you get Suikoden I and II, a non-messed up version of Final Fantasy VII and all the mainline Persona games, including both parts of Persona 2. It also has the HD Remaster of Final Fantasy X and X-2 available for it.

Another console that had a great 2014 was the Wii U. Donkey Kong Country: Tropical Freeze is everything we love about Donkey Kong Country, including the unforgiving difficulty level. Mario Kart 8 is worth the price of a Wii U alone. The character roster is a bit hit-and-miss, but the vehicles are fun, the track design is amazing and the DLC is actually worthwhile (Link including a motorcycle and the Dragon track are worth the price of the first DLC pack alone). I hear great things about Super Smash Bros., but I could never get into any of the Smash Bros. games, so I have nothing to say except that the Wii U has a big enough roster of great games - some exclusive - that makes it a worthwhile console.

There were also a number of AAA game releases. Castlevania: Lords of Shadow 2 continued the story of the first part - a story that I absolutely loved. The game itself has some rough edges (e.g., stupid stealth sections) and I guess Castlevania purists despise the lack of exploration options, but what they've done with the Belmont heritage was really enjoyable. Note that Part 2 starts out with spoilers - playing it first kinda ruins the surprise at the end of the original Lords of Shadow.

Another sequel I had been looking forward to was Dragon Age: Inquisition. It was worth the wait, the game is amazing and a worthy entry in a series whose mainline games are all worthwhile. Extra Bonus points for not repeating the Mass Effect 3 ending SNAFU (which killed the series for me - I doubt I'll buy the next Mass Effect game on release).

The last game I bought this year was Telltale's Game of Thrones. It's basically an interactive episode of the show with Quick-Time-Events disguising as a game attached to it, but that's ok. It really is Game of Thrones, with all the intrigue and murder that makes the books and TV show so addicting. I'm always torn about Telltale: They know how to tell awesome stories (also see The Wolf Among Us, Back To The Future or The Walking Dead), but the episodic nature of their games often cause weak parts in the middle because they have to put in an ending to an episode that's really just glue between the preceding and succeeding one.

Last but not least, a sad note: Ralph Henry Bear, possibly the first video game pioneer and father of the Magnavox Odyssey passed away in December. It's interesting to see how far video games have come, and how far they still have to go.

Categories: development

faml - A Markup Language for browsers and node.js

A common request on many websites is to offer some light formatting capability for a user: Bold, Italic, Links, maybe lists. It should not clutter the markup too much and allow little room for error.

John Gruber's Markdown is one of the most popular markup languages, but it has a few features that I commonly need to tweak or remove altogether. For my needs, I have customized a Markdown parser to remove features (recently the excellent stmd.js), but I've just decided to create a little markup language of my own:

faml - A Markup Language

The syntax may be inspired by Markdown, but it is really its own thing. I only included the things I need, and there is generally just one way of doing things (e.g., emphasis is added through asterisks). The code is based on stmd.js but heavily changed and broken up differently.

You can check out the source, documentation and JavaScript files on GitHub or play with it in the browser. It is also published to npm, allowing you to just npm install faml. I have example code for web browsers and for node.js.

The current version is 0.9 because I'm still working things like the tree that the parser returns (it contains a bunch of unneccessary stuff), adding tests, and giving it a nice homepage.

But it's there for people to play with :)

var parser = new faml.FamlParser();
var renderer = new faml.FamlRenderer();
var input = "test *with emph*";
var parsed = parser.parse(input);
var rendered = renderer.render(parsed);
console.log(rendered);
Categories: development

Standard Flavored Markdown Tips

Today, some of the biggest users of Markdown have given a gift to the Internet: Standard Flavored Markdown (Read more in Jeff Atwood's Blog Post)

I played with it for an hour and I'm absolutely in love with it, for three reasons:

  1. It's rock solid and mature - Try nesting Ordered and Unordered Lists in any combination and see it just do the right thing, something many implementations struggle with
  2. It comes with a reference implementation in C and JavaScript
  3. The JavaScript implementation is easy to extend (I have not done anything with the C version)

I was able to replace the Markdown parser in our current application with the stmd.js reference parser and got up and running immediately.

Here are some tips:

The Parser and Renderer are two different things

Instead of just taking Markdown and giving you HTML, stmd.js consists of a separate Parser and Renderer. This is massively useful, because it means you can either massage the parsed markdown tree before you render it, but you can also impact how the Markdown is rendered without messing up the parsing code. Look at this example:

var parser = new stmd.DocParser();
var renderer = new stmd.HtmlRenderer();
var input = "this **is** a\r\n" +
            "test.\r\n\r\n" +
            "With Inline-<b>HTML</b> as well";

var ast = parser.parse(input);

var html = renderer.render(ast);

document.getElementById("output").innerHTML = html;

Set a breakpoint (with Firebug or whatever JavaScript debugger you use) and look at the glorious ast. Look at the collections of children, at the tokens, and then you might see why this is so great: You can monkey around with this, without having to worry about HTML rendering.

Treat newlines as linebreaks

This is possibly the #1 request people have when they first try out Markdown. Normally, you need to have two spaces at the end of the line to make it a newline, otherwise it's a space.

The parser correctly determines a simple newline as a Softbreak token. The default renderer renders Softbreaks as \n, that is a HTML newline which doesn't translate into an actual line break. This is trivial:

var renderer = new stmd.HtmlRenderer();
renderer.softbreak = "<br/>";

Now, every linebreak inserts a proper <br> tag.

Disallow all HTML

Markdown allows Inline-HTML, since the original audience were programmers/bloggers. However, in some environments it may be required to disable any and all inline-HTML. To disable all HTML parsing, we tell the Parser to not generate any Html tokens:

var parser = new stmd.DocParser();
parser.inlineParser.parseHtmlTag = function() { return 0; }

All HTML Tags will now be interpreted as Str tokens and thus escaped on rendering.

Read the Source Code

The Source is on GitHub, and I highly recommend reading through stmd.js to understand how it works and where the extensibility points are. I wish that the Parser and Renderer were in two separate files, but it's still very straight forward. Yes, there is a Regex which parses HTML, but since Markdown doesn't just support any HTML but rather a defined subset, this is fine.

You should almost never have to edit stmd.js directly. Monkey patch, yes. But that can be in your consumer code.

This library is a gift.

Thank you, Standard Flavored Markdown team.

Read all postings