Long

28 Nov 2009

Cards and dice and all things nice

I just spent a bit of time writing up some recommendations for 2-player board games to mail to a friend and thought I might as well add them here too.

BoardGameGeek

Something like the IMDB of the board game world, BGG is a huge, ridiculously well-populated, community-driven database where you're likely to find every game ever published. On the downside it's also a bit ugly and slow, but I suppose you can't have everything. GeekDo is just a re-branded BoardGameGeek with a slightly different nav and the addition of an RPG section.

When browsing game entries, anything with an average user rating above about 7.5 is a good bet, though bear in mind that there tends to be a slight bias toward more complex games.

Some name designers to look out for:
Reiner Knizia, Uwe Rosenberg, Richard Borg

Some name publishers to look out for:
Days of Wonder, Fantasy Flight Games, Z-Man Games

Where to buy in the UK?:
Waterstone's sometimes has the odd bestseller like Ticket to Ride or Carcassonne, but for a proper selection try the nearest branch of Travelling Man (or failing that see the BGG UK FAQ).

2-player games I own and like

  • Ticket to Ride Colourful, rummy-esque, train-themed, classic gateway game. Loved it at first, but after repeated plays has started to feel slightly shallow to me. The alternate versions with added rules might work around that though.

  • Carcassonne Another good intro one with nice looking components. Gradually build a map by placing tiles, and lay claim to parts of it as you go by placing "meeples". I like this one a lot and think it's got longevity, but some people don't warm to it as much.

  • Agricola Only just bought this one. Confusing rules explanation due to lots of components and varying rule sets for different numbers of players. But just off one play it's obvious that it's a winner. Really fun farming theme with lots of character and it's difficult to pick out any clear best strategies which is always important.

  • San Juan Card game about building a town. Seems slightly dry at first but it definitely grows on you. Has a cool mechanic with lots of strategies to try out, and is quick to play. With the bigger boardgames, the setup time can feel like a bit of a mental barrier to playing, so it's good to have smaller card games like this around to play too.

  • Memoir '44 Probably my favourite. Takes a lot of setting up, but it's beautifully made, ridiculously fun to play and is always fresh thanks to the booklet of scenarios. Same mechanic is used in other highly-rated games by the same designer: Commands & Colors: Ancients and BattleLore

  • Pandemic Collaborative game with players working together to eradicate a global pandemic. Clever mechanics and a cool theme, but slightly too hard for my liking. If the players don't maximise the potential of any of their moves you're likely to lose the game.

2-player games my brother owns and likes

The crossover between our two lists doesn't necessarily mean those are the best ones. I'm actively avoiding some of the things he has, even though I like the look of them, because I'll probably have the chance to try them out and see what they're like first.

2-player games that I've had my eye on

For a second opinion on some of these games and a few others, see Defective Yeti's article, Games For Two.

And finally, a word of advance warning: I've found quite a few games seem a little bit underwhelming on first play. It's only after you've had a bit of time for the rules to settle in that you find yourself craving a game of this or that one and thinking about the strategies when you're away from the table, so try not to be quick to write anything off.

1 comment

23 Aug 2009
51rbdbo-36l

I've been reading: Hobby Games: The 100 Best

I read this great book of essays recently. Successful games designers of all stripes writing about the games closest to their hearts. It's a fun read, though some of the essays struggle a bit in evoking the appeal of games you've never seen before. Especially since the book contains no illustrations.

To help with that, I've put together a kind of "Hobby Games - A Visual Companion". For the most part, I tried to find the cover art for the game edition specified in each essay, but there may be one or two that are incorrect.

The board & card game imagery was relatively easy to source through the BoardGameGeek API, with a bit of manual tweaking. But I was stuck for RPG data until BGG added rpg.geekdo.com to their portfolio just the other week and I was finally able to fill in the gaps. A very welcome addition, I'd say, and well worth a look, though it can be a touch sluggish at times.

And finally, if you have the book and find the thumbnail page at all useful, you might also be interested in Alan De Smet's various dissections of the book's data.

I should also mention that there's a companion volume, Family Games: The 100 Best, due out later this month.

0 comments

8 May 2009

A lick of paint and some new furniture

If you're reading this in its native environment, rather than by way of an RSS reader, then you might notice things looking slightly different.

I did some work on the site a month or so ago and just got around to putting it live. Nothing spectacular, just a small layout re-jig, turning the volume down on the header bar and making room for a new library section on the front page.

