#26/05/2012#

"Why do I like Torchlight?"

The two of you who read my finely honed postings on this site, will probably know that I am entirely apathetic about Blizzard’s latest blockbuster-busting release, Diablo III.  Despite it being far and away the most popular game of all time, selling millions in the days and week of its launch, there is not a cell in my body that is compelled to play the game.  Torchlight is a very similar game, and by very similar I mean that there is no more than a hair’s breadth between them in terms of gameplay and mechanics, and even the graphical style and setting aren’t that much of a departure from the ground that Diablo has trodden into a soft muddy wasteland.  The Torchlight II Beta finished a couple of days ago, and, after seeing my friend play it and feeling somewhat compelled to give it a try, I downloaded it and played it for a few hours.  And I had a rather pleasant and enjoyable time.  So why then, did I like Torchlight when it’s practically identical to Diablo III, which I feel entirely apathetic about?

My introduction to the Diablo series was with Diablo II.  I’ve never played Diablo II single-player and I’ve never owned it, so I’ve only ever played it at LANs.  Whenever I have played it, there’s usually been me, a couple of people who know Diablo and one guy who knows the game like the back of his hand and also gets all the speed upgrades so he can run around the game in the time it takes you to sort yourself out, get your bearings and get out of the town.  Perhaps this isn’t the best introduction to the game, and this hit-the-ground-running introduction to any game could make you hate it, but I feel that Diablo’s style accentuates this problem.  For example, if you hit-the-ground running in an FPS like Call of Duty or Counter-Strike, it’s not hard to get the hang of things, buying weaponry if necessary and to start running around trying to shoot things, and if you’ve played any FPS before, the skills are entirely transferable from game to game.  If you hit the ground running in a Strategy game, you’ll probably loose, but you’ll get to explore the economy system, learn about what buildings build what and get to grips for a future game.  You might even be in Teamspeak and have a friendly co-player who may dispense some advice in your direction.  In Diablo, if you hit the ground running, you don’t have any idea which direction to go, so you have to spend all your time playing catch up with your buddies, which means you’ll be spending all your time running through dungeons trying to find your mates who’ve already slaughtered.  The fun continues when you catch up with your mates though, because by not partaking in the combat they’ve just done, you won’t have received XP and levelled up, so you either won’t be able to use the weapons they looted or they won’t have any weapons to give you because they just sold them all back at Town while they were waiting for you.  So you end up not being able to join in or be able to even attempt to contribute at all.

This might not be so bad if you could spend the time admiring the graphics, or the world detail, or anything, but Diablo II was an old game by the time I played it and the graphics low resolution sprites weren’t awfully pretty then.  You just end up clicking around this Medieval dump of a world having negative fun because you’re not involved and you’re constantly whining on Teamspeak to get someone to put up a town portal so that you can join them (oh, and woe unto you if you go through the wrong one, and it closes).  The mechanics don’t help this either.  I appreciate that most games, especially those with combat, involve producing random numbers when you click on things, but Diablo feels like a particularly thin wrapper around that.   In the experience I’ve had I don’t really feel I’ve connected with my character as he heroically lunges and stabs his spear into a skeleton when all I’ve done is clicked on something.

The Diablo world doesn’t push my buttons either.  I’ve never really gotten into the high fantasy genre, sure you can make some pretty epic movies with them but, I don’t find such worlds nearly as compelling as a good space-based science fiction setting.

In summary, I think the problems I have with Diablo boil down to the fact that I haven’t had fun playing it, and I think that when you’re not having fun, the repetitiveness of the interaction with the game and somewhat lousy and uninspired setting shine through and demolish the game’s experience.

Although much the same game, I’ve never had this problem or history with Torchlight and I figured that evaluating it on its own merits would satisfy my curiosity as to whether Diablo could be fun or whether the whole thing is a race to see who can get RSI first.  The first thing that struck me watching my friend play Torchlight II, was the graphics.  The world was bright and attractive, the style was cartoony.  Sure, by today’s standards the textures seemed a bit lacking in detail, but I guess it conveyed to me a world worth fighting for rather than some place that only the damned seem to inhabit.  Having some entertaining, goofy, caricature graphics helps bring some fun and smiles to the game that come from somewhere other than the really high numbers you’ve managed to get the game to generate for you as you click.  Numbers are, just numbers to me and if you like them that much, why not go research them at university?

