Friday, 15 May 2015

Red Reading Light

As a child, I discovered that covering my torch with a piece of thin red paper would make it less likely that my parents would notice I was staying up late to read in bed. Later, at boarding school, I found the same trick enabled me to share a dormitory without being assaulted for disturbing my roommates' sleep. These days I only share a room with my wife, but I still like to read at night. Of course, technology has moved on since I were a lad, and back-lit Kindles and ebooks on smartphones now exist, but I've found these to be a threefold disappointment: not only are they quite capable of disturbing a nearly-sleeping partner, even on their lowest brightness or 'night mode', but they ruin one's night vision, and, according to the WHO, their blue/white light can make it harder to fall asleep. The only torch I own these days is a one-million-candlepower monster I use for finding lost cats; not really something I can take to bed, even if I ignore the fire hazard inherent in covering its glare.

My solution was to make an Android app; after firing up Eclipse, discovering that there was now a dedicated IDE in the form of Android Studio, installing that instead, and laughing at the way I could create a working app by pressing only the tab key, I put together a very simple little thing that displays a red light on the screen of your device. Swipe along one axis to change brightness; swipe along the other to change hue. I added the option to change hue after testing it on an old device I had lying around and finding that even on maximum brightness its primitive screen was too dim to read by when a pure red - introducing a little more white to the mix solved the problem. Currently the app will keep the screen on forever; I might at some point go back and introduce a timer to turn it off after a pre-set period of time for those who tend to fall asleep while reading.

If that sounds like something you'd want, you can pick it up on the Play store for £0.68 (or a similar amount in your local currency). I realise that charging real money (however small an amount) for something that simple is something of a breach of internet etiquette, but it doesn't have any ads or weird data-mining permissions or any of the things that usually come with free products.

Saturday, 18 April 2015

How to get Solitaire, Minesweeper, or any other Windows 7 game on Windows 8

I bought my wife a Windows 8 laptop a little while ago, and while it's very good in many ways and far from the satanic product it's often made out to be, it has one major flaw: it doesn't ship with Solitaire! Or Spider Solitaire, or Minesweeper, or any of those games that make office life ever-so-slightly less awful. Installing these games turned out to be a rather more involved process than I thought it would be, and I thought I'd put together a guide for those who wish to replicate it. While it looks rather complicated, it's not really difficult at all, and I've tried to write this guide so that even the most technophobic of readers can follow it.


It's worth noting at this point that Windows 8 versions of the games are available free from the Microsoft store: just open the store and search for "Microsoft Solitaire Collection". For many, these will be a perfectly acceptable methadone; what follows is for those purists who seek a more traditional opiate. To follow this guide, you will need:
  • Access to a machine running Windows 7
  • A memory stick or some other way of copying .exe files to the Windows 8 machine
  • An internet connection.

Friday, 5 September 2014

Back to Work: Aspect Ratios and Talent Trees

My goodness, the last post was in April. How lazy I've been.

In my defence, quite a lot has happened since then. In May I started the full-time crunch/panic appropriate for the end of my degree (actually that started quite a bit earlier, but playing games and writing about them is a pleasant form of procrastination), and then in June I got married. July was mostly spent on my honeymoon, and now August has passed while I sit at my desk, calling strangers and asking them for a job (or rather, another job; I've been employed for the last two years as a writer/editor/VBA developer by a law-publishing firm but it's getting rather dull now). However, I have not been completely idle.

For example, this blog now has more draft posts than published ones. Why? As usual, there's someone who can explain that better than I can:
‘My problem is that I’ve now reached the stage where I really can’t work out what I think unless I write it out; the process of writing is now so intimately connected to my broader processes of cognition and judgement that I can’t really do without it. I’ve got those writerly blue-on-blue eyes now, and without my regular doses of ecriture ‘Melange’ I’d be in a parlous state’ - Adam Roberts
In short, I've been writing posts to work through various game design problems and then, having reached a conclusion in my head, gone away and implemented that solution without writing the rest of it down. Without the need to work through an argument on paper/screen, the post withers and dies like the grass and the flowers that fade, while the word of the LORD stands eternal. Sorry, not sure what happened there.

