Unreal Game Sync – Migrating to internal UE4 Builds

I decided to write up my recent experience migrating from a launcher installed version of Unreal Engine 4 to an internal build because the documentation is extremely sparse and it took me a lot of time to put together the information needed to perform what turned out to be an extremely simple task.

What is Unreal Game Sync and why should I use it?

Unreal Game Sync is a tool built by epic to interact with perforce to aid in developing Unreal Engine 4 projects. It has quite a lot of features on top of p4v but the primary use, to my mind, is distributing internal engine and project builds.

If you started developing UE4 in a launcher build and want to migrate to a build you built yourself, you’ll need to tackle the issue of distributing those builds without requiring anyone who works on the project to build the engine themselves, the simple way is to dump the entire engine into your version control system and that works well if code changes are rare and broken builds are a minor inconvenience but If you can’t risk breaking the editor with your changes you will need to use something like UGS.

Unreal Game Sync solves this by letting you build the engine once, zip it up and store the zipped binaries in perforce, where UGS when it pulls a new changelist will also fetch the corresponding engine (& game) binaries and automatically extract them into place (in theory) ensuring the binaries are always in sync with the content.

Migrating to an internal build of UE4

UGS expects your project to be set up a very specific way and epic (or anyone else as far as i can tell) didn’t document what that is. If you started developing with a launcher version of the engine, your project will be in a folder on it’s own with a .uproject file and various folders for binaries and content. The uproject file is a text file and inside the text file there are various settings, one of those settings is the EngineAssociation setting, which is used to determine which copy of the engine to load the file with. If it’s a launcher build it will read something like ‘4.23’ and if it’s a locally built build it will be a generated guid.

The problem with this is that every machine will have a different guid, the best solution for internal builds is to remove the EngineAssociation field. When there is no EngineAssociation, opening the uproject file will first search up it’s directory tree to find an engine and if one isn’t found will prompt the user with an engine selection dialogue.

So we want to remove the EngineAssociation and place the engine files downloaded from github above the project file in the perforce repo. i.e. The engine will be placed at –

//UE4

and the game project will be located at –

//UE4/GAME/GAME.uproject

On top of this I had to mark the following file as writable in perforce, since the build touches it –

Engine/Binaries/DotNET/IOS/MobileDeviceInterface.dll.config

Once we have our perforce repo in this form, we can run the Setup.bat file which will be used to download the dependencies, I opted to not store the dependencies in perforce and instead require it to be run once on each machine, I’m not certain this was the best approach since it doesn’t scale effectively to large teams, pushing and maintaining the dependencies in perforce may be a better approach.

After that we need to run GenerateProjectFiles.bat and start up visual studio, if it’s working as intended, the UE4.sln will also have the game code as well as the engine code, the old game vs solution file won’t be required any longer. This approach allows you to view, step into and debug engine code while debugging the game. From here you can build the engine.

Once the engine and game is built you should be able to start up the locally built editor by double clicking the .uproject file. Before we go on to setup UGS, we should build the zip archive and push it to perforce and ideally set up a continuous integration system to automatically build and push new binaries, I used jenkins to do this but there’s plenty of documentation on CI solutions and it’s outside the scope of this article. The command for building and pushing the archive can be found on the UGS reference page here –

UGS Reference

Before running this script on a machine you will need to make sure the Windows SDK has the Windows Debugging Tools component installed as the build process uses pdbcopy, you can install the WDT by modifying the Windows SDK install via the Settings -> Apps -> Apps and features panel in windows, locating the Windows SDK and selecting modify.

Engine\Build\BatchFiles\RunUAT.bat
  BuildGraph
  -Script=Engine/Build/Graph/Examples/BuildEditorAndTools.xml
  -Target="Submit To Perforce for UGS"
  -set:EditorTarget=ShooterGameEditor
  -set:ArchiveStream=//UE4/Dev-Binaries
  -p4
  -submit

The script and target options define the process for building, zipping and uploading builds if there have been code changes, the EditorTarget is the name of the editor .target.cs file that is in the vs game project, there are more options too including a GameTarget option for building the standalone game too.

The ArchiveStream is the location you want to place the zipped binaries. It wasn’t immediately clear to me how epic wanted me to structure this perforce stream and so I’ll go into a bit more detail about how I believe they intend it to be laid out. Epic require the zipped binaries to be placed in a stream depot in perforce, I believe they want the binaries in their own mainline stream (in this case named Dev-Binaries), I’m not certain why they’d require this since it doesn’t seem to be the kind of thing you’d branch but who knows ¯\_(ツ)_/¯.

Setting up UGS

UGS is a tool, which epic distribute as source code along with the engine, the vs solution can be found in Engine/Source/Programs/UnrealGameSync

You need a link Epic Games account to see it on github

Building and running UGS is fairly well documented in the UGS Reference.

