Sunday, November 26, 2017

Shake It Off

Part twenty-two in a weekly(🏃) devlog.

Standard development disclaimers apply. This is pre-Alpha content, everything is subject to change, features may not be present in the final version, there's a chance none of this will ever be released, etc. etc.

There shouldn't be any plot spoilers in these posts, but there will be occasional discussions related to characters, locations, mechanics, and other aspects of my potential upcoming Shadowrun campaign (tentatively titled "CalFree in Chains"). You may wish to skip them if you'd like to be completely surprised.

Happy belated Thanksgiving! Another week with slower-than-usual progress, but still some cool milestones crossed. The big one is that I've started my initial playthrough of the game. This is the first time that I'll actually roll a character and take them all the way through the campaign, scene by scene, to the end.

This is another opportunity for spotting and fixing bugs. As I mentioned before, a lot of issues only become apparent when experienced within their context: an isolated component may look great, but when you plug it into the surrounding content problems will occur. I already cleared out a lot of hub-related bugs of this type, and now I'm encountering and fixing similar issues for the actual missions. Carrying forward certain items or characters or plot flags may cause unexpected problems to crop up.

The single biggest thing I'm focusing on now, though, is the game's difficulty balance. Everything up until this point has just been stabs in the dark: "I dunno, maybe five enemies in this group will be okay?" "Uh, this one has a grenadier and a mage, so maybe just four?" Now I'm actually encountering these as a player would, with a certain build and amount of karma and nuyen and health, and can get a sense for how they feel.

The answer is, they are too hard! Of course they are too hard! This is the fifth Shadowrun campaign I've made (six if you count the port of Antumbra Saga to DFDC, which did revamp the combat), and I always start out making it too hard and then gradually dial it back until I can beat it. I honestly don't know why I can't just make them easier to begin with, I have plenty of data points by now that show I should tune it down from the start.

I guess maybe it's because I seem to end up with a decent difficulty, maybe after more thrashing than is strictly necessary. My standard process is to play through on the most difficult setting (Very Hard for Dragonfall, Hard for Hong Kong), using the archetype I'm most expert at (Rifle decker in DF, cybered adept for Hong Kong). I want to get to a point where this feels hard but not frustrating - ideally no more than 1 party wipe per scene, and being forced to use at least some consumables to get it through.

I think this ends up as a fair proxy for overall difficulty. I'm not the most hardcore player of these games, and I'm not playing the most optimized min/max build. But I do have the enormous advantage of knowledge capital: I know exactly what is in each mission, how much further I have to go, whether I should toss out all my fetishes on a given combat or hold them in reserve for the next one coming up. Other players will have less certainty, but Hard should still be beatable with ideal builds or brilliant tactics. I'll ultimately recommend players to play on Normal, but I want to make sure that Hard is feasible, and I can't make that claim if I can't beat it myself.

My initial thoughts:
  • Money feels a bit too plentiful. I'm currently holding about 3k and haven't unlocked the second-tier merchants yet. I've bought armor (replacing the 1 Armor starter with the 3 Armor upgrade), but with my particular build there isn't much I want to get until the better cyberware becomes available. I'm thinking of giving the player more nuyen to start (500 at the start instead of 0) and dropping down the per-mission rewards for the early missions. That will make it easier for the player to buy a decent upgrade on their first hub visit and/or hire a merc if they need one.
  • I'm dying a LOT. I initially followed the Hong Kong design where some companions have medkits, others have Doc Wagon, some have neither. But particularly in those early levels, low HP and armor values means it's very easy for people to get killed. I'm now granting all companions one Doc Wagon and at least one medkit. That's more generous than Hong Kong, but there's also a lot more fighting in my mod than in Hong Kong so I think that makes sense. I might need to revisit this at higher levels... it would feel weird to take away Doc Wagons later on, but I suspect they'll be less needed.
  • I really like the pace at which companion upgrades are unlocking. You stay at Level 2 for a while as new optional companions come in, so you can gradually build out your team instead of configuring everything at once.
  • So far it isn't feeling too talky to me. That was one of my biggest concerns while working on this game; there's more words here than in Caldecott, and I was worried that it would seem too wall-of-text. I still haven't gotten to the talkiest mission of the game yet, or the talkiest hub visits, but at least so far it hasn't seemed overwhelming (and I am reading every word as I play, though I may not be able to keep that up for subsequent playthroughs). Granted, I do have a higher tolerance for reading to begin with, so it's very possible that my players may disagree about the narrative volume.
Short update... I don't think I can really share any videos or screenshots at this stage, most of this is pretty spoiler-y. But yeah, so far I'm cautiously optimistic about how things are coming along. It's been a while since I've done this and I don't have a great memory for what the process was like on Caldecott, but I imagine that I'll continue along this for at least a couple of weeks until I've convinced myself that the game is beatable and start letting other human beings look at it.

Sunday, November 19, 2017

Lucid Heart's Refrain

Part twenty-one in a weekly(🎵) devlog.

Standard development disclaimers apply. This is pre-Alpha content, everything is subject to change, features may not be present in the final version, there's a strong chance none of this will ever be released, etc. etc.

