Saturday, December 23, 2017

Wilderness

I'm looking forward to reading books again! All of my leisure time has been devoured by work on my Shadowrun campaign, and now that that's finally out, I'm eager to spend more time catching up on novels and exploring for new things.

For months I've been working my way through Wild, Cheryl Strayed's account of backpacking the Pacific Crest Trail. I'd previously seen and loved the movie adaptation and was looking forward to the book.


I was surprised by just how similar the two are. I think every single incident in the book is depicted on the screen: even minor obstacles like navigating around a fallen tree trunk or a brief encounter with a fox made it across. More impressively, Cheryl's reminiscences are all portrayed in flashback scenes; I think the timing on these may be slightly different, but they definitely cover the same ground and give the same understanding of these people.

Once I realized how closely the movie tracks the book, I started dreading the encounter Cheryl has with the two creepy hunters. I'd remembered it happening later in the movie, but had forgotten that it was one of the very last things. This feels a little disappointing narratively, since it's a rare moment of fear that arrives after Cheryl has grown into the accomplished and strong woman who completes the hike. If someone was writing fiction about this hike, that would have happened around the midpoint of her journey, with her further growth occurring after that incident. But its placement drives home that this isn't fiction, that lives are messy, that unpleasant things can happen at any time and the world won't always acknowledge our accomplishments.

And Cheryl is accomplished. She is so much more prepared, so much more talented, so much better than these two jerks. But they're so enveloped in their awful stone-age mindset that they automatically discount her personhood. I wonder if they feel threatened by her, if they can sense her strength highlighting their weakness, and if that contributes to their behavior.

It's been over a yaer since I saw the movie, and one thing I can't recall is whether it used voiceover narration. I feel like it didn't: I think Cheryl may have muttered to herself occasionally, but we don't get direct access to her thoughts. Which makes the adaptation even more impressive to me, since we can still see all of her emotional pain and striving, conveyed just through Reese Witherspoon's expressive performance.

On a technical level, I was impressed once again by the sheer effort of Cheryl's achievement. Some people might discount her journey because of bypassing the High Sierras and stopping at the Bridge of the Gods, but the important thing about PCT and other thru-hikes is that each journey is personal and individual. What she accomplished was amazing, and it leaves me even more hungry to do this hike myself.

There's plenty of caution in here, though. One element that I don't remember from the movie was Cheryl's toenails gradually turning black and falling off: that's such a personal and specific injury, and I winced each time it happened. I was reminded again that, unlike Cheryl, I live in a time with widespread Internet access with easy access to a vast amount of online knowledge about packing and preparing for such a trip. Even if I were to follow in her footsteps, I'd have a much easier time of it, thanks to the work of trailblazers like her.

I was moved once again by the epiphany Cheryl has near the end. What if this had to happen? All of it? All of the horrible things that happened to her, but also all of the horrible things that she has done, all of the bad decisions and cruelty she has inflicted? Because those things led to her being here, now. That doesn't mean that those things were good, but she can finally forgive herself. They led to her taking this journey, to her finding herself, and eventually to falling in love and starting a family. It's a hard-earned realization, and all the more powerful because of its price.

Friday, December 22, 2017

CalFree in Chains

And, it's out! CalFree in Chains is now available in public beta on the Steam Workshop.

This feels like a good stopping point for my devlog. Development itself will still be ongoing well into next year, but from here on out it'll almost entirely be one-off bugfixes and balance tweaks. I'll probably do an official post-mortem in January after the initial wave of players have finished the game.

The last week was a real whirlwind. I got a ton of good bugs, most of which were pretty straightforward but the sheer volume of which were challenging to complete. On top of that, I did two major overhauls of weak points in the game, including a late environmental puzzle and the final boss fight. AND, the third episode of Before The Storm dropped in the middle of all this, further complicating my scheduling. In retrospect, I really should have pushed back the release date... but I was so close to that delicious December 22nd that I wanted to hit it. Otherwise, with the holidays and year-end festivities, it definitely would have rolled into 2018, and I irrationally wanted to get this out before the end of the year.

There will be more analysis and reflection in the post-mortem, but for now, I wanted to close with a few random data points.

Words


First, lexical analysis. The total wordcount for CalFree in Chains clocked in at around 167,747. That's 71% more than the 98,000 words in The Caldecott Caper, which means that CalFree in Chains is 71% better. I'm still well under the 330k of Dragonfall and 443k of Hong Kong, so I'm less concerned than I was previously about being too wordy.

There are a total of 173 swear words in this campaign, up from 114 in Caldecott.

I made a word cloud of all the, uh, words in the campaign.


Most of these make a lot of sense, though I was surprised to see Saito so prominent. He's a constant presence looming over the campaign, but I would have thought that words like "California" and "Protectorate" would be a lot more common than "Saito".

Music


I'm debating whether to make a separate post on music... I did some interesting behind-the-scenes technical work that didn't make it into my previous post about music, and I also want to talk about my personal musical experience. This post is short, so maybe I'll do the latter now and save the former for a wiki article.

In Caldecott, I mentioned that after finishing the game I came up with "theme songs" for all of the major characters. That idea was in the back of my head while working on CFiC, and to an extent certain songs helped inform my understanding of various characters.

Each of my major campaigns has come during a different musical period for me. While working on the episodes of Antumbra Saga, I was in the midst of an indie rock phase. My time on Caldecott overlapped with an obsession with synth pop. And I started work on CalFree in Chains just as I was heavily getting into EBM / Industrial music. This is not coincidental, as both are reflections of my general mood and philosophy this year.

