Game Development StackExchange

Posted in Links from the In-tar-web on November 19th, 2010 by MrCranky

So for some time now, I’ve been using Stack Overflow as a great reference for the sort of iPhone development questions that come up when you try to do anything non trivial. Of course the SDK documentation covers quite a lot, but when you are trying to express a particular structure of UI, and find that you’re not doing things “the Apple way”, it’s not immediately clear exactly why or what to do. Of course, for almost every case, there are dozens of developers who have come before me who have already asked, and usually answered, the same question. Instead of hours of painstaking research or trial and error, usually the answers on Stack Overflow are enough to point me in the right direction, if not provide a solution to the problem outright .

And it’s that sort of standing on the shoulders of giants that I hope that the Game Development Stack Exchange site will help provide. Recently out of beta, the community there has quickly flourished into a fully fledged site, with a good breadth of knowledge. As will all the Stack Exchange sites however, it’s only as good as the community makes it, so in an attempt to be helpful, I’ve tried to ask some interesting and useful questions, and provide some informative answers of my own.

Sadly, as with any open and un-gated site, there are more than a few contributors who are, quite frankly, not contributing so much as dragging the place down. Thankfully there are mechanisms in place to vote down the more useless questions (such as What’s the best phone for game development?) and vote up the more interesting ones (like Fixed time-step vs variable time-step and What can cause alt-TAB to be annoying / slow / glitchy?).

As always though, only time will tell whether it will turn into a useful resource, or will degenerate into questions asked by amateurs and answered by idiots. The only way I can see to properly raise the signal-to-noise ratio is to encourage my fellow developers to visit, find a few questions to answer, and vote down any questions that don’t add any knowledge to the community. And so this post, such as it is, is my little attempt to raise awareness of the site amongst the wider game development community. And feel free to add an answer to my only question so far. 🙂

Squirrels

Posted in Tales from the grind-stone on November 18th, 2010 by MrCranky

So we haven’t seen Sid or Sally Squirrel for weeks now, after them being around almost every day. Tim spotted another visitor though, who left before we could figure out if it was one we already knew. This one seems substantially stupider though. Not only is it still out and about even though the weather has turned decidedly chilly, he tried to stash a peanut he’d found here: in the corner of our window. Right out in the open. Yeah, no-one else will ever think of looking for it there. Certainly not all the birds which nest in the trees all around here.

I have this narrative in my head now of a lazy squirrel that wakes up one morning in November, hung-over to all hell, and realises that it’s frosty and he’s seriously late for winter. And now he’s dashing around, cursing under his breath at the monster head-ache he’s got, stashing food any old place. All the good places are taken as well, so he ends up stuffing them in all sort of rubbish places. Since I’m an unabashed cynic though, the story ends with him lifting up a particularly grumpy cat’s tail and trying to stash an armful of brazil nuts under the cat, only to be unpleasantly and messily devoured.

Software Engineering Methodology versus The Real World

Posted in Coding, Random Stuff on November 12th, 2010 by MrCranky

It’s often the case that in the industry,  people will do research on particular software engineering methodology, or a team will publish a post-mortem in which they talk about a particular style of working and how successful it was for them. And the discussions following those posts will usually descend into an argument, with different people chiming in on how they tried that methodology, and it was rubbish, or how their own methodology (or ideal methodology) is better.

This sort of debate annoys me, because it’s always couched in absolutes. In software engineering there are no absolutes. So I felt I had to respond when someone declared, without much in the way of context:

Asserts() should always be on during development.

No they shouldn’t. At least, not unless your team ethos supports it.

Just like all of these statements about how things should or shouldn’t be done, there is a whole bunch of context needed before you can say whether or not a strategy is successful or not. You can’t just look at those stats and say “TDD is the way to go”, or “asserts should be everywhere and always on”.

Every last one of these tenets of development requires a particular way of working before it is viable and/or usable. Asserts are great, as long as the team ethos is to never (or nearly never) allow them into a live build. What do you think you get if you just turn asserts on everywhere, when the build is riddled with conditions which aren’t show-stoppers, but which result in asserts? You get designers and artists that can’t use the build any more, and everyone gets pissed off.

Similarly, what do you get if you have a team which is notionally doing TDD, but in fact many of the developers aren’t structuring their code to support complete tests, or have incomplete test coverage where it counts? You get slower development, without a great decrease in the number of defects, and now you’ve got less time to fix them when it comes time to ship.

