Monday, 27 January 2020

A New Generation of Semi-Sim Driving Games

I have been thinking about driving games again. The act of driving around virtual tracks in virtual cars - possibly not strictly simulational but taking inspiration from the laws of physics and how they apply to an engine working through a gearbox to apply force to up to four wheels in contact with (ideally) tarmac. Games that aren't about exploring open worlds or drifting on invisible rails but about refining your entry into corner 12 with the perfect braking point for your current setup, tyre wear, weather conditions, and fuel level to optimise your exit speed down the long final straight.

What I haven't been doing is playing much Forza Motorsport 7 or Gran Turismo Sport. Which isn't to say they're not still the ongoing titles in those series: Polyphony Digital have made good on their plans to keep releasing new content for GT Sport to bring it up to a full game and Turn 10 finally missed their odd-year Motorsport cadence (they've hit from the 2005 release of the very first Forza Motorsport) so are having to support their e-sports ambitions on the old platform even after updates have run dry.

Meanwhile, Codemasters have continued to release more driving games than any other publisher with their annual F1 licensed games and usually combined with at least one of a TOCA/Race Driver/GRID or Colin McRae Rally/Dirt titles. Now Slightly Mad Studios (of Project CARS fame) is part of that publisher, they'll have even more games to publish. Which is to say I've been playing through some older games and also trying out the reasonably new F1 2018 & 2019 releases to help me refine what I'm looking for in a driving game.


One of the nice things about different teams coalescing around an idea of a semi-sim, ie a game that's not the PC pure simulator racing setup, is that many of the quality of life features appear in several places. Since Flashbacks came to GRID & Dirt in 2008, they also came to Forza in 2009 (with unlimited rewinds in FM3). While playing the earlier 2011 F1 game, Flashbacks were limited with custom difficulty offering at most four rewinds, but by the time F1 2015 rolled around, you can rewind as much as you like (something that's still true in the most recent F1 games). To me this allows offline play to combine the process of learning tracks and control with experiencing a decent campaign made up of your best performances. It's training for time trials or online play and it gives players the confidence to turn off assists because learning how to tame a beast of a car won't ruin a 30 minute race against AIs that they'd otherwise have been crushing. We now expect regular checkpointing in games rather than a failure resulting in restarting the entire mission.

The idea of assists has also changed over time. The handling of F1 2011 and 2015 isn't identical but you can feel similarities (beyond how weightless both make the car-car impacts feel) with things like how ABS works which are unlike a modern Forza or the newer F1 games. Previously, when working with physically-based cornering (ie not "arcade" handling) then turning on virtual ABS provided limited help in corners because they felt like they consumed all the friction of the tyre slowing the car down so there was nothing left to turn with. If you brake before the corner then turn and accelerate, this isn't the end of the world. Unfortunately for those wanting this assist, trail braking is a thing and F1 is known for it - it's basically impossible with this old system for simulating ABS (which feels a lot like you've locked the brakes but without the loss of deceleration).

But assists are meant to limit your potential (they make your mistakes less ruinous but cap your performance so there is incentive to turn them off - that's the ideal anyway) so this wouldn't be the end of the world without another major assist everyone offers: dynamic (3D) racing lines that go from green to red to tell you where the braking point is. Only they're not quite as dynamic as you'd want from a teaching tool: they tell you where the best braking point is for a competitive lap, not where you need to brake if you can't use trail braking because of another assist you've got on. Marking the place where you need to have already been braking is like having a note marker in a rhythm game where you're not meant to press a button: that's the opposite of what I wanted. So jumping ahead from 2015 to 2018, I was glad to see that the new ABS system reserves friction for turning - it becomes a helper mode that makes your braking slightly less effective but means you don't need to know how far to hold in the left trigger and how to let it off slowly as you decelerate to get round the track competently.

With all these assists (ABS, traction control etc), they're completely illegal in actual F1 racing but also that is some of the most demanding driving you can do - I'm not trying to play an actual simulator; I don't drive race cars & my joypad is a bad approximation (which is why games have to smooth steering inputs with a joypad) for a complex wheel & two pedals - F1 cars don't need a clutch pedal. Doing this for real is something experts are paid a lot to do very well and consistently after years of practice. Which helps lift the question beyond "is it realistic" because no, none of these are options you can enable in an F1 car. I think it's easier to have conversations about what assists are designed to do when there's not the option of falling back to how it happens in real life (unlike a lot of the cars in these semi-sim games that do have actual clever gizmos doing this stuff, sometimes with an option to disable them for track day).

When I'm learning how to handle the car losing balance at a tricky corner or how to manually tweak my various boosts (if you didn't know, F1 cars charge an onboard battery under braking which they can deploy as extra power (beyond tweaking fuel mix); they also have a system for increasing speed on the straights by opening the rear spoiler as long as they're under a second behind the car in front to help encourage overtaking) then sometimes I don't want to worry about locking. Also there are a lot of people who haven't had to think about any of these things and introducing one concern at a time is a great way to build the ladder to enjoying the full range of systems in these semi-sim games (along with unlocking the best lap times that mastering all the systems and knowing a track well can provide).


There's something here that might not hold me for an entire 305 km on a single track but luckily you can tweak distances and it'll kick up wear to compensate (as all these games should), turning a race into a more reasonable 20-30 minute play session. The weather forecast is always there to keep things interesting - pit for wet tyres or should you risk it not getting worse and put on intermediates? The pit strategy is a core part of every F1 race because you've got to change tyre compounds at least once and, in previous years, refuel (1994-2010) - it's all about handling the dynamic conditions and betting where you'll need the best lap times (making races less of a procession defined by raw pace during qualifying turning into race pace). The conditions for an exciting race have been developed by actual racing so video games can handily borrow all that know how - drivers considering when to burn tyres on pace and when to sacrifice a tenth of a second but be better placed to overtake in two laps when the opportunity arrives (bonus points for games that have the radio operator advise you about such possibilities). One of the things that has turned me off Forza games as a long term project to master was a lack of interest in dynamic conditions being as dynamic as they really are (even the poorly received DriveClub provided examples of dynamic conditions and real-time lighting changing a dozen or more laps into never the same loop twice). Having wet tyres teleport onto your car as the rain starts is really not doing it for me in 2020 (especially in FM7 as you keep driving past a pit lane there's no reason to use).

