Wednesday 28 September 2016

Technical Blog Post #2 - Supergiant Games, a Biography


Supergiant Games is a small studio that have created some fantastic pieces of media, today I will do a short biography of their contribution to games since their inception in 2009. They are a San Francisco based company with a meagre seven to twelve members, however have successfully produced some of the most interesting and diverse games to date. Over their career at the time of writing this they have produced two games and one more in the works.

I’ll break down each game and cover particularly why they were so successful and interesting mechanics and things of note of each game. One quite interesting fact is that they are all created with C# MonoGame/XNA, while a very useful tool for a starting game developer it is not often used at a professional level and to such high graphical fidelity and standard.

Bastion (2011)
Bastion was Supergiant’s first game, originally launched on Xbox LIVE Arcade and due to its success had following versions on PC, Chrome Web Store, Mac App Store, Linux, iPad and finally PS4, winning over a hundred awards and selling over 2.32m units on PC alone.



It is an ARPG (action role-playing game) in a hand-painted isometric based world, set after an apocalypse called ‘the calamity’. The game includes a dynamic narrator (Logan Cunningham) which provides validation on your actions and provides a very interesting way of storytelling, while allowing the user to feel they are telling their own story.

The soundtrack is composed by Darren Korb, who creates music for all three games; this won many awards itself to the self-styled genre ‘acoustic frontier trip-hop’. This is one of Bastion’s key to success as it beautifully compliments the art styling and theme of the game.



The stand out feature that sets Bastion a foot above the rest is its fantastic writing and storytelling, the immersive nature of the narrator, the complimenting music and fantastic ending provide a solid experience. Small hints of lore are slowly revealed as the player encounters or interacts with certain things throughout the story. This allows the user to slowly understand the situation they’re in without facts being crammed down their throats, with a final ending better than most leaves a very satisfied taste.

Transistor (2014)
Transistor was Supergiant’s next title, by using the proceeds of Bastion allowed the team to self-publish compared to Bastion which used Warner-Bros as a publisher for the title. It was originally released for the PC and PS4 selling just over 1m units on PC, this was then expanded to cover Mac, Linux, iPhone and iPad versions.



It continues using the set recipe of isometric ARPG although set in a futuristic setting, it provides a shorter but better polished game and arguably one of the best looking games to date, especially for an indie development game.  Using a similar storytelling methodology but with the absence of the narrator. The game built on Bastions battle action system which while good and responsive were relatively limited and non-engaging, Transistor attempts to remedy this by including a quasi-turn-based action system that can be used in instanced fights to queue up abilities and movement, rather than Bastion’s one continuous world with battles happening sporadically.

The soundtracks were again composed by Darren Korb but with the voice of Ashley Barrett to create some stunning immersive music that is heavily integrated in the story.



Functionally and visually Transistor is superior to Bastion but subjectively doesn’t do quite as good of a job as Bastion did at immersing the player in the world.

Pyre (2017)
At current not a huge amount of information has been release of their current work, however gameplay snippets and some extrapolated lore can be found from the short snippets available.
In terms of gameplay it provides a very strange mix of rugby, basketball and rocket league from an isometric perspective, using the characters you accumulate in the story in a rich fantasy world. 



Characters have varying abilities akin to MOBA (multiplayer online battle arena) style games that can attack, evade or inhibit the opposition who will attempt to do the same thing. This strange mismatch of genres and games will be interesting to see if it has a rich amount of depth and complexity.




Story telling has already been shown to be a main focus of the game, which is good as it’s where Supergiant Games are in their element. Overall we’ll have to see how it actually performs, but Supergiant’s track record seems pretty good so far, a company well worth your attention and has really set a standard for storytelling and graphical fidelity for indie games.

QA Consulting - Personal Blog #2

So I’m currently finishing my fourth week on the job at QA and have covered quite a lot of content, got settled and completed a relatively large group project.

So at the last personal update I had finished my first week completing my Java training, since then I’ve completed a week of DevOps, which is a collaboration and communication of software developers and IT professionals, while automating the process of software delivery and infrastructure changes [Loukides, Mike (2012-06-07). "What is DevOps?"]. In this we covered usage of Ubuntu and MintOS as standard operating systems for businesses and tools. We then learnt basic bash scripting and use of Vagrant and VirtualBox to create virtual environments containing instances of these operating systems.