UGS uses an odd update mechanism where there is an installer that installs a launcher that fetches the tool from a hardcoded perforce path. So before building the code, you need to install wix 3.8 and change the DefaultDepotPath string in DeploymentSettings.cs to point to a perforce location where the UGS launcher can find updated binaries for UGS. Once done build the installer and UGS. Commit UGS to perforce and then install the launcher, if it’s working correctly, you’ll be able to startup UGS and point it at your .uproject file and it will show you your changelists.

From here you should be able to turn on the ‘Sync Precompiled Binaries’ option and any changelists which have a corresponding binary zip in perforce will not be greyed out.

Before rolling the tool out everyone who doesn’t have visual studio will still need to run Setup.bat and install the latest vcredist because the one installed by Setup.bat will probably not be the one you built the engine against and will be out of date.

If you’re trying to minimise distruption the last step will be pushing the modified .uproject file to source control along with any updated plugins, allowing for a seamless transition from the installed build to the internal build.

Conclusion

Hopefully this information can help shorten the UGS setup time for others as the whole process turned out to be fairly simple but I had to work out quite a lot of it myself due to the absence of documentation and hopefully if anyone has better ideas for how to integrate or streamline all this stuff please let me know in the comments or on twitter.

Tacoma critical analysis

09/07/17

Alaska and Tacoma

 

It’s been a while since I posted anything on my blog, mainly because I haven’t had any time to do anything for most of 2017. That includes working on Alaska, which is still nearly finished but I don’t plan to restart active development on it until 2018, when I’m hoping to have more free time.

SPOILER WARNING: There are potential plot spoilers for Tacoma in this post!

This post however is about Tacoma. Gone Home is the game that inspired me to try and make Alaska and I find it interesting that there are so many parallels between where I wanted to take the genre next and where Fulbright did. Both decided adding humans into the mix was the next step, both expanded the space a little and chose a space station as the logical setting for that. When I started working on Alaska, I didn’t anticipate I’d be playing Fulbright’s next game before it was finished. I’ve always been over ambitious about things that don’t seem to matter to other people and the the two prime areas in Alaska I worked most on was the lighting system (because I’m a programmer) and the dynamic characters.

Meaningful Decisions

civ6_marquee1

The dynamic characters were an attempt to inject meaning into the first person adventure genre. A more living world would lend your actions greater consequences – destroying a bridge only matters if someone wants to cross it. Brilliantly, Fulbright opted for another mechanism and it’s genius, a boring alternative route to success. Fulbright have twice now resisted giving the player any way to impact the world and they’ve gotten away with it because they’ve done it expertly. Since the inception of branching narratives the entire industry has been obsessed with the idea that it existed to engender replayability, like you’re trying to squeeze multiple games into one and that success is when the player plays them all. This thinking can be seen most prominently in the critical acclaim for nier automata (a game I loved) and it’s complete disrespect for the players time by requiring you to play through the same game 3 times before delivering any narrative conclusion. I’ve always asserted that branching narratives derive most of their value from communicating to the player that their decision mattered because a different choice would’ve had different outcomes. I feel it’s ok to explore the potential outcomes, to explore causality, but it’s also important to recognise that the desire to fully explore the system and to fully realise the system is a futile one. It doesn’t map well onto real world systems, it’s a power fantasy. Fulbright have implemented the core value of a branching narrative without incurring the burden of the massive development overhead by offering the player one other branch. One that is so intensely uninteresting that no player would ever opt to take it except as a feat of extra ludic endurance. They even deliberately refused to add an achievement for it because they wanted it to be clear – there is no game here. This option exists, soley, to make the decision to explore the station yours. It doesn’t matter how dire the consequences of not doing something it always matters to us that we had the choice. It’s why we live in permissive, punishing societies as opposed to preventative ones i.e. you won’t be dragged, kicking and screaming to your work but you will lose your house if you do.

Dr Manhattan, not Shodan

6a4a49_e7ad62bef9784345a5384e4b330d3e85~mv2

The plot of Tacoma reveals, in my opinion, an exceptional grasp of the themes of corporate culture, the information revolution and artificial intelligence’s role in both. Most discussions of artificial intelligence focus on the threat in terms of it being a separate sentient animalistic predator who opts, in one way or another to operate without humans, the idea that it won’t want us around. The real threat of artificial intelligence is actually in how we use it and how it uses us and Tacoma tries to get to the heart of the idea. We already live in a world controlled by artificial intelligence. We have been for quite some time. It doesn’t direct us or take direction from us by taking on a human ego and having a verbal dialogue. It does it by selling stock in sock manufacturers and investing in cotton buds. It controls us by giving us the best congestion free route to Disney land. The AI in Tacoma is a projected version of this idea, it gives CEOs a choice between doing something immoral and suffering certain negative consequences. Disobeying Google maps would be working against our own interests, just as the CEO dismissing the AI’s projections would be. It is my impression that the players own non choice of sitting and waiting for hours for the transfers to complete are deliberate mirrors of this idea, gameplay reinforcing the core theme. The threat of AI in Tacoma, just as in real life is that we will self select ourselves out of existence because it makes sense to have AI’s do more and us do less, we need less of us so WE choose to reduce the population, through primarily natural processes but also atrocities like the one in Tacoma.

