Woo, we’ve passed 300 tracks

Games, Music No Comments

I could hug Harmonix. They have lived up to their original promise to providing a large, ever-expanding and varied collection of tracks on Rock Band with the kind of fervour that I think even fans have been surprised by. Apart from a couple of odd cases (Lego Rock Band and Beatles: Rock Band – the former puzzling, the latter due to brand management insistence that The Beatles should be revered as gods and can’t be seen mixing with peasants) Harmonix have avoided fragmenting the content available as much as possible and the result is a lot of people who have no reason to buy another music game; in fact there’s a positive incentive not to. It makes games that don’t try to integrate their content look a bit backward – it’s like being forced to use a portable CD player when you’ve been used to having everything immediately available on your iPod – inconvenient and horribly outdated.

So with the release of the Queen Pack today we passed the 300 track mark on Rock Band (307 in fact), which is both awesome and a little scary. That’s not even a third of the current content available, and it’s likely to go up once the Rock Band Network comes online. Will we ever stop? Well, we never stop stuffing new tracks in our iPods, so I don’t see why we would stop buying Rock Band tracks for the forseeable future either.

In related news, corporalgregg, the best source for full-band HD previews of tracks got his account suspended again (he thinks by Activision because he posted a GH video with Kurt Cobain in it) so has opened another one. Still the best place to go to review new RB tracks you’re thinking of buying IMO, but it’s a shame all that history has been lost. Thanks, big corporate bully.

Back from Qt Dev Days (Munich)

Development, OGRE, Open Source, Travel 5 Comments

qtBefore 2009, I’d never set foot in Germany before; not for any particular reason, I just hadn’t gotten around to it yet. However, thanks to gracious invitations to conferences I’ve now been twice. :) In May I went to Stuttgart for FMX, and last week I went to Munich for Qt Developer Days.

It was an enjoyable conference, as always the best part is just meeting other delegates, the sessions themselves are merely the icing on the cake. I shared my presenting slot (in which I showed a couple of applications that use Qt and Ogre together) with two other open source veterans from projects which I have a huge amount of respect for: Bill Hoffman, CTO at Kitware and the founder of CMake (which of course we use in Ogre now, so it was great that I had chance to have quite a few discussions with Bill), and Jean-Baptiste Kempf, Chairman of VideoLAN which is of course in charge of the excellent VLC.

It was also nice (not to mention flattering and somewhat humbling) to have random people I’ve never met before spontaneously say nice things about Ogre. One of the major curiosities of open source is that you never really know quite how many people have encountered & used your software; you get a sampling of that through your community forums etc, but it’s also clear that that only represents a portion of your user base. On the day I was wearing my Ogre T-shirt I had a number of people who were more peripherally involved in the community but who had had a good experience with Ogre, and were more than happy to tell me about it. Definitely a good feeling.

Perhaps most surprising of all though was getting a sizable donation to Ogre in person from a community member while I was there (I won’t mention who just in case he’d rather not be identified, he can post in the comments if he’s happy to). We had what I thought was a theoretical discussion at one of the dinners about how much we get charged by PayPal for donations, and I’d said that although it’s undesirable, any kind of electronic payment mechanism has a cost (merchant accounts, bank transfers all come with some kind of charge). I jokingly said that the way you’d avoid the most charges would be mailing cash in an envelope, although that had it’s own risks. I thought nothing more of it, until I saw him the next day when he presented me with an envelope with a donation in it! Way more than I expected too, enough to push him straight to a Platinum sponsor. Turns out he’d just got his deposit back on a flat he had been renting, and decided to donate that to us in the absence of any code contributions, since Ogre had helped him at university and subsequently in getting a job. I have to admit, I was a little lost for words at that! His donation will definitely help cover the server running costs in the coming few months.

Back to the conference subject, Qt, the conference reinforced my opinion that it’s the best cross-platform UI system out there for C++ developers. It was great to see the range of applications that were being developed on it these days, including a coffee machine which was serving custom beverages in the dining area via a Qt interface. Obviously the Nokia acquisition has meant that they’re keen to move into more dynamic, touch-based interfaces too now, which will obviously power new phones in more interesting ways, but it was clear that they remained committed to a huge range of application targets. Well, except iPhone anyway, that was definitely the elephant in the room – occasionally mentioned but mostly avoided ;)