I'd been using, and liking, LibraryThing but hit the 200 books pay-wall and didn't really feel like forking over the cash for it. I've also since signed up for Readernaut, which has seen some hype, but doesn't really work for me, and am aware of sites like Good Reads and All Consuming, but find them a bit lacking.

I want two things from a library/consumption site: to list my stuff (not just books, and not necessarily physical products), and to find more stuff. The current offerings either seem to get lost in the social aspects (Readernaut & All Consuming) or bogged down in too much data (LibraryThing).

Anyway, the site now has a library (sticking to books for now). It's far from finished, and may never be, but better to put up what was there than have it languishing on my laptop for any longer.

2 comments

19 Mar 2009

Head down memory lane until you come to the forest of doom...

For the past few weeks I've been digging back into the strange and wonderful world of roleplaying games where I spent so much of my youth. I've been back for visits now and then over the years, seeking out books and boxed sets at my mum's house or browsing the cover scans on labour-of-love sites like The Museum of Roleplaying Games. But never stopping for much more than an hour or two.

I'm not exactly sure what's triggered my deeper excursions of late. Maybe it was a spate of recent roleplaying posts on MetaFilter, or the Penny Arcade / WotC D&D 4E podcasts, or Wil Wheaton's photo of his "time machine". But I'd imagine it's mostly to do with my new found addiction to "not just for kids anymore" boardgames (more of which in another post). It's a slippery slope, you know?

That and the realisation that there are thousands of photos of happy gaming action on Flickr, readily available downloads of my old favourite rulebooks & supplements on BitTorrent, and a smorgasbord of well written roleplaying blogs scattered around the internet.

Back in the day I remember playing D&D, AD&D, Marvel Super Heroes, Call of Cthulhu, TMNT, Heroes Unlimited, Palladium FRPG, Rolemaster, MERP, Star Wars, WFRP, Chill, Advanced Recon, Shadowrun and probably more besides. My group of friends owned and read plenty of others that I never found time to play, Tales from the Floating Vagabond, Cyberpunk, Rifts, Paranoia, Judge Dredd, and Robotech (all on RPG.net). We played board games and miniature games on the side like Car Wars, Battletech, Bloodbowl, Warhammer 40K, Warhammer Epic 40k, Space Hulk and Advanced HeroQuest (all on BoardGameGeek). And in my spare time I read magazines like Dragon, Dungeon, White Dwarf and Imagine. Poring over each article, advert and review for inklings of further adventures to be had.

Good times.

There's no question that roleplaying is a dwindling hobby, and there's many, many contributing factors caught up in that, so it brings on mixed emotions to look back with nostalgia at this sickly ailing beast. But there are still signs of life and positive trends here and there.

So, what went wrong?:

  • Roleplaying is hard. There are too many rules. Open-endedness leads to a lack of focus. Improv-style aspects can be embarassing. Refereeing is hard work.
  • Developers lost site of what brought people to the hobby. Whither the entry-level boxed set? Instead we were shovel-fed weighty tomes filled with 3rd rate fantasy fiction and ever growing rulesets.
  • Other trends ate roleplaying's lunch. Computer gaming and the internet distracted us, while collectible card games and miniature-based gaming made companies like WotC & Games Workshop slaves to their profit margins.
  • Shrinking profits saw RPGs being bought up or licensed off to companies who either didn't care enough or didn't have the talent to do the job properly.
  • Versionitis. Presumably due to small target audiences, RPGs are constantly updated in an effort to encourage repeat purchases. That inevitably leads to "fixing" things which weren't broken. Book publishers don't do this, boardgame publishers don't do this. RPG publishers shouldn't either.

And the good news?:

  • A greying market. Teen roleplayers from the 80s (like me) are now old enough to stop cringing at the nerdiness and start looking at our old hobby with fresh eyes. Others have kids who're just old enough to show an interest themselves.
  • D&D's 4th Edition. Love it or hate it, Wizards of the Coast's MMORPG-ization of D&D may be doing exactly what they hoped it would, which is to attract the attentions of WoW players who'd only ever tried a computer RPG. You only need follow PA's Mike Krahulik on his first steps into DMing to see that at work.
  • Experimental & Lite RPGs. Dogs In The Vineyard, My Life With Master, Nobilis, Savage Worlds and Spirit of the Century all take roleplaying into new and uncharted territory.
  • Old school revivalism. Spurred on by disenfranchisement with D&D's current direction, several parties have released faithful "clones" of 70s-era D&D rules under names like Swords & Wizardry, Labyrinth Lord and OSRIC. These are published with open licenses as free or cheap PDFs and via print-on-demand services like Lulu.