Ayria is the artist I listened to the most while working on this campaign, so much so that I can do most theme songs entirely from her discography.

Valiri: Just Another Long Shot
Moonflower: Girl on the Floor
Dorbi: Debris
Arelia: Fading From Me
Brian and Sira: Friends and Enemies
Rick: Infiltrating My Way Through the System
Lina: The Radio
Kora: Hearts for Bullets
Desorn: The Gun Song
Masato: Insect Calm
Isao: 1000 Transmissions
Slagarm: My Revenge on the World
Cirion: Hurting You Is Good For Me (I seriously feel like this is my theme song as a developer)

And, in non-Ayria music:

Arelia: Extinguish by Chiasm
Kora: Migration by Kidneythieves
Valiri: The Caffeine Cycle by Chiasm
Desorn: The Razor's Edge by Digital Daggers
Isao: Lucid Heart's Refrain by Invocation Array
Masato: Looking Glass by The Birthday Massacre
Rick: Sirens and Satellites by Ego Likeness
Tassender: Numbers by Great Northern

And a general assortment of songs that meet the mood and theme of the campaign:
No Horses by Garbage (It is scary how closely the video parallels the campaign)
Melt by I:Scintilla (Honestly, I had all of Optics on a non-stop loop for weeks. Perfect mood music for this campaign)
Catalyst by Invocation Array. (Hearing this song planted the initial seed that grew into CalFree in Chains, and I was thrilled that they let me include it in the final game)
The Day After by (the unfortunately named but very talented) Pzychobitch
Halo by Collide
Tell Me Why by Jakalope

Here's a little playlist with many of the songs from above, which is a decent sample of what my Pandora station sounded like while working on this game.



Finally, in the extremely unlikely case that anyone is looking for a particular devlog post, here's the complete list of all six months' worth of campaign status updates and modding techniques.

  1. Map creation, Sutro Baths.
  2. Dynamic hub.
  3. Mission design and planning.
  4. Mission dialogue.
  5. General dialogue creation, Google docs.
  6. Cover art, commissioning artists.
  7. Proofreading, editing, and revising.
  8. Crew influence system, design and coding triggers.
  9. Testing.
  10. Combat design and coding triggers.
  11. Scripted cut-scenes.
  12. Creating NPCs.
  13. Crafting and custom items.
  14. Loading screens.
  15. Atmosphere: light, sounds, and animations.
  16. Reactive dialogues.
  17. Companion banter and combat barks.
  18. Side-mission philosophy and design.
  19. Romance and sex.
  20. Hub design and scripting.
  21. Music.
  22. Initial play-through.
  23. Initial analysis and local updates.
  24. Command lines are awesome.
  25. Alpha testing.
  26. Recursion.

Thursday, December 21, 2017

Category Five

I really, really enjoyed Life Is Strange: Before the Storm. On its own terms it is a thoughtful, endearing, transcendent story. In the context of the original Life Is Strange, its emotional highs make the latter game's depressing lows all the more devastating. Returning to this universe is asking to be hurt again, but there's a lot more pleasure to be found alongside the pain.



Quick context on my own situation: I played a bit of the final episode when it came out on Tuesday, finished it last night, had trouble sleeping because I was thinking about it and me so much, and am putting down my reactions now while they're still fresh. I'm still in media-blackout mode; after I hit "post" on this, I'll be rejoining the various social circles related to the game and start researching the things I'm curious about. I'll let this original post stand, with the expectation that it is full of mistaken assumptions, baseless speculation, and outright mistakes.


Before diving into spoilerville, a quick somewhat-time-sensitive note: Before The Storm has been nominated for the Steam Community Awards, so give it a vote! You can only vote today, DO IT NOW. It was placed into the Choices Matter category and not the Haunts My Dreams that the publisher had been angling for; I suspect that competition would be easier in Haunts My Dreams, but Choices Matter is a more logical category and was my first instinct during the nominating round. I anticipate a lot of online discussion about how much choices can matter in a prequel, which leads right into one of things that's foremost on my mind right now.

MINI SPOILERS (for Before the Storm, mega for Life is Strange)

I'm VERY curious whether and how much the dialogue in this game was written or updated in reaction to the community's engagement. One of the benefits of an episodic game is that developers can track what people are responding to and shift later development; for example, it sounds like they added some more scenes for Steph after she became a breakout character in Episode One, and during the original season DONTNOD specifically wrote a coda to Kate's arc in Episode Four after the reaction Episode Two got.




There were a couple of parts in episode three ("Hell Is Empty") that seemed like a direct response to or commentary on fan reaction to the prequel. The conversation in Rachel's bedroom near the start of the episode vocalizes the problem that many players have with the very existence of the game. "What does any of this matter, when we know what happens to Rachel anyways?" becomes "Why look at these stars, when they've already been dead for millions of years?" Answering the second question helps us answer the first. Knowing that something will fade, change, or vanish doesn't negate the goodness or beauty it has in this present moment. EVERYTHING eventually ends, but that doesn't mean we shouldn't love or enjoy anything. In some ways, knowing that we have a limited time makes it even more important for us to embrace those experiences while we can.


But, this conversation also works extremely well within the context of the episode itself. It's sort of planting a seed for the "truth or happiness" question that looms over the episode. More than that, it's directly foreshadowing the eventual transition into the first season of Life Is Strange. Which, of course, is something that these characters will experience as well, not just the players.