The developers of Torchlight seem to have put more effort into other areas as well.  Most of the class names aren’t taken from the Beginners High Fantasy Dictionary, as they seem to have in Diablo III and you can have a pet, including a ferret with goggles and a sweet bird available in eagle or blue livery.

Maybe I am being unfair on Diablo having not properly played it and having not been introduced to both games in the same manner, or maybe I am just being contrarian like I usually am and disliking something just because everyone else likes it.  Either way, my initial impressions of Torchlight II were so good I bought it on Steam, whereas a Diablo game still has yet to make it into my collection…

In other news exams are over! Slacking time is here!

#18/05/2012#

"Why I Love Maths"

I’ve been revising for my last ever university exam over the past few days, for Advanced Algorithms and Complexity.  The unit is full of theoretical computer science about the nature of algorithms, models of computations, optimisations and efficiency.  Being full of theoretical computer science, there’s an awful lot of mathematical notation bolted on the side.  Sometimes it works, other times it’s a dreadful cludge as notation developed for relatively simple, loosely typed algebra suddenly has to deal with structures and control flow and the fact that there aren’t enough operators under the sun.

One particular interesting line of maths I came across in the notes looked like this:

Now, for those of you at home who aren’t up to speed on the latest developments in theoretical computer science concepts, I’ll introduce a few to you.  An Alphabet is a set of symbols used as input to a computer program, these could be digits, letters, or any other symbol with some meaning to the program.  A Word is a sequence of symbols in an Alphabet and a Language is a set of Words.  In particular for an alphabet A, A* is the set of all possible words that can be created by symbols in that alphabet, even the infinitely long ones.

Given those concepts, and the fact that one typically uses uppercase letters in Maths to represent sets, and |A| is typically represents the number of elements in A, you’d be tempted to think that the above line of maths related to some kind of languagey thing.

But it doesn’t.  It actually relates to the relative error in an approximation algorithm and C and C* are in fact scalar values and |C*-C| is actually representing the absolute value of C*-C.  Even within a single domain of study, Maths is uselessly ambiguous…

#15/05/2012#

"Why PCs Are Better Than Macs"

The following is an essay I wrote in first year to win a copy of Microsoft Office 2007 Professional Edition from the Computer Science department’s Microsoft representative monkey.  Please bear in mind it’s about 4 years old.

The Apple Macintosh was developed in the 1970s and 80s by a number of technicians at Apple as a personal computer aimed at the average consumer.  The IBM PC compatible was a platform spawned from the IBM PC, developed in the 80s by IBM, who used off the shelf components along with a proprietary component called the BIOS to create an expandable personal computer.  The IBM PC compatible platform was started by Compaq, who successfully reverse engineered the BIOS and went on the undercut IBM and beat them to a number of milestones.

The evolution of the PC and the Mac has been very different.  The PC has constantly focused on expandability and backwards compatibility, whereas the Mac has floated between processors to suit the commercial needs of Apple and it’s customers.  This is what has driven the success of the PC platform as users and companies aren’t going to pay for hardware upgrades that will make their software run slower.

Another fundamental difference between the PC and the Mac is the choice that one has for the components of the machine.  There are lots of vendors who provide a variety of compatible PC components, you can buy a processor from Intel, a motherboard from Asus and a graphics card from nVidia.  All those vendors compete with other vendors resulting in highly competitive research and pricing..  With a Mac you can choose one or seven, highly targeted, uncustomisable models based upon what Apple has decided you can have and the price at which you can have it.  You can’t even choose to have a pink one.

But the hardware is only one half of the story.  PCs were never designed for a particular operating system (OS), so hardware vendors are encouraged to support a wide range of OSs rather than just one so that their product is as marketable as possible.  Similarly OS writers are encouraged to support a wide range of hardware.  The Mac experience is not complete without OS X.  You can only get OS X with a Mac and you can only get a Mac with OS X.  There is no incentive for hardware vendors to support OS X because no one’s going to use their hardware on it and vice versa.  This translates to a lower install base of OS X, so application writers aren’t going to be so keen to port their applications to OS X, so it is left to Apple to write and sell applications with high markup to it’s users.

Finally, the future.  It is clear that wherever computing is going, the PC with its ubiquitous, expandable architecture can go there to, and innovations like USB, TV Cards and Physics cards have shown that.  The Mac on the other hand is nicely controlled by Apple, and if the iPhone and App Store are anything to go by, it may be that only Apple approved code will be able to run on a Mac, which would be really bad for computing all round.