It's this last that I was most pleased to see. At it's heart, roleplaying is about imagination, no purchase necessary. So a grassroots, DIY movement of free, and freely modifiable, gaming seems like a natural fit to me. If the industry is troubled it seems healthy to reduce dependencies and make the hobby self-sufficient.

That and reading the thoughtful debate about what made original D&D great. Wizened old greybeards from tabletop mountain passing around adjectives like Grognardian and Gygaxian make for happy reading to someone like me who has trouble convincing others of just what was so enthralling about those early books.

So raise a goblet to those still in the fight, and heartily opine "Fight On!"

1 comment

8 Oct 2008

A blog for every occasion

Two entertaining cultural phenomena which arrived in my RSS reader one after the other:

That is all...

...no wait, stop the press! Linked to from Laser Portraits is the fantastic Sexy People.

0 comments

23 Jul 2008

JavaScript line numbering for code samples

Whoopsie! While poking around on this site the other night I was horrified to discover it was pretty badly b0rked in IE. Not quite sure how I managed to miss that, but hopefully I've put it right now.

As bad luck would have it, one of the things that was broken was a javascript line-numbering function that I'd posted here previously. Best make amends with a corrected version for any readers I've lead astray, eh?

So where previously we had:

function codeLineNumbering() {
    $$('pre.code code').each(function(code){
        var count = code.innerHTML.split("\n").length - 1;
        var lines = $A($R(1,count)).join("\n");
        code.insert({before:'<pre class="line"><code>'+lines+'</code></pre>'});
    });
}

We now have:

function codeLineNumbering() {
    $$('pre.code code').each(function(code){
        var nodes = code.childNodes;
        var count = 1;
        var lines = [];
        for (var i=0; i < nodes.length; i++) {
            if (nodes[i].nodeType != 3) continue;
            var matches = nodes[i].nodeValue.match(/[\r\n]/g);
            if (matches) count += matches.length;
        }
        for (var i=1; i < count; i++) { lines.push(i); }
        code.up().insert({before:'<pre class="line"><code>'+lines.join("\n")+'</code></pre>'});
    });
}

The crux of the issue was that innerHTML seems to behave slightly differently in IE. Other browsers give you a faithful recreation of what's present in the document source, while IE gives you it's reconstituted whitespace-insensitive version.

In the old version of the code I was simply splitting innerHTML on newlines and counting how many lines I had in the resultant array. But with IE's interpretation of innerHTML that doesn't work so well since the odd newline may have been ditched or smooshed into its neighbour.

As a workaround, the substitute function uses the child nodes of the syntax-highlighted section of the document instead, which seem to be more faithful to the original source. I iterate through these looking for plain text nodes, and counting up how many newlines or carriage returns are present in each.

As a caveat I should say that I believe some of this behaviour is dependent on what your doctype and white-space CSS property are set to. Also, the code above makes the assumption that newlines will only be present in root text nodes and not nested within child elements. That's a safe assumption given the method of syntax highlighting I'm using, but it may not be for you.

Tsk, the perils of coding in public.

0 comments

8 Jul 2008

A minor morsel

I haven't posted in ages, so I might as well use this to break radio silence. It's a solution to this little programming brain teaser from Dustin Diaz. I don't think it's as much of a puzzle as he seemed think, given by the responses in the comments and how long it took me, but regardless:

var listA = ['a', 'b', 'c', 'c', 'd', 'e', 'e', 'e', 'e', 'e', 'f', 'e', 'f', 'e', 'f', 'a', 'a', 'a', 'f', 'f', 'f'];
var listB = [];

var count = 0;

listA.forEach(function(val,key,arr){
    var matchPrev = (val == arr[key - 1]);
    var matchNext = (val == arr[key + 1]);

    count = matchPrev ? count+1 : 0;

    if (count == 2) {
        val = '<span>' + val;
    }
    if (count >= 2 && !matchNext) {
        val += '</span>';
    }

    listB.push(val);
});

console.log(listB.join(' '));

As some of the commenters' solutions show, it can be done in a one-line regular expression, but I was sticking to the "rules" implicit in the original post.

0 comments

21 Apr 2008

Prototype, jQuery and the toggling of hidden elements