F1 games had always challenged me because they're so fast that mastering them without assists needs a great memory or amazing reaction times. With a granular AI difficulty (1-115) you can really tune the AI to your pace (also the breadth of teams means that you know approximately where you should finish based on how good your car is vs the rest) and slowly ease off the assists. There's also the pageantry of the race weekend (all of this stuff tweakable to however much you want to engage with) which allows you to (in the most recent games) run various programmes during qualifying to get familiar with the track and show your team how you can maintain an ok pace while focusing on minimising fuel use (doing things like coasting at the end of straights) or being kind to your tyres. There's a lot more than just doing the race itself and those programmes feed back into unlocking upgrades to push your car up the rankings. F1 2019 even introduces a brief Formula 2 option, finally offering cars with longer acceleration and braking times than the slowest F1 team (to help get up to speed - something the far wider selection of cars in other series make much easier).

We should see some new consoles showing off new driving games later this year but I might actually be the most interested in what new is coming to F1 2020. The actual motorsport is making a few changes that'll mean new tracks but it would be nice to see them bring back the classics (especially as they've already built versions of the tracks recently retired from the real season) to make more meaningful the smattering of classic cars already in the game and expand options beyond just running a career mode that pretends tracks never change in the future theoretical seasons. What if they got really into speculating on future rules changes so you could vote in new seasons which played quite differently? Something to give a 10 year career some real legs.

Tuesday, 31 December 2019

Games of the Year 2019

So last year I refined the criteria for inclusion on my list of interesting games (which I'd actually managed to play through) released each year to include Early Access and other pre-release purchasable versions of games that were approaching feature-complete. Slay the Spire got that 1.0 release date early in 2019 on Steam (press inquiries are told the game released in 2017), which ties in well with how I expected the system to work. Of course, the beta of a brand new fourth character is currently ongoing because digital games often continue to be expanded upon after that 1.0 point. At the other end of the spectrum, that 0.17 "almost to 1.0" release expected in early 2019 for Factorio didn't actually arrive until almost October so maybe that wasn't as ready to call complete as I'd expected (I have not had time to even look at the game this year so I still think 2018 was a better list for it). Will 0.18 arrive soon? The devs have decided that it doesn't matter, they're just going to arbitrarily name the branch that's ready at the end of September 2020 as 1.0 and then work on patching a "released" game after that.

So all of this is to say that this year I'm going to be playing with the rules even more, because games today are rarely "done" and it's getting real hard to guess when they are "feature complete" (whatever that means in an era of plenty of games doing free DLC for a while beyond stability patches or even mechanics updates via "live game" changes). To be eligible for my totally subjective list of great or notable games for a given year, a game has to have released content I consider notable and I have to have extensively played the game that year. This means that if you release a game in December and I didn't get round to playing it but you release a large DLC expansion the next year, I can put the entire game on my list rather than weighing up if the DLC alone is good enough to make the list (DLC can still get onto the list, as it has done for years past, by being exceptional stand-alone content). Hey look, back in 2014, I was already bending the rules (expect similar in 2021 as I'm not going to be rushing for release day consoles in late 2020 along with every notable new game).

This year has been a bit weird for my play time. A console generation is coming to an end and that often means jumping through some of the highlights or games purchased but barely played (due to time constraints or just not being in the right mood for genres or design choices in otherwise interesting games). This year was really something in terms of diving into complete series (played end to end, usually including expansions or DLC) as part of that: Baldur's Gates & Dragon Ages, Dead Spaces & Mirror's Edges, Assassin's Creeds & Batman: Arkhams - some of these have not been short dalliances. But on to the 2019 list and what has caught my eye this year.


Best of the Best 2019:


    Outer Wilds

Another of those indie ideas that bubbles out of student projects (a 2013 master's thesis that had a public alpha in 2015), this clockwork miniature planetary system on a 22 minute timer will hopefully prod a few designers to think again about how roguelike-likes can work. I know it got me thinking about spaces that are broad rather than long.


After completing a short tutorial to unlock your space vehicle, Outer Wilds reveals its core conceit: you are trapped in a time loop that resets upon your death, most commonly happening 22 minutes after the loop starts as the star in the centre of your system goes supernova. As an explorer archaeologist, you will find out what's going on and why you and two other people are the only ones aware of this. At the very start of the game you have every tool required to piece together everything and explore every inch of this virtual system. It's Metroidvania-like if rather than collecting new tools, it was gathering new understanding of how things work to unlock the various doors and puzzles that initially seem to gate your progress. The only things that change between loops are your computer logs that list what you've already found (which is invaluable at showing links between areas with a marker if you've got more to find) and a couple of frequencies you can use to find artefacts (which get added to your device once you stumble upon anything related but are purely for help locating things, not required to reach any point).

Nothing in this world can be more than about 20 minutes away, and basically none of it is more than a few minutes away. But it's not a precision platformer or a classic roguelike about mastering controls or riding an RNG engine. It's an incredibly detailed space where you can dive into whatever parts you find the most enticing and will slowly learn more about what this place is and was (with some haunting writing to uncover) as you unlock every part of it. This is absolutely in the lineage of the Immersive Sims, while also feeling incredibly fresh as a walking/flying simulator. I've spoiled the reveal in the first few minutes of the game but this game is all about discovery (in any order you choose) so I'm going to avoid talking in detail about anything else. A real treat of every interlocking piece (both in the sense of each area and things like dynamic music & visual design) making the whole function, let alone more than just a sum of those parts; you need to play this.

    Assassin's Creed Odyssey

Here's why the preamble made sure that releasing new content for an existing game pushes it into consideration for that year. I've been a bit behind keeping up with this series recently (turning up on a couple of those "I need to find time for these" lists at the bottom of these annual posts recently) and never doing more than playing enough to understand the changing systems and renderer in a given year. But this year I made the time to do a deep dive into the entire series.