The other segment that had a sort of meta- feel to it was Eliot's tirade against Rachel. His words could have been lifted verbatim from some of the more heated shipping wars between Pricefielders and Amberprices: Rachel is "Fake", "Manipulative", "Using". (Disclaimer: I'm a Pricefielder, but, in the words of Samuel, "No one is just one thing.") It's hard to disprove accusations like those, but, as portrayed here, it's driven more by the feelings of the accuser than actual evidence. In Eliot's case, it's on his own behalf; for many fans, it's on Max's behalf. I was reminded of a fantastic quote from one of the developers, along the lines of "Performance can be a heightened expression of genuine feeling." Rachel IS a good actor, and is very aware of the effect she's having on Chloe: but that doesn't necessarily mean that she doesn't mean or feel the things she says.


The very ending of the game was BRUTAL, and swiftly brought me from a happy and contented high back down to a crushing sadness. But, I do respect the developers being very clear about the canon and the prequel's place in it. It must have been very tempting for Deck Nine to write their own path and make this game their own, but they're honoring the original vision and tone of Life Is Strange and making it clear that their vision is subordinate to DONTNOD's. In a weird way, I can't help but feel partially responsible for this stinger: if people like me hadn't been so vocal in wishing for an alternate timeline or other escape for Rachel, maybe they wouldn't have felt compelled to drive the point home so forcefully.


It's almost impossible for me to make decisions in this game without thinking about what happens in the future. The single hardest choice for me this entire episode was whether to accept David's overture. I probably sat on that screen for two minutes, scowling, racking my brain as I thought through all the implications. I still don't like David, and I hate the overall situation he's putting Chloe in, but, after thoroughly examining that specific encounter they're in, I couldn't think of a single good reason not to accept. It's obviously hard for him, and is a complete reversal from his previous attitude and actions: he's asking, not demanding, is sharing, not prying; most importantly, he's showing his own vulnerability, rather than projecting his toxically-masculine macho self. Despite all the shitty things he has done and the shittier things he will do, I do want to encourage that mode of behavior from him, partly for my own sake but even more for his. (And, in a more cold-blooded vein, I also reasoned that, if I declined, it would reflect much worse on me than on him. I didn't have any good reason for turning him down, so it would have come across as pure spite, and further damaged Chloe's relationship with Joyce.)




Speaking of toxic masculinity, and in contrast with David, I did maintain my hardline anti-Eliot stance. For starters, it is WEIRD that he showed up in the hospital to visit Drew - they aren't on the same team, and I don't think we've seen any evidence that the two know each other. Based on what we learn later, I now wonder if this was another instance of stalking (which would be weird on its own, but, who knows, maybe Steph posted about seeing Chloe or something and he rushed down). I resisted every opportunity to fill in Eliot, politely but firmly telling him that it was none of his business. This gets more intense in the office, where I continued to rebuff him, and was mildly thrilled once I realized there was a chance to call the cops on him.


This section was hard. It's the only Backtalk I failed in the entire game, and I was determined to succeed, so much so that I restarted the checkpoint each time. I think it took me something like six tries to get through it. I absolutely love the concept behind it - you need to carefully choose your words so that the dispatcher can understand what's happening, while not tipping off Eliot to what you're doing. In practice, it's super-hard because it's impossible to know the tone in which the lines will be delivered. I was convinced that "I fear for my life!" was way too blunt/obvious, and didn't realize until selecting it (on the third try) that she would deliver this line about Rachel instead of Eliot. Because the cut-scenes aren't skippable, I ended up spending... gosh, probably almost half an hour getting this to turn out the way I wanted. I was satisfied in the end, though.


I am curious about what other directions this can go in. If you accepted Eliot's invitation in episode 1, take the tickets, and share stuff with him about Rachel, is he more understanding? Or would he feel even more entitled to Chloe's affection, and even more jealous of Rachel? I'm not going to find out myself, but several of the Let's Plays I'm tracking have been kinder to Eliot, and I'm curious to see how those turn out. Who knows, maybe you can even enlist him as an ally or something.

The Eliot segment (as least as I played it) is particularly interesting to think about in terms of empathy and what the game is having you do.  Probably a fair amount of Life Is Strange players are men, and experiencing that creepy encounter from the other side might (might!) help them understand how the other party feels. Eliot is such a perfect manifestation of "nice guy" syndrome, the idea that he's owed affection because he did things for her, and similar thought patterns that I think a lot of us unthinkingly fall into. Again, though, I don't know how this goes down if you take a more diplomatic approach with him, and if so, whether it would seem like a justification for his behavior or would end up exploring another aspect to it.


Is Eliot right? As noted above, I don't think so - I think Rachel really feels what she says she does. But, people do change over time. If, one day in the future, Rachel is no longer kind to Chloe, someone like Eliot would take that as evidence that she was never honest or loving with her. The game very subtly seeds this idea in the junkyard - when Rachel first sees Frank, there's a bit of a reaction between the two, so quick and quiet that you could easily overlook it, but, knowing what comes in the future, it's very easy to read as a spark of chemistry. Between that spark, and Frank's sacrifices on her behalf, I can finally kind-of sort-of maybe see how those two could possibly have ever connected. Again, though, what happens tomorrow doesn't negate what's happening today. Rachel can feel something for Frank while also feeling far more for Chloe.


There were a few odd things about the hospital, on top of the question of what Eliot was doing there in the first place. Why is Sean Prescott paying for Drew's hospital bills? Anonymously? It doesn't seem like Sean is a big sports guy, especially since the foundation is pouring more resources into arts funding. My only thought at the time was that Sean was somehow paying Drew... to bully Nathan? That doesn't really make any sense. Or is Sean somehow involved in the dug trade, and wants to keep Drew active? Again, that doesn't make sense: the amount Drew is bringing in costs way less than a freakin' knee surgery. Sean definitely doesn't seem like someone motivated by compassion. Who knows... maybe he has his own sick mental fantasies, like he wants to keep Drew in action as a foil to Nathan, so Nathan can "face his fears" and "show strength" and all the other scary stuff Sean wants for his boy.



