Devblog—May 23, 2017

Where the hell did this week go?

I swear I was set to get more stuff done. But then, John Oliver said it best, “This past week has been about 150 years in 2017 time.” I’ve been eyes fuckin’ glued to the news in every spare minute—I think my F5 key is about to organize a strike. So much shit going on I feel like I’m off social media for 2 hours and it’s like the world’s straight up passed a day forward. This shit’s unhealthy. Unsustainable. Especially if I want to get a project done.

Real talk, though; I’m getting close to another playtester release. I can feel it in my bones. But with every inch I crawl myself closer, it feels like the murk between myself and release stage gets thicker and thicker. Problems mount. Discrepancies appear. Mistakes pop up.

This is the stage where the project goes from islands of raw creativity made manifest to actually needing bridges built.

If creators are like God, look, any bitch with some sand and lava can make an island; sprinkle it with bacteria and you’ve got yourself a thriving ecosystem in a few billion years. It’s engineers who build bridges, and look, respect to higher powers and all, but God’s only got a scant few of those to His name.

What I’m working on now are the bridges; the critical chunks of storytelling architecture that link these islands that I’ve built together, and that is hard. It’s harder than mashing a bunch of walls and floors and props together like, “I LEIK DIS RUME.” This is no insult to people who do those things, and do them well. Working with raw creativity is its own beast, and it’s one that I’m (at this point) a bit more familiar with. Dare I say, even gettin’ kinda good at. But a bridge is more than just architecture. It can’t just look pretty; it has to bear weight. And it can’t just bear weight, because I’m an egotistical bastard—it’s gotta look pretty.

Maybe that’s too much to ask.

Here’s my philosophy on creativity:

Everyone has great ideas.

You have great ideas. I have great ideas. That crazy guy on the forum writing headcanon fan fiction and only posting “wouldn’t it be cool if…”? He’s got great ideas, too. But these ideas are like pictures. And man, if we were all kickass painters, there wouldn’t be a need for video games or novels. But here we are, and where the creativity, the actual craft of storytelling comes in, is how we connect our great ideas together.

There’s a writer (I think it’s either Ernest Cline or Andy Weir) who said that they didn’t feel like they were a particularly great writer—they’re just the one who got the novel done.

If you’ve ever written anything—a novel, a game, whatever…anything with a cohesive Point A to Point B narrative, you’ve surely encountered the problem that you’ve got this cool thing over here, and this cool thing over there…and you’ve got no fucking clue how to get from here to there. That’s where I would wager 90% of projects that get started, stop.

That’s not counting the projects that never leave headspace.

That’s where SR: New Orleans is at.

It feels like every sentence I write, every line of script I put in, the gelatinous goo of potential thickens closer and closer to cement. The harder I work, the harder the work gets, and it feels like the me working today is fighting the me who was working two, three, four weeks ago.

I’m trying to make this not sound like an excuse. I’m trying to communicate this to anyone else who dares something as dumb as this is. I get it now. This shit gets hard. This is where the work begins. This is where I decide if this project gets done or not.

And I’m not giving up yet.

PLAYERHOME

  • Added an “Automated Domestic Assistant”, aka HelperBot to the game. Their purpose, essentially, is to do what Paul Amsel did in Dragonfall: instruct the player on where to go between the prologue and the first run. This is a bit more complicated because I’m giving the player the illusion of control; rather than having an authority figure or expert say, “Go here, do this,” the player is the expert, and thusly, I have to build the conversation such a way that the character serves as something more like the sounding board and it’s the player character who rattles off ideas. Don’t ask my why I made this more complicated than it has to be.x3s41y1
    • At the moment, the HelperBot’s “tone” is all over the place. As I add more dialogue for them, hopefully I’ll get a clearer vision in my head as to what their attitude towards the player character is, and what sort of speech patterns they have. For now, let’s assume most dialogue is placeholder except in function.
    • In just talking with playtesters and sharing screenshots of existing dialogue, there are already dramatic changes for HelperBot in the works (see below).
  • Added an email that should hopefully get the player at least started on their search for Greyvein. Though I’d really still like to get them over to the vendor areas first. Fortunately, a bunch of that dialogue’s already written. I just haven’t devised the actual hub exterior yet.

HIGHTOWER

  • I changed a few lines of Cain’s dialogue so it’s him and not HelperBot compiling data about Greyvein. Because it’s weird that he’d send the player character on a mission and be like, “Well, have fun storming the castle!” I also took out the line for now of liquidating the player’s assets.
    • Look, I still don’t know how the playerhome is going to mix with the vendors hub. Right now, I know I’m in a rough spot. I don’t know what’s going to work, and how it’s going to manifest. There’s going to be a lot of finagling in the coming weeks as I figure out where what information is coming from. Let’s just leave it at that.

To do:

I’ve gotta figure out how the variable $scene.numUnreadMessages works. As in, how the game adds emails to the mission computer on every individual hub load without re-loading and adding to this variable. It’s a really wonky variable that I’m sure has a lot of stuff going on under the hood, but the Mission Computer is critically tied to it. It breaks a lot of things when it doesn’t work right. That’s going to be the major puzzle of this week.