Anyway, I've been dallying with the idea of working all these little problem-solving exercises into full posts, but I can't quite bring myself to do it—partly because it would represent hard work, to which I am ideologically opposed, and partly because in hindsight the solutions are so obvious that I'd feel like a right muppet admitting that I'd had to think about them at all. On the other hand, it may well be that there are some people out there as stupid as I am (unlikely but theoretically possible), and so someone, somewhere might gain some small benefit from my conclusions. As a compromise between dignity and mistaken do-goodery, I'll make mini versions of each post, summarising the problem and my particular solution. Two will do for now and future ones may get their own posts. Enough waffling.

Aspect Ratios
Problem: Not everyone's PC monitor has the same aspect ratio. Most (players) have 16:9, but many still have 4:3 or others. The usual solution to this, at least with FPSs and similar, is to make exactly the same game but reduce the field-of-view or camera angle for the narrower screens, reducing the amount that you can see on the screen at once. My game is a top-down turn-based team-strategy affair, and I want the entire arena to be visible on-screen at once without having to scroll/zoom, so this camera-based approach isn't going to work.

Thursday, 17 April 2014

First Thoughts: Imagine Earth Demo

The concept of Serious Brothers’ Imagine Earth is planetary colonization – a concept which, having just completed a Firefly marathon, I found immediately appealing. The difference is that while in Firefly the colonization is performed by governments fleeing an Earth that was ‘all used up’, here you’re an employee of Weyland-Yutani (I forget the actual name), one of a number of corporations who have moved to space to ‘preserve the dogma of unlimited growth’. This may seem to be a rather arbitrary distinction, but the artificial demand for growth becomes increasingly important and is worked into the mechanics in a rather pleasing way.

Friday, 4 April 2014

Archer's Sexual Partners

Dissertations and deadlines have delayed me, but I've finally caught up with the excellent Archer, now in its fifth season. The first three are on Netflix, and while binge-watching I was struck by just how complicated the characters' sexual lives are. After a couple of episodes I went back and started making notes, and continued to do so for the rest of the show. To satisfy some bizarre urge I've charted the various relationships; obviously season five isn't over yet so I'll probably have to make some additions, but for now BEHOLD: [EDIT: Now complete for the end of season five]

Thursday, 3 April 2014

Charting the Quantity of Harry Potter Fan Fiction

Ok, so I should probably start with the ‘why’…

As some of you will know, I’m currently concluding my BA in English Literature (don’t laugh). One of the courses available this year was ‘Children’s Literature’. Being an enormous snob I didn’t take it because it included a small section on Harry Potter, and I do not want to have to admit to having studied Rowling, however briefly, for my degree. However, many of my friends (who are not such massive snobs and consequently much nicer, better people) did take the course, and so every now and then the conversation turns Potter-ward. A couple of weeks ago the topic at hand was whether Potter had ‘run its course’, inspired by a remark to that effect from the lecturer (the esteemed and june Adam Roberts), and how one could possibly measure that.

Various ideas were put forward – sales figures, new editions, etc. I suggested fan engagement – in particular the ability of Potter to inspire new ‘literature’ in the form of fan fiction. It would be interesting, I said, to know whether the amount of Harry Potter fan fiction was increasing or decreasing over time.

So that’s what this is: an attempt to measure the subset of a subset of a pointless and frivolous question which benefits no-one. BA students, you’ll feel right at home.

Sunday, 30 March 2014

Unity Tips: Swipe controls for Android and iOS

I've been doing a bit of work in Unity lately, putting together a basic Android game to teach myself the basics. I wanted to use swipe controls to move the player, and I think I've come up with a pretty nice template I thought I'd share with any other beginners out there. It's based on this script by Sushanta Chakraborty, but I've made it a bit more powerful and responsive. A brief explanation is below for those still learning C#.

using UnityEngine;
using System.Collections;