Just wanted to share a couple of little Prototype niggles. In general I'm pro-Prototype because it feels like it's a closer fit to the typical ways of working that you see in non-library-using Javascript. JQuery, on the other hand, has chaining and acts on elements using the same interfaces regardless of whether there are one or many. From the dabbling I've done, it seems like that gets you into the odd head-twisting situation, but I've yet to embark on a big project with jQuery, so judgement is reserved for now.

Having said that, here's one instance where jQuery comes out on top. Showing & hiding of elements is a pretty common JS/DOM task and you're probably familiar with an issue where hidden elements need an inline style of style="display:none;" to allow them to be shown again. This is because the un-hiding is done by setting the display property of the element to an empty string, thereby allowing the element to re-inherit it's default style. If the styling is done via CSS instead (.hide { display:none; }) then the styling is further up the inheritance chain so the element always inherits from here instead and can't be unhidden.

Prototype has the most basic show/hide implementation and makes no attempt at a work around. Its documentation even makes specific reference to the issue: "Element.show cannot display elements hidden via CSS stylesheets. Note that this is not a Prototype limitation but a consequence of how the CSS display property works".

Here's the implementation (from version 1.6; current at time of writing):

Element.Methods = {
    hide: function(element) {
        $(element).style.display = 'none';
        return element;
    },
    show: function(element) {
        $(element).style.display = '';
        return element;
    }
}

But that's not the end of the story. JQuery does manage a workaround, and an effective one at that. When failing to show a hidden element it adds a temporary, unadorned element of the appropriate type to the document and checks what its display property is set to by default. Finally, if all else fails it resorts to "block".

Here's a version of the jQuery methods, ported for use with Prototype (the originals begin at line 2890 in jquery-1.2.3.js):

Element.addMethods({
    show: function(elem){
        elem.style.display = elem.oldDisplay || '';
        if (elem.getStyle('display') == 'none') {
            var test = document.createElement(elem.tagName);
            $(document.body).insert({bottom: test});
            elem.style.display = test.getStyle('display');
            if (elem.style.display == 'none')
                elem.style.display = 'block';
            test.remove();
        }
        return elem;
    },
    hide: function(elem){
        elem.oldDisplay = elem.oldDisplay || elem.getStyle('display');
        elem.setStyle({display: 'none'});
        return elem;
    }
});

Much nicer. I'm not sure what the guiding philosophy is for what gets included and what's left out of the big JS libraries. It seems like something like this should be in there as an easy fix to a common problem. I would think that the identity of the libraries lies more in their syntax and aesthetics than their capabilities, so there's little to lose from liberal cross-pollenation.

0 comments

14 Apr 2008

A new dimension in film-making

I haven't read too deeply into this, but I've seen a couple of signs lately that the movie industry might be looking to make money out of 3D (as in 3D glasses, and not specifically CGI). Disney's re-releasing the Toy Story films in 3D, Pixar is planning on releasing all it's films in 3D starting next year, and James Cameron has been doing some serious research into it for his closely-guarded upcoming blockbuster "Avatar". I wonder if this is something they're banking on to differentiate the big-screen experience from the DVD market. A return to the days when a trip to the cinema was a big event.

Not that home entertainment necessarily has to miss out, there's also the question of whether the videogame industry might be quick to make a similar move. Apparently BoomBlox (the upcoming EA / Steven Speilberg collaboration for the Wii) is to feature a head-tracking 3D mode as an easter egg. See Johnny Lee's presentation at TED for a recent demo of this technique.

2 comments

23 Mar 2008
51ixby6bw0l

I've been reading: Pro Django: Web Development Done Right

Disclaimer: I don't actually own a paper copy of this, I'm just in the process of working through it online at djangobook.com. But while I'm at it I just wanted to jot down a few thoughts that are fresh in my mind.

I'd looked at django briefly a while back but had been slightly put off by the templating mini-language along with a few other minor quibbles. Lately though, I've been feeling the need to give it a second look. After getting some practical experience with Rails, and seeing the backlash against it play out, I've been catching recurring glimpses of django waiting in the wings and rehearsing lines for its role as understudy.

I had planned on ordering the book in the near future but just started in on the online version out of impatience. Unfortunately, it's turned out to be a relatively disappointing experience. The djangobook website looked like a pretty promising venture when it appeared. Chapters would be posted as they were written, and comments were enabled on a per-paragraph basis, setting many eyeballs to work as cheaply labouring editors and technical reviewers.