I was a little bummed that there was so little Steph in the hospital; I think there were only about four lines for her. Per the post-game choice breakdown, there was an option for "Played Tabletop" that 0% of players did, which makes me think there might be a bug in the game. Or maybe I missed it by talking with Drew first: I did the backtalk and stole his pudding, after which Steph and Mikey only said something like "You're scary!", which is the sort of thing that usually gets said after you've exhausted dialogue. Or, maybe tabletop is only an option if Mikey's injured, like maybe you need to fill in for him; that still wouldn't explain the 0%, though.



I've always kind of liked Rose, and I really liked her after our interaction in the hospital. She's so kind and welcoming, not as uptight as she initially seems. There's a really interesting exchange between her and Chloe in the kitchen, after Chloe asks her about James kissing Sera. Rose says something like "You might not understand, but after we've been married for thirteen years, I'm not worried about him." Chloe responds along the lines of "You're right. I don't understand." Chloe is still in passion, in the bright and early flames of a first love. Rose and James are deep in commitment, when the embers are less visible but are also much harder to extinguish.


As a lot of people have noted, Chloe and Rachel's relationship is moving extremely quickly. They've only been hanging out for a couple of days. Given that, though, I think it's really impressive that their relationship is advancing not only so fast, but so far. Rachel's weakness and vulnerability in the hospital allows Chloe to provide true comfort, which is an incredible dose of intimacy. Situations like that are an accelerant on their relationship, advancing them to the kind of bonding that would ordinarily take far more time.



Some random notes before dipping into mega-spoilerdom:


As always, I spent a fair amount of time agonizing over the choice of outfits. I was very tempted to wear the red plaid shirt, which does look good and I thought would be a nice nod to the influence Rachel is having on Chloe. I eventually decided to stick with the jacket, though, since I thought it looked cooler. And then Rachel shows up in the junkyard wearing a jacket, too! I may or may not have said "Yessssss" when that happened. I mean, I know this is all scripted; but in my game, Chloe's been wearing jackets, and now Rachel has started wearing them, which means that *I* am having an influence on *her*!


There were so many great parts in this episode, but one unexpected highlight was fixing up the truck. Chloe's character has always had a generally butch aesthetic to her, but I think this is the first time in any video game that I've seen a woman portrayed like this. I love seeing Chloe in this element: figuring stuff out, unafraid of getting dirty, taking full pride in what she's doing and who she is. And, really, that's one of my favorite threads through this episode, right up there with the Rachel relationship: Chloe turning into the woman we know in Life Is Strange. She's always been fierce and brave, but we're seeing her gain the confidence that defines her. And we see that it's Rachel who brings out that part of her: Chloe is inspired, pushes herself to be better and, at the same time, can relax and be herself, knowing that she is loved.


I had no money at all at the start of this episode. I'm decently happy with how all that turned out. It looks like anything you have left over can be turned in to the firemen fund, which is a nice action, but less personally impactful than the previous decisions. I'd previously complained about how dumb the situation with Drew was, how his knee was worth vastly more than the grand. I'd given him the money to assuage my own guilt, not with the expectation that it would make any kind of difference in his family's life. So I was surprised and encouraged to learn that it actually did make a significant and positive impact. In small-town Oregon, a grand is enough to rent an apartment, which means that their dad is now off the street. And Mikey now has a stable home. The money itself probably won't last super-long, but it might be enough: it gives the Norths some security, which will make it a lot easier for their dad to find work, which could break him out of this spiral. That would be huge!



Similarly, I was touched to see that, thanks to the money I slipped into Joyce's purse, she ended up holding onto Williams' wedding ring. As with the Norths, I'd been skeptical that this would actually make any difference: I was thinking in terms of Chloe's tuition, and this isn't nearly enough to cover that. But between this money and getting expelled, it has relieved the immediate financial burden on Joyce, allowing her to hold on to this object that does, after all, still have meaning to her. Granted, this doesn't have an enormous impact on the rest of the story. It isn't like Joyce says "Well, I was planning on marrying David, but since I can hold on to this old wedding ring, I'll tell him to beat it instead." But it still feels meaningful, to both Chloe and to Joyce.


Random note: I think I laughed longer and harder at Chloe watering her plant than I have at anything else in all eight extant episodes.


MEGA SPOILERS