public class SwipeControl : MonoBehaviour
{
    //First establish some variables
    private Vector3 fp; //First finger position
    private Vector3 lp; //Last finger position
    public float dragDistance;  //Distance needed for a swipe to register

    // Update is called once per frame
    void Update()
    {
        //Examine the touch inputs
        foreach (Touch touch in Input.touches)
        {
            if (touch.phase == TouchPhase.Began)
            {
                fp = touch.position;
                lp = touch.position;
            }
            if (touch.phase == TouchPhase.Moved)
            {
                lp = touch.position;
            }
            if (touch.phase == TouchPhase.Ended)
            {
                //First check if it's actually a drag
                if (Mathf.Abs(lp.x - fp.x) > dragDistance || Mathf.Abs(lp.y - fp.y) > dragDistance)
                {   //It's a drag
                    //Now check what direction the drag was
                    //First check which axis
                    if (Mathf.Abs(lp.x - fp.x) > Mathf.Abs(lp.y - fp.y))
                    {   //If the horizontal movement is greater than the vertical movement...
                        if (lp.x>fp.x)  //If the movement was to the right
                        {   //Right move
                            //MOVE RIGHT CODE HERE
                        }
                        else
                        {   //Left move
                            //MOVE LEFT CODE HERE
                        }
                    }
                    else
                    {   //the vertical movement is greater than the horizontal movement
                        if (lp.y>fp.y)  //If the movement was up
                        {   //Up move
                            //MOVE UP CODE HERE
                        }
                        else
                        {   //Down move
                            //MOVE DOWN CODE HERE
                        }
                    }
                }
                else
                {   //It's a tap
                    //TAP CODE HERE
                }

            }
        }
}

Ok, so what's happening here? 

Friday, 28 March 2014

Review: Yorkshire Tea

The first thing you need to know about Yorkshire Tea is that it's not actually from Yorkshire. If, like me, you were expecting, nay, hoping, for a vast, Eden Project-esque biome covering the North York Moors, filled with tea fields, you will be disappointed. The name is purely a branding exercise exploiting the fact that the company selling the tea was founded by a Swiss man who opened a tea shop in Harrogate, which, for our foreign readers, is in the West Riding of Yorkshire, which is in England, which is part of Great Britain, which is part of the United Kingdom of Great Britain and Northern Ireland, which is mostly situated on the British Isles. While the brand itself has been around for a while, it started advertising fairly vigorously about five years ago, and has been getting product placement from TV shows and celebrities and so on, which is odd, for tea. But then, so is trying to market 'Yorkshireness' as a desirable commodity.

But enough preamble. What's the tea like? Well, to answer that I probably ought to tell you a little about my tea-drinking preferences; in areas of taste there's almost no objective handle to be found, and so one must understand the subjective biases of the reviewer in order to parse and render their opinions. I am a Strong Tea man. I like my elements so mixed that a spoon might stand up in them. However, I am also a man of Taste. No PG Tips or Tetleys for me. 'But those are strong teas!' I hear you cry. Yes, they are. But, just as one can desire strong alcohol without wanting to drink prison lavatory wine, one can like strong tea without wanting PG Tips. It is not that it is too strong for me; it is that it is unbelievably shit. When I drink a gin and tonic it is mostly gin, but it is good gin. So, strength and refinement, that's me. If I weren't engaged this would probably make an excellent dating profile.

My spirits were raised, then, when I looked at the side of the box and saw that it recommended a full five minutes of brewing time. 'This', I said, filling the teapot, 'is a tea that demands to be strong'. I was wrong.

Yorkshire Tea is incredibly bland. The five minutes brewing time is recommended because if you gave it any less you'd be drinking a mug of hot, grey, diluted milk. It's not that the taste is unpleasant - quite the opposite - it's just that there's very little of it. And, bizarrely, it's not a question of concentration. I tried two bags, then three; then leaving it for ten minutes, then fifteen; then stirring - and it didn't make the slightest bit of difference. No matter how strong you make it, the flavour never really manifests itself.

It's driving me a little bit mad. I bought a several-thousand-bag chest of it from Tesco because they were out of everything else, and now I haven't had a proper cup of tea for weeks. I'm drinking it as fast as I can, but that just makes it worse, because the cravings keep getting stronger and stronger. I'm currently editing a fifteenth-century manuscript due in for Wednesday, and I'm staying up all night to get it done, and I haven't had anything to drink for so long and I really need it and GIVE ME A GOD-DAMN CUP OF TEA I WILL BURN THIS PLACE TO THE GROUND






Thursday, 13 March 2014

Thief and Stealth Systems

Yes, I know I'd said that this would be about plausible level design, but that's taking me rather longer to research than I expected, so instead let's talk about stealth systems. What I want to do here is define the characteristics of stealth in the original Thief games (particularly T1 and T2), compare these to stealth in Thief, and examine how the stealth systems have affected the rest of the game.1

In the beginning we lived as thieves

The easiest way to describe the stealth systems in Thief is to list the ways in which the player could be discovered by the AI. You could be seen, heard, or noticed. By 'noticed', I mean that a guard could become aware of your presence not because they saw you, but because they saw something you had done to the world, such as the dead or unconscious body of a guard. 'Noticing' is probably the area which changed the most over the course of the series: guards in T1 only responded to bloodstains or bodies, but by T:DS they could notice open doors, doused torches and missing loot. Covering most of one's tracks was easy, but hiding bodies was a slower process that frequently caused the player to become more exposed. In the first two games, bloodstains could only be removed by water arrows, forcing the player to balance the risk of a guard discovering them against the cost of the arrow.

Monday, 10 March 2014

Thief in Brief

I finished Thief on the day it came out, and I’ve been trying to write a review ever since. It currently stands at around 11,000 words – far too long, even for a blog as self-indulgent and meandering as this one,1 and so instead putting out one massive review, I’m going to write a series of posts covering various aspects of the game such as level design, stealth, etc., and my thoughts about those aspects of games in general. For now, though, a review in miniature.

Monday, 6 January 2014

Review: Sherlock, The Sign of Three

"There are", said Holmes, drying his hands in the court lavatories, "two types of fan. People who love the show because it's a clever, well-written and excellently acted series with ingenious plots and smart references to the original texts - Type A."

"What's Type B?" asks the hashtagger in a deerstalker.

"People who just want to see all the characters have sex."


Saturday, 21 December 2013

Sloth wasteth the sluggish body

You may have noticed that there have been no updates on the game development section of the blog for an embarrassingly long time now. I can make the usual excuses - I'm planning a wedding; I've got five essays and a book to write over the next three weeks; I'm too exhausted from work and am putting my free time into Hearthstone instead - but to be honest it's more because I'm lacking certainty in my convictions.

The problem is that I'm making a game where I should really be making a prototype. The foundations are all there, but currently the only way to actually play test mechanics is to code them in and then try them. This works, but takes a lot of time and effort because adding even quite a simple mechanic (e.g. an absorption effect) requires the alteration of a huge amount of existing code in addition to the new stuff piled on top. Oh, there are ways of mitigating the damage, which I've done, but the problem is that rapid prototyping just isn't really do-able with my skill-set and time restraints.

The solution to this, I've decided, is to take the game out of the computer and model it as a board game instead. There are, I think, a number of advantages to this approach. First, it makes rapid prototyping much easier. Instead of spending an hour unpicking my dearly-devised code I can simply print some more cards. Second, it forces me to simplify. There are always some mechanics which are better suited to a computer, even in turn-based games, but when you're having to map things physically it really forces you to question their necessity. For example, I'm currently running with nine (nine!) debuff categories, which can surely be consolidated. Third, it means that instead of having to worry about interfaces and so on (I know they're important but I don't want to be having to code an interface just to know if Frostbolt works as a mechanic) I can focus purely on the mechanics. Finally, it makes it easier for me to get my fiancée involved, and I value her opinion highly.

So, I'm going to go away and have a think about it, and get some cards and counters drawn up, and then when it's running I'll take photos and so on and show you all how it works.

~Roxton.

Tuesday, 10 December 2013

Patch Notes or: How I Learned to Stop Worrying and Love the Metagame

So right now there's a lot of wailing and gnashing of teeth going on because Blizzard have released their most recent patch notes for Hearthstone, and instead of fixing what the people on Reddit think is broken today, they've tried to fix what people on Reddit thought was broken yesterday. In particular, lots of people are angry about Mages, and Mages didn't get nerfed. In fact, claim some of the subreddit's more brilliant minds, the fact that things were nerfed that were not Mages means that Mages are actually being buffed.

As usual, the internet is overreacting, and here's why.

It's not actually that hard to make a deck that can reliably beat a Mage. People have been doing it for a long time, and it usually comes down to a combination of weapon (or other direct) damage, healing, and large minions. If you don't believe me, go and get the Trolladin running and try it out. Hilarity will ensue. The problem with this, as I'm sure you've realised, is that these three components fare extremely badly against the current popular metagame, which revolves around large swarms of cheap minions (Curi's Warlock deck is probably the definitive example of this). Mages are one of the few decks that can really deal with the swarm meta because of their large numbers of freezes and board clears, and so we have a Rock-Paper-Scissors arrangement: Trolladin beats Mages, Mages beat Swarm, and Swarm beats Trolladin. Reddit is angry because they don't have a deck that beats Swarm and Mages.

This isn't quite as unreasonable as it might sound, because currently the number of Mages is too low to make it worth playing Trolladin, but high enough to significantly dent the win ratio of anyone playing Swarm. Add to this the dominance of Mages in a recent tournament and you can almost understand why people are crying. So, if there is a problem, how can we fix it?

Friday, 6 December 2013

Making a physical Hearthstone set

I've been playing a lot of Hearthstone recently, and while I love it dearly, I do feel the lack of the physical element that accompanies other board/card games. In particular, I can't play it with my fiancée because she doesn't have a beta key. And even if she did, playing a game like this on two separate screens or tablets just feels silly. So, how can I make a physical version of the game that we can enjoy together? No, I don't mean a box with a tablet in it, cool though that undoubtedly is. I mean a real actual card game with cards and counters and the like.

Before we start, let's lay down some ground rules.
  1. No-one is allowed to say "but that's impossible". You can recreate the entire game with nothing more than a pen, (a lot of) paper, dice and a stop-watch. If you have a digital stopwatch you don't even need the dice.
  2. However, we want to make it as simple and easy to play as possible without changing the mechanics. Paper and pen (or more likely a small wipe-clean board and marker) is a last resort for cases like Lightspawn being buffed to 80HP and so on. I'm aware that other, real TTG/CCGs like MTG have wonderful things like damage counters and indicate status through card orientation and so on. Ideally I'd rather have something more obvious, even if it requires extra gubbins, because I've never played any other games like that and neither has my fiancée.
  3. Finally, we want to make it as cheap as possible. This is going to be horribly expensive and I don't want to declare bankruptcy until I've accumulated enough debt to really hurt the bank. Obviously this is in direct opposition to our second objective, so it will have to be something of a balancing act.
Right, let's get on with it.

Wednesday, 9 October 2013

Review: Atlantis

Atlantis is a new BBC One drama set in the eponymous city. The story, such as it is, follows a young man called Jason who is allegedly a marine archaeologist or somesuch nonsense but runs a profitable side-line smuggling live pigeons inside his pectoral muscles. One day when out looking for his dead father, his submarine gets sucked into a wormhole and he washes up in the mythical city wearing nothing but a novelty necklace and a grimace reminiscent of a particularly unpleasant bowel movement, which he retains for the rest of the program. Whether running for his life, pulling an arrow from his ridiculous bicep, flirting with Ariadne or fondling a young, geeky Pythagoras, he is steadfast in his refusal to exhibit any emotion beyond a kind of pained surprise.