It's remarkable how new the most recent two games (Origins and Odyssey) are, completely flipping the established formula. A long time ago I wrote game previews and one of the things I started doing in a draft was writing down the controls, text that was cut but informed my final writing; essential for thinking through the new game. Why? Because in the '90s genres were moving fast enough that knowing what the designers thought was important for the interface and controls gave an insight into what the game was (and could be communicated to the audience without just referencing games they might not have played or even heard of). The entire control scheme for Origins was new. Core ideas like high and low profile (tying climbing, sprinting, etc to your AI stealth alertness system) were dropped; combat was completely reworked. The urban environments were replaced with an open world on land that showed a huge change in ethos since the previous attempt at anything similar (Assassin's Creed III, which was rolled back to more compact explorable areas with more focus on naval traversal in IV). These games are now very much the Skyrim end of the open world RPG, not the [melee-combat variant] GTA end.

I don't know if it was the patches and updates (adding some of the best narrative content into the game and completely reworking the levelling curves to accommodate post-credits expansions and a larger perk system) but a lot of reviewers seemed a bit down on this entry (even the ones who liked the transformation of Origins) - I loved almost every moment of it. Did reviewers who found boring copy-paste quests end up doing the bulletin boards (which seem quite clearly to be generated quests you should ignore unless desperate for XP)? The game now there are no more updates planned seems tuned that even if I'd only done half as many of the authored quests, I'd have been fine for the levelling curve (the game boosts the level of content to prevent you overlevelling and trivialising everything while retaining areas you can only go to later on without extreme caution - completionists are not punished but you can ignore a lot of content without even considering grinding off the main story path).

Thanks to the metanarrative, whatever science fiction the series rolled into the historic settings has now fully flipped over to fantasy meaning that this Ancient Greece can be filled with mythological creatures and stories on top of a very dramatised Peloponnesian War. The stunning visuals (making great use of that Origins engine update) keep uncovering new areas worth exploring while the strong cast and humorous asides pull you through a Skyrim-long RPG. I never felt exhausted by the length of the game (even coming straight off the also quite huge Origins) and actually found the swift conclusion of the A plot disappointing; getting the "best" outcome did not make it any more satisfying how quickly the sprawling story collapses into a couple of quick fights and some rather sparse areas with little in the way of B plot questlines before you see the initial story's concluding cutscenes (and dive back into the world to finish off B plots, optional challenges, and work towards the real story finale in the metanarrative timeline and dive into the meaty DLC post-credits stories - those expansions able to easily consume 30 more hours, most of which are worth your time).

I played the game as Kassandra (the canonical protagonist) and from what little dialogue I heard from the Alexios alternative, I feel sorry for anyone who decided they wanted to play a bloke. The romance options are not Bioware-style party members but feel about as well developed narratively (in the chapters you have the option to pick them up) with plenty of opportunity to play a disaster bisexual protagonist (love interests are all written as playersexual). Unfortunately there is some bury your gays that seems like they could have written more interesting ways of trying to hit emotional notes with raised stakes. I'm also still torn on writing a single plotline vs making choices change outcomes (in a game so long as to make it so choices can't majorly change things with major repercussions later). The dialogue is really nice "we have a set character but you can express a range of views within that envelope and try different strategies to engage with NPCs" and I was surprised later on in the game while restarting various quest chains and trying different options leading to quite different conclusions (even if isolated to that area, as the main plot only has a few branching options that are very Walking Dead "diverge then rejoin"). A few plotlines (including that A plot) could have been tightened up and expanded rather than writing several similar alternatives that ultimately didn't really make earlier choices feel more real (and could even undercut some of the themes of the narrative). Even the old binary narrative designs of the Mass Effect or inFamous series are a step ahead of how Odyssey handled this one system so I hope any future iteration can step up (maybe by poaching some ex-Bioware writers to help give an extra pass to the scripts).

    Mutant Year Zero: Road to Eden

Released at the very tail end of last year (too late for me to have played it) but with an expansion coming out in the middle of this year, this is a 3D real-time isometric RPG that seamlessly turns into a modern Xcom-style move&shoot two phase turn based tactics game for combat. The real trick here: making that crunchy tactical combat engine really sing while removing all the stalking phase of initiating encounters (that's all handled entirely in the real-time part of play with vision cones and noise bubbles determining who gets the first turn when combat starts) and also adding silencers to weapons to break a large area full of enemies into several short sharp stealth assaults before anyone can raise an alarm (once again, removing the long turn-based movement phases between packs of enemies that slowed down Firaxis' titles).


The licensed setting here was a world I'd not previously encountered so I can't speak to the accuracy of it but the writing here slowly reveals a history you probably saw coming but it didn't overly detract from experiencing it unwind and getting a feel for the setting that takes the post-apocalypse standard and inserts a slight slant. Characters are colourfully written, encounters don't have time to get stale, and the visuals have a great lived-in feel.

I used to love UFO/Xcom (the 1994 onward series), completing playthroughs well into this decade, but could never be happy with the Firaxis reboot. I had thought that removing action points and moving to a two phase turn was what turned me off. This game made me realise it was actually everything else that had changed that broke it for me. I'm very happy with the Xcom-like combat resolution here (especially how they've tweaked it to move faster and allow stealth to matter more).

    Phoenix Point

Wait, didn't I just say I don't like modern Xcoms because I'd rather load up an extremely old original game (that is surprisingly playable despite technical shortcomings of running a 1994 game in DOSbox that only barely works with modern screens and mice)? Well, here's the just-released other side of that year-long realisation. This is a hybrid of Firaxis' modernisation with some original flair from the series originator, Julian Gollop. An indie take on the formula trying to compete with 2K's now-established series while reaching back for ideas about campaign structure and independent forces which can be allies or enemies as your campaign develops.


Starting with the turn-based combat, while it's not a complete return to action points, you do start out with 4 points each turn and can spend them on movement or combat in any order and combination (and with a second reserve of willpower for specials that also push a soldier closer to panic as you deplete them). I have long mourned the end of action points - a dozen plus fractions of time you can spend on anything within your turn allocation to play out - letting choices like a slow aim & shoot be tuned against blindfire with precision rather than using cooldowns to differentiate the different potential actions each turn. Games like Frozen Synapse 2 (simultaneous turn-based) last year and John Wick Hex this year have been doing some interesting stuff with modernising that idea but if we're moving away from that, I prefer the way Phoenix Point simplifies it.

The geoscape strategic layer here is somewhat primitive but functional, cutting back some of the options taken forward from the classic series into the Firaxis games but also moving back from the narrative "mission select screen with a ship-shaped cursor" map into a proper open map full of places to explore, defend, and worry about losing to emergent future events. This isn't a treadmill of progress that you have to walk down and can find out that a decision you made 6 hours ago (or even a single lost soldier) actually was game over because you fell off the required power curve the game doesn't tell you about. I've not actually finished a campaign yet but everything I've played makes me feel like this is inspired by the campaign design of the original series but with a bit more narrative flair for this new-but-similar setting you take control of as the last best hope of survival for humanity (here with global warming unlocking a frozen alien mutation menace). I hope anyone chasing the sales of Firaxis' series give the decisions made here due attention (it sounds like John Wick Hex will not be remembered by many but I do think that action queue is also worth others iterating on, even if I can't recommend that game as a whole).

    Disco Elysium