Already, in just talking with playtesters, new options for HelperBot have come up. So what you see above…that’s all placeholder. And by the time you read this, hopefully I’ll be on second draft of writing HelperBot’s dialogue. I’m actually super excited, because it solves a lot of the problems I was having with the iffiness of this scene.

I’m starting to think of the scene immediately after Vitacorp…or, not scene. Call it a “wrap up vignette.” It’s just as essential, if not moreso, than the actual shadowrun itself, and will be a critical part of this phase 1 rollout. I don’t want to start building the dialogue yet because it’s a bit reliant on what goes on between Hightower and Vitacorp, but I’m thinkin’.

We are setting the stage for greatness, y’all. Here’s some city beats. Hear it!

Advertisements

I Need a Wonkers

Okay, I’ll admit it—I mostly used this title because it’s funny.

I’m trying to figure out how to link the end of the Hightower scene to Vitacorp. This is where actual storytelling takes place, because no combat should be happening here, and this is where Dragonfall really succeeded. Dragonfall made use of a “guide”—a character whose purpose was to move the story forward by telling the player where to go and what to do. The character is Paul Amsel. Paul is the one who says, “Go out and get the DVD player, talk to Maalit to get the DVDs fixed, go talk to Altug to get info on Green Winters.”

In SR:New Orleans, this is supposed to be an “investigative” phase, similar to the Dragonfall sequence where the player character is tracking down Green Winters. But just plopping the player down in what may be a two-loading screen hub would be super overwhelming at first. So I need someone or something to be able to tell the character at least what their options are, if not where to go, and I need a way to plant ideas in the player’s head.

In Dreamfall: the Longest Journey, the player character (assuming the personality of Zoë Castillo) spends a lot of the early chapters in their home, coming and going, and it’s unoccupied save for themselves and a…little AI-pet-helper-thing called a Watilla, Zoë’s being named Wonkers.

dreamfall202007-06-182012-13-42-25

Characters like Wonkers serve a unique purpose: they’re there to tell the player what the player character knows.

Alternatively, they serve as the “bouncing board” for the player character’s ideas, rather than the player’s. Because the player character has existed in this space since before coming into the player’s control, they have a relationship to the environment and its people.

Say you want to guide the player to one of three locations. The “helper” NPC says something to the effect of, “Where are you going to go?” The player themselves doesn’t know this world, but the player character using a limited dialogue selection has three options. Just picking options out of a hat, let’s say “Warehouse” “Dockyard” and “Bar” are the options. Player clicks “I could go to the warehouse…” and the helper NPC says, “Oh, that’s a good idea…[here’s some exposition as to why].” You’re giving the player information about the world that the character already knows while simultaneously setting them up to advance the plot by eliminating non-options in a way that feels organic without thrusting the player into an open world.

While the Mission Computer (specifically, the Shadowland BBS) can give the player a peek into the world and its occupants, it’s difficult to design functionality of the Mission Computer that gives the player a sense of choice and independence until you get into the modular design of the mid-game (if you’re doing what I’m doing and stealing HBS’s plot layout). Having another character—in this case, a subservient one—to let the player feel in control while actually guiding them down the path towards the next run will actually give me an opportunity to fill out not just the world, but illustrate the player character’s place in it.

Originally, I was going to give only select “classes” a helper NPC, and mostly for flavor.

When I was drafting up ideas for the variable prop garage, the idea of giving summoners a helper spirit and riggers a helper bot to round out their “uniqueness” was really appealing to me. While I would have loved to give every class a unique NPC, that just isn’t a realistic goal to set. What I might do now is a bit of a compromise—give everyone a helper drone like a Watilla, but maybe give players with appropriate Drone Control some additional options at some point.

I think I can have some fun with this character. I’ve already played around a bit with story variable names (even though I later learned I didn’t need to, using the Speaker option), but by setting a story variable that looks something like $+(story.botName), I can actually let the player name their bot from a limited list, similarly to the Bolthole name options in Shadowrun: Hong Kong. That’ll be the first thing that happens, I think.

So, into the editor I go!

Devblog—May 16, 2017

Whew! Been a while since I’ve done one of these!

In all reality, life happened a bunch these past 2-3 weeks, and I kind of mentally shut down. My confidence flagged at being able to do stuff with the editor, and just looking at the icon on my screen became mentally painful.

But, now we’re back to (hopefully) our regularly-scheduled programming.

PLAYERHOME

  • Added the home matrix node, which allows players to jack into the Matrix; from here, they’ll be able to connect to the New Orleans LTG (currently under construction).

iey2obs

  • Added the Mission Computer dialogue, which is to say I stole the Mission Computer dialogue from Hong Kong and stripped it of all of the entries save for menu decisions. From this framework, I can build my own emails, Shadowland BBS threads, etc.
  • Added a VidPhone dialogue, allowing players to remotely talk to other NPCs. Should they not be a Decker themselves, the VidPhone will allow players to hire a decker. Boot, being the crew decker, will come significantly cheaper (or just be free), but a merc Decker will cost nuyen to hire.
    • As of right now, the only Decker available for “hire” is Boot. Making other mercs will be a late-stage process.