People should stop looking for one-stop, quick fix solutions to the problems which all development teams have. Every last one of these solutions will a) make things worse if applied in a half arsed way, and b) stem from an underlying mentality which is “what can we do to improve maintainability, increase coder efficiency, and smooth out problems in our day to day development?”

Sure, read the stats, read other people’s techniques, but for the love of Mike, don’t try to just stamp a particular technique on your development team and expect it to improve your lot. Instead, take a long hard look at your day-to-day process, identify the root of the problems that your team actually has, and take small incremental steps to fix those problems. Repeat ad-infinitum (or until you ship).

More than anything though, make sure any steps you do take work with the team you currently have, not with some ideal team that you’ve read about. If you find yourself applying a solution which will only work if everyone has a certain mentality or set of skills, then you’d better make damned sure that your team has those things before you try to apply the fix.

On Being a Games Artist

Posted in Games on November 5th, 2010 by OrangeDuck

I remember well the moment I realized that game art was probably going to be the most rewarding and fulfilling career option for me. I was talking with another artist and it was almost an hour into a conversation dedicated to techniques of achieving ambient occlusion in real time. At this point I realized three things. Firstly, that peculiarly, I was still enjoying the conversation and felt I had things to say. Secondly, that for the sake of everyone else, it was a good thing I had never met another games artist at a party, and thirdly – that game art is probably my best chance of getting a job doing something I love.

I’ve come to realize that game art is a fairly niche interest. There isn’t a digital art society at the university, and even if there was, I suspect the chances of me meeting another games artist there would be low. When I explain to people what game art actually is, I think they imagine it more as a technical skill – they imagine learning how to use certain computer programs or tools in a similar way to when they learnt how to use Microsoft Word. Perhaps this is to be expected. Although many games in the past have been very beautiful, and I’ve played games in which I’ve been attached to a certain character, often any real feeling is overshadowed by underwhelming storyline, hollow characters and immersion-breaking glitches and oddities. It is still generally an odd thing to think of game art as something that expresses emotion, feeling or ideas – something that comes so naturally to conventional art forms.

I suspect the majority of games artists, when you ask them what they do, will say they “make games”. Not, as their title might imply, that they are “an artist”. In some ways I resent this. Not because “making games” is some sort of trivial pursuit, but because in a greater sense, an artist is attached to themselves, their own experiences, and the artistic community – more than their company or game, of which they might have little input into the real “game” part of. Even more so, game art is not like programming, or the technical use of a special tool. Game art is a creative process. It requires the same state of concentration used for other creative processes. It requires experience, training and knowledge. It requires for the artist to hold an image of what they wish to create in their head.

Perhaps people’s impressions will soon be changing. There is a new form of media taking it’s baby steps into the world – so called “interactive storytelling”. I may not be in the majority with this view, but I am extremely excited about it.

As computer power, artistic skill and graphics engine design have improved, we have finally reached a point where we can render semi-photo-realistic scenes in real time. This gives “interactive storytelling” something over film, books and music – a level of simulated interactivity. Whether this can actually contribute anything to the experience is up for debate, but what it certainly does do is create a reason for this new form of media to exist – and that is enough for me.

There was recently an update to what is one of my most anticipated game developments ever:

The Dear Esther Graphical Remake

Not only is Robert Briscoe one of my favourite digital artist of all time (Having worked on Mirrors edge, a game with simply spectacular visuals), but Dear Esther will probably have been most people’s first introduction into interactive storytelling, and probably the best example of its genre to exist.

The graphics in the updated development version are not only stunning in their realism and technicality – but more importantly they are deeply emotional and the product of a personal project – something that is perhaps more familiar to the creative process of conventional artwork than we have seen before in the games industry. In this sense, the update is a true landmark.

I can’t wait for Dear Esther. Not just because I believe it will be a unique and beautiful experience crafted by some of the best minds in the games industry, but because it might even make me reconsider how I view myself. And perhaps the games industry will do the same.

Game Development Budgets

Posted in Industry Rants on October 31st, 2010 by MrCranky

As I mentioned before, this post started life looking at the various big budget game studios which have gone under recently. After reading it over again before posting, I decided to scrap it. While I do see the wave of studio shut-downs as being directly related to the poor profitability of games, that’s just a supposition on my part. And to list the many failing cases would be both depressing and insufficient as an argument anyway. It’s not enough to look at only the failures, you have to look at the successes as well.