I'm still not 100% clear on the timeline with Damon and James. Here's my current understanding:
  • James has been investigating Damon for a while. He knows how connected Damon is and how powerful, but hasn't been able to put him away yet.
  • Sera comes back into town. She wants to reconnect with Rachel.
  • Sera and James exchange texts. Rachel sees these texts and gets suspicious.
  • James rejects Sera's request, but agrees to meet with her in person.
  • Episode One starts.
  • James kisses Sera, then forcefully tells her that he won't let her see Rachel.
  • Sera has her lawyer serve legal notice to James that she wants (and is legally entitled to) reasonable contact with her daughter.
  • James reaches out to Damon. In order to prevent contact between his first wife and his daughter, he wants to get Rachel hooked on heroin again. Damon agrees, with conditions.
  • Episode Two starts.
  • Sera goes to see Frank. Why? I'm not sure!
  • It doesn't sound like she's using any more. She might still have contacts from her earlier time in Arcadia Bay, so maybe she's dealing, but that doesn't seem likely.
  • She is in James' org chart of Damon's gang. She might be a dealer, but I now suspect that James was setting her up, building a fake case against her so he could put her away. So, for example, James might have asked Sera to meet Frank, just so James could get a photo of her associating with known drug dealers.
  • Sera goes to see The Tempest. How does she know about it? Maybe just flyers around town, I doubt that James would have told her. (I wouldn't be surprised if Sera has a Google Alert or similar set up for Rachel Amber - she won't initiate contact, but does seem to know a bit about her daughter. That same website we saw in the Drama Lab may have alerted Sera about the play.)
  • I guess Damon maybe kidnaps Sera that same night?
  • Episode Three starts.
  • Chloe calls Frank asking about Sera.
  • Frank tells Damon that one of his clients is asking about Sera.
  • Damon gets spooked. He thought this was just a one-off favor for James, but now it seems like more people know about this. He wants to learn more about what's going on.
  • At the junkyard, Damon realizes that Rachel is James' daughter, but doesn't know that she's Sera's daughter.
  • I don't know if Damon thinks that James sent Rachel after him as part of some elaborate sting, or what.
  • Regardless: Damon is motivated by earning money and staying out of jail. James is motivated by keeping his daughter and making sure his daughter thinks the best of him.
  • Damon is probably trying to scare Chloe and Rachel into telling him what's going on, whether he's being set up or not.
  • Things get heated and they start fighting.
  • Damon is furious, but probably also realizes that Rachel isn't directly involved. But he's even more motivated to take care of Sera, since she's a complication that exposes him to more people than he'd like.


I really liked meeting Sera. I also really liked the varying versions of her story that we heard. It's definitely in line with the Life Is Strange tendency towards unreliable narration and subverting and reversing our understanding of characters, though the whiplash on James might be the fastest we've encountered in the series. I was sympathetic towards her from the start, at first in a heavily-qualified way and later in an exuberant way. I'm looking forward to replaying the game and interpreting all of the previous information in this new context.


One of the big iconic moments in the game has been the sight of Sera smoking as the fire burns at the end of Episode One. In the moment, it seemed incredibly sinister, and I was full of speculation: was she somehow encouraging the fire? Rejoicing in the destruction it wrought? I still don't know the answer, but I now have a far more mundane yet powerful explanation: Sera was feeling incredibly stressed out, was tempted to ride the horse again: she'd gotten clean specifically so she could reunite with her daughter, and if that wasn't possible, then why was she torturing herself like this? But she didn't: she smoked her cigarette instead, and smiled, because even when faced with the horrors of the world she was staying true.


At the mill, I tried hard to convince Sera to reconnect with her daughter. I'd previously discovered the letters Sera had written, almost by accident; they're very easy to miss in James' office. The letters came up a couple of times as options, and seem like they might have helped. I thought that this conversation was doomed to failure, but, per the post-episode choice breakdown, it is possible to let Sera and Rachel meet. Only 9% of players got this, though, so I don't feel as bad for missing out on it. Flipping through the "major choices" of the other episodes, I've started to suspect that asking Rachel for her bracelet instead of a kiss would have helped here. It's Sera's bracelet, and the fact that Rachel held on to it for so long would mean something to her, as well as further establish my own bond with her daughter, which might lend more strength to my words.


If that is the case, I do really like the thematic idea here. Denying yourself some happiness in the moment in order to accomplish something bigger for the person you love. Maybe let the passion burn a little less brightly at the start, but in the process forge a stronger bond. As soon as I post this, I'm going to look up what all goes into that outcome; I wonder if this is another point-based outcome, where you need, say, 3 out of 4 opportunities to go your way.


At the end, I really didn't hesitate much at all before telling Rachel the truth. First of all, that's definitely the Chloe thing to do: throughout both the prequel and the original series, she's always been fearlessly truthful, and had no tolerance for lies from others. In my own life, I'd be much more likely to take the kinder approach to spare those I care about from pain. But, as I reflected, looking out into the future makes it even more compelling to be truthful. If Chloe and Rachel are going to get married, then they really shouldn't be keeping secrets from each other. Just imagine what would happen if, five years from now, Rachel were to find out about Sera and James? AND discovers that Chloe has been lying to her this whole time? That would be devastating! As hard as Rachel took it when she first learned that James had been lying, finding that from her own wife would be a hundred times worse.


Rachel wanted to leave Arcadia Bay two days ago, and telling her the truth reinforces that desire. It sucks for Rachel, but also lets her deal with it, and deal with it alongside someone who loves her unconditionally. Not everyone feels that way; I was a little surprised to see that only 51% of players took a similarly truthful route. I'm sure a lot comes down to individual playthroughs, though. In a platonic friendship route, I can definitely see the appeal of allowing Rachel to be happy at the end of three agonizing days.

Quick reactions to some of the finale scenes:

Good riddance to Eliot. I am a bit curious what other outcomes are possible here.


I felt a little bad for Nathan. But after watching the post-credits stinger, I'm now feeling good again about my decisions. At least one survived.


The scene with Victoria was a little weird. She sees Evan and, um, decides to become a photographer? Okay.


I had mixed feelings about David's proposal. In the moment, and in the context of this episode, I'm happy for them. For the other seven episodes in this series, I'm upset.