upsq5d9

  • Added functionality to the front door to send away NPCs tagged “isGuest”, which includes hire-on deckers, but this also sets the framework for the VidPhone to be used to bring NPCs into the space (and send them away).
  • Continued work on functionality of the garage. All items in every iteration of the garage are tagged so they all vanish on the scene load, and then the game looks at the player’s class from when they started the game and reveals a template of items suited to that class.
  • Added functionality to the Mission Computer that allows playtesters to change what the game thinks their player’s archetype is for purposes of the garage’s furniture, then re-sends the events that hide and reveal the respective prop sets. This way, playtesters can see all the garages without having to make new characters. This functionality may or may not make its way into the public release build.
  • Added stashes to each of the different garages, so they’re not just pretty rooms—they each have a function. This was one of my concerns about having customizable rooms (that is: “why?”), but giving the player a stash that’s represented by their starting class feels like at least the garage is functional.
  • Began writing some BBS conversation threads, because why not? Actually makes the setting feel very New Orleans-y, talking about New Orleans things. One is already complete, another’s in the works, and I’ll probably try and punch out at least one more for Episode 1. Maybe another 2 that unlock after Vitacorp.

One possibility I’m toying around with is shoving more hub functionality into the playerhome. With the Mission Computer there, it feels like that’s where my hub is going to be anyways, so I might as well get used to it. But I can’t imagine “investigation” by way of clicking on the right prompts on the mission computer is fun. Maybe. I’ll take a look at it and maybe draft up some investigation options and run it through playtesters. Right now, I can only handwave the events of the Hightower scene and Vitacorp, so if I throw in anything resembling an investigation, maybe it’ll actually work. We’ll see.

PROLOGUE

  • In order for the garage customization to work, the game needs to know what “class” the player made. So I’m piggybacking off of the script for the game’s initial equipment vomit (“Event_Addgear” for folks who tinkered in the editor) onto the player and adding a story variable that essentially matches the player’s class, or ties them to a class based on their favored attribute in the case of the “none” option.
    • Should the player for whatever reason just take no points in karma—not enough to trigger any “type”, the garage defaults to Street Samurai build. So something will show up.
  • Per playtester suggestion, I added a time limit to the amount of turns a player can spend in the “Hell escape sequence.” Essentially, the building is collapsing on itself and the player has to get out. Failure to do so before the bar indicates and it’s back to autosave. As of right now, the timer is set to 10 turns, but I may increase this to 12 because I interrupt the player’s movement twice. Hopefully people will stop fighting the overpowered fire spirits and make a break for the exit…*cough, cough, Dave, cough*
    • What might be fun is add some debris or make some more stuff collapse every turn or every other turn. Right now, the collapses are all on tripwires and behind the player to force them forward (or, rather, not let them retreat) and make sure to not block off their path, but having a few props “turn into rubble” would really give that organic “collapsing building” feel. A project for a later date, surely.
  • While testing the new countdown mechanic, I discovered a misscript (is that a word? It wasn’t a bug; I just scripted it wrong) where, if Sobeksis died, because he was on team Shadowrunner, it resulted in a game over. So I switched the game over condition to anyone with the tag “isClearTeam” meaning your human teammates. I also gave Sobeksis a built-in healing mechanic so he still takes a lot of damage from the fire spirits, but it should be a little more difficult to kill him.
  • With the new countdown timer, and now having read some Shadowrun fiction, I decided to go back and make the fire spirits in the Hell sequence resistant to normal damage and take normal damage from magical sources, which seems to fit the Shadowrun universe. The point is that they should still be incredibly difficult to kill, so much so that a player who attempts it will find themselves swiftly out of time to actually escape.

VITACORP

  • I broke the absolute goddamn tits out of my jumpy elf confrontation vignette, trying to fix/repair it to where I can have some animations in the case of an action(or actions) taken during the confrontation. A lot of this is similar to the Thibaut conversation situation (way back when I was working on the Hightower scene…remember those days?), except this time what I didn’t know was how to integrate actions mid-conversation.
    • The short version is…you can’t. You have to end the conversation on an event, trigger the event with the player selection, use the event to do your animations and then restart the conversation.
    • I’m still not really happy with where this conversation’s at, so work will continue on it next week. Chalk it up to being a learning experience!
  • Fixed a few problems with the Vitasec boys, so now they won’t (or rather, shouldn’t) react to the drone combat sequence, and when the conversation with them ends poorly, the door will close behind them (for good) when the player walks far away enough.

I still need to polish up the end of this mission. It just feels really loose and barely held together. As of right now, I’m sitting on 972 CPU, so any more triggers and I’m going to start pushing the limits of the scene. On the one hand, that feels cool. On the other…that’s trouble. So, we’ll see.

Dang. Looks like I got a lot more done this past week than I thought. Here’s to hoping we keep this momentum going!