There shouldn't be any plot spoilers in these posts, but there will be occasional discussions related to characters, locations, mechanics, and other aspects of my potential upcoming Shadowrun campaign (tentatively titled "CalFree in Chains"). You may wish to skip them if you'd like to be completely surprised.

I was fighting off a nasty cold this week, so I didn’t get as much done on the campaign as I would have liked. BUT, I did finish my first pass through the hub, so that was pretty good! That means running through all of the various side-quests and romance arcs that I mentioned in my last couple of posts, on the actual final map for the hub, and eyeballed everything to make sure it looks decent.

At a high level, I’ve now completed most of the “big things” and am now working on the “small things”. I have a massive Google Doc titled “CFiC Tasks” which is a running list of everything that needs to be done before I can release. I had a lot of stuff in there months ago when I kicked off the project, and have added to it as new problems or ideas have risen. I’m also knocking some things off, although up until now that’s been a slower rate than things getting added.

Anyways, most of the items I’ve been working on until now have been single lines like “Write all the dialogue” and “Create all the maps” and “Implement all the combat”, where a single sentence implies more than a month of work. Now, those few big things are done, and instead I have a billion smaller things to do. So I’m now looking at items like “Add karma rewards” and “Make sure X’s ability works properly” and “Write the epilogues”. Almost all of those will be a day’s worth of work or less, but there are a LOT of them to get through.

Still, it’s a very good place to be at. I have a really high sense of velocity at this stage of the project, since I feel like I’m constantly knocking stuff off and fixing specific things, instead of continuing a Sisyphean struggle. The flip side is that it will eventually start to seem like a never-ending stream of concrete tasks, so my mood will likely flip back and forth between “This is almost done, I’m so excited!” and “This will never be finished, I hate everything!”

I’ve been very disciplined about scope creep, and it becomes even more important now. There are an infinite number of good ideas out there, an infinite number of things that could be better, and unless I say “No” to them I’ll never be finished. There are a handful of exceptions, when I spot something that threatens the game as a whole (from a gameplay or moral standpoint), but I set and try to maintain an extremely high bar.

Anyways. What I’m working on right this second is music selection. This used to be my favorite part of making modules, although that’s gotten a lot more complicated in the SRHK era. Still, it does contribute an enormous amount to the overall mood and impact of the game, while requiring proportionally little time on my part since the musicians have already done the heavy lifting. My role here is more like a curator, looking through the limited menu and deciding what to present when.

This can initially seem like an overwhelming task. There are 47 potential music tracks in SRHK, which I need to distribute over (cough, cough) missions. Ideally I’ll minimize repetition, and try to keep repeated tracks as far apart as possible. Maybe more importantly, I want to pick tracks that work well for each scene. If you’re surrounded by disciplined corpsec forces, you’d expect a different vibe and sound than if you’re fighting off wild monsters or enjoying a drink at the pub.

I handle this by - you guessed it! - creating a spreadsheet. Each row lists a separate track of music. In the columns, I’ll identify the following.
  • Energy level. Theoretically one of Low, Medium, and High, but of course I’m incapable of making decisions and will ultimately classify some tracks as Medium-Low or Medium-High. This is mostly a function of volume and BPM, though it’s ultimately subjective.
  • Mood. As I listen to the track, I’ll jot down a couple of adjectives or brief phrases describing how a song makes me feel. Examples include “Restrained”, “Desperate”, “Funky”, “Joyful”, “Holy”, “Pursuing”, “Yearning”, “Proud”, etc.
  • Type. I’m really looking for either “Legwork” or “Combat”, though some tracks might work for either, and in a few cases they might be better for cut-scenes or other unusual situations.
  • Map. I’ll think of a couple of scenes within my game where this track might work, mostly relying on the previous entries.
  • Notes. Anything else that’s interesting: whether the track seems especially short or long, if it’s doing something unusual instrumentally, or whether it has a strong association with the official campaigns.

For this process, I’ve been taking advantage of (and very grateful for) the Aztechnology Aural Mindscape, a nifty stand-alone utility campaign that makes it very quick and easy to test music tracks. I can run through all of them back to back without needing to modify and debug my own campaign. I’ll typically listen to each track twice through, fill out the row in my spreadsheet, then move on to the next one.

After this, I make another sheet listing out all the slots I have for music in my own campaign. On a simple map this will just be “X Freeroam” and “X Combat”, but for some larger maps I might want different music for different areas, and in a few cases I might want a special tune for a particular character or scene. I refer back to my first sheet as I go through and slot things in, top to bottom. I’m mostly picking good fits for each one, and also keeping an eye on if and when I most recently used a given track, so it hopefully won’t be too repetitive for the player.

The final step is to actually add them in. Setting up the basic music is really simple, just add the tracks to the camera regions. If you have multiple regions and want to share music, you can leave the music blank on subsequent regions: the previously-playing music will continue playing into the next region.

The engine automatically handles transition between the default (legwork / freeroam) music and combat music. I typically keep the defaults for all of the settings like the fade interval (how long the transition between two tracks takes, during which time you can hear both playing). For CFiC, I'm not planning on using the "Intense" (Int2) and "Wrapup" music, in an attempt to get some more variety across a larger number of scenes. Oh, but note that by default the option Loop Default Music is disabled, which is almost definitely not what you want.
Edit: After more thorough testing, I've found that the best configuration for a single music track in combat is to repeat the track for Base, Intense, and Wrapup, and set all the thresholds to 1. This mirrors how HBS often does their Matrix music. The above screenshot works in general, but can lead to drop-outs and silence in some cases.