An idea central to the game is that the AI’s continue to serve but by serving us they annihilate us. Natural selection, the passage of time and the march of entropy are fundamentally linked, they are 3 facets of causality. Just as atoms formed molecules, proteins started replicating, replicating proteins formed more complex cells, cells formed organisms and organisms developed sentience, sentient organisms will come together to form a more complex thing, we are no more capable of discerning it or its motivations as a cell is of understanding us. Tacoma brings these grand projections – ideas about the nature of humanity, where we are going, transhumanism and brings them right down to earth (although not literally). It focuses in on the details of the lives, the importance of things that happen in the lives of a small group of diverse people.

Diversity is always better

AlaskaPromo

Diversity is another one of the key themes of Tacoma. I’ve heard many people say that diverse representations make more interesting experiences, I’ve always thought that would be the case and it’s something I am trying to do in Alaska also. I feel that the complete lack of diversity in modern Hollywood is a key reason for why it is so utterly stagnant. One of the most defining films of my childhood was Alien, I don’t think it’s an understatement to say that Sigourney Weaver’s portrayal of Ellen Ripley was critical in developing my understanding of women. Every film had multiple black characters and there were more than 3 black actors playing those black characters. I feel Hollywood has started to make progress on these issues again and it’s refreshing.

Computer games haven’t even begun to scratch the surface of the potential for diverse characters. One reason for this has been a technical limitation. Skeletal animation systems like similar shaped skins. If the skin is very different, an animator needs to be careful not to animate in a way that the bigger ones clip, or the thinner ones seem like their limbs are floating, it’s hard and it’s only recently been possible to have a feasible system to counter this problem, either by dynamically modifying the skeleton and animations to fit the skin better or hand craft a skeleton & it’s animations for a wide enough body of representation. Recently a few games have went to great effort to make sure the people in the world are named, individuals with their own personalities and faces, I think it’s an exciting evolution in games and expectations that will hopefully do away with the stormtrooper syndrome that infests most games, every character with a convenient, identical face covering.

Fullbright again, played to their strengths when diversifying their cast, they didn’t have the resources to create fully realised unique looking characters, instead the wove AR into the fiction of the game, they built it from the ground up to allow them to plausibly have the characters’ physical representation fit within the budget of a small studio by have AR simulacra represent the characters. They could then focus in on the areas of diversity they wanted to emphasis, body shape and personality. The characters in Tacoma are different from each other, the different body shapes make it easier to distinguish them, even without faces (although the colour coding admittedly does most of the work). The different personality types let you get to know them.

When watching dialogue I often try and predict what characters are going to say, I feel it’s telling when I guess correctly to analyse whether it was because the character is an archetype I have prior understanding of or if it is because I have come to understand the individual. In my estimation none of the characters are archetypes, they don’t create conflict for each other, except in plausible small ways. Generally they are all working together towards a common end, deviations in their idioms create interesting, plausible dynamics but in general the game shows that lots of very different people can get along swimmingly. I felt there were a few moments when the game was signalling some grand conflict like when Andrew was hesitant to go into cryo or when Sareh didn’t tell Natali about her medical condition or when it was clear something was going on with ODIN and Natali. The game deliberately made nothing of these issues however, they were blips on the road. It had something more important to say, although it did have a satisfying conclusion It didn’t feel to me that that was the point of the game, it was the journey. Just like your so called mission to collect ODIN by watching a progress bar wasn’t really the point.

G2A is right and you are wrong

04/13/17

I’ve seen and had a lot of back and forths over the last few days about G2A and key reselling and almost everyone I’ve seen talk about it seem to have some serious misconceptions, so I thought I’d have a go at enlightening people. Before I go any further though, I want to say If you have any insights on the subject matter which AREN’T addressed here, feel free to tweet me or email me or comment etc. however if the sum of you’re input is “but people can steal keys” or “but people can scam keys” then I’d appreciate it if you think about it and maybe consider that someone (almost everyone) has already made that point and not bother.

(Also, I know it’s been a long time since I’ve posted about Alaska, it is still in development, I’ve had a lot going on but it’s still currently scheduled for release sometime in 2017)

OK. So what exactly am I talking about? Mainly G2A are correct. The right to resell is a fundamental right. If I buy something from someone, I am protected by law in selling it on. This right, in the EU at least, has been upheld with regards to digital goods, there is no legal reason why G2A or any other reseller can’t do what they are doing. Game developers who contest this are at the very least, deeply misguided and at worst deliberately trying to mislead customers into foregoing their rights. If that were the long and the short of it however no one would be running around cutting heads off on social media. So what are the counter arguments I’ve received?

But people can steal keys!