And therein lies the problem. There aren’t enough successes. Sure they’re out there. World of Warcraft, Halo, COD4, Red Dead Redemption. But for every Halo there is a Haze, for every World of Warcraft there is an APB. What matters, for the health of the industry in general, is that the averages play out. It’s not enough that a hit brings in $100 million in profit, if for every hit a publisher also ships 6 titles that lose $20 million each. If every title was independent, that would be fine: quality is rewarded with profit, and its lack with loss. Businesses who make poor quality product should be punished, that is all part of a free market system.

But the problem is that the businesses at the core of the current system, the publishers, are shipping titles on both sides of the line. This is what they’ve always done. There’s nothing really wrong with that: it’s extraordinarily hard to predict in advance whether or not a title will be a success, and certainly not before a lot of money has already been sunk into the project.

What made such a system workable was that in the past, the profits on the hit titles were so much larger that they easily paid for the development of the flops. All publishers had to do was to stay on the right side of the line – make sure their hits were big enough and their flops were infrequent enough. So what has changed? Budgets.

Development budgets used to be far, far smaller. The retail price of games has stayed mostly the same, and the number of units sold has risen, not by much, but risen. But the budgets have gone insane. In any other business, the notion of accepting costs an order of magnitude higher, knowing that the incomes wouldn’t jump in the same way, would be madness. Bit by bit, the publishers have slipped to the position where only a few flops in a row is enough to cripple them.

For the games industry to be healthy again, an average game needs to be able to make money. That’s how averages work. If you have to be in the top 10 or 20% of titles just to break even, then there is 80% of the titles being made that are losing money, and those 80% cost almost as much to make as the top titles. And in the end, the funding for that top 20% comes from the same businesses that are funding the bottom 80%.

It’s not entirely the publishers’ fault – the console platform holders gave them a technology platform for which the development costs were far higher, and then took the old platforms away. No-one asked the consumer if they were prepared to pay a higher price for games on those platforms, because we knew they wouldn’t. Instead, the industry held their breath, and sucked up the increased risk and cost, hoping that they would be able to make good enough games to survive. That’s not a healthy business model.

Have you seen any new publishers enter the market recently? There’s a reason for that. Our business isn’t one that people want to get into. If publishers were making good money, for every failure because they shipped consistently poor games, another business would arise with a better focus on quality. That’s not happening – even the most experienced publishers are struggling for air.

It’s not just the publishers either. I know many developers who refuse to consider making anything but top-flight AAA titles, pushing the hardware to the limit. When it is suggested that titles on that scale aren’t profitable, they sneer, and point at the successes, and ignore the failures. They say that if being profitable means making social networking games, or mobile titles, then they don’t even want to be in the industry any more. What sort of an attitude is that? “If I can’t make these shovels out of diamonds, I don’t want to make shovels any more.” Does anyone want a diamond shovel? No. If you’re offering one for the same price as the old wood and steel shovel, then sure. But the old shovel was fine for me, and I don’t have any more money to spend on shovels than I had before.

The pre-owned market is a big indicator of the pain going around the industry at the moment. Consumers think even the current price points are far too high, so when retailers like Gamestop, etc. offer them a re-sale value that gets them the same games for cheaper, they jump at it. Why are the retailers pushing it? Because their margins were getting trimmed to the point where they couldn’t make a decent profit. Why? Because the publishers were also trying to maintain a decent profit level themselves, as risks and increased costs of development slashed their profits to ribbons.

What to do? Fix the budgets. Better efficiency. Get scope under control – no more long games for the sake of it. If one publisher takes the first step, back towards to profitability in their core business, is the consumer really going to abandon them? Will they really not buy a high quality game because it’s shorter than some other publisher’s offering? And if they don’t, what about next year, when that other publisher has gone under, and there’s no “other game” to buy?

Expanded Team

Posted in Tales from the grind-stone on October 10th, 2010 by MrCranky

So it is with great pleasure that we can welcome a new member of the Black Company Studios team. Daniel Holden is joining us part-time, while he also works towards his degree at Edinburgh University.

Team Photo (Dan, Tim and Chris)

Our new and slightly larger team, at Ghillie Dhu in the West End

