Quantcast
Channel: Radiator Blog
Viewing all 495 articles
Browse latest View live

On climate crisis games, for Rock Paper Shotgun

$
0
0

As part of previously announced shifts for this blog, I'm going to start pitching my longer design articles to various outlets instead of posting it here.

The first of these articles is now up -- it's a piece about various climate crisis games and how they play with the idea of environmental apocalypse. I also define a rough taxonomy of different climate crisis game subgenres, like flood games, ice age survival sims, and world sims.

As we all grapple with the ramifications of climate change, it's important for us to imagine stories and worlds about it, because this is how we process life as a society. If you look back at art and media in the 60s and 70s, you'll see a lot of "space age" art and aesthetic, obsessed with rocket ships and moon colonies, essentially giving birth to alien invasion stories and space opera. I think we're in the first half of a similar "green age" wave of environmentalism across art and culture, and there's already a lot of emerging genres and traditions here.

You can read it all over on Rock Paper Shotgun. Thanks to Brendan Caldwell for thoughtful edits.

Hedera and brief notes on ivy aesthetics

$
0
0

This actually happened weeks ago, but I just realized I never posted anything here about it: I built a 3D ivy painting tool called Hedera. Each time you paint ivy, the Hedera "AI" will grow and simulate an approximation of real-life ivy behavior, clinging to surfaces and climbing towards the sun. It's pretty magical to watch in action.

Much of the core technique is based on Thomas Luft's C++ code from 2006 and a much more recent C# port from 2016 by Weng Xiao Yi, but I found both of their implementations to be very bare-bones proof of concepts intended more for engineers and less for artists, with little concern for workflow or usability. Most of my work focused on front-end user experience stuff -- making the simulation more predictable, conceptualizing a layer-like planting system, optimizing the procedural mesh generation, and getting it to play nice with the Unity Editor's arcane IMGUI and file serialization rules. I definitely learned a lot about tool-making.

ivy mesh wireframes / process from "Crysis 3 - Ivy" by Tom Deerberg
3D ivy meshes, like most video game foliage, were traditionally a very expensive photorealistic detail intended to evoke high production value and thus skilled craftsmanship. It is my hope that my tool lowers the barrier for covering 3D worlds in detailed ivy, thus decimating this value system in game art. Let ivy be worthless!

Perhaps when we stop oohing-and-aahing at the fidelity of game ivy and demystify its creation, then we can finally appreciate a more subtle and artistic use of ivy. As I've argued before, many indie game devs often have a (misguided) knee-jerk reaction against realism, but I think realist aesthetics have an important role to play in any visual culture.

Borderlands The Pre-Sequel as Australian industry elegy

$
0
0

We played Borderlands: The Pre-Sequel (essentially, Borderlands 2.5) on co-op mode, and yep it's a Borderlands game.

You run around and shoot monsters, they sometimes drop procedurally generated guns, and you sell most of those trash guns to get useless money, and you gradually get slightly better guns with slightly different effects. It works OK, but it still hasn't aged very well. The Borderlands series' long-time reliance on many small modifiers and +1.2% bonuses feels even more desperate in 2019, especially when we live in a golden age of indie deckbuilder games where the numbers actually matter.


Pre-Sequel (2014) is strongest when you fight giant space monsters on a low gravity moon with a fun floaty jetpack mechanic that pretty clearly cribs from Destiny 1 (2014). It's the same problem facing the upcoming Borderlands 3 too: Destiny and Warframe already dominate the whole sci-fi co-op RPG shooter niche, and those games already transcend what the Borderlands formula can do. But now I imagine Gearbox is probably afraid of changing the formula much, especially after high profile failures like Colonial Marines and Battleborn.

As with many other games, that fear and conservatism likely stems from the fandom demanding more of the same. The patented Borderlands tone feels so incredibly anxious and afraid of its fans, and nearly every scrap of narrative design is wound so tightly around flagging for their tastes. When I listen to this game, I immediately get the sense that "this is not for me" as I'm bombarded with incoherent fan service, awkward sarcasm, a fuckboy edge-lord tone that grates much more in 2019, and random flat characters whose entire personalities are contained within their introductory freeze frame. It's Duke Nukem's step-son, with all the insecurity it implies.


But hey you can't blame the developers on this, they were just doing what they were supposed to do. Pre-Sequel was the last game to come out of 2K Australia and thus the last of the AAA Australian games industry as a whole. Or maybe it just represents the end of a long history of neglect and sabotage by 2K corporate in California, depending on who you ask.

Yet unlike their troubled indentured servitude on an XCOM-themed shooter and the BioShock games, sometimes it feels like 2K Australia got a little creative control on this project. Their articulation of Australian culture ends up being much more interesting than the gunplay. This is a game with a mission that's literally themed around Waltzing Matilda, with quest dialogue / lyrics delivered in a thick Australian accent reminiscing about billabongs. In this light, the game feels like a last sad hurrah for the Australian AAA game industry, of which many devs are still surviving but remain understandably bitter about being abandoned by both their parent company and their government.

Pre-Sequel is about an Australian moon littered with the ruins of an abandoned industry. An evil vain greedy facetious Californian dudebro fuckboy MTV VJ helms a distant corporation that mismanages and misunderstands them, nearly obliterating the ragtag community of creative Space Aussies just trying to get by. Even after you defeat the final boss, no one really gets what they want, and you're still stranded in this dying place.

If it sounds familiar, it's because we already knew how it ends.

(see also: Massive Chalice as pre-apocalyptic existential game industry dread)

The streaming life

$
0
0
This year I'm investing a lot more of my time and energy into streaming. For better or worse.

First, I'm continuing my Level With Me project, where I play through games and offer level design commentary by flying around, staring at walls, and nitpicking lighting. To ease myself in from my summer hiatus, I am playing something "easy" that I know pretty well -- I'm streaming fan-unfavorite Half-Life 2: Episode One, broadcasting every Wednesday 2-3pm EST at twitch.tv/radiatoryang.

Second, I'm leading a new streaming initiative at NYU Game Center: our new weekly streaming show Game Center Live premiered on September 19th! As an academic department studying game design, it feels foolish to ignore streaming as the dominant discourse in games culture, so that's why we're running this experiment as a weird cross between a high school yearbook class and college radio for the 21st century. We'll cover school announcements and showcase student work, but we'll also discuss the week's game industry news and host special guests. We plan to broadcast every Thursday 1-3pm EST at twitch.tv/nyugamecenter.

So although I'm blogging much less than before, you can still catch the same ol' Robert with the same great taste. I'll just be talking at you through a screen.

A MAZE NOT DEAD

$
0
0

Before I attended A MAZE (2016 / 2018 / 2019), I had never met any game developers from Africa. I had attended so many GDCs, but it didn't matter. Imagine an entire continent, more or less shut out of an entire industry! The game industry often pretends it is "democratizing" the means of game development, but the obvious truth is that the "global" game industry still concentrates much of its money and prestige on North America / Western Europe / Japan. (China is a big market, but there is still no major prestigious international video game trade show held there yet.)

That's why community institutions like A MAZE are so vital. While A MAZE runs a flagship festival in Berlin, they also regularly host pop-up events outside of the typical video game industry hemispheres. In the past, they have run events in Croatia, Romania, Palestine, Russia, South Africa, Kosovo, Cuba, and Ukraine. For 2020, they are aiming to run an event in Nairobi. Do you think GDC gives a shit about Nairobi?

When GDC rolls around every year, so many people lament that there isn't an alternative event -- something to pull people and power away from GDC, away from the institutional inequality plaguing games -- well, today is your lucky day, maybe you'll get to do something about it. A MAZE is one of those alternatives that seeks to pull influence away from GDC -- to provide a noncommercial platform to support game developers and marginalized artists from around the world -- and it needs your help.

Back in September, the city of Berlin denied funding to A MAZE. While A MAZE still retains other public funding sources, this particular setback threatens a lot of their plans. They need to crowdfund the rest of the money to secure the future of the festival, and the future of an alternative away from the overwhelming commercial focus of GDC. This isn't to say that commercial games / AAA are necessarily bad, but it is clear that everyone else in games need their own support systems too. A healthy artform needs a healthy diverse ecosystem of many different motives and tendencies; a monoculture will doom us all.

So for 2020, A MAZE is running a Kickstarter. (Note: Kickstarter corporate is currently in the middle of an anti-union intimidation campaign. But so far, workers have not called for a boycott. As we continue to use KS, we should also use the opportunity to pressure their leadership to cease its anti-worker interference.)

If you have money to spare this year, please consider supporting A MAZE. If you don't have the money, OK, but at least consider writing about them or posting about what A MAZE means to you and others.

A MAZE... NOT DEAD.

Practical primer to using Unity Timeline / Playables

$
0
0

I recently used Unity Timeline to do cutscenes in a game. Once you figure out how to use it, it works great, but that learning curve of expectations and setup is pretty annoying.

To review: Timeline is a sequencing tool. It's good for higher-level logic where you need to coordinate a bunch of objects at once. For many games, that usually means choreographing cutscenes or sequences. Many different engines and toolsets have sequencer tools and they all generally have the same workflow -- you make tracks and you put actions on those tracks. (see also: UDK Matinee, UE4 Sequencer, Source 1 Faceposer, Witcher 3's cinematic tool)

Note that Timeline is not an animation tool, it's higher level than that. Think of it like a movie director, it coordinates animation, audio, characters, and FX together, but doesn't actually make or process those assets.

In this intro workflow post, I'll start with SETUP TIMELINE, then SETUP DIRECTOR and MAKE CUTSCENES and CONTROL THE DIRECTOR VIA C# SCRIPT, and lastly how to MAKE CUSTOM TIMELINE TRACKS.

for your historical curiosity: Valve's Faceposer choreography tool used for Half-Life 2

1. SETUP TIMELINE

When you first open Timeline in a brand new Unity project, it's not very useful. You need to download some extra stuff.
  • Unity's Timeline. The Timeline package should already be enabled and installed by default, but double-check in the Unity Package Manager UI.
  • Unity's Cinemachine. Cinemachine has built-in Timeline support to easily blend between cameras. This alone is the main reason to use Timeline. Again, make sure it's installed via the Unity Package Manager UI.
  • Unity's DefaultPlayables. This "default" package isn't included by default, you must get it via Asset Store or GitHub. This package has tracks for working with Lights, NavMesh, Text, Video, and most importantly, a TransformTween track. It also has a script generator wizard to help with the painful process of making custom Timeline tracks. MAKE SURE YOU DOWNLOAD AND IMPORT THIS.