I read a couple of the first chapters as they arrived and then left it alone until now, with all chapters accounted for and the finished book finally published. I don't know what happened in the interim, presumably comments were made, some were taken into account, and the odd revision was made to the text on the basis of these. From the dates on the comments that remain, it appears that any from prior to the release of the physical book have now been cleared out leaving a blank slate alongside the finalised copy.

This is where things start to disappoint for me. The book was released late last year, and in the intervening months a respectable new crop of comments has sprouted up throughout. Unfortunately, a hefty portion of these are pointing out easily avoidable errors. Scan through the text online and wherever you find a paragraph with upwards of 4-5 comments, you'll find a legitimate complaint. There are simple typos and stylistic issues. There are problems with the over-arching structure of the book. And then there are installation showstoppers where instructions aren't working in a given environment and readers have had to Google for fixes.

Where clarity is lacking or mistakes have been made in the text the comments are invaluable. Comments that aren't available in the printed book. The book whose copy had already been finalised. The book which is already on sale.

Ok, books are published with errors. Ok, the authors are developers and not professional writers. They're just trying to take some time out of their already busy work lives for a healthy stint of product evangelization. There are excuses that can be made. But it seems to me that there is some confusion as to the distinction between the frozen in time print edition and this living breathing web edition.

Is it done now? Are we going to see further updates? Are their political issue issues because the publisher doesn't want to impair book sales with a web version that's a superior product? (Although it already seems to be by virtue of the comments alone). Where there are legitimate complaints in the comments it seems like the majority would be fairly quick and easy to fix. So what's the situation? The waters are muddied further by the presence on the website of an errata page. Presumably it's targeted at readers of the print edition but, again, without a formal statement clarifying the distinction we're left to guess.

Aside from the print/web divide there are also issues with the structure of the book in general. It doesn't feel like much thought has gone into the examples used. We start out building pages which format the time, then we build a database centered on books, then we populate one table only to try out the admin interface using another, next we create a search form for a (still empty) table before skipping off to do a contact form...

When you're trying to follow along at home it's just a little too scatter-brained for my liking. Either do a tutorial, or go with a reference, but don't sit on the fence. And either way, if you're giving code examples please try to avoid them being reliant on things that you could've easily walked us through in earlier chapters. If I can't type something in and try it out there and then it disrupts the flow of my reading and has me skimming ahead for the next example I can use.

I think the Pragmatic Programmer's AWDwR has faults of its own, but the structure of the first half of that book is good demonstration of what I'm talking about. It steps you through the majority of what you need to know using an online book store metaphor and maintaining consistency throughout, even adding in a bit of meta-story about the client-developer relationship during production. It may sound like hand-holding, but that kind of attention to detail really makes for smooth learning as you step through the code example-by-example.

The other alternative, of course, is to get out of my way and give me a reference so I can put the pieces together myself. And yes, before you mention it, I know about the documentation at djangoproject.com. Maybe that will be a better fit for me in the long run, it's just a shame to see such issues with the chosen ambassador for what's obviously a pretty cool technology.

0 comments

Short

21 Jan 2010
19 Jan 2010
16 Jan 2010
3 Jan 2010
8 Dec 2009
5 Dec 2009

What kind of computers would you guess Jakob Neilsen uses? Tricked-out garish crap, you say? Correct! http://jakob.nielsen.usesthis.com/

@twitter

0 comments

2 Dec 2009
29 Nov 2009
28 Nov 2009

@Smylers2 Clock Cafe or The Moorish? Neither are great, but they'll pass.

@twitter

0 comments

25 Nov 2009
23 Nov 2009

@benwalton Show off.

@twitter

0 comments

17 Nov 2009

@geekeryin The URLs in your event tweets are broken. Shouldn't it be http://www.geekery.in rather than http://www.geekeryin.co.uk ?

@twitter

0 comments

11 Nov 2009

@Caius That's due to the length property look-up. Decrementing loops aren't inately faster in JS: http://bit.ly/3Dz42x

@twitter

0 comments

9 Nov 2009

Where am I?

The personal site of Matthew Tarbit, a seasoned web developer holed-up in a hideaway somewhere in the depths of Leeds, England.


Reading

See all books & authors in the library.

by
added 31 Dec 2009

Note: This is a work in progress. The books shown are currently the newest additions to the DB, and not necessarily the most recently read.

← Archived entries by month