Obviously Qt’s switch to LGPL this year will have a huge impact on adoption rates. One of the things that had concerned me though is that there’s a clause in the commercial license for Qt that requires you to decide between using the commercial license and the LGPL before you start developing. The reason given for this is that Qt is licensed on a per-developer basis, so if you could wait until deployment to choose the commercial license, you could scale back your team and pay less than you really should have done, which is why you have to decide up-front. I could understand this argument, but in my experience, perfect foresight is impractical and conditions can often change, so making a once-and-for-all choice before a line of code is written did not seem realistic in some cases. Also since the principle was that the entire team must use the same license, I was wondering about the practical implications of say, a commercial outfit leveraging some pre-written code by people using the LGPL version (such as QtOgre). Qt want to encourage greater community involvement (which was the reason for me being invited to the conference after all), so not allowing this seemed to go against the kind of broader adoption they were chasing.

To try to answer these questions, I went to the legal presentation and put this question to the speaker afterwards. Luckily, she mostly allayed my fears on these two issues. On the ‘circumstances change’ issue, the principle must remain that, because of the per-developer licensing, you should make your decision up-front, but if for whatever reason, and in good faith, conditions change (such as suddenly having to target a platform where LGPL is not practical), then some kind of agreement can be reached, such as by paying commercial fees for all developers historically on that project so it comes out the same as if you had opted for the commercial license originally. In addition, she didn’t think there would be a problem with community code re-use for commercial licensees provided this was mentioned during the commercial licensing process; she accepted that greater adoption is what they want, and community development inherently complicates the previous assumption that one team will be responsible for absolutely every aspect end-to-end.

So, a good conference overall. Now, I’m back to continue work on Ogre 1.7.

Yay, OgreSpeedTree 2.0b is done

Business, Development, OGRE 9 Comments

I’ve been pushing quite hard to get this done before I head off to Qt DevDays next week, and luckily it all came together in the last few days:

Some of the notable back-of-the-box (if there was a box) items:

  • Upgrade to SpeedTree v5 – supporting all the great new features. See the SpeedTree site for more details on this release.
  • More lighting options – Ambient Occlusion, Ambient Contrast, Specular Lighting, Transmission Lighting, Global Light Scalar, HDR.
  • Improved LOD fading – LOD transitions are now implemented via less perceptible techniques thanks to SpeedTree v5.
  • Dynamic soft self-shadowing via depth shadowmaps – (was also demonstrated on SpeedTree 4.2 in OgreSpeedTree 1.1.0)
  • Improved alpha to coverage support – alpha to coverage rendering has been significantly improved and is now enabled by default (you must render with at least 2xMSAA to see the effect), resulting in significantly smoother foliage edges and smoother fade transitions.

I’m just really, really glad to have got this done. SpeedTree v5 was quite a big change to handle, but hugely worthwhile, the guys at IDV have done a great job. I made the choice from v1 to do a ‘deep’ integration (ie all objects are first-party Ogre objects, everything uses Materials and RenderQueues properly, etc), which made the transition considerably more time consuming than using the higher level pass-through interfaces, so this took some effort. I like it this way though, it means it’s a ‘real’ integration as far as I’m concerned, not just a simplistic bolt-on.

There’s still more to do, not least of which a demo that’s more interesting than just a technical performance test :) But at least I can tick off one of the major things on my TODO now. I’d been putting in quite a few extra hours to try to handle this, and my Qt presentation preparation, and Ogre, and consultancy, and it has taken its toll a bit – I’ve been spending more time at the desk and think that was a contributing factor to me straining my back at the gym last weekend. Hopefully that’s just temporary, I’ve been a lot better these last few months.

Hope you like the shots anyway. I know, I’m pimping them all over the place in my Twitter, here and on the Ogre site, but a guys gotta make a living, right? ;)

Sony headphone adapter = #EPIC_FAIL

Music, Personal 6 Comments

It was about 10pm last night and I figured I’d just do half an hour’s practice on the guitar as I often do. I often use headphones to avoid causing undue annoyance to the neighbourhood, and like a lot of music equipment my Pod has a 1/4″ headphone socket, despite the fact that most regular headphones use a 1/8″ mini-jack, so I use a converter that came with the headphones (Sony in this case), pictured below.