Dan brings much needed artistic ability to the team, and even though he’s only working a few hours a week, should give us the ability to make our prototypes look much, much prettier. Certainly much prettier than the photo above, taken in poor light conditions on an iPhone as we partook in a celebratory drink. We’re not that blurry really. Well, Tim and Dan aren’t at least; since my beard has reached full thickness, all of my edges are pretty fuzzy now.

Westminster Scottish Affairs Committee

Posted in Industry Rants on September 8th, 2010 by MrCranky

I had a big blog post written up on various redundancies, companies folding, and how they related to game development budgets. Re-reading it now though I’m not happy about it: too much hyperbole and supposition, and very little in the way of hard facts. I’m going to scrap and re-write it I think; and rather than dwelling on the down-beat, focus instead on a general view of the overly large budgets / scope of current-gen games. Anyway, in the meantime, here’s the response I wrote up to the Westminster Scottish Affairs Committee, who are investigating the implications for the Scottish industry of the scrapping of the tax breaks scheme, which has been proposed, ignored, accepted, and then scrapped. Not that I think it affects the Scottish industry much now – RTW might have made use of it, none of the remaining developers really stand to gain very much from it as it was. Anyway, I don’t mind making my response open.

Executive Summary:

If the government wants to help the games industry, rather than through relief on corporation tax, it should do so by improving the quality of the talent pool. By supporting education, apprenticeships and internships within games developers, and making it easier and cheaper to hire talented but inexperienced staff. In doing so, it will help maintain the UK’s competitiveness as a creative centre, and the returns in increased profitability for UK developers should pay for the incentive schemes. Any incentive scheme which rewards large non-UK publishers will in my view be less effective than one which supports the myriad of smaller developers, many of which are wholly UK-owned.

Full Response:

Sadly, since the original request for input to this inquiry, the Scottish games industry has suffered a serious blow in the loss of Realtime Worlds. I would like to start by raising my voice against the ridiculous notion put forth by various MPs to the media that the previously cancelled tax-breaks proposal would have somehow prevented this company’s failure. The scheme proposed relief on corporation tax, and Realtime Worlds’ issues were certainly not down to being too heavily taxed.

I run a small studio that provides development support services to the wider games industry, primarily in the UK. We are members of the trade association TIGA, whom I believe will also contribute to this inquiry. TIGA were instrumental in persuading the previous government to take up the proposed tax relief scheme, but I must confess that I am not and never have been entirely convinced that their proposal is the best approach to boost the industry.

When the current government announced the scheme would be scrapped, I cannot say that I was concerned. It had never been implemented, only proposed in loose terms by the previous government. I doubt it would have ever made it to implementation. Its absence will not hurt the Scottish games industry, where the only sizeable developer left (Rockstar North) is foreign owned, and solid for other reasons than financial ones. The smaller developers left here are not in a position to expand massively, tax-breaks or not.

While corporation tax-breaks would I’m sure attract inward investment to the UK as a whole, their nature is such that the biggest winners in such a scheme are large, multi-national publisher/developer corporations. Implementing tax breaks might attract them to form or expand studios here, but aside from the direct investment here, their profits still largely go abroad. Once in place, it seems to me that removing those tax-breaks would quickly lead to studios being declared unprofitable and being shut down again, such is the fickle nature of games development.

Furthermore, subsidising the industry solely because the French and Canadian governments do seems to me to be a dead end road that can only end in subsidies escalating out of control. Yes, we are losing development talent to Canada, and the more developers that go out of business here, the more of our talented workforce will emigrate there. But when studios go bust, their talent doesn’t just leave the country, some also leave the industry, and our available workforce pool is diminished. The tightening belts of the publishers and financiers of the industry don’t allow developers the leeway they need to recruit and train new talent, and that hurts the industry both now and in the long term.

I don’t want to see subsidies for general game development. I don’t want to see incentives to make culturally British games (although I do think that there should be more of them made). What I think the government should be doing is to support what makes the UK competitive in the world market: our creative talent. We need more developers doing innovative, creative things. We can’t compete with Eastern Europe or Asia on labour cost, but we can compete on labour quality. But for that developers have to be able to take in new talent, new ideas, and reinforce a waning labour pool.