So talking of throwbacks combined with potential paths for future games, this is a very retro RPG in some respects with probably quite a bit of direct lineage to Planescape: Torment. It's a game of talking, or getting to know a place and some people, and working out what it is you know and believe in having woken up knowing almost nothing. It's also a pretty interesting modern setting around collapsed democracies, irony-poisoned Leftism, and what it means to be a detective in the era of police violence that feels totally disconnected from classic film noir portrayals.

The work turning an introspective character into the progression and character building system is smart (build out who you are, what you can do, and what knowledge you have access to as you explore the world), the way it feeds into the dialogue systems gives a cohesive interface and even feels a bit like a Failbetter Sunless game (so looping back to Torment influences). I really hope more games that want you to define a character rather than playing a fixed one iterate on systems like this. Scoping the world to be a single city block made it possible for an indie project to make a world this reactive and, I suspect but haven't confirmed, offers quite a bit of replayability for those of us who want to poke at exactly how broadly the character and progression can be directed.

    Resident Evil 2

As I said earlier in the year, this was a project that could have fallen apart extremely easily. Remaking a 21 year old title in a genre whose popularity has been up and down, bringing back most of the story beats and even design decisions while completely remaking the visuals and how the game controls (goodbye fixed cameras). And yet, what has arrived is both a great recollection of what has always worked for horror games along with enough new to feel modern and accessible. This should end up in classrooms as an example of how to refresh old games while retaining their identity.


Worth Talking About 2019:


    Gears 5 & Metro Exodus

I'm going to take these together as neither of them are going to make my top list this year and they share an interesting choice I hope we see refined in sequels. Gears 5 sensibly moves away from the boring Nathan Drake impression of a protagonist in 4 while retaining the "this advertises the engine" chain of interesting settings for set-piece missions that we're now used to. The flip is that those mainly linear experiences are accessed via several open world areas that also contain optional combat encounters that reward upgrade tokens for an AI buddy (can also be played co-op, so now offering two main players and a 3rd helper bot player if you've got someone who is less on top of shooter controls).

Metro Exodus also mixes more linear sections with large open areas where you can complete objectives in any order and engage in optional quests, crafting guns, and wondering why they got rid of the bullet economy of previous games. They're not doing it identically (Metro mixes open sections with some narrative missions and set pieces, offering very linear corridor sections as purely filler between those open zones; Gears makes the open areas combat free and always on a vehicle so the line you walk over for encounters or missions is very obvious rather than organic) and I'd say some of those linear sections in Metro really drained my enjoyment of the game while Gears kept the best stuff for the linear sections that could have been taken from any of the earlier games. But there's a common push for trying to do something more that I think offers something very interesting: replaying Gears 4 earlier in the year took me less time than my first playthrough but it was exactly the same progression; these open areas mean you can tailor how long your game is by choosing how much optional content you play (not just how many nooks you look in for collectable trinkets).


I think it's something we don't do enough of. Because it's hard to make a satisfying narrative that's as satisfying after a full dive as with a much shorter highlighted path through it. Books are as long as they are and you're not expecting a book to offer a shorter path through it where you only need to read half the chapters but it still makes exactly as much sense. Luckily we can modify experiences on the fly and so ensure we add context where it might be missed from skipping chapters, something authors of a single book can't do (even if they wanted to).

These games are not the interesting explorations of customising your typical eight to twenty hour action experience so you can play it as a long/double-movie 3-4 hours highlight or a roaming exploration of every nook and cranny with every side-story maximally expanded for 20+ hours (or several routes in between, all signposted so the player doesn't feel lost for what they should be doing next given their desire to reach a conclusion without wading through what they consider too much filler content). But they could be a step on the path there. I also can't stop thinking about how Outer Wilds is a 22 minute long game that you play for about sixteen hours and walk away feeling satisfied, but could also play for less time if you didn't want to engage with certain sections (as long as they weren't on the path to the critical knowledge for reaching the end and seeing credits). With RPGs we've explored main vs side quest chains etc but it's always been the difference between a long story and a very very long story.

    Tom Clancy's The Division 2

I liked the first game in this series enough to put it on my top list but three years later and I didn't find nearly as much to get excited about here. Despite the fact that in every single area I can think of this game builds upon the previous game and really refines systems in a way I can only think of as making for a better experience. There have been a few missteps that got corrected via patches but the first game launched with a lot more systems almost broken and only the core encounter loop & setting to pull you through it. Unfortunately I think it's the setting here that lets the game down. The well rendered scenarios with great enemy AI and still engaging RPG shooter combat don't matter nearly as much if you're not drawn into the setting. They picked a city and time of year that I don't find nearly as interesting as snowy Midtown Manhattan and pushed the clock forward so all the initial mystery of working out what had happened has been resolved. I can't even blame the narrative for being a lot less satisfying as the original wasn't that tight (especially with missions you're always thinking about repeating for the loot and co-op fun) and, baring a bit of a gap where I expected a more extensive cut-scene or even mission (once the levelling progression ends, a new enemy arrives and resets the map with new harder encounters, but this is all revealed in what feels weirdly rushed exposition), everything flows reasonably well here.


When we talk about the maturation process for games, we've often focused on visuals (this engine is doing a lot right even down to some really tricky edge cases) or more broadly on technical competence. The cinema equivalent of filming something well and not breaking the projector - once you get a certain level of maturity it's a baseline expectation of competence (even if cinematographers and editors can clearly show excellence far beyond basic competence to elevate a project). Less talked about is that reaching that point will push a much heavier focus on the other parts of a game. Some players will find that "it feels good to play" or "I like working out the optimal solutions" is enough to drag them through a game, as we are an interactive medium. But also there's going to be stuff like this where I can say that this game is a step up from the last game (which I played a lot of and even jumped into the PvP setting for the adrenaline rush) and I have no interest in going back and playing more than my basic tour of the initial campaign and prodding what the post-levelling game looks like.

    Observation