sony_headphone_adapter

Looks innocent enough, doesn’t it? Well, it’s not – when I came to remove the jack from my Pod (because I was routing via my amp today), I was dismayed to discover that only 2/3rds of the adapter actually came out; the section from the first divider upwards stayed firmly in the socket. On examining the adapter, I saw that the tip was only held on my 4 fairly small metal clips, which obviously after repeated use had failed. These were not particularly cheap headphones, they’re quite decent, but clearly Sony had cut costs on the 1/4″ adapter thinking that not many people use it. Bastards.

Fortunately I did manage to remove the offending part but it took almost an hour of swearing and building specialised tools from bits of wire, screwdrivers and tweezers. These sockets are quite deep and thin, and it wasn’t helped by the spring-loaded clip that is designed to stop the plugs coming out easily. I thought I was going to have to send it in for repair, because I would just void the warranty by taking it apart myself and the logistics of the socket were daunting, but luckily bending some wire into a very long & thin hook, several retries (there are several pieces to the end section and they all came out separately) and a lot of irritation eventually bore fruit.

So that was almost an expensive piece of kit wrecked by a £1 converter. I think I’ll buy a decent one next time instead of using what comes with the headphones.

Steam’s L4D2 pre-order price shock – it’s reasonable

Games, Personal 19 Comments

l4d2I like Steam. Sure, you’ve got all the people moaning about not being able to sell on their games afterwards, but I don’t care about that – maybe because I don’t buy that many games compared to some, and I tend to hold on to them regardless more often than not.

It’s the nearest thing to XBox Live on the PC and it does a pretty good job of it. Buying games and keeping them up to date is simple, and it’s indie-friendly with far less of the snooty attitide that seems to be increasing in the console online marketplaces now they’re established.

But one thing holds it back – prices. The simple fact is that it should be cheaper to buy a game online than to buy it in a physical box. To say otherwise is utter madness – after all the boxes have to be manufactured, shipped, placed on shelves and waved through a barcode scanner by a bored teenager on their Saturday job – each stage of which sucks a little more money out of the loop. Even Amazon has to handle physical boxes and add or pay for postage & packaging. The cost of some digital storage and bandwidth pales in comparison, so why can I buy most of the games on Steam for less on Amazon, and even in my local HMV? It’s insanity.

My feeling is that this bizarre situation is forced upon them by publishers, who are simultaneously being leaned on by the physical retailers. This is backed up by the fact that any game that is not by Valve, and is also available in stores, is more expensive on Steam than it is in the shops. I guess if Best Buy threatens not to put your game on the shelf if you let Steam sell it for less, you don’t have much choice but to comply, even if that actually perpetuates the reatiler’s control over the industry, to everyone elses detriment.

Anyway, we were playing Left 4 Dead’s Crash Course expansion (pleasantly free on PC, and a superior experience there anyway) and helpfully a Left 4 Dead 2 pre-order offer popped up after we finished the game. The hooks that were offered were early access to the game and demo, and an exclusive in-game baseball bat. The asking price: £26.99, discounted from the normal price of £29.99. My first reaction was ‘ok, but it’ll be cheaper on Amazon’: except that when I looked, it wasn’t. It was precisely the same price in fact (although in this case Amazon discounted it from £34.99).

So, we pre-ordered on Steam since I’m sure it’s going to be awesome. Still, I think it could be even cheaper given that Valve must get much less than that from Amazon’s sale of the game. Hopefully as digital distribution continues to mature, we’ll see the prices come down. Games are too expensive at retail by a large margin  (particularly on consoles), it’s hampering mainstream adoption, driving the second-hand sales market and piracy, and making the hit-driven mentality of the industry worse. Games need to be cheaper at first purchase, and need to sell for longer outside the first month on sale. Movies make the majority of their money from DVDs, not the box office, but the ‘big’ games are still stuck in a chase for a box-office smash. Services like Steam provide a route to a more sustainable model – and by sustainable I don’t just mean the environmental benefits of not manufacturing more plastic and shuttling it around the world with fossil fuels, I mean that games could last longer there and provide a longer tail return for their developers, all while costing the public less.

Ah well – I guess parity is at least a start. We won’t make much more progress towards sanity until the hands of the big retailers can be slowly prised from the throat of the industry.