I would propose subsidies for education and training. And since the only kind of training that is really effective in the games industry is on-the-job, what I would like to see is more support from the government to get students and young people inside developers and doing real work. Apprenticeships for game developers almost. I’d like to see real financial support for developers who want to take on inexperienced but talented people. That might take the form of subsidised placements, internships, or PAYE relief on students. The universities like Abertay are doing well with their industry outreach efforts, but with better financial support they could do far better. The developers want the talent, but they can’t afford to take risks in hiring, or to get the people up to a useful level of productivity. The universities want to get their graduates into the industry. The government wants the students in jobs, and it wants the developers healthy and profitable.

So in summation, if the government wants to help the games industry, it should do so by reducing the real costs UK developers have: the staff. In doing so they will enrich the talent pool, maintain the UK’s competitiveness as a creative centre, and the returns in increased profitability should pay for the incentive schemes.

Simplicity in design

Posted in Random Stuff on August 25th, 2010 by MrCranky

The microwave in our office is quite annoying. I mean, it does its job: nuking food with radiation, but to actually persuade it to get that far is an unnecessary chore. It’s got a numeric keypad, plus another half dozen control buttons and a start button. If I want to get it to heat my soup, I have to press Time, punch in 3,0,0, then Power, then Start. To be honest, I don’t even know what those other 4 buttons do, and I’m a tech savvy person. We have that self same sequence written out in a note taped to the top of the microwave, since it’s exactly what you want to do 95% of the time.

Which is what bugs me about the whole thing. The product designers have added a whole mess of extra buttons, all of which adds to the cost of the product, to satisfy controllability that we really just don’t use. Even that last 5% of the time, if we didn’t have that extra controllability, we’d be able to just make do. It’s not a surprise to me that industrial microwaves have pretty much two controls: a dial for power, and a dial for time. Anything more smacks of designers trying to justify their own salary, or interference from people who don’t really understand their customers. To be honest even those two controls are overkill. A single button that adds 30 seconds to the clock and starts the microwave (if it’s not already started), and another to cancel. Simplicity.

This isn’t just a rant about our microwave. Okay, well maybe a little bit. But it’s a design principle that goes through everything, games design included. Understanding what your users want to do in the majority of cases, and give them just what they want, but resist the temptation to drown that out with other minor features. It’s not just user interfaces, it’s features as well. Even with the best interface in the world, games or tools that try to over-complicate things end up suffering. Not only do those features take valuable developer time to implement, they’re almost certainly going to increase the odds of those features adversely interacting with the important core features.

So why put in unnecessary features? Many reasons:

  • Feature matching: Some other competing product has these features. Doesn’t matter if the user values them, or even if they’re appropriate given your design, just that the designer thinks they need to ‘measure up’.
  • External requests: Maybe it’s not the designer asking for these extra features. Maybe it’s the manager, or the boss. Or the bosses wife. Who knows. Someone who isn’t responsible for the design, trying to ‘help’. And usually since they’ve got more clout than the designer, they get their way, even if it hurts the product.
  • Brainstorming: At the start of the project, it’s pretty common to come up with a big list of features. Sure, they get prioritised, but they’re still all in the ‘potential’ spec for the product. Features get cut because there’s not enough time to do them, but less often they get cut because they’re just not important enough. The designer’s not to blame for this one, because that’s the product owner’s responsibility. But still, they need to co-ordinate with the designer, and understand how the features improve the product vs. the cost of putting them in.
  • Notion of product richness: This one is squarely on the designer, and is about not thinking about your product from the customer’s point of view, but rather from the designers. Instead of building a product to meet the customer’s needs, they build the product they think should be built. This is good to a certain degree: sometimes users don’t know they want a feature until they have it. But it should be used sparingly.

Of course it would be easy to take this advice, and ship a project with only a few features, claiming to be keeping things ‘clean’ and ‘simple’, even though they omit the features the customer is really most interested in. As always there is a balance to be struck. The important thing is to understand both the product/game you’re making, and the people who want to use/play it.

So basically I’m pleading with the game and product designers out there: add features sparingly. Not only do you keep your development costs down, you improve your chances of making a cleaner, more usable product, that fits better with what your customers want.

RTW redundancies

Posted in Industry Rants on August 21st, 2010 by MrCranky