Some of the indies who worked on this also worked on Alien: Isolation and you can see some of that at work. It's also worth looking at for the visuals and polish possible for modern indies working with an established engine. It's not Hellblade-tier of aiming directly for AAA aesthetics and technical rendering but it's certainly got a very specific look from the cameras to the interfaces combined with good-enough humans (the classic "only do this if you absolutely have to" difficulty spike for realistic real-time rendering and animation on a budget).


I did not enjoy the structure of some of the puzzles in this "you are the machine" exploration game and suspect that without a FAQ, I'd have only played an hour or two (of what is only a six hour game). But in a year where I must have missed more notable indies than I usually do (or just didn't find that much to remark upon - there are a lot of games near this in my personal rankings this year like Baba is You where I don't actually have anything notable to say), there's something here to pay attention to and based upon Stories Untold & this, I expect their next project could be really special.

    Ape Out

A very short note, as this is a very short game and I'm not as enamoured with the bold colours as many critics are. As you play this (and so far I've seen it offered free on Epic and included as part of Amazon Prime & Xbox Game Pass subscriptions), listen to the music. It's not an audio stream, it's dynamic composition. It's cool and I've been playing with something kinda similar in a very different genre for years without ever getting results that sound this good.


Notable for Consideration in 2020 (as they evolve):


Noita - I loved those '90s sand simulation games & the homebrew stuff (we all made from copying code from magazines). That with procgen levels you explore while constructing your own wands as a Magicka-style action roguelike-like? Looking forward to when it's nearing done.

Control - Sorry Remedy, going to wait for the GotY edition in 2020 once the season of content is all done and included (also the chance of having a GPU that's less than 3 years old, with some flavour of ray-tracing acceleration). Sounds like my sort of game but I didn't get round to it in 2019.

Death Stranding - The asynchronous collaborative online experience is intriguing and makes me slightly wonder about if I'm missing out by punting this into 2020 but also I'm extremely interested to see what that engine looks like on a PC or maybe will look like on a PS5 by the end of that year (if that's a cross-gen early example Sony invest in). I'm also slightly curious if memory value editing on PC could do some interesting things to the mid-early hours of the game that some reviewers have not reacted well to (or even what a modding scene could do, depending how locked down the game is).

Ghost Recon: Breakpoint - Beyond a few critics who really found something interesting here, this got panned and resulted in Ubisoft delaying their entire 2020 stack while also talking about how they needed to let live games have more space to breathe between iterations. I want to see what this looks like after some additional iteration because it looked really rough pre-release (of the "quietly warn friends to maybe wait for some patches before buying" type of coming in hot) but the sniping / clearing locations (picked up as the highlight by some reviewers) already felt like a step forward from Wildlands.

Star Wars Jedi: Fallen Order - Sounds like this came in pretty hot too, so I'm going to wait for the version that's got less bugs in 2020. It was not a great year for EA releases feeling "fully baked" with NfS: Heat a week earlier feeling cheap & buggy for me while Anthem will likely live in infamy (even if that speculated retooling launches in 2020 and actually makes it worth spending more than an hour enjoying the suit flight stuff). Even Madden looks to be in decline (while NBA got cancelled shortly before release, again).

Monday, 14 October 2019

Cheat Engine: Dev Basics

This year I've been playing through a lot of premium computer games that came out around the time Facebook was a platform where a lot of social-idle games were making a lot of money and getting a lot of attention from game designers. To the point that some of those mechanics for positive feedback loop economic models was being dumped into $60 games or linked via external social games on another platform. Even in the current era, where that stuff is less in fashion, a lot of the changes are still being applied to in-game economies (when not tied to micro-transactions and the quest for "AAA whales") compared to the process of balancing a game economy from the era previous. Some games have been patched to provide all the bonuses from engaging in external social games when those social games were taken down, others simply expect players to do more grinding in the game as that was always one of the play styles they considered viable at launch.

Personally, I've been approaching it from a different angle: one of someone who always wanted to know what the cheat codes were for games, even if I ended up not using them that much during a first playthrough. As a developer who has always believed that my code is usually a guest on someone else's hardware, the cheats available to me are rather broad. I don't feel the need to limit myself to the dev/debug commands that ship in a solo game (where I have not signed up to an agreed set of rules for play in a multiplayer environment). In my consideration, the means by which games are protected from players editing memory values to play content they do not own is called copyright law (as pasting in any parts of the game you have not sold them into memory would be an obvious violation of copyright) - knowing this makes the technical means by which you should operate clear. (And the ESA or anyone trying to shill DRM are not your friends.)


I occasionally have lively discussions with other devs on this topic but I'm against anti-consumer snooping or memory obfuscation having any place in solo experiences that have been sold to consumers (who should then expect to be able to tweak their play experience as long as it doesn't involve grafting on copyrighted content that was not included in the sale of data). Including source code is a method of assuring players that you have not hidden any anti-consumer systems in the thing they purchased (and given some expertise, they can explore and modify their experience however they like); some modding tools even approach this level of access.

Which brings us to today's topic: Cheat Engine. This is quite an advanced tool with a long history of updates so I'm only going to talk about a few of the simpler things that a lot of people use it for. If you make games but have never played with CE then this may be a good primer for what people are talking about when they discuss Cheat Tables for your game.


The simplest function of Cheat Engine is to scan the memory of a running application to find any instances of a certain value (a bit pattern that could be read as a certain value, optionally including fuzzy scans that find anything that might be a interpreted as a value or within a delta of it for floats) and save the list of those addresses. The Next Scan function allows this value to be edited & another scan run on only the addresses already found. A player can use in-game systems to tweak a number and then find all fixed memory locations that are mirroring that change by repeatedly scanning for addresses doing what the in-game value does. A canny player can even deduce that certain values in the UI are not immediately saved back to a permanent location (and the save process may not involve copying the same location as the UI is using) so to only rescan the memory at certain points (like after backing out of a buy screen into the main game UI, completing a virtual transaction).

Knowing where in memory the values are being updated, the player can track those locations and even lock their value to prevent them changing. This is very useful if the game is updating a handful of locations with the same value and the player wants to know which value is used for future calculations as the master value and which is just mirroring (or if they missed something in a previous scan and so don't have the core location they want in their current pool of memory locations - as developers then we have an advantage in how we think about memory & knowing what processes are going on that can cause data to be moved and plenty of players doing this stuff also have that knowledge). Often applying a lock and then trying to change the value in-game will show which location is key & which can be ignored. This is where the player can now basically save-file hack in the live game and change any value they can isolate. The scans are very fast so it's quite easy to do this at any point, especially if you're looking for an unusual bit pattern (eg not 0, 1, 2, 16, etc) that's easy to repeatedly change via in-game actions on demand.

November Edit: one nuance of this is that scanning for the bit pattern is only one of the various modes. Within a range, has not changed since last scan, has decreased (optionally by a specific value)... there's a lot of ways of doing a refinement. With a bit more time (we're talking only a few seconds to index it on a modern system with a typical binary) you can even start from "I don't know the initial value", which makes it surprisingly fast to find where player health etc are being stored in memory in a lot of games. And then locking that memory area (have Cheat Engine repeatedly writing that value to the location to erase any changes by the game). The versatility of the system was something I'd not considered before giving it a poke - average users really can find ammo, health, etc extremely quickly as they control when the value changes or stays fixed then refine memory locations mirroring their expectations.

But it's not common for these offsets to be fixed, so players would have to do this whenever they want to change something and maybe that's enough friction to consider it annoying. Which is where a slower but fancier trick Cheat Engine has comes it: once a player has an address they can look for any memory in the running application that looks like an offset or pointer to that address. Then they can do the same iteration & look for that value not changing. A player will note that after a while (or load, or game restart) the location of some in-game value moves and then check to see if any of those suspected pointers have moved to the new location they've found for that in-game value. Advanced use could even follow a chain of pointers. These saved pointer locations are often stable between level loads, game loads, and even some minor patch revisions (although the last one is uncommon, which is why Cheat Tables usually have the associated patch version tied to them). There is more complex stuff with code injection and advanced tweaks that can be done for fancy tables and reactive cheats (halving damage taken, boosting XP) but the bog standard DIY stuff is usually more limited. But this is still clearly powerful enough to have worked out where your CharacterInfo struct is and know how to follow the pointers and edit various values.

If a player wants a million credits to break your in-game economy, it's probably reasonable easy for them to hack it without that much expertise (most anyone could follow a tutorial on this stuff, even if it's sometimes faster to do with some expertise to understand the underlying systems going on moving data around in memory). Once upon a time, it was standard for computer games to include cheats and some development or debug tools that would make those extra credits something that didn't require an external tool. In recent years it has become a lot less common (maybe in part due to GTA Hot Coffee and similar "scandals" related to leaving assets and tools that the player was never meant to encounter in the release version; maybe the console push for Achievements​/​Trophies as "verified played good" permanent records for player profiles).