10 Queen tracks coming soon to Rock Band

Games, Music 1 Comment

queenOh hell yes.

Finally, one of the best British classic rock bands that was sorely missing from Rock Band makes an appearance on 20th October, and how:

  • Another One Bites The Dust
  • Crazy Little Thing Called Love
  • One Vision
  • Fat Bottomed Girls
  • I Want It All
  • I Want To Break Free
  • Killer Queen
  • Somebody To Love
  • Tie Your Mother Down
  • Under Pressure

Now, I could lament the absence of Don’t Stop Me Now, and Princes of the Universe which I would have loved, but really that would be being petulant because this list is pure class. Anyone with any sense has been crying out for Queen in Rock Band for ages, and now we have a duty to shut up and save our voices for some serious (or rather seriously bad) Freddy Mercury impressions. Now, where did I put my sparkly low-cut one-piece? :D

[Edit]Oh, and huge kudos to Harmonix for bringing us some Kula Shaker this week. Feel free to follow in that vein with some Ocean Colour Scene, Happy Mondays, Seahorses and Shed Seven guys :)

Early-stage Git/Mercurial/Bazaar evaluation thoughts

Development, Tech 65 Comments

A few weeks ago I decided to start seriously investigating switching to a DVCS. I’m currently up to my eyes in work and haven’t really had time to progress that in the last few weeks; however some absolutely abhorrent performance / reliability problems with Sourceforge’s Subversion server made a large merge process so costly to me (in the end I had to commit in small chunks, breaking transactional consistency, and it needed so much babysitting because of the speed / reliability it took me 4 bloody hours just to commit!!) that it bumped it up my agenda a bit. I don’t have to do merges / commits of that size very often – in this case the problem was wholesale license header changes for our MIT switch – but still, it’s totally unacceptable to have to deal with that. I raised a support request with Sourceforge, but I’ve seen other reports of bad SVN performance from several weeks ago from others, so I’m not holding my breath. It’s time to start considering alternative hosting I think.

I’m not done with my evaluation yet, because I just don’t have the dedicated time I really want to spend on this right now. But, here’s my early-stage results.

Git

I’ve discussed before that I don’t like the where Git has come from. It’s overly complicated, Windows support was clearly not a priority, and it switched existing VCS terminology around just for the sake of it a lot of the time. It practically shouts “I’m different, live with it!” at you, which is frankly a typical elitist geek attitude and not one I particularly respect. This attitude permeates the documentation, reinforced by the absolute insistence of most tutorials that you need to understand Git’s underlying data model before you start using it. Er, right – sorry, but when normal people want to learn how to use a new tool, we just want to know how to use it, not how it’s built. If understanding how it’s built is a prerequisite to using it, then I’m sorry, it fails miserably at being user friendly.

Nevertheless, it’s fast, it’s efficient in storage, it’s the most popular & fashionable DVCS (probably due to GitHub) and that has weight. Of particular interest to me is that TortoiseGit has come along in leaps and bounds, and is really quite pleasant to use. Of course, the reason it’s pleasant is because it hides the majority of the nonsensical changes that Git decided to make to existing VCS terminology; for example ‘Revert’ in TortoiseGit does what you expect (undoes your working copy changes), rather than needing to use ‘git reset –hard’, which is only intuitive to those who live on Mars (git revert, in contrast, records a new commit to undo a previous commit – why the hell do you need a special command for that??). Thus, it’s an odd situation – using TortoiseGit is pleasant, but only because it ushers the underlying git behind a curtain and gives you what most people really wanted from it in the first place. The downside is that using TortoiseGit really doesn’t teach you how to use the command line very well, like most other VCS tools do. In fact, it may well mislead you into thinking Git is friendlier than it actually is. For example, it saves you from the ridiculous need to remember the “-a” argument to “git commit” – without which what you actually get in your commit is the state of the file when you did “git add”, not the version in your working copy. If that makes sense to anyone, raise your hand. Thought not.

Hosting & collaboration wise, GitHub seems very good.

Mercurial

Mercurial on the command line is nice. It behaves the same way centralised VCS’s do, except in the cases where it needs to be different. This is pragmatic design – not being different just to make a point, but being different where it needs to be. It doesn’t break old concepts and does what you expect it to, and contrary to what some people think, that’s a very valuable feature.