I LOVED all of the end scenes with Rachel and Chloe. They're vibrant, loving, carefree. It's interesting to see Rachel still (sometimes) at home; after the eruption in the hospital, I would have thought she'd be out for good. I guess she's just fifteen, though, and can't exactly emancipate herself. This does set up everything very well for the continuity of Life Is Strange, with how well Joyce knew Rachel.



 
END SPOILERS

The balance of game-y elements in this episode was interesting. It was front-loaded with a lot of graffiti, and back-loaded with most of the backtalk. The graffiti itself starts to feel different, too. Up until now, virtually every graffiti has provided two options and given you the choice of which to do; the only exception I can think of is the "canon wall" from Episode Two. But here, as we approach the end of the episode, almost all of the graffiti is predetermined. Our choices are removed. I wonder if this is intentional, a reflection of our lack of influence as we head from the vibrant freedoms of Before The Storm into the strictures of canon continuity.


After finishing this game, I'm less optimistic than before that we'll get another Before The Storm sequel covering Chloe and Rachel's time together between 2010 and 2013. I did start to wonder if we might get a mini-series or one-off specifically for Rachel: there are still unanswered questions about what exactly she was up to immediately before the events of Life Is Strange that could be compelling to explore. Upon further reflection, though, that seems even less likely than another Chloe game. Rachel's always had a larger-than-life mystique, and it would be hard to maintain that as a playable character. And, to quote Rachel herself, "Life needs a little mystery." Just because there are open questions there doesn't mean they should be answered.


On the other hand, though, there do seem to be strong spin-off possibilities. Steph is an obvious choice, a fan-favorite who embodies many of the best aspects of Life Is Strange while also being a very distinct and fresh persona. It might be harder to do a sequel with the Norths, given the various outcomes in the game, but if you set it a few years later with them as young adults I think it could work really well. And, hey, Samantha can come along too! While I have my own speculation about her, she doesn't have the canon encumbrance that other characters do, and would be a terrific Max-style anchor for a new series.



Okay, that's it for now! Awesome game, it would definitely have been my Game of the Year if it wasn't for the final ten seconds. If history is any guide, I'll probably have at least one or two more posts in the coming weeks as I digest all of my Feelings and Thoughts and synthesize them with the collective knowledge of this incredible fan community.

Sunday, December 17, 2017

In the Wild

Part twenty-five in a weekly(α) devlog.

This is alpha content, features may not be present in the final version.

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 (titled "CalFree in Chains"). You may wish to skip them if you'd like to be completely surprised.

Alpha testing is underway and going fairly smoothly so far. I'd attempted something similar back on Caldecott that never went anywhere, so this time around I was more proactive at recruiting new testers. I dropped a couple of messages in the main Caldecott discussion so that some of the most-engaged players would know about it, and also made a post in the r/shadowrunreturns subreddit.

About a half-dozen players have jumped on the campaign, sharing their bugs and general feedback, which is awesome! They've already found a couple of potentially nasty bugs, things that are easy for me to fix but would cause a lot of pain for players. There are also a lot of great little notes related to polishing that help contribute to a stronger game.

There are basically three different types of testing happening simultaneously, each of which is doing something different and useful.

Developer Testing


I finished my initial run-through a few weeks ago, took a break during HadesScorn's run to let things refresh, and now have jumped back in again. My first game was as a cybered female dwarf adept, this time around I'm testing a human male decker. I'm trying to hit some of the more obscure / less popular routes in this play-through, and already have found some good bugs that I overlooked the first time.

This is really time-consuming. From a practical perspective, I could probably fix, I dunno, a hundred bugs in the time it takes me to do a full end-to-end playthrough of the game. But it's also essential, because I'm the only person in the world who knows what's supposed to be in the game. If a side-quest fails to fire, or a contingent NPC fails to show up, nobody else will notice that anything is missing. (Players will know if the wrong thing happens, or if something happens that shouldn't have, but have no way of knowing when something doesn't happen that should have.)

In Caldecott, I didn't do my second full play-through until several months after it was released, and was mortified by the stuff that I'd found. Granted, the mistakes weren't major enough for players to raise a ruckus, but still, since so many players first come to a campaign in the window after its release, I'd really wished that I'd caught them before. I'm hoping to finish this play-through by the 20th so I can wrap all of those fixes in with the release.


While testing, I typically run Shadowrun in windowed mode and have the editor open to the scene I'm currently in. If I spot a typo or similar low-risk bug, I'll just fix it immediately. If it's more complex, I'll add it to my bug list. After completing the scene, I'll save the game, then shift back into debug mode, making my fix and thoroughly testing it.

First Test


HadesScorn is a very thorough tester. Most players report on things that are going wrong, but HadesScorn provides more details about what is happening in the game, choices being made, emotional reactions to various events, and so on. I wouldn't be able to process this level of feedback from all of my players, but it is incredibly helpful to have one outside perspective with this much depth. Besides revealing a ton of bugs, this also indicates where things are confusing, or frustrating, or otherwise need tweaking.

HadesScorn writes notes in longhand on paper while testing, then transcribes them into a shared Google Doc, taking a semi-narrative structure. I can follow these notes and quickly recreate the relevant events in the game as well as track which branching paths are being followed. Instead of editing the doc, I'll use comments for questions or feedback, which will sometimes result in side-discussions. Stuff that needs a deeper look will be transferred over to my main bug list, otherwise I'll resolve comments in the doc as issues are addressed.


This is supplemented by debriefing phone calls, going over items in more detail and occasionally brainstorming solutions (in addition to more important discussions about the Arrowverse and foreign policy and the relative merits of Pathfinder). Again, this wouldn't be feasible with a larger group of people, but the two of us have very simpatico outlooks on RPGs and life in general, so this kind of feedback is invaluable as well.

