Friday Update #20: The Prep (Patreon)
Content
Edit 10/22/2021: whoops, I forgot to attach the photos of my desk!
Howdy! Today's Friday Update covers the work that I do to make sure that I do as little work on re:Dreamer as possible (no, I mean optimizing workflow, not being lazy). There's also a thing at the end that makes this title clever.
Surprisingly, most people aren't aware that I'm essentially making this game by myself. I can't claim credit for the game's stunning commissioned art or the underlying Ren'Py engine, but outside of Espeon saving my idiot self from coding hell from time to time (I've never had formal programming classes since my Java course in high school), I've been flying solo. That means I'm responsible for the writing, the bulk of the coding, all the GUI asset making (minus what I can get from icon packs), design documents, communication with commissioned artists, art editing, and "community management" (social media, discord interaction, forum posting, and the like).
That is a lot of stuff to do, so to get it all done, I must streamline my workflow as much as possible.
Behold, my workstation. This is generally how it's set up as I work. I have Atom and the game window up on the primary monitor and the expression sheet ready on the secondary monitor to reference (although I've long since memorized what Zoey's expressions look like). I'll have a few odd miscellaneous windows open (Clip Studio Paint, Photoshop 2021, Mozilla Firefox, and Discord PTB), but this is predominantly what my workstation looks like during use.
As I just mentioned, the text editor I use to write re:Dreamer is called Atom. It was what was suggested for me to use back when I was working with the Student Transfer team, and I've stuck with it ever since. It's a rather… bulky thing, but it's packed with a lot of helpful features to make working faster. Two of the most useful are the autocomplete and regex find/replace (and no, the spelling checker isn't very helpful and there's no grammar checker like Microsoft Word, which leads to an embarrassing number of typos).
Autocomplete is simple to explain. Based on the project you're working in, you can build a predictive list of words based on how many characters you have typed of it so far (I leave it at the default of 3 characters typed before the dropdown list appears). It's like what your phone keyboard does, except better (interestingly, I can't stand predictive text on a phone but can't live without it while working on this game).
Regex, in a nutshell, is find and replace on steroids. It uses characters for pattern matching, making it almost a programming language in and of itself. I use this for very quick bulk replacement of things across the entirety of the game's files or automating bulk text, which is part of the reason why Zoey's sprite code is so verbose. Everything is coded with next to no abstractions, but most of that code wasn't typed by hand. I gave Atom a short script that typed all I needed for me and made minor adjustments afterwards (such as for Zoey's hanging arm in Pose A being a unique thing that the other poses didn’t have).
One of the most helpful things regex has done for me recently was automate the color variants of the expressions from the sprite viewer. The process used to be manually applying the gloom layers to each face as a whole before cutting out their parts in Clip Studio Paint, but with the power of ImageMagick, I was able to automate the multiply layer effect Clip Studio paint would use and then mask those expressions to where their parts based on what I had already done months ago with the black hair/red eyes default expression parts. This was a godsend as I was fully expecting to spend at least 16 hours making every expression color variation, but working out this code made that process take 2 hours.
Admittedly, this type of bulk replacement can lead to some funny errors. During the sprite viewer creation last update where I realized prebaked Zoey expression images weren't going to be possible with the new hair and eye combinations, I replaced every Zoey premade expression with their parts (i.e., "show zoey a 0" becoming "show zoey xa eyes_0 eyebrows_0 mouth_0", but one consequence of this was that I replaced "zoey a" with "zoey xa" without specifying to match the lowercase capitalization, which led to a funny typo in the Britney Day 1 dinner scene, the sole area of the dialogue script where that sequence of characters occurred.
Autocomplete helps with many of these expression parts, but they show up nearly every single line in this game, so something needs to be done to speed up making the "show" expressions.
I've mentioned this before, but I've fallen down the rabbit hole of stupidly expensive custom mechanical keyboards recently. This TKL keyboard and numpad cost me about $1000 total:
- KBD8X MkII and KBDPAD MkII, both with brass plates.
- Plate and case foam for the KBD8X MkII, just plate foam for the KBDPAD, Tempest mod (gaffer's tape) on the back of both PCBs.
- PCBs attached to top cases with a custom burger mount (rubber O-ring washers between screw head and PCBs & PCBs and top cases).
- Kailh BOX Pinks (with Kailh BOX White springs), stock factory lubing.
- Tescee PCB screw-in stabilizers lubed with Krytox 205g0.
- Glorious Soft Thick (2.5 mm 40 A) O-ring + Glorious Soft Thin (1.5 mm 40 A) O-ring on the spacebar.
- GMK Classic Blue (congrats to the eBay scalper getting $400 from me for these!)
Minus the noise (a brass plate with a clicky switch and a lower Cherry profile ABS keycap set was a massive mistake), this is easily the best keyboard I've ever used and is far better than anything you can buy as a prebuilt unit. I have a lowish typing speed of 60-75 WPM, but this feel just feels so delightful to use.
Anyways, now that my flexing is done, the important thing here is that little pad on the left. That thing may appear to be a 21-key numberpad, but it is far, far more functional than that. Via QMK (but not VIA, haha, just a little keyboard reference for you all), I've managed to program this thing with custom firmware that saves me a lot of time adding to the re:Dreamer .rpy scripts. I'm only a few function key combinations away from a suite of macros across 4 keyboard layers that optimize my workflow with anything from typing the common reoccurring parts of the code for me to opening a calculator (you'd be surprised how useful a calculator is when doing basic computer stuff not really related to math).
Another important part of my workflow is speeding up whatever I can in Clip Studio Paint. I've mentioned the recent expressions work, but I edit the art we get for this game quite a bit, so I've essentially taught myself all I would need to do anything short of fully redrawing something. There's simple recorded function built into the program, but they're rather rigid in their application, so I need to be able to turn my keyboard into a hotkey hub for common tasks instead of right clicking things or going into menus. If I need more complicated functions, I can always add more to my number pad.
In all honesty, optimizing my workflow is one of the most fun parts of this job. It's a fascinating puzzle to keep finding new ways to improve how much work can be done in any given period of time.
Speaking of preps… Rich is actually a real thing now.
This test sprite was drawn on commission from Kuro Lee. As you can see, he's got a whole blend of the JFK and young Wall Street investment banker thing going on:
"Rich Burton and Zach Taylor's story begins with their fathers. Zach's dad works directly under Rich's dad at a large online real estate database company (Zach's dad is the chief housing agent and inspector who both contracts houses for repair and does those repairs himself, Rich's dad is the founder and CEO). Rich and Zach got to know each other from time to time as kids, but Zach detests Rich's personality and has resisted all of Rich's attempts to be friends."
"While Rich’s dad is an eccentric tech entrepreneur and a smaller-scale version of Elon Musk, Rich himself views himself as destined for high finance. He’d love nothing more than to live like a character from The Wolf of Wall Street or Mad Men. If he's could get away with it, there's a distinct chance he'd want to be Patrick Bateman from American Psycho."
Rich's route is still in the early stages of planning, but he's planned to be taking a darker tone than the rest of the game. Very early on, he's going to blackmail Zach into living full-time as a girl, and he's got a manipulative plan to make sure Z̶a̶c̶h̶ Zoey will want to permanently stay that way.
The next release (0.9.1) drops on Friday, October 29 and covers more of Zach and Britney's mall date. Things will be going back to normal with this release and it will be only for the Sustainers for 4 weeks, but while I'm still just giving things away that were supposed to be patron-only, I made the full-sized versions of the commissioned art from Zach's phone wallpaper public.
Until next time!