It’s not all roses though. TortoiseHg is clunkier than TortoiseGit, despite being based on a more intuitive core tool. The UI just feels a bit wrong (like putting action buttons on the toolbar – who does that?), and I’ve sworn at it for being unintuitive more than once. The other problem is that the Mac GUI tools are not really that great either – MacMercurial only allowed me to do a subset of the operations I needed to do, and Murky just crashed when I tried it. GitX in comparison works quite well on the Mac.

So despite a more intuitive command line and core concepts, and a more pragmatic approach generally to DVCS for ‘regular’ people, when it comes to GUIs Mercurial lags a bit now. This was unexpected to me since it is Git that has traditionally been poor on the GUI front. There are also a few other minor issues like branches being totally permanent and needing to be globally uniquely named, which can make local experiments more cumbersome.

Hosting wise, BitBucket seems quite competent, if a little less polished than GitHub.

Bazaar

I’ve only just started experimenting with Bazaar, and so far I’m quite impressed. It has the pragmatic approach of Mercurial, but also has a built-in GUI which is really quite nice to use and leads you through the initial setup and configuration. There’s also TortoiseBzr which feels somewhere in between TortoiseHg and TortoiseGit. I haven’t tried it on the Mac yet. Performance was always the issue listed as the major downside of Bazaar, but this has improved since 2.0 and while it’s not as fast as Git, it seems to be fast enough.

The main downside for Bazaar is adoption. It trails both Git and Mercurial in terms of the number of people using it, and therefore adopting it for a public project would have the disadvantage of making people use a tool they’re less likely to already be familiar with. Also for hosting, Launchpad is quite new; it looks quite good, and has more features than GitHub, but it doesn’t have the option to host private projects (not an issue for Ogre of course) or a graduated commercial plan – you can self-host of course but that’s not as easy.

Conclusions so far

The sad fact is that none of the 3 are an instant win for me; they all have positive and negative aspects. Summary so far:

Tool Pros Cons
Git Fastest & most efficient
GUIs actually good
Popular
Command line overcomplicated & unintuitive
Mistakes easier to make
Mercurial Intuitive
Fairly popular
GUIs a bit rough in places
Bazaar Very intuitive
Built-in GUI good
TortoiseBzr also good
Not very popular
Statistically the slowest
Launchpad is quite new

So, I’m basically in a no-win scenario. If I pick Git, it’ll work fine via the GUIs but it’s too easy to screw things up when using the command line, and I’m bound to get annoyed at the needless obscurity from time to time. But, lots of people will be happy to use it. If I pick Mercurial, I’ll be happier with the overall core concepts & command line, but the rough edges on the GUIs are going to annoy me day to day. But, quite a few people will be happy with it all the same. If I pick Bazaar, I’ll be happy with both the core concepts and the GUIs, but being the least fashionable option almost no-one in the community will be happy that I picked it over the other two, and lots will bitch about having to use another tool.

I’m reluctantly acknowledging that the least of the evils appears to be Git right now, even though I personally hate its underlying interface. Somehow it feels wrong to only like using it when it’s hidden beneath a GUI – I’ve been a regular user of the command line for CVS and SVN for the best part of a decade, and I like being happy with both modes. I can imagine tolerating Git’s command line, but never liking it just because of the unnecessary idiosyncracies (like commit -a).

I still have lots more detailed tests to do anyway, which will have to wait a month or so until I have more time.

Accented characters on OS X

OS X, Tech 4 Comments