People can steal keys, this is true. People can also steal every other thing on earth and it doesn’t affect your right to resell. Not one bit. Arguing that the ability to steal keys is an argument that has been made against physical goods resellers in the past by illicit corporations to attempt to secure a monopoly on the sale of their products. The truth is it’s less of an inconvenience for digital goods than physical. Lets look at the typical case people usually refer to: credit card fraud. So with physical goods, when credit card fraud is used to steal, the credit card is charged back, the victim gets their money back, the retailer loses the money and the thief keeps the goods. With digital goods, the card is charged back, the retailer loses the money and revokes the key and whoever ended up with the stolen key loses access. Those people are legally protected, they can go to their retailer, say G2A and, legally, can get a full refund. A.K.A. there is no problem here. If you use amazon to buy physical goods you are more complicit if credit card fraud than G2A, it functions exactly the same way, except the original retailer doesn’t get their products back.

But people can scam keys!

This conversation is a lot simpler. If someone asks you for a key and you give them it, it is theirs, end of story. You may not like what they do with it afterwards but the fact is, it is no longer yours. If someone has committed fraud against you then feel free to litigate. I have to ask however, who is giving out enough keys to meaningfully impact their sales that this type of fraud is a concern? If you are giving large volumes of your game away, then you only have yourself to blame, don’t do that! If you expect something in return for the keys you give away, get it in writing, get a contract, and then pursue the terms of that contract in court! If that idea doesn’t sit right with you, it should tell you that your expectations of what you get from giving that key away aren’t entirely something you are comfortable with.

The Game Dev gets nothing from these sales.

This is a very familiar argument. Physical retailers were also attacked by game publishers with this argument. It is as illegitimate now as it ever was. The game dev made their money on the initial sale, If that was zero, then that’s because their asking price was zero. a resold key is not an extra copy, it’s a transfer of ownership of that copy they received from the developer.

It circumvents Regional Pricing.

This argument, in my opinion is the only one that holds any water. Selling internationally is a hard problem to solve, so many people celebrate the removal of region locking, it’s clear they don’t really understand the full nuances of what region locking/regional pricing is designed to do. Regional pricing is a critical component of homogenising international economies, it’s a mechanism for the transferral of wealth from affluent economies to poorer ones. Saying that, it is already a solved problem, beyond correct labelling it isn’t a problem for the retailer (and again if it’s mislabelled the customer is legally entitled to a refund/replace). In short, if you enact regional pricing, you have to use region locking or accept that people will purchase internationally.

 

I have yet to see any arguments against key reselling or G2A specifically that amounts to anything. To my eye it is a trial by social media. The thing that upsets me about the situation is, you see prominent talking heads, making assertions and accusations, implying and inferring. It seems to me they never once emphasis that they support the general practice of key reselling or that it is a perfectly legal, moral and fundamental right. I do not think they should be making these kinds of accusations in public, they should make them in court, where our legal checks and balances can preserve our rights (both developers and consumers). With regards to G2A specifically, they seem crass, they seems abrasive but they also seem to be in the right. If they are committing fraud or copyright infringement or other illegal acts, I will be the first to call them out but I’m not going to do that until it’s been proven in court.

Development Update

01/06/2016

I know it’s been a long long time since my last development update, almost a year! The reason is very simply because the things I’ve been doing have been tediously boring, at least to my mind anyway. Here’s a brief summary of what I’ve been doing on Alaska for the last 10 months. I expect this will be my last development update before I start my greenlight campaign, I currently estimate i’ll be ready to go on greenlight in July or August.

Anniversary

Last month was the 5 year development anniversary of Alaska, my original estimate was a 3 year project but I’ve changed jobs twice, got married and had 2 amazing kids in that time and those things all take priority, as they should. This is what it looked like 5 years ago:

1

It’s come a long way since then. I’m pretty proud of what I’ve achieved, personally.

So What have I been doing over the last 10 months?

Moving Repo, Moving IDE, C++11 (Aug-Oct)

So the first thing I did after my last blog post was do a lot of long overdue clean-up. Moving to visual studio 2015, updating build flags and dependencies and generally tidying up the build. As part of that I also moved to git which has taken a load of as subversion is a pain to work with. I backed up all my source assets too. With the move to visual studio 2015, I can now support C++11 properly which meant I could clean up some crusty code.

Moving from Windows 7 and Visual Studio 2012 to Windows 10 and Visual Studio 2015 forced me to migrate from the old DirectX SDK to DirectX included in the Windows SDK. I’m still using D3D10 and effects. I’m not moving mid development and this meant reworking some stuff to work better with the new SDK & IDE. It’s better in the long run but PIX still doesn’t work properly with old effects and that’s a nuisance.

This all took a few months but It was important because it made a lot of things that had become a slog less so and it was time away from the mammoth job i’d unwittingly undertaken in my last blog post, the dreaded character import pipeline rework.

Bug Fixes (Nov & Febuary)

Mainly as a consequence of changing lots of stuff related to the build there were a few weird bug fixes that needed addressed, I did some of these in November and some in February.

  • BSP Loading was very slow (one small part was 75% of the load time)
  • luabind threw exceptions in the destructor and vs2015 rightly didn’t like that
  • a couple of materials and reusing some render buffers were causing visual issues
  • The Game Entities used their address in memory as their guid! Need real guids.