I think this stuff is good for games. Especially a few years after release, when players are going to want to really poke at all the systems in a game and find out the limits of how things work. Obfuscation work to frustrate players trying to do this is wasted resources that could be spent making a better final product and, often, isn't even entirely successful as it just takes one smart hacker to figure out what's going on and work out how to get round it by writing memory at a certain point or injecting a bit of extra code at just the right location. It's the user's memory so it's not like you can guarantee that they won't lift it from under you. Embrace the chaos, and kindly ask players to not submit bug reports if they've been editing their memory addresses while playing a game, because this is far far outside of developer supported play.

Friday, 30 August 2019

The Sharpening Curse

I should start this off by saying that there are times when sharpening filters are absolutely standard. Playing with local contrast using an unsharpen mask or clarity tool is a stock part of most digital photo development (baring skin, where the clarity tool is used in the opposite direction to reduce contrast and provide wrinkle suppression) and something like Adobe Lightroom even does an automatic (mild) sharpen on export for printing (in the default configuration).

That said, I welcome anyone to look at freeze frames from any 4K film print and tell me what you see. Watch it in motion and pay attention to any sub-pixel scale elements as they move through the scene. Watch it on a neutrally (professionally) configured screen that's accurately presenting the source input, not a TV that's doing its own mess of sharpening because it's configured for a showroom with everything dialled up to 11. Even if aggressively sharpened (and most films are not), then there is a lack of aliasing thanks in part to the ubiquitous use of an optical low-pass filter in front of the camera sensor during light capture and because an optical sensor is capturing a temporal and spacial integral (light hitting anywhere on the 2D area of each sub-pixel sensor & at any time during the shutter being open is recorded as contributing to the pixel value). Cinematic (offline) rendering simulates these features, even when not aiming for a photo-realistic or mixed (CG with live action) final scene.

When we move to real-time rendering, we're still not that far away from the early rasterisers - constructing a scene where the final result effectively takes a single sample at the centre of each pixel and at a fixed point in time and calculates the colour value. We're missing a low-pass filter (aka a blur or soften filter) and the anti-aliasing effect of temporal and spacial averaging (even when we employ limited tricks to try and simulate them extremely cheaply).

Assassin's Creed III using early TXAA
Assassin's Creed IV with TXAA