This week’s normal blog post has been supplanted, sadly, after news broke of Realtime Worlds going down earlier in the week. I was intending to write a post anyway, after the news that 60 people were to be trimmed as a result of their Project Myworld not finding an investor, but the urgency wasn’t really there. It looked that ostensibly things were being wound down in some kind of graceful way, which, while sad, is just the nature of the beast. Everyone knew that the large team that had been ramped up to deliver APB would be unsustainable, given the absence of a large income stream from that game, or anything else signed. It was always going to stand or fall on APB’s quality, and that was apparent a couple of months ago now. But we gave them the benefit of the doubt.

That was late last week though. Come Tuesday afternoon, news surfaced that there had just been a company meeting to announce that the administrators had been called in. And not in a graceful, let’s wind things down sort of way. In an almighty, we’re all out of money, and by the way you’re not getting paid for August sort of way. While that’s not unprecedented (when VIS went down, they at least had the courtesy to do so immediately after a pay-day so no-one did any work that wasn’t going to be paid for; but DC went down with unpaid wages), I don’t think it’s ever forgivable. But the difference was, those other studios had been operating milestone to milestone for a long while, burning through their cash. RTW had their investment up front, they knew what money was coming in, and when it would stop. To go under leaving unpaid wages (and word is, a bunch of trade debt as well) is to me a massively negligent failing of those in charge.

The whole affair smacks of senior management, knowing they’d burnt through all their cash (and let’s not forget, that’s over $100m), and yet continuing to operate. APB had run over its development timescale, that was public knowledge, but if they didn’t have enough money to operate beyond its launch, this mess should have been sorted out when they realised what was going to happen. I’m sure they thought that to do so would further damage the APB launch: who would want to invest time in an MMO if it looked like the developer was going to go bust even before launch. That doesn’t excuse screwing over your employees: they chose to gamble everything on persuading new investors to save them. And since they’d already failed to show that they could deliver on the sort of projects they claimed to have expertise in, I don’t know how they thought anyone would believe them.

I’m sure there will be more details and analysis from those who saw this mess from the inside. Even last week, this RTW person let go in the MyWorld redundancies put an insightful but damning post over on Rock Paper Shotgun. I’ll come back to this one once more of the details have become clear. Sadly, even if a phoenix company does ride from the ashes (again stirring memories of DC and their similarly resurrection), it will be a dim shadow of what RTW once was. While there are still several good businesses in Dundee doing alright, the heart has been cut out of the industry, both in Dundee and in Scotland in general. We’ll lose a lot of good talented people, because there is no-where else with the capacity to pick them up. Again, Scottish development will take years to rebuild, if indeed we ever manage it.

Next time, I think, will be a rant about development budgets, and how they’re hurting us all.

WordPress 3.0.1

Posted in Links from the In-tar-web, Tales from the grind-stone on August 9th, 2010 by MrCranky

It’s probably entirely escaped your notice (or at least it should have done), that we’ve upgraded to WordPress 3.0.1 recently. Everything should be exactly as it was before, externally at least. Please let me know if anything looks off of course. Doing that little bit of maintenance has reminded me that it’s probably time to update the website in general though. I have been meaning to make a little section for our iPhone games and applications, although probably that’s easiest done in the blog itself. More importantly however will be to update our About pages to include more recent endeavours.

In other, unrelated news, I’ve been answering questions over at the beta of the GameDev StackExchange site. It reminds me of all the reasons why I would get annoyed at gamedev.net et al; basically that since there is no barrier to entry, anyone can both ask stupid questions and give stupid answers. So you get people replying who aren’t professional game developers and have a very limited set of experience making ‘games’, but who have a very high opinion of their ability. However, since the original StackOverflow site has become a useful resource in its own right, despite the equally large numbers of “please help me with my homework” questions, and poor quality answers, I thought I would give this one the benefit of the doubt. I would heartily recommend any of my peers who have some free time to go over and contribute as well: while you can’t do much to begin with (new users can’t even vote good answers up), it only takes a couple of questions answered sensibly to elevate you from the rank of untrusted outsider to someone who can contribute. And as long as it’s people with real knowledge of the industry voting up the real solutions, I think there’s a good chance that there gets to be some content there that’s useful to the games industry in general.


Email: info@blackcompanystudios.co.uk
Black Company Studios Limited, The Melting Pot, 5 Rose Street, Edinburgh, EH2 2PR
Registered in Scotland (SC283017) VAT Reg. No.: 886 4592 64
Last modified: February 06 2020.