Fixing all these issues meant I had to do the job I’d been avoiding:

The Dreaded Character Import Pipeline Rework (Nov-Mar)

AlaskaPromo.png

My character import pipeline is a disgrace, It is laughably fragile and I’ve paid dearly for it. If this was my full time job I would have allotted much more time to making it more stable but I figured I would only have to do it once or twice and so I could just suffer.

My import pipeline currently consists of:

  • Build and Rig the characters in Mixamo Fuse
  • Load the model in Blender and cut away all the hidden verts (teeth, joins)
  • Reduce the poly count as much as possible with decimate
  • Import the Rig with all the animations, repose & bind it
  • Export the rig and all animations, one by one to collada
  • Make DDS versions of all the textures

Alaska is quite rare for a small indie game in that it has 13 unique characters and this process is very manual, laborious and error prone. It took me a long time doing it manually before I decided to try and automate it.

By March I had generated all the Final Models and used a couple in the test map to prove them out. At this point I realised I could use python in blender to automate the export and It made one of the most laborious parts trivial, It really is easy to write scripts for blender and I thoroughly recommend it, this is the script I used to export all the animations:

import bpy
import os

for action in bpy.data.actions:
    outname = None
    for object in bpy.data.objects:
        if object.animation_data != None:
            object.animation_data.action = action
        bpy.ops.pose.transforms_clear()
        if object.name != "Armature":
            outname = object.name.lower()
    root = os.path.dirname(bpy.data.filepath)
    if action.name == "Idle":
        file = root + "\\" + outname + ".dae"
    else:
        actionname = action.name
        if actionname.endswith("StrafeWalking"):
            actionname = actionname[:-7]
        if actionname == "Walking":
            actionname = "Walk"
        file = root + "\\" + outname + actionname + ".dae"
    bpy.ops.wm.collada_export(filepath=file

A few loops around this script and the final models were in the game but something was wrong!

Human Readable Formats (March-April)

I always knew I was going to need to implement binary formats and now was the time, the final characters where massive collada files and they had a lot of redundant garbage in them. This caused loading times to explode to about 2 minutes if I remember correctly so I was forced to address the issue. I ended up making unified binary formats for the following files:

  • skeletons
  • objects
  • atlases
  • fonts
  • bsps
  • shaders

This reduced the load times to ~10 seconds and was pretty satisfying. There were quite a lot of minor bug fixes as a result of this and it took me into April.

Kinematic Character Controllers vs Nav Mesh Based Character Controllers (April – May)

I had been using a kinematic character control for the full length of development and while I was fairly happy with it, there were a couple of issues. Primarily I couldn’t achieve the kind of control over it I wanted, getting pushed out of the way, sliding down surfaces, climbing vertical faces and tunneling where all issues i’d been fighting all through development.

Kinematic Character Controllers are good because they give you a strong connection to the physical geometry (walking into a door, knocks it open for example). Nav Mesh Based Character Controllers are good because they give you a strong connection to AI reasoning (If an AI decides he wants to go somewhere, he’s not going to get stuck on the way).

Weighing these two options up I decided to take the plunge and try to remove and replace the kinematic controller I wasn’t really happy with, with a nav mesh based controller. It turned out to be a lot simpler than I anticipated and now I feel like I have a good character controller which I can tweak much more easily without having to fire off rays and apply forces to.

Animatic (May~ongoing)

animatic-01.png

 

I had been looking for someone to do an animatic for me to help with promotion and to cement some of the themes of the game more firmly at the start to help the demo pop better. By April I had decided, as usual to stop waiting for someone to come to me and try and throw something together with my extremely limited artistic capability, it’s ongoing and may not pan out but If I can manage to achieve what I’m after it’ll really add something to the game I feel it needs.

What Next?

The greenlight submission really is coming soon (although I wont submit it until I am completely happy with it). To get there I need to block off the areas of the map I don’t want the player going and finish the animatic, I also need to make an updated in game trailer and then make my greenlight page. Following me on Twitter is the best way to keep up with ongoing development, fingers crossed my next post will be about the greenlight submission!

Firewatch critical analysis

12/02/2016

Preface

Firewatch is a recent first person adventure game which is trying to achieve very similar goals to Alaska and I absolutely loved it. I do think it’s failed in some regards and I’d like to try and reconstruct why I think it’s failed in the ways it has and also in what it has been successful in achieving. In recent years there has been a general thrust in smaller studios to explore verbs in first person games that use mechanics other than crude remote agency tools (guns).

The collapse of Irrational after Bioshock seems to have caused what some people hoped would happen with the Looking Glass alumni. That is, it seeded studios all over the world with immersive sim developers. That didn’t happen with Looking Glass/Ion Storm because those developers where almost entirely absorbed into large studios and those individual developers either failed to change the culture (like Harvey Smith at Midway) or stopped trying (Doug Church at EA, Warren Spector at Disney). I hope that’s a fair assessment. Happily, these developers have settled somewhere they seem comfortable now.

What made the Irrational alumni different is the era in which they were working. Developers from Looking Glass were known and respected throughout the industry as individuals and the studios who hired them wanted their brand. Irrational’s brand was Ken Levine, the perceived auteur of Irrational and so it seemed the people who actually made his games didn’t carry as much weight with big studios. Those studios had seen what they’d done with the likes of Levine, they feel like they’d created monsters and their response was to shut down any individual credit in their games and also to refuse to hire credited individuals. As a result of this and other factors the industry began to go through a second corporate revolution. EA found themselves on the other side of the table from where they started, they were the corporation that EA was created to wrest creative control from and developers where leaving EA to wrest control back from them. So developers from irrational went off and seeded a large number of teams with immersive sim development as a foundational culture, something that hasn’t happened since Arkane and Ion Storm were founded in the late 90s. Ratus Apparatus and Campo Santo while not being Bioshock alumni are part of the same wave of developers trying to build immersive sims without the gameplay crutch that is the gun verb.

firewatch-e3-2

Chose your own adventure

Firewatch starts with a chose your own adventure sequence which is designed to set the scene of the game and funnel the actual person who you are into the start of the game in a tailored, plausible way. This sounds like a good idea on paper, an interesting attempt to break the computer game amnesiac trope. Unfortunately it’s execution is lacking, in a first person game binary agency is always a problem (in this sense, first person meaning things happen to you, not the literal camera view point being the eyes of the avatar). In the opening moments the game alienated me by giving me so little choice over what I would do that I wasn’t able to accept that I would end up at the beginning of the game at all, in failing to ease me into the beginning of the game it actually made the introduction more dissonant than if it had just dropped me there and told me the character’s background because quickly resolving that traditional dissonance is a skill I’m familiar with and is also a disbelief I’ve already chosen to suspend before I started the game. The dissonance of having binary agency however meant that *I* had done things that I would not do and that dissonance is unfamiliar and inside the context of the game and so lingers in the players mind. It does eventually dissipate, resurging when the character’s back story comes to the fore but it becomes tolerable.

Saying that, the back story is absolutely inconsequential to the plot of the game it is completely and absolutely superfluous, the game would have worked, and much better, if the player had been allowed to bring whatever back story they so chose to the game. This is one of many perplexing ways in which the game fumbles with its narrative.

metroid-prime-trilogy-available-today-on-wii-u_839y.1920

Metroidvania

The game’s primary mechanic, other than the chose your own adventure dialogue, is its metroidvania gating. I loved it, I have an irrational love of this mechanic especially when they are executed well and clearly distinct and signposted, the abilities you unlock in Firewatch are exactly that clearly distinct and well signposted, it doesn’t take someone familiar with the metroidvania style more than a few seconds to parse the language of the game and understand whether something is gated and whether they currently have the tools to unlock it. Contrast that with Batman: Arkham Asylum which is one of my favourite metroidvanias, if not my favourite, I spent quite a while trying to figure out the first hacking puzzle I came across not yet realising that I didn’t have the tool to unlock it yet, not even realising it was a metroidvania yet & this was about an hour into the game if I remember correctly.

Saying that Firewatch didn’t use the mechanic perfectly, one of the key components of the pay off of a metroidvania is that it has to show you where you can’t go a fair amount of time before you can go there but it also has to show you why you want to go there and it was rare to look beyond one of Firewatch’s gates and see anything interesting or different from the side you were on, you generally got the reason to go there after or at the same time as the tool to get there and you were remote from it so the visual feedback to fuel the desire wasn’t there. Sometimes, and this is quite damning, it is infact the antithesis of the genre, the first time you see a gate is when you approach it to get to the other end AND you already have the tool to cross.

The one perfect execution of the metroidvania mechanic is the gate in the cave, there is a visual reason to go there, you don’t have the tool to get there, you receive a ludic reason to go there, you acquire the means to go there and then there is a pay off once you do. This is perfect, textbook metroidvania design at its best.

firewatch-e3-5.jpg

Types of twist

As background to my thinking re. the twist(s) in the game I recomend this article by Anthony Burch about satisfying twists (tragically it’s no longer available at the original site so I had to get an archive.org link):

The Four Kinds of Plot Twists (Three of Which Suck)

The twist in Firewatch was clearly signalled right at the very beginning of the game, you can’t deny that the player had a lot of the information required to deduce at least some of it. There were, however A LOT of red herrings. I’d estimate about 80% of the game was red herrings, plot threads that went know where or plot threads that claimed to feed into the twist but upon reflection reveal themselves to be a lie. I’m going to go into detail now so spoiler warning!

The primary Red Herrings I’d identify are:

  • Henry’s back story
  • Delilah’s trustworthiness
  • The Girls in the lake
  • The research station
  • Ron and Dave’s letters

Henry’s back story – LIE: As I’ve detailed before Henry’s back story didn’t play into the plot of the game in the slightest, it’s nothing more than quite a poor a reason for him to be where he is. However it falls into the lie  category because it is used to support the idea that some power organisation is orchestrating events. At the tent Henry claims they have information about him that he hadn’t talked about over the radio, implying whoever was spying on him knew about him before he came to Two Forks.

Delilah’s trustworthiness – NOT TWIST: Delilah’s trustworthiness is brought into question several times through the game leading the player to believe she may be involved, I actually think this is done quite well especially as you can see the same thoughts clearly going through her mind. However near the end of the game it is revealed to the player that she is lying because she has a boyfriend and is a polygamist. As I said it is done relatively well but it does contributed to the confused state of the ending.

The Girls in the lake – NOT TWIST: The Girls in the lake also present a sense that the actors orchestrating events are malicious and again right at the end it is revealed to be a coincidence that the true perpetrator supposedly exploited.

The research station – LIE: I would categorise this as a lie, it is a bit of a stretch but the idea that Ned would go to the lengths he supposedly did is unconvincing at best. I’ll address this better in the following section.

Ron and Dave’s letters – ???: Seriously did I miss something, what was this all about, it didn’t seem to try and say or do anything

s1eCdMf

Ned’s Motivations

Ned’s behaviour is downright odd. Everything he does after he loses Brian is poorly established and his behaviour, being completely insane, is at odds with the rational measured way he goes about things and expresses himself. Failing to convince the player that Ned is insane, means they undermine the entire game, it’s critically important they achieve this but I don’t feel they did. Throughout the game Ned reveals himself to Henry once at the beginning, bizarrely. He deems it appropriate to exploit the missing girls despite them inevitably turning up. He tries to convince Henry there’s some sort of bizarre science experiment. He fashions and uses radio equipment but somehow manages to accidentally make them aware of him with a cough. All of this to supposedly protect his secret in the cave and then gives the key to the cave to Henry in an attempt to shut him in? Behind a gate he just gave Henry the key to, what? Not to mention getting out without the key was trivial? It’s perplexing that such a well made and plot focused game would have such glaring issues.

Why I liked it

This post might come across as very critical so I want to reiterate that I loved Firewatch and express why. Firstly, and primarily, with Firewatch, Campo Santo overreached. They stretched themselves past the point they were capable, this isn’t a game that has been cleverly designed to have constraints that match the developer’s budget, Firewatch is the game they wanted to make and then they tried to make it and in doing so didn’t quite manage to complete it. That to me is far, far more interesting a game than the a master developer at the peak of his craft producing something less than his best.

Secondly, the game is very polished in its presentation. The visuals, the script, the voice acting are all absolutely coherant all working together to polish over the lumpy interior, the huge compromises that had to be made to systems and plot to get the games development under control. I think it is amazing how well it manages to get you, the player to ignore what should be and would be in a lesser game glaring issues.

Lastly, it happens to be exactly my kind of game, a first person immersive sim metroidvania, it’s all my favourites and it’s why I’m trying to make one too. With Alaska, I hope I can manage to make something even as half as good as this game.

Queer reading Metal Gear Solid 5

09/09/2015

For those who don’t know what queer reading is: Queer theory

A primary inspiration for this article is Aoife Wilson’s article on eurogamer: So, Mr Kojima, do we feel “ashamed” over Quiet?

I want to say in advance that i haven’t played any metal gear solid games except the first and ground zeroes/phantom pain so feel free to disregard my ideas based on Kojima’s previous work.

It should go without saying there will be spoilers.

 

It is my assertion and my reading of Metal Gear Solid 5 that the game is about Hideo Kojima struggling to come to terms with his own Homosexuality.

Misogyny

paz

Almost the first thing anyone talks about when they talk about Ground Zeroes is the scene at the end where Kojima blows up a Helicopter by exploding a bomb inside a woman’s vagina. It’s as crass as it sounds and to my mind at least is one of two things: either it’s a statement of resent for woman’s power over men (which seems to be a theme of the series from my understanding of it) or it’s a statement about the complex issues of violence and sex and to what extent consensual sex can be violent. I & this article will assume it’s the former, ymmv.

As far as i’m aware the Metal Gear Solid has never shown any aptitude or intention to wrangle complex and subtle issues it counts amoung it’s themes – Child Soldiers, Nuclear Proliferation, Private Military Companies and Auteur Theory, not exactly working in the grey area. So it strikes me as unlikely it’d be capable of or willing to address the latter idea, leaving the former. As I’ve said before women’s power over man does seem to be a recurring theme through the series – Aoife’s article states about a character in Metal Gear Solid 3 (which I haven’t played):

She was sexy, and she was playing Snake (and us – don’t deny you hammered R1 every single time you were able).

So working under the predicate that it was a statement about women’s power over men, ergo (in my opinion) a misogynistic statement, how does that mean MGSV is about struggling with sexuality? It doesn’t, it strikes me that the statement might not be a resentment of women’s power over him but women’s power over other men, a weakness he doesn’t feel he possess? This on it’s own is pretty tenuous but I thought it’s worth mentioning as background to my main points.

Purple Snake

2015-09-09_00001

Now, to the meat of the argument. I’m sure there are a lot of people who sniggered at my title because Metal Gear Solid 5 is clearly a gay game, it can’t be queer read because to queer read it is the only way to read it! It’s Top Gun with a gay supercharger on it, the glorious 80’s soundtrack, the gruff topless men hanging out on a pink oil rig. They love each other LIKE BROTHERS! This seems to me, obvious but there are people out there who believe top gun is about masculine competition and don’t see the homoerotic subtext of the entire decade! Ordinarily I’d be inclined to believe Kojima isn’t one of those people because MGSV is so outrageously and camp, it revels in it. It is surely impossible to not notice. However, mgsv’s treatment of woman seems to imply otherwise, that Kojima thinks the game is about Hetero Sexuality.

Quiet, You

Aoife’s article is a great article and describes mgsv’s problematic treatment of women better than I could, but something Aoife seems not to have picked up on is the homoeroticism. Aoife postulates at one point that none of the men in the game seem to notice that Quiet isn’t wearing any clothes and attributes this to their heroic intents:

Even when Quiet strips down to just her ammo belt and dental-floss underwear (which would give you serious wedgie issues if you were to sit in her sniping positions, just FYI) and dances in the rain, he’s always looking her right in the eye.

To me this is as clear a statement as any that every man “Snake” wins over and inspires is coming out the closet onto the big gay party rig utopia after the boring humdrum brutality of Afghanistan’s war torn wasteland. As a side note she also seems to consider Big Boss as a hero:

He’s the noble hero, saviour of men, women, wild animals and children and beloved by his soldiers.

But to me he was more like a villian, she has more knowledge of the series and character than I do but there are several indicators that he is not a hero, least subtly when he’s covered in blood and with his horn he literally looks like the devil, this fits with the idea that Kojima is struggling with coming to terms with what it is Big Boss represents.

devilbigboss

The camera’s treatment of Quiet is a form of overcompensation only found in two groups of people. Teenage boys famously overcompensate for a lack of understanding about what makes them attracted to women and most people believe this is what Kojima is doing, that he is immature. I believe his overcompensation is the other kind – the man who doesn’t find women attractive but wants to or wants to seem as though he does. To me the camera’s fixation with Quiet is to stop us noticing Kojima’s fixation with Snake.

It should go without saying that the game is not subtle, Child Soldiers are not subtle, the camera work is not subtle and the name of the characters are not subtle. The only female character in the game is called Quiet, aka A woman should be seen and not heard and Protagonist is called Snake, everyone in the game worships Snake.

Mansplaining Forced Exposure

The spoiler in Aoife’s article about Quiet’s attempted rape scene (sigh A-Fucking-Gain) seems to make an attempt at making Quiet’s character about female exposure, about trying to tell women that they are unable to control being exposed and that they should turn this percieved weakness into a strength, yada, yada, yada. Kojima at his most patronising there. Or is it actually Kojima, again, talking about himself? It seems to me that a queer reading of this part of the story would seem to be talking about coming out. Coming out (for someone who is struggling with their identity) is exactly that, recognising that you can’t control other people’s perceptions and opinions of you and turning that perceived weakness into a strength.

Conclusion

I want to stress this is all 100% speculation, it’s not my intention to offend anyone, Hideo Kojima included, with this article. I will absolutely take down or edit anything in it to preserve that intent. Please don’t hesitate to let me know on twitter @Sombrero_Kid or via email. Mostly though I hope it inspires debate about what is to me an interesting theory about the themes of the fantastic gay anthem of games, MGSV.

Development Update

14/08/2015

I know it’s been a long time since I last put up an update, there’s a bunch of reasons but mainly it’s been because I’ve thought the greenlight build was right around the corner for so long but things that needed doing just kept popping up.

So what have I been doing on Alaska?

Well the main thing I wanted to do before getting the greenlight demo ready was swap in the final characters to replace the dodgy placeholders I’ve been using. To do that I had a lot of work to do but I didn’t realise it. Basically I wanted to be able to use one skeleton and set of animations to control all the character but the characters come from the software I’m using pre weighted to their own skeleton, I spent a long time trying to set up an animation retargeting solution in blender failing, I still feel like it should be possible but I just don’t know how, so I resorted to animating a master skeleton and then for each model moving the master skeletons bind pose to match the models skeleton and then swapping them over, it works fine but it’s laborious. Then I had the issue that the skeletons for the new models are 2 orders of magnitude larger than I need them to be and blender has no way to bake the scaling of them without warping the animations which meant I had to extend my model loader to take in the master transform and bake it into the model at load time, this is working now but I’ve still got a few issues i need to resolve before I can roll it out to all the characters, mainly the walk animation moves the character (rather than letting me move them while the animation plays in place).

After that I’ve got a couple of content & prop passes on the parts of the map accessible in the demo, to get them to a releasable level of quality & block off the rest of the map, after that I’ll release the greenlight build and start working on the trailer for the greenlight campaign which is by all accounts the most important part.

I was targeting this summer for the greenlight campaign but it looks like it’s going to slip to the end of the year.