You can also control music via trigger commands. I do this sparingly, but it can be a really cool technique: in Corona / Antumbra Saga, I used musical themes specifically for Hans Brackhaus and for Tabitha, so their distinctive tunes would play when they appeared on screen or when their influence was being felt. There aren't as many opportunities for this in Hong Kong due to the more limited track selection, but just shifting from one piece of music to another can have an impact: during a particularly surprising moment in Caldecott, I dropped out the music entirely so a brutal scene would play out in silence, and then kicked back in with a high-energy track as you and your team dealt with the aftermath.

I don't do this too often. It's a bit tricky, there are few items at my disposal, and it's a classic source of bugs. In particular, the engine can get confused if you're shifting between autoplay combat music, triggered scene music, and so on; in general, stopping your triggered music will cause the region's music rules to kick back in, but the more stuff you're trying to do the greater the risk that the player will end up hearing no music at all. (There's still a lingering bug in the climactic fight of Caldecott for this very reason.)

Yup! Music is awesome, I love it a lot. I'll probably do another post later on my music, the fuel that's kept me going during this insane project.

Sunday, November 12, 2017

Hub and Spoke

Part twenty in a weekly(🏛) devlog.

Standard development disclaimers apply. This is pre-Alpha content, everything is subject to change, features may not be present in the final version, there's a strong chance none of this will ever be released, etc. etc.

There shouldn't be any plot spoilers in these posts, but there will be occasional discussions related to characters, locations, mechanics, and other aspects of my potential upcoming Shadowrun campaign (tentatively titled "CalFree in Chains"). You may wish to skip them if you'd like to be completely surprised.

Now that last week’s boring post is out of the way, we can finally move on to the topic everyone ACTUALLY cares about: spreadsheets!

I’m close to wrapping up work on the hub, the location to which you and your team return between runs. This has been a long process, and also a fairly complex one. I have a variety of goals for the hub which overlap and sometimes contradict one another.

The hub should feel dynamic. It’s boring if everything looks exactly the same every time you come back. It adds a ton if the physical space changes and if characters move around from one visit to the next; it adds to the sense that you’re occupying a real place and interacting with people who have their own desires and agency, and aren’t merely there for your bidding.

The hub should be easy to navigate. It’s frustrating if you can’t find something you need or have to waste a lot of time running around.

The hub needs to support ongoing quests, which in turn will often require certain people or objects being in a certain location at a certain time.

The hub should reflect and support the overall narrative mood at a given point in time. If something upsetting has recently happened, it would feel jarring for everyone in the hub to be jokey and silly. Conversely, if your team has recently accomplished something great, I don’t want to bring down the mood with doom and gloom.

I realized fairly early on that there was way too much going on for me to keep everything in my head at once, and so I outsourced record keeping to the cloud: in particular, a Google Sheet that I threw together. Here’s what a portion of it looks like, heavily redacted.

Everything is ultimately driven by the global (story) variable “NumMissions”. It increments by 1 every time you return to the hub, and in turn it drives everything else about the scene.

There’s some mechanical bookkeeping driven by this. Part of that is the CharacterScaleAmount, which in turn will determine when you can select upgrades for your crew and how difficult enemies will become.

The more complex thing in this shot, though, was working out where various crew members would be located. Pretty much everything here is redacted, sorry, but the idea is to move the spawned actor into the correct location for a given visit to the hub. I try to avoid clustering them all close to one another. I also try to put them in a location that makes sense for the character: some more martially-inclined crew members will often by found in the target shooting range, while a bon vivant would more likely be found in a restaurant, and a decker will spend a lot of time by a computer.

But this gets especially tricky when a character is involved in a side quest. If I want the character to walk to a certain location, then they need to be located in a place from where they can path to their destination. So, in addition to the default positions, I may override their location based on the current state of a given side-quest. There aren’t any examples of that in this screenshot, but I flagged those cells with a teal background.

Speaking of teal, let’s more on to a later section of the sheet.

You’ll note that I froze the two left columns - this is a long sheet! The number of missions is most important for scripting purposes, but by itself the number doesn’t mean anything to me. The previous mission tells me what went down immediately before this hub visit, which in turn informs what conversations would be tonally appropriate. In some cases this is variable, like [Act 2], where the player may have gone on any one of a variety of runs. The more important story missions are individually flagged and usually have bigger thematic implications for what’s happening. Anyways, freezing the columns helps me keep my place regarding the overall state of the story during a given visit.

The next three columns here show when various conversations get unlocked for different NPCs. When possible, I try to spread these around so there’s a relatively consistent amount of new content, instead of overwhelming the player early on and leaving them with too little near the end (which was one of the slightly annoying things about Heoi in SRHK). Some conversations are just for fluff or flavor and can happen any time. Others are tied to specific events; here, the ones at NumMissions 5 are specific reactions to a story mission that the player has completed. Some conversations might be interjections that take priority over everything else, and others could be tied to ongoing missions or sidequests, which are respectively flagged in yellow or teal.

The PC0 Spawn column acts similar to the companion spawn ones from before. You’ll typically start out in your bedroom, unless there’s a team meeting or similar gathering. Occasionally, an event might happen right when you spawn, which is noted here.

The remaining columns are related to the atmosphere of the hub: little bits of character that will change from one visit to the next. I actually kind of hope that players don’t notice this: ideally, it’ll be an almost subliminal effect, adding to the impression that you’re in a dynamically evolving environment without calling too much attention to itself. But folks who are very observant will find these things, which will hopefully add another fun thing to look out for on return visits.

While building out a lot of these things (conversations, romances, side-quests), I did almost all of my work in a test scene instead of the actual hub scene. I’d just activate whichever specific NPC spawners I needed, set up the global variables correctly, and then run through it. This does add a little overhead, since I later needed to re-test things in the actual hub, but more importantly, each time I need to test a scene it takes only about 5 seconds to load as opposed to the 30+ for the real hub. When I’m testing things dozens or hundreds of times, that really adds up! So it’s good to do as many of my iterations as I can on the simple test scene, and just do my final verification on the real thing.

Over the past weekend I was able to run through a streamlined test of the hub: basically starting a character at NumMissions 1, talking to and interacting with everything in the hub, advancing to NumMissions 2, and repeating it through the whole game. This let me verify that multi-stage quests were advancing properly, see how all of the different states were interacting, and so on. As expected, I caught quite a few things here that I’d overlooked during my more targeted unit testing early on. This included one really amusing unexpected interaction, when I realized that one crew member who had joined you for a side quest might be present during a particularly intimate scene. Even my vaunted spreadsheet hadn’t anticipated that interaction. But, hey, at least now I know about it!

A couple of random technical comments:

There's a fair amount of ambiguity about whether you should interact with spawners during the "On Map Setup" or "On Map Start" event. Ideally, you would activate your spawners during "On Map Setup", and then move / animate / whatever them during "On Map Start". But, from what I can tell, spawners that were activated during setup may not have finished by the time "Start" runs, so attempting to teleport a recently-spawned actor during "Start" will fail. Because of this, I generally keep "Spawn At Map Start" set on the map spawner, and then kill off unwanted actors during Map Start. This is unfortunate, since it leads to longer map loading times - I incur all the time to create the actors even though I'm tossing them - but it's the only solution I've found yet.

On a related note: this isn't very consistent, but sometimes the scene will freeze/crash during loading if you attempt to kill actors during Setup. It's safest to do this during Start instead. Which, again, is annoying - it leads to a longer gap between when the player clicks "Continue" on the loading screen and when they can actually start playing - but a longer delay is far preferable to a crashed game.

There's a longstanding bug where actors lose their animation state when reloading a saved game, so it looks like people are just awkwardly standing around and staring into space instead of doing what they should be. I addressed this back in Caldecott by setting all animations on the Curtains Up event instead of the Map Start event, since the curtains will re-fire when reloading a saved game in addition to when first starting a map. I built on that for CFiC, coming up with a system that I think works pretty well for dynamic-feeling characters.

So: my overall goal is to have individual crew members doing something on a given hub visit. They might be repairing some equipment, or talking to nearby NPCs, or dancing in a club, whatever. When you start talking with them, they stop whatever they were doing and turn their attention to you. After the conversation is over, they resume their previous action.

Initially, I implemented this with a ton of individual triggers, enabling and disabling them as conversations started and ended. But I ended up with a pretty nice and unified approach. It looks a bit like this. First of all, we place our characters in their initial position while the map initializes.

Next, start their animations. This will happen when the curtains are raised or an event fires. I do one of these for each mission, and each character's animation makes sense for what they're doing. ("Sacrifice" and "Doomventing" may sound very dramatic, but they aren't really. "Sacrifice" is just the character looking slightly upward, at some object taller than themself. "Doomventing" involves fiddling with something on the floor.)

In each conversation, set the actor to the "idle" animation. Most of them will also automatically face the PC when the convo starts; if not, you can manually trigger that as well. As a result, they'll stop dancing or whatever and focus on you for the remainder of the conversation.

Then, we wire up this one trigger to restart all animations whenever any conversation ends.

That will re-run the same trigger up above that we ran when the curtains raised. So, after every conversation, everyone will go back to what they were doing when we first started the map: now that your chat is over, they can pick up where they left off.

In a handful of cases, I might not want a crew member to resume their original animation: for example, if they are following you or have moved to another spot on the map. In this situation, I just create another trigger to handle that specific case, going back to the "Idle" animation or whatever is most appropriate. Remember that triggers always run in sequence, from top to bottom, so triggers defined later in your list will execute after ones above it. In this example, I'm checking whether one particular actor is in a specific area, and if so, have him continue standing instead of his standard animation.

That's pretty much it.

So, yeah. There’s still a ton left to do, but I’m feeling like the hub itself is in pretty good shape now: the crew conversations, romances, merchants, side quests, paydata, rewards, and lots of other stuff is now present. I still need to work on crew advancement and a couple of other mechanical-related stuff, but for the most part the overall framework is in place. Running through that end-to-end test felt awesome: I love this feeling, when the project starts to actually seem like a game, with interlocking systems and coherent progress. Excelsior!

Monday, November 06, 2017

Before The Storm musings

I've been noodling more on Life Is Strange: Before the Storm and working my way through a few Let's Play videos, and had enough add-on thoughts for a short follow-up post. So, here it is!

MEGA SPOILERS (for both Before The Storm and Life Is Strange)

I've started to reconsider my previous strongly-held anti-Nathan sentiment. Most of the playthroughs I've seen have gone the same way: standing up for Nathan when Drew bullies him, having him attack you and Samantha afterwards, getting blamed for that same incident by Wells, and then seeing him melt down after getting browbeaten by his father. I'm the only one who explicitly advised Sam to stay away from him, but most players either avoid him altogether or more gently ask her to give him space. Nathan freezes on stage, forgets his lines, becomes a laughingstock... you feel bad for the kid, but maybe also a little like he deserves it.

But, the thing is: if you advise Sam to encourage Nathan, then the outcome is completely different. It turns out that Nathan is actually a really talented actor! Once his head is in a good space, he's confident and smooth. He has great physical presence, embodying Caliban's "primitive" stature, and is basically Rachel's equal in delivering Shakespeare's lines.

Of course, seeing that made me feel bad. Why had I withheld such a positive experience from this unfortunate boy? I think the answer points back to one of my central questions / concerns about this season: is the canon fixed, or variable? If it's fixed, then we know where Nathan's story leads, and the best course of action is to minimize the number of victims. But, if it isn't, then shouldn't we be doing everything possible to keep it from happening? Helping Nathan find confidence in himself seems like it would go a long way in his desperate quest for withheld approval that sends him down the spiral that leads to Jefferson.

My sympathy is still on behalf of people who get hurt, more than people who hurt themselves and others, and so I think that my desire for Samantha's own happiness wins out over my desire for Nathan's self-actualization. It helps matters somewhat that Nathan is so hostile at rejecting overtures for assistance. But, really, couldn't we say exactly the same thing about Chloe? Their weapons are different - she uses sarcasm and humor to deflect, while he uses his privilege and insults to attack. But, fundamentally, both of them have built emotional armor around their broken hearts and reflexively fight off anyone who threatens their sad solitude. In a sense, Rachel's constant presence and encouragement are allowing Chloe to finally shed some of that armor and confront her underlying issues. It wasn't easy, and isn't easy: she needs forgiveness from Rachel after she messes up, and she receives it. Having received this grace, it seems cruel to deny the same to Nathan, even in the face of his hostility.

I dunno. This is a hard game!

In retrospect, the "what to do with Nathan" choice is a hard one, but in the moment I didn't really hesitate in my answer. Like a lot of people, the big hard choice for me in Episode 2 was the confrontation between Drew and Damon. That was a tough one, but for me it ended up being more analytical than emotional, as I didn't feel particularly invested in either character. Reconstructing my thought process, I think my decision tree went something like this.
  1. Does anyone know I have the money? No.
  2. Will Rachel care what I do here? Probably not... she might be a little happier to build up our escape fund, but she doesn't seem stressed about it.
  3. This is dirty money. Drew might put it to better use, but it was ill-gotten in the first place.
  4. Drew asked me to stay inside. The only one who really wants to go out there is Mikey.
  5. It's probably a bad idea for the druglord to get eyes on me.
  6. I'll have more options if I hang back.

Of course, I felt awful afterwards. I think everyone does - after seeing all the ways it can play out, you'll never feel good about your choice (although they do a good job at providing some comfort later on via text messages in both scenarios). I assuaged my guilt somewhat by handing over the money. But... I dunno. Thoughts:
  • Drew is really dumb, especially about money. A grand might seem like a lot, but his scholarship is worth a lot more, not to mention the entire rest of his life after college.
  • Speaking of which... since their dad is homeless, they definitely don't have health insurance. Even with insurance, the cost of copays and deductibles for a knee surgery would be way over $1k. Without insurance, they're in huge trouble.
  • ... but, that being said, I do like Mikey more than Drew. Drew has good and bad qualities, but Mikey seems all-around good. It isn't clear yet what their long-term injuries are, but if they're equivalent, it seems more cosmically just for Drew to suffer for dealing drugs than Mikey to suffer for protecting his brother. 
  • I haven't seen anyone keep the money yet. That would be stone-cold. I'm really curious if money will become important in Episode 3. If you steal the T-shirt vendor's money, hold on to it, don't pay off your debt, then steal Drew/Damon's money (and maybe withold it from Frank?), you might have a decent kitty. Personally, I'm starting Episode 3 with zilch. Anyways, that might make the choice even harder on a future replay if the money works out to be significant.
Heh... next to the Drew decision, the one that I spent the most time agonizing over was whether to steal the bag of weed from Frank's RV. It was a total push/pull between "this is totally what Chloe would do!" and "this is a horrible idea!" And of course, it totally doesn't matter at all.

I haven't written much about the actual gameplay of BtS. The focus is definitely on the conversations, but the puzzle designs are really nice, and I think I prefer them to the ones in Season 1. They're usually set up in such a way that you can feel clever without being too obtuse. I felt really proud of myself when I got the combination to Drew's locker on the very first try: it's a solution that's totally rooted in these characters' personalities and priorities, which is a really nice trick. (And, from watching Let's Plays, it also has a very graceful "failure" path that keeps the story moving along without punishing the player.)

Likewise, the junkyard scavenger hunt was really well designed, since you will have already visited almost every area of the junkyard prior to starting the quest, so the puzzle ends up being more about remembering things ("Oh, yeah! There was that Christmas wreath!") rather than aimlessly searching. Watching Let's Plays has also shown just how many solutions to this there are, which is really impressive. And, again, good design - it doesn't matter if you don't find the area behind the shed, because you can solve the puzzle elsewhere on the map.

So, yeah... there haven't been any trial-and-error puzzles like the bottle quest in Season 1, and also no brain-warpy ones like dealing with the alarm in Wells' office (which is obvious in retrospect but not at all intuitive).

The puzzles in particular and the gameplay in general aren't especially hard or challenging; unlike Season 1, I've never been tempted to look for a walkthrough or spent more than a couple of minutes on something. But I think that's fine. It keeps the focus on the story, keeps the momentum going.

I hadn't really thought about this while playing, but there aren't any "Game Over" states in Before The Storm. That could occasionally happen in LiS: if someone got shot, or Frank's beans spilled, or you got spotted by a security guard. It wasn't particularly significant then, just something you would rewind from, but was still a possible state to get into. In contrast, BtS never really has failure, just different branches out of an event.

A few final random notes:

Samuel wins the Dana Ward Bad Voice Award for Episode 2. He's super well-written here, and delivers some of the best lines in the series, but is one of the most glaring substitutions. It's a bit harder to buy varied voices for the adult characters than the teenagers, since you wouldn't expect their voices to change as much over three years.

In contrast, Dana actually sounded decent this time around... I'm not sure if that's because I've gotten used to her new voice or if the actual performance has changed.

Finally, my current five favorite line-readings so far:

Rachel's "No!" after Chloe suggests that they buy wine from a liquor store.
Rachel's "Nnnooooo..." at the park.
Chloe's "Don't tell me what to do" while exploring the junkyard on the second day.Chloe's "I miss him." during the third dream.
Chloe's "I'd say: 'You're super-f***ed!'" before the play.

Edit: Heh... after coming up with my Top Five, I managed to catch one of Strange Rebel Gaming's streams while live for once. Like I mentioned in my last post, she's one of the most perceptive players I've seen, and that continues to be true for Episode 2: I've seen the full episode multiple times now across several playthroughs, and she still catches stuff that I'd never noticed. I'm thinking of it now in particular because, when she heard that "Don't tell me what to do!" line, she immediately noticed what was odd about it: unlike every other line in the junkyard, it doesn't have the slight echo effect that's used to denote Chloe's interior thoughts. I now think that that may have subconsciously prompted me to consider that an especially significant line. One other awesome thing she noticed that I had completely missed was how Chloe never used the word "fascist" in the first episode; then, early in the second episode, she hears Skip say it, and then she uses it frequently through the rest of the episode. As Bri points out, that's such a teenager-y thing to do: discover a word and then whole-heartedly embrace it. What I had noticed was that Chloe misspells this word in her journal: she signs one of her notes as "Chloe, Queen of Facists" instead of "Queen of Fascists". I'd initially assumed that this was a production error; after hearing Bri's observation, though, I now suspect that it's deliberate. This really is a new word for Chloe, so of course she doesn't know the correct spelling yet. Eventually she'll use it in a text message, and will see auto-correct fix it, and from then on will use the right spelling.


That's it! Feeling increasingly bummed that we'll only get one more episode of this awesome series, but given all the thoughts and emotions it has already evoked, I'm confident that it will stick with me for years to come.

Sunday, November 05, 2017


Part nineteen in a weekly(💖) devlog.

Standard development disclaimers apply. This is pre-pre-Alpha content, everything is subject to change, features may not be present in the final version, there's a strong chance none of this will ever be released, etc. etc.

There shouldn't be any plot spoilers in these posts, but there will be occasional discussions related to characters, locations, mechanics, and other aspects of my potential upcoming Shadowrun campaign (tentatively titled "CalFree in Chains"). You may wish to skip them if you'd like to be completely surprised.

I have a standard spoiler disclaimer at the top of each of these posts, but I should re-iterate it for this one in particular. This post is about the design of the romances in CFiC. There isn’t technically any plot information here, but it does talk about the arcs and general content of the relationships, so if you’re going to skip any of these devlog posts, this would be the one to skip. (Assuming you might actually pursue one of the romances, that is. It’s totally safe to read if you aren’t planning on accessing this completely-optional content.)

I've been continuing work on the hub, and this week wrapped up the remaining work on the romance tracks: there's a little bit of romance content on missions (occasional flirting and a few small reactive lines), but the bulk of romance material happens during the quieter down time between runs back at your home base. There is a whole lot of talking and a little bit of action involved.

I wrote at length in my Caldecott post-mortem about developing those romances. It’s now been almost exactly two years since Caldecott was released, and the single greatest surprise to me has been the response to the romances: in particular, the fact that the feedback has been universally positive. I was NOT expecting that at all - I was anticipating a great deal of complaining and negativity. I was prepared to cut all romance content out of the mod, and before release I told myself that, if I got more positive comments than negative, I’d consider it a success.

Of course, this isn’t at all to say that everyone likes it - odds are good that quite a few people dislike them and just kept their thoughts to themselves. But overall, I feel like my design goals have been pretty successful. The gating and on-ramping help eliminate people who aren’t interested in the romance content in the first place, so the people who actually get to that part of the story have, in a sense, self-selected for it. And the feedback has been pretty positive about the various dimensions of those plots: the characters themselves, the actual romance, and the integration with the main story of the game, all of which were important to me.

So, given that (a) I’d really enjoyed writing the romances, and (b) people seemed to be liking them, I immediately knew that I wanted to create some new ones for CFiC. But I wanted to avoid just rehashing the Caldecott system - even though it had worked well, I didn’t think it would be nearly as effective the second time around, and knew that I should do something new to interest players. I also looked at it as an opportunity to stretch myself and try some things that I hadn’t felt comfortable doing the first time around.

One big aspect of this that I’ve thought about a lot is the physical interaction between the player character and the love interest. As I wrote in my previous post, I was a little surprised to discover that accommodating different metatypes was more difficult than accommodating different genders: just working out how two bodies meet in physical space in a reactive environment presents interesting challenges. In that game, my eventual solution was the awesome power of vagueness. I tried to craft scenarios where those differences would become less relevant, add a few specific concrete details to maintain the sense of touch, and write in such a way to make it clear that sexy things were happening without being too graphic about who put what where.

This more or less worked - I was able to write the romance scenes without needing to create ten different versions, and players haven’t seemed to mind the result. But, it’s one aspect that I particularly wanted to revisit. Those romance scenes are some of the purplest prose that I’ve ever written, and my prose is fairly purple to begin with! It also just didn’t seem like a good writing technique in general. When writing, particularly fiction, it’s usually best to draw attention to detail, to make things vivid. Vagueness is kind of the opposite of that. So, I had a new goal: try to create romance scenes that were a bit more explicit - not turning out hardcore smut, of course, but recognizing that, say, this is your petite elven lad or your hulking ork matron in bed, and not just an abstraction.

So, some aspects of this are pretty easy. I’m already using reactive branching dialogue throughout the game: people will respond to you differently if you’re a human or troll or whatever, and that exact same system can be used for more intimate scenes like this. Instead of eliding the differences, I can highlight them, which hopefully will make the experience feel more personalized and real.

However, once I started going down that route, I ran into another complication, this time about sexual roles. If I was going to pull back the curtain a bit on what’s going on, then it’ll also become clearer how things are progressing, and that has some pretty huge implications for roleplaying and players’ self-perceptions.

If this was a game with a predefined protagonist, like Planescape: Torment or Final Fantasy VII, then I’d feel comfortable deciding the character’s preferences and just presenting them: “This is X, and he/she likes Y.” But, that doesn’t feel right for a game like this where players have such a high level of customization of their characters. They can already select their metatype, their skin tone, their hairstyle, their face, their class, and have been developing a personality throughout the dozens or hundreds of small choices they’ve made throughout the game. Given all that, it would feel very jarring if I were to suddenly pop in and say “Oh, and by the way, your character is a top! Have fun!” Why would this one personal thing be predetermined when so many other things have been variable?

People play RPGs for different reasons and have  different goals in creating a character. I think it’s very common, particularly among younger players, to try and create someone who mirrors themselves: they’ll try and build a character that comes as close as possible to what they look like in real life, and will use the game as an exercise to see what they would do if they were dropped into this strange situation. Others use it as a fantasy exercise of playing against type, building a character who is as DIFFERENT to them as possible (e.g., an alter-ego who lies and cheats and steals and does all the things you’d never do in real life). Sometimes people like to model their character on another inspiration, like making a “Han Solo type” or “Glory-esque runner”. And finally, some people create truly bespoke characters, following the emergent storyline in the game and their own muse to make a fully original character.

All that to say, I think that presentation of sexuality is especially important for people who are designing a character in their own image. Obviously it will never be an exact match, but it might feel like a sort of betrayal if they’ve already identified themselves with their characters and then find that their character cannot be like them.

So, uh, what do? The superficial answer is “let the player choose”. There isn’t any in-game UI for this, but I’m already doing something kind of similar in selecting romanceable genders via an in-game dialogue, and you can imagine something similar that would delve deeper into preferences.

The more I thought about this, though, the less I liked it. It would feel really clunky and immersion-breaking. Furthermore, it’s a fundamentally open-ended situation, which is really hard to do in a CRPG. I, personally, have an extremely limited range of experiences; I’m aware of quite a few more possibilities, and I’m sure that there are far more that I haven’t even heard of. And, once you start going down the road of enumerating options, it increasingly feels like you’re excluding the ones that aren’t enumerated. If you present, say, a list of seven sexual preferences, and someone is into something that ISN’T on that list, then it feels like you’re purposefully denying them.

Given all that, how to fix? I ended up not following one single solution, but I think that holding the problem in my head while writing these scenes helped me muddle through to some hopefully-decent designs.

First of all, in cases where your partner has very clear preferences, they can make them clear up front, and it’s up to you whether to go along with it or not. This has the benefit of being accurate to real life, where people have agency and aren’t just reflecting your own desires. It also raises themes of negotiation and tradeoffs, which, again, I think are believable: something might not be your favorite, but you might try it anyways if you like the other person enough. Some players won’t go along, which is disappointing but okay: it’s a strong roleplaying choice on behalf of their character, which I think has value as well.

In other cases, it makes sense to make the scene a bit more interactive, with the player character expressing their preference and guiding the action. Again, the goal here isn’t a full enumeration; but this also isn’t a super-explicit scene, and giving the player freedom to set an initial direction will hopefully open up mental space for them fill in the details.

Finally, in some cases I might need to fall back on my old vagueness approach to accommodate a range of possibilities; but this time around, I tried to be extra-careful to provide some meaningful physical details that could apply regardless, which I think helps ground the romance and make it less abstract than in Caldecott.

A closely related topic is that of consent. My thinking on this has evolved since Caldecott. I wrote before about how I wanted to make sure that the player was “on board” with the romance, so the lovetalks are designed around the player saying “Yes” to a series of increasingly intense questions: “Do you like me?” “Do you LIKE-like me?” “Do you like me more than anyone else?”. Once you crossed a threshold, I could assume that you were on-board: you’re locked into the romance and any sexytimes that implies.

I haven’t heard any complaints about this, but since publishing Caldecott, I’ve grown increasingly bummed by my conflation of romantic and erotic love. It’s sending an implicit message that a relationship only “counts” after penetrative sex, which seems like a pretty crappy demand to make. And the more that I’ve thought about it, the less necessary it has seemed. I think I set it up this way because that’s how most video game romances I’ve played have been designed, but, as I reflected on it more, what I really care about from a story perspective is determining whether there is a strong emotional bond between the protagonist and the love interest. Sex can be an important element in establishing that, but it isn’t intrinsically necessary. I mean… it would be different if the plot revolved around you becoming pregnant, or your partner catching an STD or something. But it doesn’t, so it shouldn’t.

Back in Caldecott, I worried about whether the player was really on-board before jumping into the sex scene. I viewed consent as sort of a perimeter barrier around the capstone romance content, a boundary to be breached or a problem to be solved. Now, though, I’m treating it as something integrated into the romance itself. As the relationship intensifies, opportunities will open up, but you retain the ability to guide or selectively turn down those opportunities without necessarily killing the romance. I’m really happy with how this has turned out! I suspect that most players will proceed with the main-line “sleeping together” content, and now that route will feel even more meaningful since they’re actively participating in it; and for those players who aren’t comfortable with a particular interaction, that’s fine: provided there’s a rapport with the other participant, they can discover other ways to express their affection without demanding a specific act.

Oh! One other tangentially-related topic. I wrote above that there haven't been any complaints about the Caldecott romances, but there is one sort-of exception: particularly early on, a few folks were bummed that they didn't "finish" the romance - from their perspective, it just sort of petered out. From my perspective, they failed to cross the threshold for it to be recognized as a "real" romance; due to my aforementioned view on consent, it only "counted" as a "locked-in" romance if they had finished the sex scene by a certain point in the game.

Depending on a character's particular playthrough, though, reaching that point might be challenging. Your potential love interest might be recruited very on, or not until nearly halfway through the game. In the latter case, you would only have a handful of chances to catch up on their romance conversations. I wanted to maintain some sense of realism, so I restricted the number of lovetalks you could have in a single visit; in practice, that meant you would need to enthusiastically flirt as often as possible, and speak to them as many times as you could in each visit, in order to reach the necessary threshold. Players who recruited their partners early could be a bit more leisurely in their pursuit.

I ended up mitigating this in Caldecott by tweaking the companions' conversation trees so that, at the end of every lovetalk, it would return you to their conversation root where you could see other available lovetalks, rather than gracefully ending the conversation. This change was less dramatically satisfying, but seems to have made a big difference in successful outcomes, since the incidence of comments about incomplete romances has dropped way down. But it was another mechanical aspect that I wanted to improve for CFiC.

The change in consent is one big aspect. Even if you don't get through every lovetalk in the game, it will still "count" as a romance so long as you've made your intentions clear and established a mutual relationship. The underlying structure of the game helps, too. There are a few more missions in CFiC and a much more consistent hub experience, unlike Caldecott which included segments in Kora's apartment and after the party that couldn't support romance. Finally, I'm frontloading romanceable characters in CFiC so they're available to the party earlier on, which makes planning and design easier for me and lets players get started on that content earlier regardless of the order in which they choose to run missions.

Phew! I did NOT plan on writing this much when I started the post, guess I’ve been thinking about it too much! This is actually pretty funny, there are way more words here describing my motivations in designing these scenes than there are in the game itself. Anyways… this has been a cool challenge to tackle. I’m sure that I’ve messed up on some stuff, just like I messed up some things in Caldecott, but I like to think that I’m moving in the direction of making better romances for more people to enjoy.