(Why aren't the DefaultPlayables included as a default?! WHY? Sigh. Anyway.)

the Playable Director inspector
2. SETUP DIRECTOR

Make a game object and put a "Playable Director" on it (a Timeline is a type of "Playable") and then open up the Timeline tab. Each Director has two main parts: (1) the timeline asset (this is what you're editing in the Timeline window) and (2) the bindings.

Bindings are slots that connect the scene's game objects to the timeline. Think of each binding as a role in a movie, and the film director chooses which actor to perform that role.
  • example: you're making an intro cutscene for a Hero. The Hero sings and dances. If you bind a "Warrior" game object to the Hero track binding, then the Warrior will sing and dance. If you bind a "Maple Tree" game object to the Hero track binding, then the Maple Tree will sing and dance like a hero.
  • Why does Unity use bindings?
    • A Timeline is a project asset. It is a file that lives outside of a scene. It doesn't know about anything inside a scene.
    • Bindings mean that Timelines are reusable across different directors and different scenes. You can make one "intro cutscene", and then reuse that sequence for all your game characters by swapping out different bindings.


3. MAKE CUTSCENE

For each game object and each type of action, you must create a new track.
  • example: you want a Hero to sing and dance. That means you need two tracks: one Animator track to play the Hero's dance animation, and one Audio track to play the Hero's singing voice over. If you want another character to sing and dance at the same time, you could create two more tracks.
Here are the most important track types for typical game cutscenes:
  • Control Track. These tracks can activate / deactivate game objects and instantiate game objects, and they can also control other Directors or time-based Playables.
    • example: activate or hide scenery, toggle props, spawn characters, manage complexity by breaking a big long Timeline into several smaller Timelines
  • Transform Tween track. This track lets you smoothly move or rotate things. This is from the DefaultPlayables package linked above, so make sure you downloaded it.
    • example: make character move or turn, animate a transform without using an animator component
  • Cinemachine Track. Lets you toggle between different Cinemachine cameras. You could technically use a Control Track to do that too, but this track type also lets you blend between the cameras.
    • example: activate a long shot camera that smoothly zooms into a close-up shot
  • Animator Track. Can override the current animation clip on the animator, even if the animator controller doesn't have that clip in its state machine. This is essential for any type of 3D humanoid game because it means you don't have to clutter your controller with all these weird one-off animator parameters or graphs just for one cutscene. With this, any humanoid rig can use any humanoid clip without any state machine setup!
    • example: make a character perform a dancing animation
  • Audio Track. This track type plays audio.
    If you're using Unity 2019.1 or later, you also have access to Timeline Signal Tracks. Signals are like animation events, but in your Timeline. When the Director plays your Timeline and comes across a Signal, it fires that message to a Signal Receiver, which fire standard Unity Events in response.

    4. CONTROLLING THE DIRECTOR VIA C# SCRIPT

    For the most part, automatically starting the director at the start of a level is pretty easy. You can either use the "Play On Awake" in the director's inspector, or in any script's Start() function just call Director.Play()

    OK but here's actually the most important thing to know -- Director.Pause() doesn't actually "pause" the director. It stops the Director and lets you resume from that point, but it does not actually hold or freeze any of the Timeline actions, nor maintain any Timeline state.

    example: You have text dialogue on screen, but you want the player to press SPACE before continuing the cutscene. If you use Director.Pause(), all animations and Cinemachine cameras will revert and the director will relinquish override control on all game objects, because "pause" means that the director has stopped any processing or playback.

    To truly pause the timeline director, you have to use this hack from the Unity forums to set the director's root logic speed to 0:

    playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(0);

    Then to resume the director playback, set the speed back to 1:

    playableDirector.playableGraph.GetRootPlayable(0).SetSpeed(1);

    5. MAKING CUSTOM TIMELINE TRACKS / PLAYABLES

    If you have any custom dialogue or game system to use in your cutscenes, then the default track types will feel pretty inefficient. As of 2017, Unity has started modularizing and over-engineering everything. That extends to the Timeline / Playables system, which might require you to make up to 5 different C# scripts to implement one custom track type. Unity's DefaultPlayables package has a script template generator to try to ease that pain.

    But first, you need to understand how the Playables and Timeline system works in the code. This 2018 Unity blog post "Extending Timeline: A Practical Guide" is absolutely essential to understand what all those different C# scripts do, so make sure you read it, even if you're just skimming the post to understand the basic idea.
    MORE RESOURCES

    Living in interesting times

    $
    0
    0
    Hello all. It's 2020. The world feels... different. Hopefully you're all doing OK!

    A recap of what I've been up to --

    In these days of social distancing, remote classes, and quarantines, I taught my class about streaming on Twitch... by streaming the class on Twitch. Some writeups:




    I'm also getting into Quake 1 mapping. The modern tools are great, the video tutorials are on point, and the community is lovely. Come join us. I recommend Andrew Yoder's comprehensive guide for getting started.


    Until next time...
    -- R

    fy_iceworld feature for RPS

    $
    0
    0

    Hey all. Hope everyone's been doing OK. Remember level design? That's still important, right?

    Anyway, I wrote a 2 part feature on fy_iceworld for Rock Paper Shotgun. Part 1 interviewed working level designers about their takes on fy_iceworld, while part 2 will cover my nerdy forensic investigation into who actually made fy_iceworld.

    It should be a fun and diverting read, perhaps a useful distraction in these weird times. Thanks to my editor Graham Smith for taking this weird pitch and graciously proofreading it.

    Tactics games in 2020: game design notes about Horizon's Gate and Gears Tactics

    $
    0
    0
    I finished playing two 2020 RPG tactics games recently: Horizon's Gate and Gears Tactics. I've also written at length about Invisible Inc before. I clearly want to make a tactics game someday? Anyway here's my design analysis and thoughts.

    NOTE: This post has a lot of mechanics / game design spoilers, but no story spoilers.


    Horizon's Gate

    Horizon's Gate is a retro pixel art open world sailing game about exploring towns and dungeons, buying low and selling high, and getting into battles where you push and pull and surround. It's very good and you should play it. If you don't have much time, you can probably stop after like 5 hours.

    Progression:
    • The overall RPG arc involves leveling up and constantly swapping job classes to advance across three different intertwining skill trees. So to access the late game mage-warrior class, you'll have to level up to an intermediate warrior class and an intermediate mage class first, etc.
    • There's two novel progression systems for earning money outside of combat and trade: cartographer NPCs pay you based on how much of the world map you've explored, and researcher NPCs pay you based on how many different items you've examined (rarer items lead to rare codex lore entries that you sell back for lots of money).
    • As a hard incentive for exploration, you also have to first unlock character classes by visiting trainers hidden around the world. 
      • But to explore around the world, you need to stop in towns to buy morale boosts and restock food.
      • But to store enough food for long voyages with few towns, you need to buy more boats with bigger cargo holds.
      • But to buy bigger boats, you need lots of money.
      • But to get money, you have to explore, trade, fight, etc.
      • You have a core landing party of 5 party members. You can also pickup a few dozen other party members to crew your boats, but they tend to be pretty useless and neglected in favor of your main landing party. 
      Battle design:
      • Each unit gets 1 move action and 1 attack / skill action. Square grid.
      • Arenas tend to be pretty simple and open, otherwise the AI doesn't have enough space to maneuver. The AI is bad at multiple chokepoints / fronts, which seems like a hard problem.
      • Most encounters pit 6-7 enemies against a player party of 5, but big fights can go up to 8-10. 
      • In JRPG tradition there's also big potential for cheesing via items, where if you buy enough megabombs and lifeshards then you can probably defeat the final boss with a level 1 party. 
      • The most interesting enemies were "splitworms" that split into two clones upon being damaged, which encourages you to hit them really hard once, and then use a weak AoE attack with wide spread to clean up the resulting clones -- if you use a weak AoE attack first, you'll quickly be overwhelmed.
      • There's some fun interactions between the open world layer and the battle layer. Like if you run out of food and your fleet has low morale, then you will begin any battle with "demoralized" status effects that weaken everyone.
      Chaining:
      • Lots of skills about pushing and pulling positions, borrowing from Into The Breach. So you might pull your warrior out of the way of friendly fire, and then cast a big AoE spell on the mob. Or you might push an enemy into another enemy, which lines them all up for a charging attack, etc.
      • There's a Tactician skill class that's a huge missed opportunity, with skills that reposition others but don't apply any damage directly. I wish we could've used this to manipulate turn timers more directly, but I imagine it was probably too powerful.
      • Late game chains are about stun-locking dangerous enemies into place (there's like 5 different types of disabling status effects) to keep them out of melee range and force them to get hit by delayed AoE spell channeling. Most AoE spells take 15+ ticks to cast, which is just long enough for most enemies to start their turn and possibly move away (25-30 ticks).
      • Late game also gives you lots of opportunities to inflict status effects, so another strategy is to stack a bunch of status effects on an enemy (poison, itchy, blinded, silenced, immobilized, demoralized...) and then use a skill that "cashes in" the status effects (e.g. +20% damage for each status effect) to maximize damage.
      Design lessons:
      • Big parties make a crowd. In games with dozens of recruitable characters, you can't treat them all the same. You'll want a lot of granular detail and options for your main party, but very coarse options for your secondary party because you don't actually care about them. This is where a lot of games would let you send these crew on idle game style missions, or XCOM would let you assign them to background tasks outside of missions. I think the compromise would be a system where these NPCs keep busy in the background, and then when there's an open slot in your main party, you can "promote" them to official PC player character status.
      • Per-unit turn timers break chains in an unsatisfying way. Every unit has its own individual turn timer, and I don't think it's worth it unless you let players cheese and manipulate it a lot. It's not fun for a game to say "sorry, you can't do that, this thing will be too late by 1 second." Horizon ends up holding back on time manipulation to balance the game, which is a shame. It's impossible to make a very fast character or a very slow character, everyone's always in a muddy sort of fast sort of slow state, with not enough differentiation. I prefer the simplicity and flexibility of XCOM style turn taking here: each team takes turns moving their units in any order. 
      • Directional facing systems aren't worth it. Like Final Fantasy Tactics, every unit also has a post-turn phase where they choose which direction to face. This isn't worth it, and just slows down play for a fiddly thing that doesn't really matter except for very specific backstab style mechanics. I'd rather just make a tactics game without any directional facing system.
      • Avoid implementing too many status effects. This a problem with a lot of RPGs, but I really felt it here... I never figured out what the "itchy" status did. I can see the rationale here: you want to make each skill and spell element feel unique, so you give them each a unique status ailment, etc. In practice, I just kept using the generic ones like poison and stun.
      • If you're going to include a mechanic, give it consistent attention or leave it out. This is the developer's 3rd game with the same engine / framework, so there's lots of systems leftover from previous games that doesn't make sense. Like there's all this environmental manipulation stuff (e.g. setting areas on fire or make them wet) but then the game barely uses it, and the effect on the battle is often negligible. It's a bit confusing for players because we don't know if this mechanic will be a big deal or not. (That maybe explains my previous gripes with the facing and the status effects too: it's leftover game design.) Contrast this with Divinity Original Sin 2's obsession with environmental effects that remains surprisingly consistent through the entire game.


      Gears Tactics

      Gears Tactics is a fancy XCOM-style 3D tactics game about scooting into cover, managing sightlines, and doing actions in the best order. I liked playing it a lot, but if you don't have much time, you can probably stop playing at the 33% mark, after the first boss fight, which is the best part of the game anyway.

      Progression:
      • I played on normal difficulty. You know, like a normal person.
      • Progression is Gears Tactics' biggest departure from XCOM. There's no overall strategic layer or metagame here, it's just a menu where you click on a button to begin the next mission. You can interpret this as a statement about the purity of tactics without strategy nonsense...
      • ... but there's this weird vestigial mechanic where your squad members can die and you have to replace them, but it doesn't work without the rest of the fantasy of managing a scrappy army. And unlike XCOM, new recruits often start at a higher XP level than your existing troops, which feels even more awkward.
      • As many reviews mention, this game often requires you to use hero units, and their deaths make you restart the mission... which, again, breaks the idea that you bond with your squad and mourn their loss. For the final mission of the game, you're not even allowed to bring any of your personalized units.
        • Obviously they had to do this so that they could add some Gears of War (TM) narrative cutscenes and storytelling. The converse is perhaps a weakness of XCOM too: because anyone can die, the authored story has to focus on factions and boss figures instead of your squad.
        • With respect to the talented devs at Splash Damage -- this gamble to strengthen story obviously wasn't worth it. No one plays Gears of War for its drama or cutscenes, it'll always be flat characters doing nonsense things for nonsense reasons. This franchise should've pivoted into stupidity like Doom 2016. 
        • In between missions, you assign equipment and level up troops. 
          • The equipment design is very unsatisfying for the first 75% of the game, it's just about stacking all these fiddly little bonuses (+5% health, +5% accuracy) and hopefully it adds up to something. By late game, you get equipment that actually feels meaningful with big chunky bonuses (+50% ammo! +30% crit chance!) but that's assuming you stick with it for that long. In the last third of the game, I just stopped managing equipment because it just took too long with the cumbersome UI and shopping.
          • The skill tree design is a mixed bag with highs and lows. But more on that later.
        • All these issues collide with each other: the narrative designers make you stay with just one set of units, while the game designers want you to have an A team / B team / C team that all explore different parts of the skill tree.
        • Boss 1 is hard with an unclear movement range and devastating melee + gun attack. Boss 2 is easier because it's stationary and relies on delayed attacks, and probably should've been slotted as Boss 1. Boss 3 is the easiest because by then you've internalized the rules about how bosses work, but that's ok, final bosses can exist to validate your mastery instead of providing a challenge.
        Battle design:
        • Each unit gets 3 action points, which can be used for any combination of movement and skills. More about this in the "Chaining" notes.
        • There's also no grid... kind of. In practice, there's a loose stochastic grid where you "snap" to cover objects. 
        • Cover can be half-cover or full-cover like in XCOM. The cover hit % math here is one of this game's best refinements, and it's much clearer and feels much more fair than in XCOM. It divides hit % into sub-categories like range, obstruction, and target's evasion % bonus. Congrats to whoever tuned the angles and numbers.
        • That said, this game's big subtle innovation in level design is that sometimes staying in cover is actually bad. You only need to be in cover if there are enemies nearby, otherwise you're forcing yourself to go too slow or stay too far away. It's pretty great when you realize this.
        • There are basically four types of missions: kill everything, protect two control points for X turns, attack two control points to rescue new squad members, and run to the end without getting hit by an incoming wave of bombs. 
        • Each mission consists of 3-4 waves where the game pre-places or spawns mobs of enemies. There's some good variety here in terms of mob feel: sometimes a mob consists of 4 fast weak melee enemies, sometimes it's 8, sometimes it's 4 infantry, sometimes it's 1 grenade soldier, etc. And sometimes a wave spawns a mob in front of you and behind you.
          • I played mid-game mission where I could bring only 2 squad members, but they had to somehow fight off 6 fast melee enemies, 4 kamikaze crawly things, 4 snipers, 4 gun soldiers, and a strong elite soldier. I felt massively outnumbered, but the level design balanced this by making them all approach pretty slowly and from the front, which made it much easier to stay in cover and slowly manage them.
        • This game's overwatch is a great update of XCOM. 
          • Leftover actions go into additional overwatch triggers. (e.g. 3 actions = 3 opportunities for overwatch.)
          • Overwatch is also triggered by any damage-dealing action, not just movement. For XCOM veterans this will feel wrong at first, but now I think I like this better.
          • You can also set the overwatch cone to be shorter than the effective weapon range, which gives you detailed control over how your squad's overlapping overwatch cones will trigger. (The longest cone will trigger first, the shortest cone last, etc.)
          • You could probably make an entire tactics puzzle game based on this implementation of overwatch. Expect the next entry in XCOM to steal this shamelessly.
          • This is also the game's greatest achievement in sound design: the overwatch trigger sound is like a gun click mixed with a slot machine, it's a drug.
        • The best part of this game is the frag grenades, which are super OP but I'm ok with it. Grenades can't miss, go farther than most guns, over walls and bounced off walls, and the game previews the trajectory and bounce for you before you throw. Grenades can one-hit kill half the enemies, and also interrupt enemy overwatch and knockback enemies out of cover...
          • ... which means you can chain grenades together. Hit an enemy with one grenade to push them into range for another grenade. 
          • 25% of my playtime was spent pixel hunting for the exact optimal grenade trajectory.
          • It's basically like playing turn-based pool / billiards, but with explosives.
          • Like the newly finessed overwatch mechanic, there's potentially a whole other game here. What if you incorporate verticality to let grenades roll down slopes? What if you throw one grenade to knock over a panel, and then roll a second grenade across that panel?
          Chaining:
          • Chaining is definitely where Gears Tactics shines. The core chaining mechanic involves "executions" -- when you inflict high DPS that doesn't gib the enemy, they can become "downed" and die in 2 turns, or you can run up and "execute" them to earn a 1 action bonus for everyone else in the squad. This leads to chains where you can basically double your squad's allotment of actions, as your squad leap frogs each other to execute a chain of downed enemies, and destroy an entire wave of enemies in a single turn.
            • The Vanguard tank class is useless because it can't earn bonus actions outside of executions, nor make effective use of its extra actions.
              • Most of its abilities focus on debuffing nearby enemies. But by the time you get that close, you've usually killed these enemies already. Level designers also can't design any puzzle encounters around requiring these debuff skills, since you never know if the player actually leveled it up or not.
              • Bayonet Charge is a sprint that insta-kills an enemy at the end, but it's actually very fiddly: it requires a clear uninterrupted straight path of movement with an enemy at the end, which is rare in levels full of cover objects. This ability really needs a buff where it also damages enemies along the path, charges through breakable cover, gives x% overwatch resistance, etc.
              • This class would've been better as an XCOM mech or something that borrows Overwatch tank-like shielding abilities, so that this unit itself can act as cover. Right now it just plays like a worse Support class. Even the Bayonet Charge is just a less flexible version of the Support's Chainsaw Attack.
              • Sorry this class design just made me kind of mad lol
            • The Heavy class has an "anchored" mechanic where movement makes it lose buffs... but when the optimal way to play involves not moving your units around, that's pretty boring. The game even tacitly admits this in the final boss fight, when it literally prevents you from using any heavies.
            • The Sniper class has one obviously optimal skill tree specialization that enables bonus actions if you hit or kill an enemy. It's useful, but boring in its own way because it doesn't really interact with anyone else.
            • The Scout class is super overpowered and it's great. It can sprint long distances with a single action, cloak to become untargetable, and with the right equipment, throw a grenade every turn. 
            • The Support class is the main design lesson here. It is also the main protagonist's class, so... QED.
              • "Empower" gives 1 (or 2, at highest level) bonus actions to someone else, which makes someone 33-66% more useful. "Teamwork" gives this support character more bonus actions... for each enemy that the targeted ally kills. You're betting that this ally will go on a killing spree. For stronger enemies, that means that ally needs to get all the last hits. Both of these skills are pretty deep game changers.
              • ... but half of the Support skill tree is useless healing skills. Every class already has built-in self-healing mechanisms. If you don't make healing more fun and finessed, like how Team Fortress 2 / Overwatch approach healing as an activity, then healing is always going to feel like a boring interaction that also goes against the Gears of War / Doom aesthetic of momentum.
          Design lessons:
          • Be careful with recruitment mechanics. This game keeps pushing these authored hero protagonists in your face, while letting your personalized characters and rescued characters just fade away from the spotlight. It feels terrible, much worse than how Horizon's Gate makes you recruit a giant disposable party.
          • Let players choose the turn order. This is what makes the overwatch and grenades work. Just to reiterate the problem with Horizon's Gate: per-unit turn order forces the player to do a bunch of math to get the best turn order, which is even more annoying when you balance the game to discourage too much time manipulation.
          • More actions is better, as long as you support it. The decision to have every class start with 3 actions per turn was very savvy, and when I played one late-game mission that limited my actions to 2 per turn, it was an interesting experiment but obviously a much worse game. And as I criticize above, I think the Vanguard, Heavy, and Sniper classes are deeply flawed because they don't play with the action chaining system nor interact enough with other classes.
          • Let players bet on what will happen. The Scout class can stash actions for the next turn ("Anticipation") or sacrifice health for bonus actions ("Exertion"). The Support class can donate actions to an ally ("Empower") or bet that an ally will go on a kill streak ("Teamwork"). There's also more indirect ways of betting... like the Heavy would've been better if it borrowed some of the Horizon's Gate playbook with time-delayed AoE spells that rely on a second character to stun-lock a target, or better yet, predict where enemies are going to move.
          • Cover replaced directional facing. It basically combined movement and directional facing into one action, very elegant. The equivalent of the tactics "backstab" here is just flanking. What if there was an even simpler way to get the feel of the backstab mechanic, but without even a cover system? 
          • Let enemies be resources. The execution mechanic adopts a core tenet of Broughlike design: enemies are resources for player actions, so sometimes you "save" an execution for later, when it will chain with the rest of your squad abilities.
          • Avoid lazy ability design. The Support class has an ability called "High-Powered Shot", it shoots with a +50% damage buff... and, uh, ok? This isn't really fundamentally different from the regular Shoot ability. Gears Tactics is full of these "a bit better Shoot" abilities which is pretty disappointing compared to the variety of abilities in XCOM.
          ***

          Anyway, again, I just want to reiterate that I liked both of these games. I played both to completion. This criticism is not meant to be an attack on anyone, it's just my opinion / me thinking out loud and reflecting on my reactions.

          The powerful presence of non-presence in "Out For Delivery" by Yuxin Gao, Lillyan Ling, Gus Boehling

          $
          0
          0

          "Out For Delivery is a 42 minute playable documentary shot with a 360-degree camera. The slice-of-life experience follows a food delivery courier in Beijing on January 23, 2020, the day before Lunar New Year, and the day Wuhan shut down due to COVID-19."
          This is one of the few 360-movie experiences that really works.

          In the past, I've criticized the VR empathy machine complex and its cynical use of Syrian refugees to sell VR kits, but Out For Delivery wisely sidesteps the VR ecosystem. Without the restrictions imposed by the head-mounted format, such as a stationary camera (a bumpy moving camera makes VR viewers sick) or impatience (VR demos demand constant engagement), the designer and filmmaker Yuxin Gao is free to focus on the actual subject at hand. The camera moves freely, cuts freely, lingers freely. The result is the most difficult aesthetic to achieve in art: honesty.



          As we follow the driver get lost in a labyrinth of luxury shops and streets, we sort of get lost and disoriented with them too. Pedestrians try to help them / us figure out where to go. Bewildered elders stare as if they notice our gaze through the screen, but politely say nothing. This is already a stronger sense of humanity than what most self-proclaimed empathy machines achieve, but here I think the overall audience effect is more like Brechtian Verfremdungseffekt. The translation pop-ups feature small animated faces to convey the emotional undertone that's lost in the text -- but isn't it a little sad that these emoji are even necessary? Why is it so hard to understand how people live, even when we see their faces and hear their own words?

          For most players, I imagine this documentary acts as a triple distancing: our temporal distance from January 2020, our geographic / linguistic distance from mainland China, as well as a middle class distance from working class food workers. Sure, we don't know much about China, but maybe we don't know much about America either. Like, I only know a handful of people who've worked as delivery drivers or gig economy workers, I'm part of the problem! This is, ironically, one of the most Asian emotions imaginable: a vague all-encompassing sense of shame.

          Let's teach the West how little they know about contemporary China... but, like, in a nice way? Forget the empathy machines, let's bring on the alienation machines.

          I think it points to a gaping hole in existing theory on immersive media. Classic works like Janet Murray's Hamlet On The Holodeck, or the current UX orthodoxy among today's generation of XR practitioners, predict devastating consequences for immersive work that doesn't "hide the edges" and create "presence" so to speak. In games too, I've also criticized this idea of ludonarrative dissonance, that everything must cohere neatly and smoothly around the player's perspective. But all this "good taste" feels increasingly patronizing toward the post-post-modern media user who has learned to savor glitches and compression artifacts. Dissonance is immersive, empathetic, and pleasing in its own way. (In queer culture, we might call this "camp.")

          Out For Delivery's sympathetic construction relies on its honesty about boundaries and limits. There's an important self-aware current of consent, where the workers speak to Yuxin on camera and joke about their international audience. There's no sleek narrator who neatly ties together all the meaning for us, because everything speaks for itself. No one pretends we're not there, but at the same time, no one pretends that our presence matters. Here, Yuxin herself has generously cited one of my blog posts as an inspiration: a short primer to Italian neorealism, and theories about how to apply those ideas to game design.

          Yuxin transcends my simple ideas. There's some brilliant parts in Out For Delivery where we literally watch Yuxin the filmmaker disappear because the camera has literally left her behind. Yes our camera is still there, attached to the delivery bike, but is there still a film without a filmmaker, a game without a designer? We're there but not there, the modest presence / obliteration promised by a crowd. In the grand tradition of documentary, I think it also captures the world with a commitment to honesty, without contrivance or convenience. Everyone knows there's a fly on the wall, but we all go on living anyway.

          (DISCLOSURE: Yuxin was, all too briefly, one of my students at NYU Game Center.)

          Hard Lads as an important failure

          $
          0
          0


          This post “spoils” what happens in my new game Hard Lads. If you care about spoilers, you should play it before reading. It takes about 5 minutes to play once, and maybe 20 minutes to play it to 100%.

          In 2015, a phone video of young muscular White British men hitting each other with a chair went viral. Why make a game about this meme now? Some might characterize all my output derisively as "meme games", which is fine, but personally I’ve tried to avoid doing it on purpose. First, my games themselves should strive to be the original meme, and not merely a fan reproduction. Second, many memes are steeped in internet gamer culture, the only circle jerk I want to avoid.

          However. I think British Lads Hit Each Other With Chair is one of those classic internet videos that merits special attention. It does so much in a single minute, and it's not about video games at all. So that’s why I made Hard Lads.



          At the start of the video, the men kiss briefly and instinctively, as if they’ve done it before so many times. It's a strong and surprising hook.

          Let's assume these lads are straight. In her book “Not Gay: Sex Between Straight White Men” the author Jane Ward asks, why do seemingly Straight White Men do such seemingly Gay White things? This was also a central question in my previous game The Tearoom, where its primary source book “Tearoom Trade” by Laud Humphreys shows how men who have sex with men (MSM) define sex by social context rather than the sexual activity involved.

          1. Let the straight men kiss, I say, and let anyone access silly macho hunky gender performance. We're not going to police their identity. Humphreys and Ward believe straight MSM when they say they aren't closet cases in denial. These are straight men living straight lives who do Stuff with men for whatever reason.

          2. ... but when they kiss to mock queerness, they best not miss. Ward argues that when straight White men treat kissing like a stunt or hazing ritual, it is more about asserting their straightness. The underlying joke is that LGBTQ intimacy is less real than their strong infallible heteromasculine bond. This resulting straight mate energy forms a magical force field to negate queer possibility.

          The real insult is that they think queer energy can be dispelled so easily! The video shows how straight mate energy is actually quite fragile. It just takes one minute to utterly destroy the lad's masculinity on video. In the end, I argue that queer love is also the force that honors masculine vulnerability, and so only we have the power to reclaim these lads.


          Hard Lads casts the player as the video's invisible camera man in first person perspective. Originally I did this for three reasons: (1) This is the most literal game concept implied by the video, which was funny to me. (2) The idea of building a detailed high resolution 3D world, then forcing the player to stare at a shitty pixelated phone screen, was funny to me. (3) I already had the hand and phone assets ready from a previous prototype.

          As I developed the phone view model, I realized another crucial implication. In the game engine I use two cameras. One camera to render the 3D world background, and the other camera to render the handheld phone foreground, similar to how most first person shooter games render guns. Thus there is no perspective distortion on the phone screen image because the handheld phone is basically just a fancy picture frame with a hole in the middle, which makes it feel more like a seamless lens rather than a digital camera. We're looking directly "through" the phone, not so much at the phone.

          It is this phone camera gaze that drives the lads to perform. They're only doing this because their mates are watching them.

          This gaze is also the guiding principle behind my in-game implementation of the video's secondary characters: cigarette scavenger lad and pink shirt lad. They appear momentarily from out-of-frame like Slender Man, conspicuously disappearing as soon as you look away. I do this because this is the logic of the video. When pink shirt lad suddenly appears, I imagine most viewers think "wait who the fuck is this random guy?" Well, he only exists (or not-exists) because we were (or weren't) looking at him. As in The Tearoom, I want to make "looking" feel like a game interaction with its own rules and power.



          In the video the lad begins by performing gestures of edgy heteromasculinity. He mutters “aw fuck it,” chugs his indeterminate alcoholic beverage (wine? cider?) before smashing the bottle on the ground, and then takes one last drag from his cigarette before wantonly discarding a perfectly good roach.

          Like a lot of adolescent masculinity, there's something exaggerated and try-hard about all this. Here I'm inspired by the fundamental awkwardness of early Quantic Dream games like Fahrenheit (Indigo Prophecy in the US) and Heavy Rain. These games use mimetic analog inputs like holding the thumbstick upwards to open a door. But most of these interactions aren’t actually analog, they’re binary. The most meaningful states are 0% and 100%, success or failure. For any slightly mischievous or curious player, this encourages dwelling in that strange 50% area, imparting an uncanny hesitation to even the most trivial of gestures. (The rapper Soulja Boy famously dwelled in Braid's halting in-between space.)

          Quantic Dream’s auteur figurehead David Cage has long offered an unconvincing design rationale for this commitment to mimed pseudo-analog input. Supposedly it offers a more realistic player performance in service of greater cinematic immersion. Imagine Heavy Rain's input tutorial, where you slowly rotate the thumbstick to set plates on a dinner table. Is that realistic or immersive, or even intuitive? To me, it mostly just felt silly, awkward, and unnecessary... the perfect input method for performing masculinity.

          Hard Lads recreates the lad's exaggerated pre-game gestures like smoking a cigarette, swigging a bottle, and manly kissing. Each of these actions can be endlessly paused, repeated, interrupted, and failed. Smoking for too long can cause a coughing fit, liquor can be spilled wastefully onto the ground, and a manly fist bump of a kiss can turn into a really hot makeout session.


          The nature of this failure is complicated and interesting. The video isn't really about how he gets hurt, it's about how this lad gets hurt in all the wrong ways like some sort of cartoon coyote endlessly thwarted by a roadrunner. He wants to project so much power, but he's also just so powerless.

          Instead of hitting him squarely on the back, the chair lad sort of spanks him, prompting confused silence instead of cathartic manly cheering. “What are you doing? [Hit him] over his back!” gasps an onlooker. Chair lad fails to heed the advice, and a second awkward chair spank sends the hurt lad to the ground. The chair lad doesn’t even understand how to hit someone with a chair, and the hurt lad can’t even endure a couple suboptimal spanks.

          Practically everyone in this video has failed this public test of masculinity. So that's why I also made this game's core chair interactions feel silly too.

          When in "chair mode", horizontal mouse input corresponds to striking power, while vertical mouse input lets you switch altitude between spanking him on the butt or overhead slamming him on the back. But as with the drinking / smoking / kissing modes, the chair mode is rife with potential for expressive mischief and failure. The chair itself is a floppy ragdoll that barely sits in the batter's hands, and there's an incredible temptation for players to tenderly caress the lad's ass with the chair instead of smacking it. I also tuned the hurt lad's ragdoll to bounce wildly on a spring, so he ends up feeling more like a wacky waving inflatable arm flailing tube man.

          (My in-game damage model is straightforward. The lad starts at 20 health, and each strike inflicts damage based on chair velocity, usually 5-15 damage. Kissing beforehand heals 5 health per smooch / 5 health per second of makeout time, up to 200% overheal.)


          I think anti-realism designers overlook possibilities for realism in game aesthetics. Hard Lads is, perhaps, neorealist. The characters were generated from Mixamo Fuse, the camera doesn't cut to the action, and it also endeavors to maintain social realism with documentary framing.

          Brendan Keogh once wrote that my characters “are so perfectly imperfect as to fall square into the uncanny valley.” Hard Lads continues this descent into uncanny queer embodiment.

          For this game I dive deeper into fumblecore, an indie game genre about humorously inefficient and cumbersome player embodiment. Each round, the hurt lad is barely keeping it together, flailing in a very unmanly way in reaction to the slightest disturbance.

          I used ragdoll physics before in my spanking game Hurt Me Plenty, but Hard Lads required a lot more ragdoll integration with animation. Most of my development time involved building a new system to smoothly transition the lad from a fallen ragdoll to a canned mocap sequence. I kept hitting difficult game-breaking edge cases where, for instance, the physics engine would fling the lad onto the roof of a nearby house, leaving the lad no way of walking back.

          There's two different game programming strategies here. Prevention prevents the game from breaking at all, while repair and maintenance assumes the game will break all the time. Prevention might seem more stable at first, but it's actually very brittle because it requires flawlessness. Repair covers more edge cases because it assumes everything is broken all the time. It's a big change to my coding style, but I believe a reparative approach provides the best of all worlds. Unique malfunctions make the player's performance feel special and emergent, while not being so serious as to permanently break game progress.



          Which brings me to my most favorite game-breaking failure in history.

          At ECW Hardcore Heaven 1994, a pro wrestler asked for a chair to smash on another fellow performer. Fans proceeded to give him many chairs, literally hundreds thrown onto the stage. This avalanche derailed the entire match. The staff begged the audience to stop but the chairs just kept flying. It was a massive surreal breakdown in the laws of pro wrestling events. Among many queer moments in pro wrestling, I think this ranks among the queerest.

          As a nod to this incident, Hard Lads recreates this moment at the end of every round. Once the lad collapses on the ground from too much pain, the game drops additional chairs down from the sky, starting with only 1 chair on the 2nd round, and accumulating 69 chairs in the final 7th round.

          Conceptually, the allusion to pro wrestling culture is exactly what these lads are trying to perform. This connection to wrestling is also why I swapped out the video's weird patio chair for a proper metal folding chair. In terms of formal game design, the chair rain offers a useful ramp for wordlessly conveying game progression. Hopefully players get the sense that something is escalating out of their control. I never explain how this chair rain happens, it just suddenly comes out of nowhere, a bit like the very memorable surreal rain at the end of the film Magnolia (spoiler). You could easily interpret these chairs as societal pressure from an unseen audience, or as a divine desire to hit you when you're down. It echoes the cosmic irony of the gods thwarting every second of the lad's life.

          The rain of chairs is also a succinct way to show some sympathy, because when one lad gets hit by a chair, we all get buried in chairs. It's about solidarity. But with who?


          Who are these lads? From my American millennial perspective, I thought they were just some bored slacker-jocks challenging their own bodies in the vein of Jackass, except with delightful British accents that sometimes I cannot comprehend. While Jackass was maybe a bit gayer than we credited at the time, these lads are operating with clear straight mate energy.

          The game's lead musical track "Str8 Acting" by Lynks Afrikka parodies this tension between the straight and LGBTQ community. In the song, Lynks Afrikka chants "HOT STR8 BOYS" as a sarcastic objectification, before going on to drag said hot straight boys for their insolence. The name Lynks Afrikka parodies the deodorant brand Lynx Africa (Axe in the US), also known as the embarrassing odor of adolescent locker room masculinity, and these lads are the target demographic.

          But many viewers, especially UK audiences, perceive deeper social class markers here.

          The lads' shaved haircuts, fitted fashion, muscled bodies, exposed underwear, Tyneside flats, and Northern accents, signify a specific working class identity from North East England. In the 2000s these lads might've been called chavs, and in the 2010s they would've evoked the US reality TV series Jersey Shore or its British off-shoot Geordie Shore, and TV critics noted the clear social class implications.


          When talking about White working class people, there are at least two traps here. The conservative trap is to "defend" a "White working-class heritage" racist dog whistle that pushes White nationalism. Meanwhile the centrist liberal trap is to embrace classism and laugh at them for wearing the wrong clothes, drinking the wrong drinks, and living in the wrong houses. Let's avoid both of these traps.

          The purpose of those traps is to hide a third way: an intersectional history of solidarity, especially in the UK. In 1984, Lesbians and Gays Support the Miners (LGSM) supported mineworker unions against Thatcher during the national strike, and in turn, miners supported gay rights movements and pushed against the anti-gay law Section 28 in 1988. This was a political alliance forged long ago by our elders, proof that we can all organize together.

          So in Hard Lads, I wish to honor the spirit of this ancient covenant, and err on the side of solidarity. As an outsider to the UK, I'm trying to learn about the social forces that shaped these lads, and how whiteness, class, and sexuality / gender intersect outside of the US. And I'm learning a lot! Like I didn't even understand how to build the lads' terraced housing at first, until someone on Twitter generously critiqued my inaccurate construction.


          This research and sympathy are important here, because that work is about love -- and the video ends with love.

          The chair lad holds his wounded friend in his arms. “I’m not doin’ that again, I’m not doin’ that again,” says the chair lad. “That’s ridiculous. That’s ridiculous. That’s ridiculous... That’s ridiculous.” It's a weepy sentimental promise not to hurt someone again, full of regret and pain, an extremely tender gesture, even more intimate than a kiss. THIS IS AFTERCARE! Yes it is a failure to be an invincible toxic manly man, which is also the failure to be cruel and uncaring. As far as failures go, this is a good failure. It's OK to feel hurt and show vulnerability, and traditional macho masculinity allows little space for this.

          This loving pose has prompted humorous comparisons to the painting “Lament For Icarus” by late Victorian painter Herbert James Draper, in reference to the ancient Greek myth of a young man named Icarus who flew too close to the sun despite being told not to fly so high.

          Like all good jokes, there's actually a lot of heart and truth here. The painting is quiet, somber, and dignified. It depicts the sea nymphs tending to this fallen angel, this sweet prince. Behold the soft lad cradling his fallen bosom buddy!

          Unfortunately, conveying non-creepy authentic human tenderness via realistic 3D video game bodies is one of the most difficult problems in games, and ran counter to the uncanny fumblecore feel I detailed earlier. The resigned face, intimacy, humanity -- I'm afraid it's beyond the scope of my skills and resources. (While I'm confessing weaknesses, I'm a perennial fan of the "cheeky Nandos" meme, and my game's lack of vocal lad banter worries me. But I didn't want to upstage streamers.)

          Sometimes you have to know your own limits, like Icarus. So instead I pursued a different approach while still attempting to convey some sense of love.


          "Landscape with the Fall of Icarus” by Dutch renaissance painter Bruegel (or some other painter, who cares) emphasizes the humiliation of Icarus' failed ambition. Viewers familiar with the myth will first look for Icarus in the sky -- only to eventually locate Icarus awkwardly drowning in the ocean near the bottom-right corner. No one in the painting gives a shit about Icarus. Not only was Icarus foolish, but no one was even recording him on video! Gay poet W. H. Auden famously saw this painting in a museum and felt moved to drag / lament Icarus:
          ... In Breughel's Icarus, for instance: how everything turns away
          Quite leisurely from the disaster; the ploughman may
          Have heard the splash, the forsaken cry,
          But for him it was not an important failure; the sun shone
          As it had to on the white legs disappearing into the green
          Water, and the expensive delicate ship that must have seen
          Something amazing, a boy falling out of the sky,
          Had somewhere to get to and sailed calmly on.
            -- W. H. Auden, “Musée des Beaux Arts”
          “But for him it was not an important failure,” claims Auden.

          But it is important! In queer culture, we have a special word for important failure: “camp.” Success is for straight people, spectacular flaming trainwreck failure is for the rest of us. So we don’t hate the lad for trying so hard, and in fact, we remember him and love him even more for trying hard and failing. Imagine if he had successfully endured several competent swings from the chair... well, then we wouldn’t even be talking about the video, because then it would all be so boring!

          “In naïve, or pure, Camp, the essential element is seriousness, a seriousness that fails. Of course, not all seriousness that fails can be redeemed as Camp. Only that which has the proper mixture of the exaggerated, the fantastic, the passionate, and the naïve...

          [...] Camp taste is, above all, a mode of enjoyment, of appreciation - not judgment. Camp is generous. It wants to enjoy [... and] it doesn't sneer at someone who succeeds in being seriously dramatic. What it does is to find the success in certain passionate failures.

          [...] Camp taste is a kind of love, love for human nature. It relishes, rather than judges [... and] identifies with what it is enjoying. People who share this sensibility are not laughing at the thing they label as ‘a camp,’ they're enjoying it. Camp is a tender feeling.”

            -- Susan Sontag, Notes on Camp
          Following this tradition of camp, the ending sequence for Hard Lads began as a failure in my code. I was trying to apply physics forces to keep the ragdoll upright, but instead it levitated the hurt lad off the ground.

          I watched him steadily rise into the air, as if transcending this mortal plane of pain and suffering and chairs. It was beautiful to watch his worn-out body rise above the rooftops and into the endless sky. Icarus was finally achieving his dream. While it wasn't two shirtless hunks holding each other, there was still a sense of gentle love here.


          Hard Lads' ending sequence tries to embody this sentimental campy love. After the lad collapses for the 7th time, he gets buried in 69 chairs and lays there on the ground, longer than usual.

          All is still. This time the lad is really really hurt.

          He's not getting up. Something's wrong. We have to do something!

          That's when chair lad bosom buddy launches into a rousing rendition of "Truly Madly Deeply", as popularized by Australian pop sensation Savage Garden:
          I'll be your dream, I'll be your wish
          I'll be your fantasy
          I'll be your hope, I'll be your love
          Be everything that you need
          I'll love you more with every breath
          Truly, madly, deeply do
          I will be strong, I will be faithful
          'Cause I'm counting on

          A new beginning, a reason for living
          A deeper meaning, yeah

          I wanna stand with you on a mountain
          I wanna bathe with you in the sea
          I wanna lay like this forever
          Until the sky falls down on me


          Well, kind of. I didn't use the actual track by Savage Garden. Instead I ripped the audio from this viral video of a lad chorus singing a surprisingly good cover which turned out to be an ad for athletic apparel... but I feel like my fair use / artistic appropriation is warranted here. Just pretend I didn't tell you that it came from an ad, and imagine it's just a completely natural authentic recording of lads singing pop songs down at the pub.

          In the game, this campy romantic gesture prompts a crowd of men to take to the rooftops, serenading their fallen mate. Their collective energy magically raises the lad out from the wreckage and levitates him to the heavens. As the fallen lad flies up into the sky, I randomly oscillate the physics forces applied to his dangling legs, which make him spin around in a dramatic fashion. I wanted his body to perform a surreal uncanny dance that looked like falling upwards in reverse. It's the beauty of successful failure celebrated by the community.


          High above the rooftops, just as the lads' final chorus swells triumphantly, there's a randomized 50% chance for him to suddenly plummet to the ground like Icarus. I thought the dark morbid humor would feel appropriately British. Even with the magic of love, these lads are still merely men, God giveth and God taketh away, and so on.

          For each completed playthrough, the player also earns various paintings and works of art depicting Icarus, which can in-turn unlock bonus features like a golden ratio camera overlay, classy black and white filter, or even wings. These are optional extras to reward particularly engaged players and to provide some context for repeated plays in a public exhibition setting. (It's also funny to me to provide access to free public domain art as a game achievement.)

          This use of art trophies is my way of acknowledging the original tweet that prompted me to make this game: a queer joke about how the video should have its own room at the Masculinity exhibition at the Barbican. By surrounding these lads with virtual paintings and artifacts comparing them to Icarus, I concur. This video belongs in a museum.

          To commemorate the player's 5th final playthrough and 100% game completion, I disable all game systems and replay the original video framed inside the virtual in-game phone. I think this scene brings a surprisingly haunting documentary feel. Most players will inevitably try to recreate the hand movements to match the video, but it quickly becomes a futile exercise. All of the game's inadequacies and inaccuracies as a reproduction come to a fore.


          We have no choice but to appreciate the video and the game for what they are. This is the simple love one might reserve for a succinct capture of early 21st century himbo masculinity, a brilliant tragicomedy in three 20-second acts... an important failure. In honor of all the HOT STR8 BOYS who aren't hard straight lads. Truly madly deeply softly, with tenderness, pain, and camp.

          Love is why I made Hard Lads. Like many people around the world, I really love this video. I've watched it hundreds of times, paused countless freeze frames to examine the most trivial of details, and at this point I've written thousands upon thousands of words about it. It has problems, it has beauty, it's a complex piece of culture that merits our attention.

          If love is a form of magic, then I am a magical sea nymph recovering Icarus from the boy-blue ocean. I perform this spell in the centuries-old tradition of queering -- as LGBTQ+ people have queered countless things before, like jockstraps, the Badabook, or the Chinese word for "comrade." Open-ass athletics, psychological horror, and solidarity, already sounds like a fantastic queer masculinity to me.

          May this humble game serve as official notice to the entire world: I hereby declare British Lads Hit Each Other With Chair to be Gay Culture, the shared communal legacy of LGBTQ+ people everywhere.

          Welcome home, lads.

          new Quake map: "Smell It In The Street"

          $
          0
          0
          I made another Quake map! This one is called "Smell It In The Street" and it was made for the Doom Tintin map jam, a level design jam centered around using Quake mapping community member Tintin's texture pack that samples from Doom 3 textures.

          Some brief level design thoughts follow:

          This one is a lot more traditional than my previous Quake levels that focused on modernist architecture. For this one, I built a kinda generic video gamey sci-fi facility in a cave, but I still wanted to add my own twist on the formula. I knew I had to make heavy use of neon color since I hate the typical brown beige Quake color palette, but my early texture tests with the purple wall variants were a bit disappointing. The deep saturated midtones of the Quake purple palette leave very little wiggle room for contrast or color variation, so instead I decided on a fairly bright monochrome texture palette where I'd push the colors with neon lighting instead. I also wanted to lean on the textures that would get less use by other mappers -- namely, this beautifully creamy hexagonal panel wall.

          The main arena is centered around these big murky purple vats of liquid (see above). It's my variation on the typical arena pattern in Quake, where usually you just build a big room and put some pillars in the middle to circle-strafe around. Except in my version, big phallic pistons repeatedly thrust up and down into the pools!... which also aren't really pools, the player can secretly fall through them and land in the basement arena below. For experienced players, this is a convenient escape hatch once they realize they can jump down for some health and take a rest, in case the action gets too hot upstairs. I'm particularly proud of the giant three-pronged sci-fi candelabra on the ceiling that began as a way to block the player from jumping easily from cylinder to cylinder, but then eventually just tied the room together.
          In terms of critical path and player flow, I structured the whole map a bit like a multiplayer arena map that the player gradually unlocks and opens up. This is the same flow I learned from playing modern 2010s Quake community maps (especially the excellent Underdark Overbright) that remind me of first gen 2.5D FPS level design, like Doom and Marathon: massive complex interconnected floorplans. Honestly some of the late Doom and Marathon levels were probably way too big and way too much. The sweet spot is probably like ~31% of one of those massive levels, so basically like a Thief level, but with fewer hallways. But despite my moderate stance I still feel myself turning into that guy: I now honestly feel that action FPS design basically peaked in the 90s.

          Plus it's all so much more fun to build with modern BSP construction tools like Trenchbroom. It lets me focus on that layout design feeling, when I figure out how to resolve the connection between two rooms or height levels, and I imagine it's definitely the closest that level design ever got to actual architecture: chasing the high of untangling these spatial problems, gazing at the completed sudoku that is your map. And gosh it's so liberating to build these maps in 2020, when I give absolutely zero fucks about optimization and VIS blockers, and final quality map compiles take a few dozen seconds at most. It's easy to build huge open cavernous maps with the confidence that it'll still run on basically any computer.
          I've also been trying to square all this with my current playthrough of Black Mesa, with the highs of its spatial design (and the lows of its unfortunate combat gameplay regressions). I think that dissatisfaction has given me the level design itch again. 

          Maybe I should build an indie FPS game sometime? But I don't want to build an "indie retro FPS" Quake-like. There are so many already. For me it's more about the abstract level design qualities that benefit retro shooting aesthetics, rather than the retro shooting itself.

          Imagine the sunny colorful realism of Half-Life paired with Quake's famously crunchy movement physics and use of space... but if I'm going to skip over the last 20 years of shooter design, I'd still want to embrace the last 10 years of indie design: a more forgiving Devil Daggers that meets a more forgiving Dear Esther, wrapped in the allegory of Umurangi Generation? Now if only someone would pay me to build that.
          In the meantime, you can try out the full map pack here.

          Unfortunately there's still no good convenient way to play Quake mods. Check out this guide for info on how to get setup. Other than the map pack mod, you'll need to download two other things:

          (1) the original Quake content pack ("pak0.pak") that comes with the free shareware version of Quake or retail version of Quake (which is free this weekend btw)

          (2) a modern Quake engine ("source port" in Quake community parlance) like Quakespasm.

          Then once you download and install everything, you'll need to make a shortcut that targets something like quakespasm.exe -game dtintin

          new Quake map: "It Will Be Summer Eventually"

          $
          0
          0

          My third Quake map is another multi-level arena, a bit similar to my previous map Smell It In The Street. I made it for Speedmap #210 (SM210), a weekend map jam on the Quake Mapping Discord with a theme of "overgrown" by jam runner Naitelveni.

          For this map, I think I did a bit better with combat design. The arenas are a bit more open and free than before, and the encounters have a bit more purpose and push. I also make heavy use of Copper v1.11's improved ogre aiming, fiend jumping, and trigger_monsterjump spawnflags.

          initial layout sketch
          I do notice I'm falling into a pattern with my nonlinear looping arenas. I tend to start with (a) spiral flow climbing upwards with (b) ~150% of the health / ammo / items I need to fight the first mob on Normal difficulty, leading to (c) the silver key opening a big supply cache for the second mob, and lastly (d) the gold key lets you exit. I like this pattern because it lets me reuse one central room, and focus more on it, but then that one room ends up having to carry so much stuff.

          I'm also still learning how to do pacing properly in Quake and I'm constantly over-estimating what players like to handle. I'm finding that a lot of Quake players are trained to use the entire accessible room to fight, but for the way I setup the fights, that means they're just waking several encounters-worth of monsters to chase them and it quickly feels like too much. These players basically leap out of the frying pan and into the fire. Maybe I'm still working from Half-Life norms, where players usually try to defeat the current wave from their current position before progressing, and Quake culture is different. Or maybe I just need to change my approach to balance.

          For my next map, I'm going to try to gate encounters better (maybe with a soft gate like a momentary jumping puzzle? I hate the "kill all monsters to open the door" type of thing) and also balance downwards from Hard difficulty (instead of playing on Normal and trying to balance up + down) to try to refine my continuous nonlinear looping arena style.

          While I'm OK with how the combat gameplay turned out, I'm not very happy with the visuals and architecture here. It feels a bit generic and aimless, and throwing some last minute ivy everywhere felt like surrender. I probably should've spent more time painting the ivy texture, but fighting with the Quake 1 color palette at the end of the project was frustrating. I think this is an instructive example of how gameplay-first blockout approaches end up forcing the design into a weird corner that makes it hard to resolve art problems later on. I should've started the art pass earlier.

          This lack of art direction was compounded by my first attempt to use the default id1 Quake textures. I don't know the textures very well, and this experience has convinced me that ignorance was bliss. Unless you build your levels to be fairly dense and compact to conform to the small texture dimensions, with lots of trim and segments everywhere from the very beginning, then these textures look terrible. So I did an emergency re-texturing halfway through this project and switched over to the Makkon set, which is much more forgiving with long stretches of wall.

          Unfortunately I didn't have time to rebuild anything, so I just copy-and-pasted some arches, pillars, and trims everywhere and hoped that felt cohesive enough. This type of construction is often a warning sign, a desperate cry for help. But spamming details can never compensate for a fundamental lack of vision or poor overall spatial composition! Next time, I have to make a more concerted effort to interrupt my initial gameplay blockout to do some art development.

          Surprisingly, I think my haphazard first attempt at cliffs and rocks in Quake feels OK. It has a chunky Halo 1 vibe to me. I kept my construction very loose, and relied mainly on copy-and-pasting rock chunks and skewing / clipping / vertex manipulating chunks to create variations. This careless workflow is only possible with Trenchbroom's excellent brush geometry validation. In Valve Hammer Editor or JACK, I would've just kept getting errors or compile bugs. Trenchbroom is a champ.

          Overall I can live with what I was able to build and I learned a lot, but it's definitely not my best work.

          But don't let my glowing self-recommendation stop you from playing this. There's a bunch of other great maps included in the pack. To play, go download the SM210 map pack. Make sure you also download and install Copper v1.11+, as well as a modern Quake client like Quakespasm.

          The year of changes - kia ora Aotearoa

          $
          0
          0

          Earlier this year I submitted my letter of resignation as assistant arts professor at New York University, so Fall 2020 will be my last semester as full-time faculty at NYU Game Center.

          Working at NYU Game Center has been an immense privilege and honestly it's a dream job for any game developer. I will miss my students, colleagues, friends, and mentors. But unfortunately it was impossible to meld a job about constant meetings with a major life change:

          I'm leaving New York City and moving to New Zealand.

          I realize I have the rare privilege of leaving the US, at a time when most of the world has shut its borders to US citizens. But I don't think of it as an escape -- NYC will recover and stay NYC, probably, and NZ has plenty of its own problems, so let's just put aside the COVID factor and think of it more as a hiatus... I'm taking a hiatus from residing in the US, and seeing what else life has to offer.

          This move also means a short (or perhaps longer) hiatus from being a full-time academic. I'll still try to make myself available to students sometimes and maybe I'll even have the pleasure of teaching some classes at a NZ university, but for now, academia likely won't be the main focus of my life. And while I must stress again that I will miss my colleagues and students dearly, I must admit, I'm also looking forward to new possibilities for my professional and creative life:

          First, I have a few commercial-oriented games in the works. Look for the releases next year.

          Second, starting in January 2021, I'll be available for hire for work around New Zealand (I have a NZ work visa) or remote work from anywhere. 

          I'm a generalist 3D designer / developer who's very experienced with Unity, and I'm familiar enough with Unreal to prototype in BP, build levels, and get myself up to speed with minimal supervision. I'm also available as a level designer + scripter + tolerable environment artist / asset mangler for 3D projects of all types. 

          My portfolio is here, email me at yang.robert.w(at)gmail(dot)com if you want to talk. Paid gigs / positions only. CV available on request.

          In the meantime, kia ora Aotearoa.

          Updates from antipodes, year 2021

          $
          0
          0

          Hey all, it's been a while. Here's a brief update on my life --

          I've successfully moved to New Zealand and I currently reside in Auckland. I'm currently working as a remote contractor on a secret project under NDA, but I imagine we'll probably announce sometime this year if everything goes well. 

          I'm still working on some personal projects:

          • I have two gay games that are 95% done, they just need some playtesting and polish, but finding an in-person playtesting group in Auckland has been a bit challenging. Regardless I'll probably be releasing these games this March and April. 
          • This will be the year I attempt to finish my bigger long term project -- a sex work deckbuilder game called Macho Cam. That's about 60% done. I need to redo the card system for the 5th time.
          • For the long-awaited Radiator 3 release, my plan was to wait for Unity HDRP to get finalized before attempting to port the entire Radiator codebase from Unity 5.6 (I know, I know) to Unity 202x. But maybe I should just stick to the built-in 3D pipeline anyway.
          • I've also been contributing a lot to everyone's favorite Unity dialogue system Yarn Spinner and I've been trying to clean up my dialogue tool Merino, all of which might see its official v2.0 public release this year.
          • Most of my Quake mapping is on hold, as I dedicate my level design energies to a different engine-agnostic project. More to announce there when it's ready, which will, again, hopefully be this year.

          For those who happen to be in New Zealand, I'll be giving a short in-person talk about sex games at Play By Play, which I'm told is a bit like the kiwi equivalent of the Indiecade conference track -- and it's all part of the larger in-person New Zealand Games Festival in Wellington, April 19-25, 2021. I'll be around for most of Play By Play, so feel free to say hello if you see me... Unless the country suddenly plunges into lockdown that week?

          Hope everyone is having a tolerable 2021 so far. Good luck out there.


          Getting started with HaxeFlixel in 2021

          $
          0
          0

          Warning: this is a fairly technical game developer-y post. If you came here for gay sex, I'm sorry.

          For an upcoming project commission, I'm making a 2D game with crowd simulation and simple controls that works well on mobile browsers. (Reminder: for iOS, that means WebGL 1.0 and no WASM.) The engine should be able to render and simulate 200+ lightweight game objects -- frame-animated sprites with simple collision, no fancy physics or shaders.

          Which game engine should I use to maximize ease of learning and compatibility, and manage hundreds of simple objects on-screen? Here was my thought process:

          • Unity WebGL: way too heavy and slow for mobile browsers, and maybe overkill for a no-physics 2D game anyway. (Although the Lil Nas X 3D twerking game runs surprisingly well on iOS's WebGL 1.0, I wonder how much they had to optimize?)
          • Unity Project Tiny: as far as I can tell, Project Tiny and its DOTS dependency is still in early development. The random caveats and various in-dev inconsistencies with regular Unity would also be frustrating. And as with many other Unity side projects, its long term future feels really hazy.
          • Construct: seems ok, and I think I could've gotten used to the visual block scripting, but overall the pricing and licensing feels weirdly restrictive. I have to pay to use more than 2 JS files? I have to pay to use more than 1 font, or make an animation more than 5 seconds long? These are some really bizarre artificial resource limits.
          • Phaser: seems popular enough with decent TypeScript support, but I want the option of building out to a native executable without a weird Electron wrapper or something. Their monetization model (free open source base but you pay for "premium plugins" and tools) is one of the more generous ways to go about this, I get it, but it still feels weird to me and reminds me of Construct.
          • Godot: I've wanted to try Godot for ages, but in the end I felt like I didn't have a good sense of what its HTML5 Web export could do + learning enough of the "Godot way" and GDScript would've taken a while. It's also in the middle of a big break between v3.0 and v4.0, and ideally I'd like to wait until like v4.2 to commit to learning it.
          • Heaps: promising and some people get great results with it, but maybe still too early in public lifecycle for a total newbie like me, with not enough samples / docs / robust official tutorials to learn from yet. If or when I do try out Heaps, I'll probably try using Deepnight's gameBase project template.

          In the end, I chose to build this particular project with HaxeFlixel. This post details my early impressions, thoughts, confusion, advice, etc. with learning it.

          Haxe has a very mature and stable multiplatform stack of libraries (OpenFL, Lime) with good support for HTML5 / WebGL as well as native executables, and the Flixel framework design has already been time-tested from its years as an AS3 Flash library with lots of documentation and samples. 

          I also liked how Haxe has decent autocompletion support in VS Code, which reduces (but doesn't quite eliminate) all the documentation hunting. There's a decent debugger overlay with dev console too, for those who use those things.

          This post is some info, advice, and useful links from my experience learning HaxeFlixel in 2021.

          • WEIGHT: if Unity and Unreal are big heavy fully featured game engines with tightly coupled game editor tools, then HaxeFlixel is a barebones "framework" game engine with very little default structure or required tools.
          • CURRENT DEV STATE: HaxeFlixel feels like it's currently in maintenance mode, having finished the bulk of its development in the mid 2010s. Most updates within the last year have been small bug fixes, and momentum for big future features has stalled. Mind you, this is still much better than a totally dead project, or a chaotic constantly-shifting live project.
          • WHERE TO GET HELP: Most Google searches will point you to the defunct Google Groups or the now dormant forums. For live help, your best chance is to ask in the Flixel channel on the Haxe discord.
          • HOW TO START: The official introductory tutorial is still mostly up-to-date in 2021, and will show you the typical code patterns and workflows to use. After you complete the tutorial, make sure you read through the Cheat Sheet which has dozens of short code snippets for common game features. Then as you come across more complicated problems, you'll want to browse the very helpful Demos, each with a link to its full source code on GitHub.
          • HAXE VS UNITY C#: Coming from Unity, Haxe syntax and HaxeFlixel's overall class architecture were fine. Instead of MonoBehaviour, most of your scripts inherit from FlxSprite (or FlxNestedSprite if you need to parent sprites to each other) instead. Coding-wise, I'd say my biggest pain point was...
          • VECTORS IN HAXEFLIXEL: HaxeFlixel encourages heavy use of chaining function calls and pooling variables, especially with vectors, which differs greatly from how Unity C# does it. HaxeFlixel stores vectors as FlxPoint reference types which must be manually get / put from a pool. So in Unity, I would lazily code something like var vector += new Vector2(1, 2) * 3; but in HaxeFlixel that looks more like var vector = FlxPoint.get().addPoint(FlxPoint.weak(1,2)).scale(3); which feels unnecessarily verbose to me. Also, most vector-related functions are actually on the FlxVector type that inherits from FlxPoint, so you constantly have to cast the base FlxSprite's class member FlxPoints into FlxVectors in order to do any vector math beyond arithmetic and scaling. 
          • BUILDING TO HTML5 / WEB: These days, this is HaxeFlixel's default build platform and it just works right out of the box. A basic Hello World build is ~4 mb uncompressed and ~1 mb compressed, with most of that space taken up by the 3.8mb .JS file.
            • Performance tests on iOS browsers have been great. I can easily throw ~200 sprites (that all share the same spritesheet) on the screen with basic overlap / collision tests at 720p resolution at a steady 30 FPS. My old iPhone 4 is running the crowd simulation (typical boid flocking thing with an underlying flow field) just fine.
            • I have a great push pipeline with itch.io -- I installed their command line tool Butler and setup the Butler auth, then I added a VS Code workflow task to easily push new HTML5 builds to itch.io. Here's what my /.vscode/tasks.json file looks like:
              {
                  "version""2.0.0",
                  "tasks": [
                      {
                          "type""lime",
                          "command""test",
                          "group": {
                              "kind""build",
                              "isDefault"true
                          }
                      },
                      {
                          "label""itch butler push",
                          "type""shell",
                          "command""butler push export/html5/bin [ITCH-USERNAME]/[ITCH-PROJECT]:html5"
                      }
                  ]
              }
          • BUILDING TO WINDOWS FROM WINDOWS: Building out to Windows via C++ requires you to download and install C++ build tools included with Visual Studio Community (this is NOT the same thing as VS Code) and make sure you enable the checkbox for C++ support... Or if you don't want VS Community, then you can also download the Build Tools installer separately -- but make sure you don't uncheck any of the boxes because they're all necessary for the Haxe Windows build target; yes I know it's like 6 GB of nonsense but you need it all anyway, sorry.
          * * *

          Overall, my experience with HaxeFlixel has been fairly good so far. However, it has been designed for a fairly specific use case: tile-based pixel art platformers. The further you diverge from that original purpose, the less suitable HaxeFlixel will feel for your project.

          Here are some use cases where the project would be doable but I would expect some friction / difficulty with HaxeFlixel:
          • physics simulation beyond simple platformer physics: there's a FlxNape integration of the Nape physics engine, and it seems like it has good support with examples... but the main Nape repo itself hasn't been updated at all for 5+ years, which makes me wonder whether it's compatible with the latest Haxe updates. I didn't try to find out.
          • lots of asset management: HaxeFlixel has a really basic asset management system where you load sprites, one by one, by file path. This simplicity might be appealing if you have less than a dozen sprite sheets to manage. But imagine a game with hundreds of different texture files, which all need to be packaged at different resolutions for different platforms! Tools like Unity and Unreal can package / resize / recompress your assets automatically when you build out. Maybe there's a way to hand-roll your equivalent in Haxe / OpenFL? I wouldn't know how that works though.
          Here are some use cases where I probably wouldn't use HaxeFlixel:
          • bone-based 2D animation / complex sprite atlasing: there's support for the free Spine-like tool DragonBones and TexturePacker, but I don't know how mature or solid that integration or workflow is. And really, you'll want something like Godot or Unity that has a visual editor to help preview / debug how the animation and game will come together.
          • UI-heavy projects: same deal as bone-based animation, where in theory there's a decent flixel-ui library with robust demo code and XML-based layout files... but the workflow here is really unclear to me. Am I supposed to handcode the XML for all these menu screens? flixel-ui probably needs a visual UI designer tool, which will likely never happen. It's much easier to visually design these UIs in UE4, Unity, or Godot.

          Email subscriptions have been migrated to Mailchimp

          $
          0
          0

          Some minor housekeeping here: the free blog-to-email (RSS-to-email) service I use, Feedburner, was acquired by Google some moons ago and thus it is now discontinuing various services... such as its core blog-to-email service. 

          So I've been forced to move all email subscribers to Mailchimp instead, which offers its own free blog-to-email service that it too will likely arbitrarily discontinue someday.

          But until that fateful day, enjoy the slightly more readable emails. I've tried to disable Mailchimp's creepy marketing tracking as much as possible, but sorry in advance for any inconvenience. If you want to unsubscribe, please use the "unsubscribe" link at the bottom of the email. 

          Or if you're reading this post on the website (which is the vast majority of you) then you can choose to subscribe and have new blog posts sent to your email inbox instead. Emails will be rare, and I do not use your address for any other purpose / anyway I don't want to have to login to Mailchimp ever again.

          Thanks for your attention and have a lovely day / night.

          MIF commission "We Dwell in Possibility" coming in July 2021

          $
          0
          0

          Manchester International Festival (MIF) just announced my upcoming project "We Dwell in Possibility", a queer gardening crowd simulation in collaboration with illustrator Eleanor Davis, to be released in July 2021. It'll be free and playable in your web browser.

          This commission has been interesting because I'm learning and trying a lot of work that I don't usually do, which came about as a cascading chain of design constraints:
          • Mobile. My gay games are all well-suited for a mobile format, but tech platforms are increasingly sex-phobic and will block my content from their stores. But if I target a mobile browser, they can't really stop me. (This is the real reason why Apple keeps their iOS browsers so slow and broken: an open internet threatens their control over everything.)
          • Not-Unity, in 2D. If I want it to run well in a mobile browser, then it probably has to avoid lots of flashy 3D. I usually work in Unity and don't get me wrong Unity's WebGL build target is a miracle, but still not quite miraculous enough, so that's why I'm learning HaxeFlixel for this project.
          • Collaboration. I usually prefer to work solo and in 3D, but my 2D art skills aren't very developed. So what if... this time... I didn't... do the graphics? I've admired Eleanor Davis' work for a while now, and I'm super excited to have her here. Also I secretly hope this is just the first of many video game projects she works on.
          • Producers. MIF does something a bit unusual for its commissions -- they provide producers, which is very common for live events and commercial games, but rare in an art games context. For this project, my fantastic producers Shanaz Gulzar and Steph Clarke have been key for figuring out what the heck we're making, and will be instrumental for bringing this to the finish line.
          The two takeaways I want to emphasize here are:

          (a) even experienced developers / artists are always learning and growing... and according to the artistic-industrial complex, I'm entering a phase known as "mid-career"? oh dear

          (b) grants, commissions, and public arts funding are what gives people space and time to do that vital growth... meanwhile, commercial works and solo side projects often force us into our comfort zone, which can act as a ceiling on that growth

          Open world RPG design notes from Enderal, a big long Skyrim mod

          $
          0
          0

          I'm playing a giant Skyrim "total conversion" mod called Enderal. It does a lot of interesting things but also less-than-good things. I'm told it's inspired a bit by the Gothic series, which I've never played, so maybe a lot of my observations are more about Gothic than Enderal? 

          Be warned that some of the screenshots are a bit spoilery (e.g. there's a tropical biome!) and my notes are obviously going to spoil some of the game's structure, but all these spoilers are pretty vague and anyway I don't name any names.

          Anyway, here's my notes... 

          WE SHOULD ALL DO THIS / STEAL THIS:

          Dev-owned wiki. The dev team "SureAI" operates the official Endreal strategy guide and lore wiki. This is a business model I've always wondered about -- make a big complicated game, but then earn revenue from selling ads on the wiki for your own game? It's probably not worth the hassle for a solo indie. Unless... ?

          Sit and listen. Whenever an NPC is about to dump backstory and exposition on you, they'll ask you to take a seat. This is a convenient diegetic way of locking the player in-place for a cutscene, while also priming the player for an extended cutscene. It also sets the tone for some social contexts -- sitting at a big tavern table to share a meal, or sitting in front of a powerful person's desk. It is much better than the boring shot reverse-shot cutscene stuff going on in AAA RPGs these days, and makes Skyrim's "sit" mechanic more meaningful.

          Expendable companions. You know how NPCs can like / dislike your different dialogue choices, that adds up to a score, and you hope you'll get to fuck at the end? I think Enderal had maybe like 10+ different NPCs who respond to your dialogue... and then a bunch of these NPCs leave and/or die. When the game shows you how some of your hard-earned relationship grinding will just "go to waste" anyway, then I think the player does something more interesting -- they care less about optimizing everyone for a perfect ending, because any character could be expendable. Destroy the player's expectation that relationship mechanic = main cast member.

          • I think this was a problem in Mass Effect 2, where you feel pressured to make everyone like you, and have that play out in the final mission with an optimal outcome... when actually, it's a much better story if a bunch of your allies betray you / fail / die
          • side-tangent: RPGs should reward you more for making NPCs hate you, because that conflict is often a more interesting narrative beat? reminds me of a central Nordic LARP tenet that more video games should adopt: "playing to lose"
          • see also: Far Cry 2?

          Catch-up time / temporal branch and bottleneck. During big long quest chains, there are periodic quest stages where you have to wait 1-2 in-game days before checking in with the NPC again. Diegetically, the NPC has to prepare a machine or potion, or get supplies, or whatever. Systems-wise, this forces you to pause that quest chain and do something else. Sometimes they don't even tell you how long it will take, and you have to wait for a courier NPC to show up randomly to notify you. It's like the game's telling you to take a break and follow your other quest chains.
          • encourages the player to follow quest chains at an even pace, which is important if the quest lines intersect / if quests are at fixed difficulties. You don't want the player to reach the end stage of a main quest's apocalypse, and then go kill some basic level 1 rats as a guild rookie. The side quest feels like a chore because its entry expectations are totally out of sync with the character.
          • vanilla Oblivion and Skyrim went after this threaded pacing problem with dynamic leveling / leveled mobs in dungeons... Oblivion was hated for it, Skyrim was loved for it
          • but what if you could "fast forward" parts of quest chains, based on advanced progress in other quest chains? imagine you completed a dozen quests to become King of Fuckboy City -- when you walk into the Disco Guild, the Disco Queen shouldn't say "ok rookie here's quest #1", instead they could say "hey liege, we have a crisis, here's quest #6"

          A bank is a place. In the main city there's a bank in the market square. There you can open an account and deposit money to earn interest (compounded daily), and of course when the banker goes to bed you can sneak behind the counter and steal all the loose money laying around. But that's actually just the start of your banking adventures, which keep bringing you back to the bank...
          • Cashing checks. The merchant guild's early quest rewards are payslips that you have to cash-in at the bank, which is a seamless excuse to make the player leave the guild hall and let some time pass.
          • Shareholder certificates. If you do quests for shopkeepers, some of them will give you stocks that you can add to your bank account for extra interest, usually at a small fixed rate (e.g. +5 coins a day)
          • Deposit box vault. You'll find or earn (or steal) safety deposit box keys around the game world. You have to return to the bank to open that numbered vault door for the reward. It's like a game show of in-world loot boxes, and it's surprisingly exciting to find out what's behind each door. A weird skull, or a dead body, etc.
            • Bank quests. There are several quests that revolve around money disputes and stolen inheritances which require you to go to the bank to investigate personal vaults, which further cement the fiction that this is a functioning bank that even the NPCs use.


          ... BUT THIS ISN'T SO GOOD:

          The tyranny of environment artists. Level design is by far Enderal's biggest weakness, probably because it has to do with all the invisible aspects of level design. Like a lot of modders, the Enderal team is obsessed with surpassing their base game's production values. But without any meaningful code access to upgrade terrain engines or lighting systems, that mostly means spamming set dressing and clutter everywhere. So much of the game world has been designed for great screenshots -- height variation everywhere, foliage everywhere -- but in practice this results in really awkward level design:
          • Untouchable clutter spam = terrible readability. Enderal's set dressing breaks one of the most important rules of immersive sims -- stuff that looks similar should behave similar. So you'll see fake mushrooms, fake bread, fake detailed foliage, fake dinner plates... these are all items with interactive counterparts, and the inconsistency is frustrating. Skyrim was janky, but that jankiness emerged from its consistent application of physics and interaction to everything. The Enderal builders don't want the player to ruin their carefully arranged clutter, so we get absurd things like "empty" sausages or un-lootable plates of food, breaking Skyrim's UX patterns for pickups. Because what if you had picked all the sausage from the kitchen, then the kitchen wouldn't look detailed anymore! Oh no!
          • Lots of height variation and clutter = broken pathfinding. Every scenic rock outcropping and bush is a potential disaster for an NPC. Skyrim was already notorious for this "break the AI pathing and snipe at them" exploit metagame, but Enderal sort of just gives up here. Which is understandable, since making sure NPCs don't get stuck requires a lot of QA testing and painstaking navmesh drawing in the Creation Kit. But you know what makes that manual navmeshing work task more manageable? SIMPLER SPACES WITH LESS CLUTTER.
            • although, this too became an enjoyable exploit metagame for me later on -- playing The Floor Is Hot Lava by jumping from rock to rock to safely snipe at monsters, growing my "Snag-Sense" for problematic floor geometry that would probably break their pathfinding... ramps, especially indoor ramps with low height clearances, were my best friends, especially against any tall monsters
          • Everywhere is interesting = nowhere to breathe. Enderal makes a mistake that a lot of experienced level designers (including me) routinely make: once we've mastered the technical aspects of a tool, a room doesn't feel finished until every surface is exploding with detail. Every closet is a guitar solo, every wall is screaming. 
          • Nowhere to breathe = everything is cramped and narrow. Endreal never lets a big open flat field be a big open flat field. The desert area has so many mountains everywhere that there's barely any sand! Although there are a dozen different biomes, they all boil down to two topologies: (1) steep narrow valleys bordered by steep mountains, or (2) big cluttery forest where we can't see anything. 
            • Compare this to vanilla Skyrim, where the middle of the world is big, open, and calm with relatively few dungeons. Wider, spread out, less dense. You can climb over mountains to sneak into places. There's breathing room, there's space to improvise your traversal.
          • Dense narrow spaces = too much content packed together and repetitive encounters. Enderal has too many dungeons, caves, and bandit camps, all packed on top of each other. The starting area is like 2-3x the density of vanilla Skyrim. And because you have to follow the narrow road in a narrow valley, all your combat encounters funnel together too. It's not uncommon to walk between towns and fight like 6 different packs of wolves. This game is scared that the player might not have an activity every 15 seconds. It's more paranoid than a Ubisoft game.


          Money sink. One common "problem" with Skyrim (and most open world RPGs) is that you end up with a bunch of money and nothing to spend it on, except nice-to-have things like convenient access to crafting materials or a house. 

          But in Enderal, 95+% of your core progression skill points will come from the hundreds of "skill books" that you have to buy and eat (these aren't actual readable books, they're in the food menu).
          Here, leveling up only increases your cumulative maximum skill cap. So you level up and get 5 "Learning Points"... but to spend those Learning Points on actual skills, you must eat books. The higher the skill, the more expensive / rare the skill book. 
          • For example, to level up your Archery from 50 to 75, you need 25 "Expert" Archery books at ~500 gold per book... and for 75 to 100, you need 25 "Master" Archery books purchased at ~1000 gold per book... so altogether it's maybe like 45k gold to max out a combat skill. Assuming you have ~3 main combat skills you want to max out, that's a lot of gold you have to earn.
          • This decouples the player's behavior from their character build. Want really good fireball skills? Then just buy a bunch of elementalism books. Unlike Skyrim, there's no need to spam 1000s of fireballs to level up.
            • but finding ways to optimize the skill spamming was a fun metagame in Skyrim -- realizing that crafting jewelry is faster than crafting armor, or going into the middle of a crowded city and casting "Detect Life", it all feels like fun hacks to vary the spells you use
          It's a little confusing, but my actual beef isn't on this fussy leveling system, it's more about what it does to the rest of the game... It makes money too important. Everything becomes a question of maximizing money. Loot RPGs need to carefully balance the player dilemma of "this would be useful" vs. "this is better to sell" and this tips that balance too much toward the latter.
          • it makes the haggling skill bonuses ("Speechcraft" / "Rhetoric") too important, because being able to sell loot for +25% more and buy books at a -25% discount is a big deal when you have to buy so many books... vs vanilla Skyrim, where money is "nice to have" but doesn't gate your character progression
          • it also forced the devs to break the vendor liquidity system in Skyrim --  in vanilla Skyrim, sometimes you can't buy expensive stuff because there literally isn't enough currency in circulation between you and the shopkeeper. You don't have enough money to buy something valuable, and the shopkeep won't have enough for you to sell something valuable either. This is one of the most brilliant design traditions in Elder Scrolls games... which Enderal is forced to totally break! When the player relies so much on money to buy skills, that means you can't deprive the player of that money -- so every vendor in Enderal usually has thousands of coins on hand to buy your shit, and thus avoid a currency crisis. But currency crises are interesting! Ahhh!
          • see also: my writeup of Diamond City Blues, a Fallout 4 quest about a drug deal escalating across several in-game days -- an NPC doesn't want to be paid in drugs because they complain it's too annoying to sell the drugs... and in Fallout 4's Skyrim-like vendor system, they're right, it's annoying! But that's what makes it good!
          • No fast travel means you need to offer teleport scrolls to avoid too much backtracking. But teleport scrolls break the story because all these urgent quests about escaping / defending places don't make any sense anymore... How can we escape the city? Just buy a teleport scroll for 50 gold!... Why can't this army break into the fortress? They can't buy the scrolls to teleport inside?
            • This feels less dissonant in games where only the player uses teleportation...
            • ... but in Enderal the NPCs frequently use teleport scrolls, and also helpfully they even offer you free teleport scrolls back to town, especially at the end of a dungeon quest. In this game world, teleportation is cheap and common and diegetic.
          • Dry skill math design. "Do I want this +5% random chance to do ___, or this +3% damage to do ___?" Every skill perk feels marginal, random, and worst of all, isolated. For better math, I must defer to Tom Francis' post about good juicy chaining number design in Slay The Spire.
          • Lots of un-lockpickable doors that require keys. In Skyrim, this signals a Very Important Critical Door, where you should look for a clue to come back later, or a clue about where to find the nearby key / button. But in Enderal, it often signals a fake set dressing door that leads nowhere -- in other words, the exact opposite meaning as in Skyrim. To make matters worse, there's also plenty of set dressing doors that aren't hoverable at all. So why have two different types of unopenable fake door? My theory: they built a lot of these levels without knowing where these doors would lead to, and then linked these doors to actual interiors later on. So these are leftover placeholders that lead to cut content.
          • Not great encounter design. My rough totally-unscientific estimates of the enemy composition across the entire game:
            • 50% are different colored skeletons / zombies. Most are melee, some are archers, and a few are mages.
            • 30% are typical Skyrim human bandits. Most are melee, some are archers, etc.
            • 10% are wolves and different reskins of wolves. This game really likes wolves.
            • 5% are different types of trolls. The different troll reskins are pretty charming though. One is a weird gorilla, another is a creepy goat thing.
            • 5% is everything else.
            • I guess my real complaint extends to Skyrim -- homogeneous mobs without much variety or mixture -- but this problem is exacerbated by a very Enderal problem of narrow cramped arenas with too much verticality that the AI can't handle very well. Compare this to the variety of mobs in Doom and Quake maps, with terrain designed first and foremost for the NPCs.


          All in all, I enjoyed Enderal and learned a lot from it. The voice acting is OK and most of it works. If you're a Skyrim fan, it's pretty much just More Skyrim. 

          My only advice for any Skyrim veterans -- decrease the combat difficulty by one, below your usual combat difficulty, at least for the first few hours. The beginning is too hard with a punishing healing system, few resources, 'ots of wolves, and general confusion. Then gradually ramp up difficulty as you get more overpowered + as the combat gets more and more boring.

          Enderal is free on Steam for owners of both regular Skyrim and the Skyrim SE.

          new Quake map: Daughter Drink This Water

          $
          0
          0

          My fourth released Quake single player map "Daughter Drink This Water" is now out, as part of a community map jam pack called Sinister625 -- where we all made maps that used only 6 textures, included 2 "surprises" (anything more interesting than monsters spawning), and had only 5 monster types, all in celebration of Quake's 25th anniversary this June.

          HOW TO PLAY THE MAP PACK

          1. Follow this guide to acquiring Quake and a suitable source port (aka game engine) or try the Quakestarter: The Quake Singleplayer Starter Pack (Windows only). Note that Quakespasm-Spiked is currently regarded as the best engine among single player level designers; avoid DarkPlaces, which hasn't been maintained in years. Also note that it is technically possible to get all the necessary game files legally without buying Quake, but for perceived legal reasons, the community does not distribute everything together in a convenient package.

          2. Download and unzip the Sinister625 mod, which will already have all the maps and assets configured. Put the /sinister625/ mod folder in the root of your Quake folder, next to the /id1/ folder.

          3. Launch Quakespasm-Spiked (or whatever engine you're using) with the mod directory set to "sinister625"... There are two common ways to do this:

          - download a launcher tool like Simple Quake Launcher

          - OR create a shortcut with the command line parameter -game sinister625... so the full shortcut target line might read something like "C:/Program Files/.../quakespasm-spiked-win64.exe -game sinister625"

          WARNING: the rest of this post are my design notes that spoil what happens in the map...

          The map is called "Daughter Drink This Water" (a quotation from a book / poem that admittedly I haven't read beyond the title, but I thought the phrase was cool) and it's a large open wintery stone ruins map that initially begins very closed-off, segmented into mini-arenas. As you progress through each fight, you gradually unlock more of the map, until the big finale fight that uses the entire layout.

          And that's when some players will recognize the map as Hang 'Em High from Halo 1.

          Porting Halo maps to Quake / Quake 2 / Half-Life / Quake 3 is very doable, but still quite a bit of work. First I had to download the original Halo map geometry files, open the files in a Halo mod tool called Adjutant (now known as Reclaimer), and then export the map geometry out to .OBJ. Then I used another tool called OBJ2Map to convert the polygons into Quake-style brushes. The result reminds me of badly decompiled Half-Life maps; every individual face has been extruded into a brush, and to make any of it usable, you basically have to hand-rebuild and hand-merge all the different brushes again. But hey, at least you don't have to guess at measurements. And Trenchbroom has a very convenient "CSG Merge" tool that shrink wraps all selected brushes into a single convex brush, which is great for anything that isn't a rectilinear wall.

          Once I rebuilt all the map geometry and started walking around it, I was very surprised by how I barely had to change the map scale or proportions for Quake. Hallways and catwalks were already wide enough, and even some of the same Halo trick jumps still worked within Quake's less floaty jump physics. 

          My only real metrics changes were widening the 96u wide passages to a Quake standard 128u wide (mostly to make texture alignment easier / help Quake monsters navigate), and then lining up more ramp jumps.

          However, adapting this huge open multiplayer arena was very challenging. After some big slaughter map tests, I decided that a more controlled approach was necessary, and segments would also act as a sort of mini-tutorial for learning how Hang 'Em High works. By playing each part of the map in isolation, we can focus on that specific slice and do some fun encounter design within it. It was also a fun chance to play with some dynamic level layout stuff, implemented here as giant doors disguised as walls.

          Surprise 1: the giant walls descend, and aren't static map geometry.

          Surprise 2: as a finale, the giant overhang / hovering ship crashes down when you retrieve the gold key.

          Surprise 3? (bonus surprise?): the map turns out to be Hang 'Em High?

          As for my five chosen monsters, I rely mostly on projectile-based monsters to make good use of the big wide cover-heavy layout:

          1. Enforcers, weak humanoid soldiers who fires dodgeable laser bolts
          2. Ogres, big chunky artillery monsters who lob grenades
          3. Fiends, big demons that run and jump, like big fast headcrabs
          4. Scrags, weak flying monsters who fire dodgeable poison bolts
          5. Vores, slow strong artillery monsters who launch slow homing bombs
          Early on, I tried tests with the dogs and the knights, but these monsters almost always had too much trouble navigating the cramped tombstone areas. I'm also generally not a fan of shamblers, the shambler dance is kind of boring. My main regret is not trying some zombies, but enforcers already served the Halo-y cannon fodder role.

          For my previous map, I got some feedback that maybe I liked fiends a little too much, so for this one I tried to lay off a little bit... but still couldn't really resist. While ogres are still clearly the best Quake monster, fiends are a close second in my mind. It's just such a shame that they don't seem to work well together -- in my tests, ogres easily grenaded the fiends and caused infighting, so I had to carefully pace my encounters to make sure these monsters didn't interact.

          overview map of Halo 1's Hang 'Em High with weapon placement icons

          In this map I follow a typical Quake weapon progression, where the player has early access to shotgun / nailgun / grenade, but doesn't get the rocket / lightning until near the end. Encounters gradually ramp up in complexity, but probably peaking about halfway through the map when the player has to fight their way up a heavily defended tower. Scrags get introduced halfway through the map to counter any reliance on grenades / start soaking up the player's nailgun ammo.

          Because this map is so open, I have no way of knowing whether the player has explored certain sections to find certain weapons. I usually placed a weapon in a slightly out-of-the-way area to let some curious players acquire it "early", and then 1-2 fights later I also place it directly in the player's path as a fail-safe. There are multiple nailguns, grenade launchers, super shotguns, and rocket launchers. It might feel a bit redundant but hopefully players don't mind.

          Maybe the most interesting weapon placement thing I do is my nod to the equivalent placement in Halo 1 multiplayer. The first grenade launcher is where the Halo rocket launcher is; the ring of shadows powerup is where the Halo active camo is; the invulnerability powerup is where the Halo overshield is; the nailgun is where the Halo assault rifle was; and so on. The translation is imperfect, but these differences are what make adaptations interesting.

          No offense, but Tombstone is definitely the worst version of Hang 'Em High; way too much going on

          This is also the type of allegorical level design effect that Matthew Breit talked about for his single player Quake 1 map pack Underdark Overbright. It's a wink, a brief nod, a fun attempt to maintain continuity between all these different design contexts. But it's also an argument about how the original map works. You keep what was good

          Thus my remake is in dialogue with the other remakes too. I purposely avoided the desert theming of Halo 2's Tombstone and overtly alien desert theme of Halo Reach's High Noon. I also incorporated some of their innovations -- I made the central trench more forgiving and added a lift to the far side of the big base -- but I ignored some of the extra interiors they added, which to me, would ruin the surprising simplicity of the map. It's a big box full of stuff, and yet somehow, all these weird cover boxes and catwalks converge into something interesting. The Halo 2 version, in particular, I felt really misunderstood the original map, trying to resolve all its funny shapes into "plausible" structures... and ends up cluttering all the surfaces beyond recognition.

          Anyway, thanks to Makkon for the awesome textures, and my beta-testers arkngt, Larry of Larrytown, and Brendan Caldwell for their helpful notes and feedback, and of course thanks to Qmaster for running the jam, as well as the entire Quake Mapping Discord for being an awesome supportive community.

          Don't forget to check out the rest of the other amazing community-made mods released for Quake's 25th anniversary:
          - Alkaline: a sci-fi "base" themed map pack with new enemies and weapons
          - Q25 Limits: a pack of new maps that conform to the original 1996-era memory limits and performance constraints of the Quake 1 retail levels
          - Tremor: a similarly themed map pack for "original Quake", but much larger




          Viewing all 495 articles
          Browse latest View live