We then used bash scripting to install a variety of different tools and software for integration as a continuous integration pipeline. The source code is managed by git, which is then connected to Jenkins to act as the CI server, which uses Maven to build successive iterations of the software. Jira is used for software and bug tracking, while finally using puppet for configuration management and deployment. Overall I managed to create a full interlinking system that could work in a small business to create and manage its software development.

The following two weeks comprised of studying enterprise architecture. This is a well-defined practice for conducting enterprise analysis, design, planning, and implementation, using a holistic approach at all times, for the successful development and execution of strategy. Enterprise architecture applies architecture principles and practices to guide organizations through the business, information, process, and technology changes necessary to execute their strategies. These practices utilize the various aspects of an enterprise to identify, motivate, and achieve these changes [Federation of EA Professional Organizations, Common Perspectives on Enterprise Architecture, Architecture and Governance Magazine, Issue 9-4, November 2013 (2013).].

We split into groups of eight and began work for a fake client NBGardens, the client is a garden gnome (a very profitable business apparently) and accessory reseller. We as a consultancy firm have been hired to analyse the business and should propose our own solution to improve it.

Throughout the week we’ve practiced SCRUM methodologies as our formatting for carrying out the multiple tasks set, we also covered v-model and waterfall, although I have experience with all three previously so it was mostly recap. We also covered BPMN, UML and Data Modelling techniques and software, we used these to create a variety of reports either for a current ‘as-is’ state of the business and a ‘to-be’ diagrams of the system we proposed.

What was particularly useful about the two weeks was the focus on client relations. I had good opportunity to practice public speaking and speaking to clients. This was generally for requirements capture as we spoke to a couple of the ‘employees’ (actually just trainers badly acting), but the experience was useful nevertheless.

Finally I may have been selected for my first actual consulting job which is using C#, one of my most comfortable languages, for Woking County Council, I hear they would like a new unified tax system however the details I have so far are very limited.


Overall my first month in QA is going well and hopefully it’s just the beginning.

Thursday 22 September 2016

Technical Blog Post #1 - VR's Influence in Games

I’ve decided that for my technical blog posts I will go into video game designs and technologies. In this article I will cover virtual reality (original I know) and what exactly it can bring to the games market, if it can contribute anything in the long run to games and their development.

So first a quick breakdown of current existing technologies and competitors. The main devices are the Oculus Rift, HTC Vive, Project Morpheus, Microsoft HoloLens and Google Cardboard. Each provides differences between, but all use head mounted displays to display perspective corrected content to the user. Currently prices range from £15.00 for a piece of foldable cardboard that can hold a smartphone to act as both screens to a £759.00 HTC Vive, currently only a developer edition of the HoloLens is available for a whopping $3,000 per device, though this price will most likely drop for consumer based products.

This post isn’t going to cover exactly what each device does and how it does it, there’s 101 other articles that break that down for you. Instead I’m going to cover more what these devices can actually do as a whole for gaming.

First came the fun little cinematic demos using the Rift Development Kit 1 (DK1), having owned one myself it made a great party trick, first coerce a person to sitting down and putting on the device and some headphone turned up to loud, launching the rollercoaster application and watching them scream as it dropped, jumped and swerved. Unfortunately the DK1 never amounted to more than a proof of concept, widespread motion sickness due to the relatively low update rate of 60hz compared to real life was an instant turn off for many. Also the low resolution of 640x800 made near impossible to distinguish fine details, the comparison to real life was stark.