I can’t believe this is the first time I’ve needed this on OS X, but it came about from needing to write a document for a European customer and suddenly realising I didn’t know how to make an umlaut on my Macbook Pro’s British keyboard. On Windows I might fire up the Character Map, but I didn’t know how to do it on OS X. Here’s what I discovered:

  1. OS X friendly apps like Mail, Safari, iCal and even Firefox have a ‘Special Characters’ entry on the Edit menu which brings up an equivalent of Character Map.
  2. For less OS X friendly apps (like Open Office), you can add a menu bar item to do the same everywhere under System Preferences, Language & Text, Input Sources – check the Keyboard and Character Viewer option and make sure the Show Input On Menu Bar is enabled. Then you just click the new icon on the menu bar every time you need the character browser.
  3. The most common ones have keyboard shortcuts which modify the next character you type afterward – Option-e puts an acute accent on the next character you type, Option-` is a grave accent, Option-u is an umlaut, Option-i a circumflex, Option-n that weird Spanish squiggle ;) While experimenting I found the ® and © symbols too (Option-r and Option-g respectively, Option-c is the cedilla)

So there you go – useful stuff if you’re on a British (or presumably US) keyboard and need to deal with non-English names from time to time. If you already knew this, great – this is just for people in my position who have to use these characters rarely and haven’t encountered it on a Mac yet.

On friend requests

Internet, Personal 4 Comments

There’s one problem with having a relatively public presence online, even in such a niche that I’m in, and that’s how to deal with unsolicited friend requests. I’m a happy user of LinkedIn, I have a Gamertag you can see on the right hand side there, and I’m also a reluctant and infrequent member of Facebook. As well as letting people who know me connect, it also means that on some occasions, I get friend / contact requests on these systems from people I’ve never heard of before. In the case of a Gamertag in particular, I’ll sit there trying to figure out whether I know the person or not, then agonise about whether I should just reject it (causing potential offense), initiate a ‘Who the hell are you’ discussion which might end up that way anyway, or worse open a dialog with someone I wish I hadn’t, or just accept on systems I don’t care so much about because it’s less hassle.  I’ve gravitated towards ‘reject’ as a default response now.

Here’s a tip: if you want to connect with me or anyone else on an online system, at the very least email me to introduce yourself first, or include in your friend request why we might know each other already, or have something in common. I’m fully aware that I ‘know’ far more people than I realise half the time, since I talk to people every day in forums etc via the obscurity of nicks. And if we haven’t spoken before, that might be ok too; I like ‘meeting’ new people, but you really have to talk to me first.

Just firing a friend request at me with no introduction is akin to throwing your business cards at random strangers in the street; it’s just not polite. Going through introductions might seem old fashioned in today’s fast-moving world, but it really does break the ice and makes the difference between a genuine friend request and a ‘stalking request’. ;)

Yet another good XBLA purchase – Defense Grid

Games 2 Comments

defencegridI haven’t been a fan of tower defense games very much, I’ve found them a bit dull and repetitive sometimes, and there’s far too many of them. But Defense Grid has very much hooked me in and is proving to be a lot of fun, and at 800 MS points (or about 7 or your Earth pounds) it’s an absolute bargain.

I think one reason I like it is that there’s no tower damage. Your towers are effectively invincible, which may not be realistic, but it does mean that it makes the game entirely about planning, strategy and resource management. Some tower defense games don’t realise that it’s supposed to be a strategy game, and put all sorts of extra mechanics like enemies attacking and destroying towers etc, but this undermines the core planning game mechanic, turning it into a game of how-fast-can-I-repatch-my-crumbling-towers-if-I-even-get-time-to-notice-at-all. In Defense Grid and other TD games with no tower damage, you succeed or fail based on how well you plan – how you set it up, how you augment and supplement your towers as time goes on (which you should have thought out ahead of time), and watching it play out according to your will, or fall apart because of it. There are no random elements – it’s a little like Chess, and I think that’s a good thing.

I also like what they did with the fail conditions. Instead of stopping creatures getting to a map end point, you have to stop then nicking ‘power cores’ from your reactor and making it off the map with them. The catch is that when you kill an enemy carrying one, it floats slowly back to the reactor, and can be picked up by another enemy, creating the danger of a ‘relay race’ where a really tough enemy can make it through your tougher defenses, and even if they can’t make it all the way back, swarms of weaker enemies can potentially relay it if you don’t take them out fast enough, thus requiring a balance between defending against single tough enemies and lots of small enemies, and stopping you from lazily relying on one primary ‘choke point’ – because the ‘relayers’ might not ever have to cross it if another enemy already took all the damage getting through it. It’s a cunning design idea that works really well.

It looks great too, which helps. And the control system works perfectly on a control stick, which I didn’t expect. And the mechanic of being able to redirect enemies via longer paths with sensible tower placement, and how you can screw it up if you force them to breach this,  is good.

Highly recommended even if you’re not usually a tower defense fan, or perhaps especially if you’re not.