Even when using the current temporal solutions to average out and remove some aliasing (and the more expensive techniques like MSAA for added spacial samples, which doesn't work well with deferred rendering so has fallen out of fashion), the end result is still a scene with far fewer samples into the underlying ground truth (or the output you would expect if filming an actual scene with a real camera) than we would like and a tendency for aliasing to occur. When TXAA (an early nVidia temporal solution) was introduced then it sparked a mild backlash from some who wanted a sharper final result, but mainly because they are so used to the over-sharp mess that is the traditional output of real-time rendering. The result has been various engines that use temporal solutions now also offer a sharpening filter as post-process and AMD (& nVidia) are starting to advertise driver-level sharpening filters (as an enhancement to be applied to games for "greater fidelity").

While AMD are talking about their FidelityFX as an answer to nVidia's DLSS AI upscaling (using those Tensor Cores to upscale and smooth based on training on 64xSSAA "ground truth" images for each game - an effect I sometimes like in theory more than I love the final result), DLSS actually removes more high frequency aliasing than adding additional local contrast (it is primarily adding anti-aliasing to a low res aliased frame while also picking up some additional details that the AI infers from the training set). Technically AMD's FidelityFX contains two different branded techniques, one for Upscaling and another for Sharpening, but these two tasks operate in opposite directions (so combining is something to be attempted with extreme care and possibly not without something as complex at AI training to guide it) and the marketing seems to treat them under a single umbrella. Shader upscaling can certainly be better than just the cheapest resize filter you care to run but really, in the current era, I think temporal reconstruction is showing itself to be the MVP now that issues of ghosting and other incorrect contributions are basically fixed (outside of points of very high motion, where we are very forgiving of slight issues - just look at a static screenshot in the middle of what motion blur effects looks like in ~2014 games, but because we only see it as a fleeting streak then we don't notice how bad it can be). Unless DLSS steps up (while AMD and Intel also start shipping GPUs with dedicated hardware acceleration for this computation type), I think we should expect advancing temporal solutions to offer the ideal mix of performance and fidelity.

Edit: As I was writing this, nVidia Research posted this discussion of DLSS research, including: "One of the core challenges of super resolution is preserving details in the image while also maintaining temporal stability from frame to frame. The sharper an image, the more likely you’ll see noise, shimmering, or temporal artifacts in motion." - that's a good statement of intent (hopefully Intel plan to launch their discrete GPUs with acceleration of "AI" - something even a modern phone SoC offers more dedicated PR (and silicon area?) to than current AMD or Intel efforts).

So far we are seeing a lot of optional sharpening effects (optional on PC - I think stuff like The Division actually retained the user-selectable sharpening strength on consoles but not every console release includes complexity beyond a single "brightness" slider) but I'm worrying about the day that you load up a game and start seeing sharpening halos (oh no, not the halos!) and notice additional aliasing that cannot be removed.

A very mild level of sharpening absolutely can have a place (doing so via variable strength that adapts to the scene? ideal!) and is probably integrated into several game post-processing kernels we don't even notice, but a sharpening arms race seems like the opposite of what real-time rendering needs. We are still producing final frames that contain too much aliasing and should continue to lean on the side of generating a softer final image when weighing detail vs aliasing.

Wednesday, 31 July 2019

AAA Rental

When I was young, we used to go to the local video rental store in the nearest town and rent games. Initially this was computer games, including manuals etc in a plastic sleeve that allowed you to enter the correct code to start the game (back when code wheels or typing in a word on a page of the manual confirmed you weren't a pirate). A few years later it was mainly consoles, renting both hardware and a video game for the weekend. The store purchased games and then more than made the money back renting them out - all thanks to the concept of the first sale doctrine (which lobbying from software developers means isn't actually part of the legal framework in many places when it comes to games (?) but still guides what many think of as legal interactions with copyrighted material). Years later, when economic realities made collecting a proper library of games impossible for some years, I used to rent AAA console games via post (many of which I finally got into my library via used sales on last-gen titles no longer sold new).

One of the things that the recent transition to digital has done is really slow down those rental markets. Along with eroding used sales, the game rental services have also found it hard to operate in a world where publishers looked to things like Project $10 (EA making it so a one-time key unlocked content in a new game) and now look to digital as the primary platform to sell games (where there is no physical token to rent out which enables play). But never fear, publishers are stepping into the gap with their own rental offerings.

The biggest player right now is probably Microsoft with GamePass. Some might consider this "the Netflix model", with a mix of their own brand new content and content they're buying in from 3rd party publishers. Others have pointed to Spotify. I've previously said that Spotify (+ Apple Music + Google Music) could actually pay for the music industry as it is (artists are being ripped off by bad contracts, not a lack of consumer cash pumping into the system) but I'm somewhat concerned that gaming (an industry roughly an order of magnitude bigger) may not actually be able to be sustained by subscriptions in the short to medium term.

What makes me doubly concerned on that front is that some publishers have extremely deep pockets right now and so could lose money for a long time on subscriptions before pumping up the price to consumers once many other avenues for playing games had become eroded by artificially cheap subscriptions. That is the model of "disruption" used by plenty in tech with VC backing. As of right now, it's hard to ague with the value on offer (especially as something you subscribe to for a specific game & then dive into the archives and then unsubscribe - not really analogous to TV or music you like to have playing in the background so always want to be subscribed to at least one service with all the classics you enjoy).

As a player of games right now, it seems great to be able to jump through a large archive of games for about $10 per month. With that including the latest releases from the publisher offering the subscription, I don't see why I'd pay $60-100 for a AAA release on launch. With EA even offering a cheaper option if you're not interested in their latest releases and Ubisoft saying their upcoming service will also include all DLC and premium editions - it's starting to look like quite a poor option to give $60 for a brand new game and miss out on DLC when you could rent it once at launch and again when the DLC has all come out while still having more than enough cash in your pocket left to buy it on sale eventually if you want a permanent copy for your library.

This year I've been playing a lot of older games in between trying out subscription services. Sometimes I'm even doing so based on wanting to see credits roll in a game I've owned for a while but never completed before jumping into a sequel I never got round to buying (but is now available on these rental platforms). I've also noticed that once a game appears on a subscription list, I'm probably taking it off a store wishlist - I'll get round to it next time I subscribe rather than watching for an attractive sale price to buy it now. Another thing I've watched myself doing is treating everything like it's on a clock when you're subscribed and that ends up helping to keep me going (rather than getting distracted by reading or something else and not playing anything for a few weeks) - very Battle Pass energy but for games that aren't so multiplayer focussed or reliant on F2P hooks.

It's probably too early to predict how everything shakes out but I certainly think we're in for some turbulent times as everyone figures out how gaming adapts to publisher-driven rentals vs ownership. Ubisoft seem to be doing extremely well with maintaining extended support for their online games and providing several seasons (Year 4 Pass for Siege? Sounds a lot like a slow-mode Battle Pass) of updates for premium games - that likely maps well to pushing a subscription service, although I'm not sure their price point is ideal (lacking the cheap tier that EA has for people who only want older content). Will EA finally resurrect their proposed TV model of narrative? Games as a Service (as they currently do it) has maybe not been working out ideally at EA (without the huge revenue from gambling-like experiences in FIFA etc, disappointments like Anthem would probably be a lot harder for EA to work through) so it might be time for another strategy (as their subscription service finally arrives on the biggest console after Sony have agreed to let it onto their platform).

Thursday, 20 June 2019

Moving to Firefox

I was a big fan of Firefox from approximately the introduction of Live Bookmarks (before Google Reader or even my own use of Bloglines - literally all three of these RSS tools are now dead so RIP RSS in general: push notifications for new website content seems like the obvious right way to do things and yet support is slipping away) up until some decisions I considered strange (eg removing the ability to restrict which websites ran Javascript unless you installed a plugin to manage what I consider a core task of a browser interested in basic security). When Firefox still hadn't added back those basic security tools but decided to lock down running unsigned plugins (like the ones I'd written myself & didn't need external security audits) with the stable release branch, I had already mainly moved to Chrome as my daily browser (which retains the ability to decide which plugin code need to be signed & offers granular whitelist support for managing locally executed website code). Android has been the one place where I've continued to keep FF around as an option (although recently I had also basically moved to exclusively using Chrome because of how it syncs history, bookmarks, tabs, and settings between versions).

But recently my use of Chrome for daily browsing and Edge for occasional tasks with access to a different rendering engine (to avoid bugs) has been defeated by MS giving up on their own rendering engine and deciding that Chrome is the standard. Everything close to mainstream is a child of KHTML now (WebKit & Blink are not identical but they're both derived from a common ancestor and just steered in slightly different directions by Apple and Google). It's starting to feel Microsoft EEE plan crushing to stick with the Blink renderer in 2019; and I also have an ecosystem interest in Servo (built as one of the tentpole projects for Rust). But moving to Firefox wasn't entirely painless so it's time for a quick rundown for anyone else making the move - I'm starting from the Firefox Developer Edition (because they still force you to get your plugin code signed for the main stable branch) as Waterfox's Servo-derived version sounds like it is still early so I'm not yet thinking about projects that have forked from the main Firefox path.

Save often

An early crash seemed to wipe out FF's settings database, which includes most plugin configuration data, so make good use of the Export to File options that most plugins seem to offer. I'd personally prefer if all settings were stored in flat files which were easy to back up and sync between devices but it seems like FF prefers a central database which also stores most of the settings for the browser itself.

Outside of that one disaster of a crash (which ate customisation data & forced me to configure things twice, this time saving backups once I was done), everything seems stable. I was also leaving Chrome due to some rare stability issues that seemed to be triggered while several video streams were running at once and so far none of those issues have happened in FF. A tab has crashes once or twice but with about the same frequency as Chrome and the isolation (so it doesn't take out any other tabs) seems to be just a solid. Discord introduced a bug (that I only saw in FF) for about two days that caused its internal engine to detect a failure state and require refreshing, which indicates the major concern with moving away from the market leader: sites will not be as well tested in FF. On the other hand, a long-standing bug in TweetDeck (making scrolling a column jump around) is simply not an issue on FF so it's good to keep an open mind about which gripes you're just accustomed to.

Customise everything

One of the nice visual updates to Chrome some time ago was to drop the OS stock scrollbars and give us something a bit cleaner and often narrower (using a style extension to manage it). Unfortunately FF does not pick up on that extension but rather has its own extension with which you can request a skinny scrollbar (or the complete removal of one). I had to tweak some of my old CSS injections to customise the pages I often visit (eg TweetDeck) to look more like they do by default under Chrome. I'll write my own CSS injector for FF (as I did in Chrome - it's an ideal "my first plugin" learning experience) but right now I'm using Stylus.

Because I have a 4K desktop and so run my Windows UI above 100% zoom (in the mess that is the various HiDPI APIs in current Windows 10) there have been a few times I've needed to prod the page zoom settings to get everything feeling the same as before. The standout glitch was Discord, where the visible scrollbars are fake (elements drawn by the website, not the browser itself) but the code to hide the real scrollbars doesn't work perfectly outsize of 100% zoom in FF. But as they're not the actual scrollbars you're looking at or interacting with, the above extension can also be used to completely hide them and clean up the visuals (making it look just like in Chrome). Basically it's a lot easier to adapt when you're used to poking CSS to your satisfaction for certain web-apps anyway. I even caught up to modern CSS and the more recently added wildcards to catch all the Discord elements in a single line: div[class^="scroller-"] {scrollbar-width: none;}

Basically all of the actual browser experience customisation maps directly from Chrome to Firefox, from font preferences to interface layout and customisation. You can even tweak the "density" of the main UI to tweak whitespace, something I don't think Chrome offers, which leaves you with a narrower tab bar and more vertical space on a 16:9 screen for the actual website. A really nice stock feature is the Reader View, which toggles a clean article view when detecting a main text block (far from unique, but it's a clean stock implementation unlike Dom Distiller or a plugin). I think we're at a point where the stock features are pretty comparable, even if you do have to do the occasional search to translate it over (as I did for the scrollbars) or find a plugin on one platform to reach parity.

Plugin list

Most of the plugins I had in Chrome also exist for Firefox. Here is a list I'm currently running until I've moved most of my internal stuff to the new ecosystem. I'm not saying I've audited code, but I did at least do basic checks to avoid obvious snooper extensions (eg Stylus is designed to be the non-telemetry alternative to Stylish). There is currently no way to restrict which pages each plugin can read and modify, something I'm shocked hasn't been copied from Chrome on a browser that advertises it's security (FF only just added restricting plugins to not work on Private/Container tabs).

Facebook Container - Keep your logged in FB session in a special container so it's slightly harder for FB to track you elsewhere on the web.
Privacy Badger - EFF tracker blocker & url click-tracker remover for Google search etc links.
HTTPS Everywhere - Another EFF classic: make https the default for websites which haven't made the switch yet.
NoScript - IMO this should be a core feature in Firefox. In previous versions this was a stock feature. For now I'll use this to whitelist the few sites that do need client-side code execution rights.
uBlock Origin - I'm mainly using this as an easy way to suppress certain page elements as I read until I port over my plugin that does that job (I typically do not go for "Adblock" plugins but it's easy to configure & you can turn most of it off). It's a good extra line of security until I get comfortable with NoScript & my own plugins properly protecting me from JavaScript nasties.
Stylus - As mentioned above, this makes CSS injection really quick and easy until I port my own plugin over to customise how regular websites look.
Awesome RSS - Firefox took the classic RSS icon out of the address bar (so did Chrome: Google made an official plugin to add it back). Weep for RSS, an idea that made the web so much nicer to use that they tried to kill it!
Snap Links - This is the equivalent of the most esoteric plugin I love in Chrome: Linkclump. My index of RSS feeds in Feedly: sometimes I want my browser to open lots of links in several tabs ("I've got half an hour, give me 5 articles I've put a pin in as worth reading fully"; "Open all webcomics that have updated since last I checked") and this makes that as easy as dragging a box over all the nicely lined up links.