Skip forward a couple years and great strides have been made to improve immersion and resolution. We’re now up to a 2160x1200 resolution and a higher 90hz refresh rate will drastically help in reducing motion sickness. Nvidia has also made great strides in supporting rendering for multiple simultaneous viewpoints (https://developer.nvidia.com/pascal-vr-tech) requiring only a single pass for each type of shader, drastically improving performance. VR now seems like a plausible subset of gaming, while it’s not going to drastically alter the way the majority of games are currently played, it is going to attempt to co-exist with them.

When a headset is strapped on there’s a large disconnect between moving in a game and sitting still in a game, as such typical first person shooters, especially those with a great fluidity and speed of movement actually feel worse to play. Team Fortress 2 (Valve) was one of the early adopters to native VR support yet despite its flawless integration, it does not provide a fun experience due to this disconnect with seeing your body doing things its actually not.

Games since have shown that to provide movement, they must use the logical step of using vehicles for movement. This can be seen in Hover Junkers (http://www.hoverjunkers.com/), this involves first person shootouts on hovering platforms.
Hover Junkers (Stress Level Zero)


Simulations also prove great worth in investing with VR technology for diehard fans that can immerse themselves in in their universe such as in EVE: Valkyrie (https://www.evevalkyrie.com/), Star Citizen (https://robertsspaceindustries.com/) and Elite Dangerous (https://www.elitedangerous.com/) all are new space simulation titles, which have gained huge momentum in recent years. Use of joysticks or provided controllers prove to be a great way to immerse and create believable universes.
EVE: Valkyrie (CCP Games)

Overall VR helps a few niche genres bringing them into the spotlight if only for a decade or so. The majority of other genres simply are not applicable with current iterations, drastic changes to core mechanics would have to be made to make a game playable, let alone fun. Would then they still even be define in those original genres they attempted to be?

Friday 16 September 2016

QA Consulting - Personal Blog #1



On the 5th of September I began as a trainee consultant for QA Consulting located up in Salford Quays in Manchester. I had real difficulty finding a place to stay with my friend who also began with QA on the same day. Eventually after hundreds of enquiries for housing, a single positive response came back and we were able to move in into a small flat only eight minutes’ walk away.

The Salford Quays area looks great and must be one of the best looking areas of Manchester (in my opinion) and it’s also just a bridge away from Media City, where the BBC has decentralised from London up to Greater Manchester.

We started going through Java at breakneck pace. Since I’ve studied computer science for years I could easily understand and complete the content required for each deliverable numbering twelve in total. It did contain some interesting and thought provoking topics, which could be expanded over the week. We started with the typical ‘Hello World’ applications expanding to simple string manipulations, then onto a basic object oriented designs of software and small calculator based tools such as a room painting calculator that worked out the best paint to buy.

We then moved onto algorithms for prime numbers, tasked with calculating numbers up to 3,000,000 and 3,000,000,000. My initial design handled the 3 million with relative ease solving it in 2959 milliseconds a reasonable result however ground to a halt when dealing with 3 billion, due to the combinatorial explosion nature of the search space.


private static Boolean isPrimeNumber(long n)
    {
        if (n < 2) return false;
       
        for (long i = 2; i * i <= n; i++)
        {
            if (n % i == 0)
                return false;
        }
        return true;
    }


I then looked for faster and more efficient algorithms for calculating primes and discovered the Sieve of Atkin a modern algorithm created in 2003 by Atkin and Bernstein. One limitation of this is that it can only be used for a maximum number of the integer limit (2147483647) and java does not provide uint types or cannot initialise arrays of size long, fair enough since a Boolean array of 3 billion would be roughly ~30GB. It does however do 2.14 billion numbers in 2248 milliseconds, and 3 million in an incredible 24 milliseconds.


//Sieve of Atkin
        Arrays.fill(sieve, false);
        long startTime, endTime;
        startTime = System.nanoTime();
       
        sieve[0] = false;
        sieve[1] = false;
        sieve[2] = true;
        sieve[3] = true;
       
        for (int x = 1; x < limitSqrt; x++)
        {
            for (int y = 1; y < limitSqrt; y++)
            {
                int n = (4 * x * x) + (y * y);
               
                if (n <= limit && (n % 12 == 1 || n % 12 == 5))
                {
                    sieve[n] = !sieve[n];
                }
               
                n = (3 * x * x) + (y * y);
                if (n <= limit && (n % 12 == 7))
                {
                    sieve[n] = !sieve[n];
                }
               
                n = (3 * x * x) - (y * y);
                if (x > y && n <= limit && (n % 12 == 11))
                {
                    sieve[n] = !sieve[n];
                }
            }
        }
       
        for (int n = 5; n <= limitSqrt; n++)
        {
            if (sieve[n])
            {
                int x = n * n;
                for (int i = x; i <= limit; i += x)
                {
                    sieve[i] = false;
                }
            }
        }


We then covered a couple comparison algorithms before moving onto a remake of the classic Battleships board game. A turn based game that requires placing ships onto two grid based boards; ships come in varying length and can be rotated for different orientations. The players then take turn firing blind into the opponent’s water, if they hit a ship a confirmation will be returned to the user. Once all ships are destroyed by one side the game is won.

For this project I used java’s swing, my first time using the technology, to create two grid shaped boards comprised of JLabels that could be hovered over and clicked to place a ship in each location, a simple UI had also been created to allow users to see the numbers of each type of ship placed and eventually would contain other information useful to the player. While I did create a working application it did not contain the second phase where users fired missiles at each other, users could paint their ships on the board, akin to the application paint.

Overall a successful first week QA Consulting and looking forward to more.