Journal! Why have I forsaken you. I don't particularly want to dump a load of really personal shit out onto the Internet, but I have been going through one of the most unstable mental health episodes I've ever experienced. My mood has been a fucking yo-yo. For extra hilarity, I also decided to start a strict diet and temporarily quit drinking to gain some mental clarity, and while I ultimately think those were a good call, short term, I am down two things that I quite enjoyed in a period of already not feeling great. I have the timing of a drummer.
That out of the way, I have been fairly busy with some legitimately cool things, so let me quickly get March summed up on here as I look forward to a much more stable April...
The marfGH repo
marfGH continues to be sharp in my mind's eye. I have a handful more songs to finish for Volume 1, I want all the menus to get retextured (and the lads are interested in helping, bless them, and I'm interested in paying them for it, yes), and I've been working on a few new script features to really separate marfGH from the rest of the pack. Some of these (Jukebox Mode, manual camera cut authoring) have long been implemented and I've just been cleaning up how I wrote them, and some (like a make a setlist mode to play any number of songs without having to menu dive each time) are taking experimentation and knowledge to put together right now.
As such, I have started a GitHub repo for my chart testing disc. These feature all of my working scripts in DTA (plain text) format, no songs or milos included. I know the audience for this is fairly limited to only the handful of people in the community that can read, build DTAs into the tokenized format the game actually uses, and debug any issues, but it makes me happy to see. This also gives me version control in case I ever really fuck the dog in the ass and end up with a nonfunctioning disc somehow.
One other big script project: cleanup of the entire game's internals. marfGH uses very few of GH2's menus or features—no Career, no memory card functionality, no splash screens, etc. I've been working a lot on stripping out unused features as they pertain to my disc, mostly so I don't have to work around a lot of vestigial scripting should I want to write more features into the game. With milos, I've dropped 10MB of disc space and removed a couple UI scripts entirely from the equation, so I'm very happy with the weight reduction.
A new plan for sketches
I kinda lost steam on art at the start of the year. Caby has a saying that, if you find yourself creatively frustrated, that often means a breakthrough is coming on, and I think I've had one lately. I've been very exacting and careful with my sketches in the past. This made sense in 2022 when I was just trying to make a cat look like a cat, but I'm now three years in, and all the tons of layers and going slow has done is, well, slow me down. I know roughly how to draw a humanoid body, I don't need to be so scared of it.
I've been retraining my hand and brain to draw lighter and quicker as a result. This lets me sketch on one layer (and hopefully eventually paper) without having things become an unreadable mess, and I've been trying to rely more on simple shapes to block things out than worry about complex detailing in the sketch stage. I think it's already paying off nicely. Here's a handful of sketches I've done in the past two weeks:
Two of these are Caby and Savannah's superkitty OCs (superkitties being an open species of sorts I made to group Miranda and Prince as the thickly-maned anthro cats they are), one is my girl Miranda taking a look in a book, and then there's a Cammy holding a marf that I sketched out for the home page of hifi that I will hopefully line and be able to get the site out soon. Also, there's some Sebs. I drew those before I started experimenting with pen pressure, mostly to remember how to draw him because he was on my mind a lot. I'll get back to that.
I really like all of these! Drawing is a lot of fun when I let myself have fun with it. Caby also suggested I do more aimless doodling and not worry so much if I can use things for specific purposes (game graphics, site graphics, toyhou.se profiles, etc), and that's been a big relief too. Caby is always right.
And here we are, nowhere
I've also been dancing with writing stories again. Another thing I lost steam on going into 2025 was my character work. That's a whole other story that, again, I really don't want to dump online, but it sucked. I've been missing my good lads, and I realized how many stories I want to write that I haven't yet.
So things started with Seb, as they once did. I've been wondering about his past, and since Pennyverse proper is still a bit fragile (a lot less now that I've been writing), I thought I'd start with his college years. It'd give me a chance to revisit him, now that I see him as this socially fearful, timid shut-in as opposed to the big angy armadillo he used to be, and pour some of my own college experiences into him in the process. I wrote some brief snippets of story and a fake IRC log of him logging into a school chatroom and making a friend, funnily enough a Japanese badger. (I've yet to visually design him, but his name's Kirin, I think.) That got me thinking about his arc over those four years and how he has his first run-in with Pennyverse's true, unsung antagonist, the settlement guardian for The City (rename pending).
I was feeling encouraged, so I pocketed all those for the moment and switched back to a story I'd started writing a while back but didn't get very far into, Nowhere. Nowhere was meant to be a Pokémon Mystery Dungeon fic and tribute to me as a teenager, back when I wanted to draw and make OCs and was too scared of being shit at any of it to. Nowhere is about this human girl who panics her way into the Pokémon world and wakes up a Cyndaquil, and she has to travel far north with an especially stupid Wooper named Gilbert to learn the way back to the real world. Each chapter is themed after a specific song on the Ride album Nowhere, which I definitely used to listen to back when I was 15 and would idly fantasize about PMD OCs on car rides. (I feel a link between the worlds of shoegaze and PMD that no one but me does, but Caby says it works, so that makes me happy.)
I've only gotten two chapters and change into it, but I'm doing my best to get going again. I feel like, especially if I pinned some illustrations to it, I could have something that other folks online would like as well, not just in the story but in the fact that it's weirdly a PMD fic that's not very tied to the games. Normally, PMD starts with you turned into a Pokémon, and you and a partner starting a rescue team and going out and, well, rescuing, but I've got very little of that going on. Miki (the Cyndaquil) and Gilbert will end up in dungeons, sure, but they're not multi-floor affairs with Skarmory at the top, they're just story bits that play out in caves and in woods.
It's been nice to reconceptualize a lot of my old OCs as well. Just about everyone important in this story has been a character I've had in mind since I was 14-15, and it's been nice finally giving them a home because I couldn't do it back then. Hopefully, it won't be forever before you guys see anything of it.
A reading rainbow
hifi mari.somnol is perpetually ten minutes away from launching. I just need to line that Cammy and marf, basically, before I feel comfortable launching it proper. It won't be feature-complete, but it will be complete enough that I can start showing it off and updating a whole ton of links that currently go to lofi.
One of the things that won't be present at launch are my stories, for one thing because I have very few that I'm happy with sharing super publicly at the moment. I did put Kevin and Theo's Multiverse Misadventure up on nofi, but transferring that to HTML only made me realize what a fucking nightmare maintaining three copies of every single story will eventually become at scale. I started planning out a PHP/MySQL-based solution for delivering stories (which I wrote about in my last journal entry and then completely forgot about), but that felt like a lot of work, and there'd need to be quite a lot of finding and replacing to deliver HTML 3.2 <font> stuff to nofi, less semantic HTML 4 and CSS to lofi, and normal semantic HTML5 and CSS to hifi.
So, I went looking for markup languages that can produce books instead. There's plenty out there—LaTeX, AsciiDoc, FictionBook, and the one I've started looking at, DocBook. My goal is to have each story as a document that can be rendered out to the three sites with zero extra work needed on my part. If I need to fix something, I fix it in one place, rerender, and reupload.
DocBook seems to meet my needs quite comfortably. It's XML-based (which means it's written nearly identically to HTML) and can be converted to HTML through a language called XSLT. XSLT, in simplest terms, controls how a program turns an XML document into another format. This sets which elements turn into other elements, how certain patterns of elements should be handled, all that kinda logic-y stuff that normally I would do by hand in my head. DocBook is meant for technical references, but nothing really stops it from being used for stories. It can do pages, books, chapters, articles, paragraphs, quotes, and again, with three different XSLT files, I can turn one DocBook XML file into three sets of HTML pages for nofi, lofi, and hifi—no database required.
I will keep everyone updated on how learning DocBook goes when it comes time to start putting stories up on the site. I doubt it'll be very complicated.
Somnolescent streamer house
On a very brain off head empty note, everyone's been streaming every week! Me on my channel on Tuesdays, and Caby and Savannah over on Twitch on Sundays and Fridays, respectively. It's been a lot of fun watching folks get through games and revisit old favorites, and on my end, it keeps me playing games, which I've been known to neglect in the past. At the moment, I'm maybe halfway through Ratchet and Clank: Going Commando (I played the first one on stream last year), and I'll be onto Jak and Daxter: The Precursor Legacy when it gets warmer out and we're all in the mood for something lush and light.
Catch our streams! Seriously, they're a lot of fun, and we will chat with you. Provided you're not a total loon. Please don't be a total loon.
Anyway, I'll keep up with the journal stuff better, promise. I think things are stabilizing, and writing in this thing definitely keeps me a little more grounded, like having to consciously commit things I've done to long-term memory as opposed to them being immediately forgotten the moment they get posted to Discord, as I am known to do. See you around, lads.
I have had this unexplainable sense of impending doom over the past week or so. It always gets disproven, I know these thoughts are usually pretty silly, and I've experienced enough emotional upset in my life to learn to ignore it pretty well. Still, vividly imagining my getting terminated at work or spending this morning pondering how all my backups would be completely fucked in the case of a house fire, of course. (Tossing out all my working creative methods to try and make it easier on myself in the future has had the exact opposite effect in the short term, also.) I swear I've been having much weirder dreams than usual lately, but damn if I can remember them now.
So while I ease those thoughts by working a little harder on the clock and looking into a BackBlaze subscription, let's dust the journal off with some Web talk like I do best.
I intended to have hifi finished by the end of last month, but aside from my lack of desire to work on it, I have hit a certain road block in site structuring that requires some planning and PHP. Keeping three sites in sync is not easy, doubly so for sections with a ton of static pages, like my Guitar Hero modding tutorials or my stories. Each version across nofi/lofi/hifi has roughly the same page content, but differences in markup and image handling that make them kinda completely nightmarish. nofi uses no CSS at all; lofi uses no HTML5, and thus much fewer semantic elements. hifi alone uses <figure>
and <figcaption>
for styling images and their associated captions. All three use similarly-named images in different file formats.
The worst part? Each page, multiply it by three. If I have 19 tutorials on my site, I'm actually maintaining 57 pages on the backend. This is not realistic on myself.
My stories present an extra challenge, page length. My old stories on mari_v2 were short enough that they could go on a single HTML page each, but if I ever write anything longer (which is a definite possibility in the future), page weight and ease of reading become a concern. I'm catering to Windows 95 computers with 64MB of RAM running Netscape 3.0 alongside your phone or gaming desktop. With one longer story, I can easily make that machine eat shit, or split up to make it happy, annoy people on modern machines who want an uninterrupted reading experience. Or, perhaps, people do want things split into smaller chunks! Does that mean they'll be forced into using nofi with none of the creature comforts of lofi and hifi having actual layouts and page widths and shit?
Here's my proposal. I'm writing this for my own use as much as your enjoyment--explaining the solution is the first step towards implementing it. (I get none of this is particularly fancy and I'm potentially overexplaining things, but I'm also writing for friends and people who don't work with databases. Not everyone can be as smart as you, Greg.)
I've already been making good use of PHP and MySQL stuff for my album reviews, and I think they're the answer here as well. If you don't know, a SQL database isn't just potentially one chunk of data. They can have any number of database tables in them. Databases contain tables, tables contain rows, rows contain as many individual cells as needed, and all of these are easily identifiable and are a really excellent way for organizing big slabs of data.
The plan is to have a database where each "bundle" of reading material, whether that be a tutorial section, a story, or a collection of stories, is its own table, and each row is an individual (HTML) page and associated metadata, like page descriptions or if each row belongs to a larger chapter. I can then use PHP to get rows and tables on demand and manipulate and format them as desired, using find and replace to save me having to maintain each version of each page separately, or joining rows together to have a story on one, unbroken page.
Obviously, for larger stories, the appeal is obvious. I write the markup once, and PHP can, all on command, return the whole story on a single page or return the nofi version with CSS classes for character dialogue color coding replaced with <font>
tag soup all without me needing to do anything. PHP offers some really nice find and replace functionality, like accepting arrays for both the find and replace in an operation. I just have a list of what to replace with what for each site version, and it brings it to your browser without me touching anything.
For smaller collections of stories, each row can be its own stort. With what I've currently been writing with Pennyverse, that can be a prose snippet, a chatlog, a typed up fake news article, or frankly any way you can tell a story in a chunk of markup, like individual pictures for a comic. Point being, all of these tiny stories are nicely organized together, but can be returned separately. Tutorials work the same way: all tutorials are collected in one place, and I only have to write them once and do the find and replace for each mari.somnol version.
As a nice bonus, .htaccess trickery lets me do this completely invisibly in the background by rewriting the actual, messy links to the PHP script that does all the heavy lifting with HTTP GET variables and the like into nice, clean, static-looking URLs. Something like stories.php?story=kevin-and-theo&page=2
becomes stories/pennyverse/kevin-and-theo/2/
and back as well. .htaccess silently redirects a request for the latter to the former, the script looks up the correct row in the correct table, returns the text, formats the page, and delivers it to you at the latter URL without you ever seeing the redirects. Pretty neat, huh?
I'm going to soft launch hifi without any of this having been done hopefully within the next week. I can't do any database work on my home server copy because DreamHost obviously doesn't accept offsite database requests. I'm sure WampServer packs some kinda MySQL solution into it that I can use (hence the M in "Wamp"), but I never set anything like that up and frankly, I'm okay with just deferring it. It's better to have it online over perfect, and it's better to let people enjoy what I've done so far than make them wait even another week for me to implement another feature, even if it is a very cool one. I really have to start downsizing and chunking my projects more, so I think a soft and incomplete launch is just what the doctor ordered.
That, and a full Somnol Discord server backup just in case something happens. Did I mention I've got a weird sense of dread lately?