#28/04/2012#

"Avengers: Assemble"

We went to see Avengers: Assemble last night (in 2D, the superior viewing mode of the cinema) and it was awesome.  The action was great, the superheros all worked together very well and the plot worked, and from what I hear it followed the themes and conventions of the comics well.  I was quite suprised, however, to see Victor as a Cop and Robin as the captain\executive officer of Cloudbase.  We can therefore only assume that Robin was working as an undercover journalist inside SHIELD and that the Marvel Universe intersects with with How I Met Your Mother and Dollhouse universes.

Talking of Cloudbase, they totally have an airborne aircraft carrier with a cloaking device.  When it first appeared I think it took about 30 minutes to pick my jaw up off the floor.  I think it is only fair to say that Cloudbase (actually called the Hellicarrier, but as Captain Scarlet has proved, Cloudbase is a far cooler name) was the unmistakable star of the show.  The special effects as Cloudbase lifts off and flies around are incredible and the bridge is quite possibly the coolest and most modern bridge I’ve seen for a long time (it’s far better than the Mac store they transported onto the Enterprise’s bridge in Star Trek).

Overall, a thoroughly enjoyable action film and highly recommended watch.  If you haven’t seen it already, the very next thing you should do is get down to your local cinema and watch it.

#08/04/2012#

"Taking it too far"

I hope these guys don’t take their recreation too far…

#02/04/2012#

"I wish I owned an iPhone"

Because giving this demo to people would be hilarious, and highly educational.

#29/03/2012#

"Python to the rescue"

Assuming I am successful at the last few months of uni and get a good degree, I will almost certainly attribute my success to Python.

Imagine the scene – you’re in your final year, you have a dissertation and a couple of courseworks from other units, which could easily take a large chunk of your time as you get to grips with a new language, library or technique that the lecturer has recommended.  Imagine also, that you care about the code you write – you don’t like hacking at things until they work because that’s just fire fighting, that doesn’t involve the kind of understanding that well crafted code displays – and it’s the communication of that understanding that you’ll get marked on.

So, as a time-stretched final year, you’re going to need a portable, easy to write language with a wide array of libraries or packages to support the kind of things you want to.  This language needs to be quick to write and allow you to well structure the important parts of your code, while being able to gloss over the parts you may not need or have time to complete.  In other words, you want a strong, dynamically typed, high level language with classes and functions, which is flexible and well understood.  In other words, you want Python.

I have used Python for 2 out of 5 courseworks this year (only 2 because Python is not good for multi-threading, and couldn’t run on Lego NXTs), and it’s been incredibly useful.

In the 1st semester, Compilers has a 75% coursework, which everyone usually does in C.  Unfortunately C is a remarkably picky language, the syntax is a bit nasty, you’ve got to be careful about memory, and the lack of classes makes a C-based compiler feel inelegant.  Python on the other hand has exactly the built-in data structures you need, supports classes, is quick to write and you don’t need to care about memory.  I got 72% using Python in that coursework, when most other people got low 60s high 50s.

In the 2nd semester, AI has a (well 3 actually, but only 1 can actually be done in Python because of NXT robots and smart AI development environments in the other 2) coursework to implement a simulation of robots looking for a food source.  The robots are controlled by a simple neural network, and then evolved across generations by applying a genetic algorithm to random pairs of the top 20%.  The aim is to see an increase in performance in successive generations.  We were recommended to use NetLogo, which is an agent based simulation environment combined with the Logo scripting language.  We don’t need half the complexity of Logo, we just need a thing which lets robots move around.  Enter Python – nicer syntax, nicer development environment, and the simulation one can cobble together in a few hours is A) enjoyable to program and B) just as fast as NetLogo…  And if you want to see what your robots are doing, you can combine all this with matplotlib, which provide graphing functionality to Python so you can draw the location of your robots, the direction they’re facing and watch them move as your simulation proceeds.

Obviously constraints are different in the real world, and there’s a much greater focus on quality of the actual code you write rather than how quickly you can write it, obtain understanding and write about that.  For GUI purposes, I can totally understand going for something like C# rather than Python, but Python can do GUIs as well…  Either way, if you’re looking for a language to draw up a quick, flexible program, I can only recommend Python.