Alpha Test Squad


In some ways, this is kind of like a dry run of the actual release. I publish the content to the workshop, then quickly jump onto the Steam page and switch its visibility from "Public" to "Friends-only". This ensures that the Alpha Test Squad can freely access it while the general populace cannot. That keeps the number of players under control, gives me sufficient time to respond to new bugs as they arrive, and ensures that everyone who starts playing knows what they're signing up for (basically, a lot of bugs).

The actual bug-reporting and fixing is similar to my normal process, but on steroids. I wrote up a quick note on Steam describing the test process and what I'm looking for, as well as my standard threads for collecting bug reports. People drop in notes as they encounter issues, I may ask them for clarifying info if I need it, then I jump in to reproduce and fix.


I've always released a lot of updates in the early phase of a release. There are many bugs during this period, and also many players, most of whom are highly motivated. I don't want to leave them spinning their wheels or all running into the same problem, so I try to push things out ASAP, even when it means multiple releases a day. (This is also why I exclusively support Steam in the early phase of a release. Steam automatically pushes out updates to all subscribers, so it's perfect for fast iterations like this.)


I initially wasn't planning on writing release notes during the private alpha, because of how many updates there are and the fact that this is all pretty transient. But they're easy enough to do, so I'm doing them after all, just not quite as detailed as I will do once I get to the public beta.

The Road From Here


Less than one week until my planned release! I still might hold this back if critical issues bubble up, but so far it's been a relatively smooth and encouraging test period. To me, this game is 2017, and it feels right to release it before the end of the year. I'm sure that I'll continue patching and supporting it in the new year, but I'm also hoping that I can sort of mentally put it behind me, and focus on a brighter future rather than the pains of the past.

Oh! Almost forgot, I took a quickie video of finished gameplay. This is from the start of the Sacramento scene, which I've discussed in a few previous posts.

Sunday, December 10, 2017

Consoling

Part twenty-four in a weekly(α) devlog.

Standard development disclaimers apply. This is 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.

First things first: CalFree in Chains has officially entered alpha testing. If you're interested in participating, send me a friend request on Steam if we aren't already connected, and then head on over to the workshop page to subscribe.

My tentative plan is to run the private alpha for about two weeks. I'm not expecting to catch and fix all remaining bugs during this phase: the goal is to find major show-stopping issues, some of which may only manifest as the result of certain branching choices.

I'm still not committed to it, but if things go smoothly I'm hoping to release the public beta on December 22nd (the same day Bright releases on Netflix). As with my previous campaigns, I'll be actively maintaining and updating the campaign as reports come in, but this time around I wanted a clearer demarcation between "This likely has many bugs!" and "I don't think this has many bugs!"

In the run-up to this, HadesScorn has been doing a very detailed playtest (thanks!) complete with tons of helpful notes and feedback. I'm acting a bit like the sweeper at the end of a parade, cleaning everything up behind as the progress continues. The most painful fix so far has been a character rename. As you might have seen in some earlier dialogue snippets, one of your crewmates is named Isas. It wasn't until HadesScorn pointed it out that I realized this is uncomfortably close to the name ISIS, which is not at all the association I wanted him to have.

The reason this was so painful was that a crew member's name shows up in a LOT of places: not just the text you see in dialogues, but also in variable names, data files, and so on. There's a huge potential for bugs.

In most of these posts I've shown the work I do inside the Shadowrun editor, but I also do a fair amount of work in raw text files. Sometimes it's easier (or necessary) to open up a file in VIM and manually edit stuff in there instead of going through the editor. Something like the Isas -> Isao rename absolutely requires this sort of approach. There were well over a thousand references to update, and there's no way I could do all that manually.

Here's a handy command that will take care of the bulk of the work for me:


This one only updates the lower-case version of the name, which I need to be careful about - otherwise, it will update works like "disaster" to "disaoter".  The capitalized version turned out to be safe to run everywhere; this version had to be restricted to only run on certain folders, excluding "convo".

Anyways - what this command does is look under my project folder for all text files, and globally renames "isas" to "isao" in all of them. Pretty easy! This blows through hundreds of files in less than a second.

(I have a bit of a history with stuff like this. I've mentioned before how Rafik was named Destin for almost the entire time I was working on The Caldecott Caper; I made that change very late, but before entering testing, so it wasn't quite as painful. Also, about a month ago I renamed the primary villain in CalFree in Chains after I became concerned that it was too close to the name of a real-life political figure. I'm not necessarily opposed to players drawing parallels to real-world events, but I've tried to avoid making any one-to-one correspondences between fictional and real people, preferring instead to focus on movements and ideologies. Anyways, that one wasn't as bad since it mostly just affected the content of dialogues, not game data files.)

Oh... while we're talking about names, this might be a good time to mention the name of this game. My initial working title for it was "Saito's Shadow". I thought that it would immediately signal to prior players that this was a continuation of my previous games, and it also has a sinister sound to it that matches the game content.

The title lost its appeal, though. First, I was worried that players would jump to the conclusion that you get to actually fight Saito in the game. (Spoiler: You don't, at least not directly.) The word "Shadow" is also massively overused in Shadowrun games, in both fan-made and official content. "Saito's Shadow" is also hard and annoying to say out loud, with multiple sibilant S's stacked side by side. Finally, it isn't super-Googleable.

I (surprise!) started another Google Doc for brainstorming names. I ran through several dozen, each with their own pros and cons. I got excited once I thought about "Welcome to the Occupation", which is the title of an R.E.M. song that I love and a great thematic match for this campaign; unfortunately, as an existing song title it would be even less Googleable. But that started my mind down another path, and I ended up settling on CalFree in Chains. It has a certain insistent rhythm to it that I like, a nice li'l acronym (CFiC), is decently Googleable, and announces its ties to the previous games.

I have an even longer list of parody titles that I would never use but I can't get out of my head, including:
Uncle Saito's Smile-Time Family Variety Hour
My Dunkelzahns Are Dead And My Saitos Are In Power
I Feel Sad: Surprise! Now You Feel Sad Too
So Much For The Tolerant Left

Back to the command line: there are tons of commands I use during development, most of which only get used once or twice but all of which save an insane amount of time. Here are a few random examples:


This one was handy when I was experimenting with options for targeting enemies and allies while creating new spells and abilities. I'm running it on the official Hong Kong source so I can see all of the available options; there's no official reference for this, so I'm essentially building one myself. "grep" is the standard text-searching command. -h will hide the filenames of matches so the output only contains the matching lines. "toHitFunction" is the string I'm looking for. "sort" will organize all of the results into alphabetical order, and then "uniq" will remove any duplicates. So, I end up with a nice, alphabetized list of all valid hit functions that Hong Kong supports. (Longer than what's shown here.) It's way better than opening hundreds of files by hand and writing my own list!

Or, here's an example of editing every file in the project that includes the string TODO. I often leave this as a comment to myself while working. It might be a placeholder for something that I need to hook up later, or a reminder about a bug that I spotted but didn't have time to fix, or a note that I need to do additional research on some dialogue.


This one line will crawl through the project and open up all the matches for editing in VIM. For text-based stuff I can just make any necessary edits directly in the buffer; otherwise, I can quickly find the corresponding content in the editor (the map or dialogue or whatever) and take care of it there.

Okay... I feel like I'm massively overdue for showing some actual gameplay. Next week might be a good occasion for that, I'll try to grab some screenshots or even a video snippet. I'll be pretty busy now that the wider alpha is underway, following up on bug reports and swiftly fixing stuff, but that's a good thing! I have a full work queue now, and it's exciting to see the game get better and better every day.

Sunday, December 03, 2017

First Past the Post

Part twenty-three 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.

I've finished my first-ever run-through of CalFree in Chains! I think it's pretty good. It's always fascinating to actually encounter these scenes that have been trapped inside my head for months and that I've spent so much time building. I'll never experience them as a player will, but I do feel a certain sense of awe at watching them turn from idea into reality and manifesting inside this game that I'm playing.

My high-level takeaways from the game:

The difficulty curve is inverted. Early missions are too hard, and the final missions are too easy. That was exactly my experience in all of the official campaigns, though, so I suspect it's at least partly due to the underlying mechanics of the game and not something I can completely solve. In the short term I'm adding a few more healthpacks and such to the earlier missions. I'm experimenting with what I'm labeling "homemade" medkits, which act the same as a basic medkit but are worth far less. My goal is to encourage players to actually use these instead of hoarding them (which is what I, personally, always tend to do in these games).

The last battle in particular seems to be easier and faster than I had expected. This is kind of a bummer because there's a fair amount of content that only triggers after the battle has gone on for long enough. I'm still mulling over how to address this... the simple thing would be to just add more waves of enemies, but that seems dull for a final fight. I'm also tempted to bump up individual enemies to have boss-level stats and be more menacing, but then I risk having crew members die and not being available to deliver dramatic lines. I dunno. Maybe players will enjoy feeling powerful in that fight (and it is interesting, even if it isn't all that hard).

I think that the story makes sense and doesn't drag too much, but I'm too close to it to be objective. Honestly, at this point there probably isn't much I can do to change it since it's so closely interwoven with the gameplay. There may be an opportunity to add more explanations if things are unclear, but I don't think I'll be able to cut out much without hurting the game.

I do worry a little about some long-running side-content. There are a couple of references near the end to stuff that happened back near the beginning, which should be fine if someone is playing straight through, but would probably be confusing if they're going weeks between play sessions. The critical-path main plot stuff is all refreshed fairly frequently so I think that's OK, but I can see some players going "Huh?" when a companion says "Haha remember the one time you did X way back in mission Y?", when nobody has mentioned it during the five missions in between.

There's a bit too much nuyen. I thought that Hong Kong was too stingy, but in this runthrough I was able to completely kit out every slot of cyberware, buy my best armor, get some good Adept abilities, and still clear out the doctor of every platinum Doc Wagon and premium medkit before the final run (none of which I ever used...). I've already made some adjustments to tune this down a bit, though I should probably go further. Games are more interesting when you need to make choices and trade-offs, and being able to buy everything you want isn't all that compelling.

The karma level feels pretty good, though. I brought my CHA all the way up to 8 for four etiquettes, maxed out my Cyber Affinity, and came close to maxing Close Combat. And I still had some points to splash around in Qi Casting, Biotech, and other useful things. I think there's enough for specialists to max out their primary skills, but not enough to max out multiple skills, which feels like a good place to be in.

So, yeah... there's definitely more tuning and fixing to come, but the overall shape of the campaign feels decent, so I'm starting to cautiously expose it to other folks. The first person to endure the torture will be Hades Scorn, my longstanding lead tester, also known as the infamous pistol street samurai. Shortly after that I plan to open it up to a small group of alpha testers, hopefully drawn from current Steam followers and one or more of the active Shadowrun communities. It now seems possible that I might get this out before the end of the year, which would be awesome, but I'm not prepared quite yet to commit to that.