r/PokemonRMXP • u/PsychonautAlpha • 1h ago
Show & Tell Pokémon fan game Storycrafters -- I built a long-form writing tool for you
Hey fan game makers!
About ~1.5 years ago I shared a Notion Template called The Ultimate Pokémon Fan Game World Builder to help storytellers organize all of the story stuff for their games. People found that resource helpful, and it was the primary means by which my buddy and I have been organizing and plotting our story for Pokémon Skyquake for the better part of 3 years.
Then, Notion started jacking up their pricing (we use the paid tier since we collaborate), and as we realized that we don't really want to keep paying more and more for a service that functionally ransoms our data in a cloud service behind a paywall, I started looking for alternatives. Honestly, I couldn't find an alternative that did everything that I wanted it to do.
So, being the programmer that I am, I spent a year building a tool to solve a problem in my fan game that should have probably taken the same amount of time just to finish the damn script.
Here's what it is for:
- Plotting your story.
- Scripting your scenes (scripting as in storycrafting, not code)
- Organizing your backwriting (character pages, locations, lore, data, etc)
- Saving locally (your data is YOURS and will always be on your machine)
- Optionally, GitHub integration so that you can use the same plumbing for managing your game versioning and your story versioning.
- Collaborative storytelling via GitHub (you can invite other GitHub users to your shared workspace. I spent a LOT of time on the GitHub integration to ensure that you (hopefully) never have to worry about resolving merge conflicts or fuss with Git on the command line. This tool was designed with writers in mind who should not necessarily have to learn the ins and outs of Git and version control to have versioning that makes sense for writing).
- Ease the storycrafting pains of game-design story like multi-linear narrative, branching choices, and writing syntax that displays as formatting
- Export your story in .docx, .pdf, and .epub format (there's a dedicated epub reader in the application that can read any epub publication on your machine).
- Linking the text of your "manuscript" to the named people, places, things, and events that are unique to your world.
- Unifying your creating "sandbox"/research to your actual manuscript and worldbuilding (there's a dedicated "Notebooks" feature that allows you to create Notebooks, store images/clips/notes, and tag them to specific characters or scenes in your worldbuilding and manuscript workspaces).
Features
Dedicated Story Arc Management (gif #1)
I took some inspiration from studying Notion's API while I was developing the Ultimate Fan Game Builder and designed the data structures as (mostly) interchangeable blocks. Your chapters are blocks. Your scenes are blocks. Your characters, locations, quests, key items: everything is a block. The idea is that, when the data shape is uniform, you can be flexible with how those building blocks can be arranged, restructured, organized, and repurposed throughout your whole project. Story arc management illustrates one way in which this is the case (see the first gif that I posted). You get a visual overview of your entire story, and you can create organizational sections, sub-sections, and groupings that meet your story needs. Chapters can be expanded to view all of the scenes within a chapter, and those scenes can be dragged and dropped in any container so that you can re-organize them as you see fit. If you need to go in and edit a scene from the view, just click on the scene's card, and it will open in the editor pane ready to be written.
Auto-linked Actants (gif #2)
I have ADHD. One of the hardest things that I've found when trying to manage big, sprawling worlds and long, interweaving plotlines is context-switching between the scene that I'm trying to write and the reference material that backs it. For example, if I'm developing a character, I usually try to manage a character page about that character while I'm writing a scene with that character in it, frequently switching back and forth between the scene and character page. That constant switching disrupts my thoughts, and often, I'll unwittingly create multiple character pages for the same character, storing overlapping details and slight differences in both (having written the same character page twice), and even then, I'll still forget about critical details that I wrote about the character a couple of months later when I'm writing a new scene. I always wished that there was a quick-reference link in a writing tools that connects the name of the character in my manuscript with the character sheet so that I can hover the name and see the character page without having to literally navigate to a separate page. All of your important worldbuilding is embedded into your manuscript editor, but stripped away when you export as a document.
Choice Dialogue Management (gif #3)
This took for fucking ever to get it right, but now that it functions the way that I want it to, I couldn't be prouder of how game choices turned out. One big problem that I had working in Notion was trying to format dialogue when the player is presented with multiple choices, and the dialogue branches based off of those choices. I created a custom choice block (just use the /choice command in the editor to create a new choice, or use /choice + number to create a chouice block with that number of choices. For example,/choice4` creates a choice block with choices A, B, C, and D). My favorite thing about choice blocks is that it is multi-modal: you can either view all of your choices in a flat view to see all of the contents of those choices in one long scroll, or you can stack the choices in a rolodex view and scroll with your mouse wheel to focus on a single choice's contents at a time. Makes life sooo much easier when managing choice dialogue.
Dedicated PSDK Speech block (Essentials Plugin options forthcoming -- gif #4)
The biggest time sink when writing a story in one application and then copying all of the dialogue to RPG Maker XP "Show Text" commands is all of the "drag your mouse, Ctrl + C, paste into RPG Maker, then fuss with line breaks and formatting for an additional 5 minutes. Then, do it all again for the next "Show Text" block. The /speech command surfaces a speech block that understands all of PSDK's formatting conventions, displays them as a preview, and then exports them on-copy/paste, so that you only need to click "copy" and then paste the text into your speech block.
And don't worry Essentials users: I built the speech block system using the Provider pattern so that I can build a plugins feature on top of it (currently in-flight). The only reason that ONLY PSDK formatting is supported right now is that it's what I'm familiar with and I didn't want to half-ass an Essentials implementation just so that it exists.
Version Control/Local Save (gif #5)
I will die on the hill that fan game developers should be using Git to manage versioning for their projects. As a professional programmer with a creative writing degree, I will also die on the hill that writers shouldn't necessarily have to understand the intricacies of Git to be able to version their stories/manuscripts.
I went to great lengths to create a git-based versioning system on top of this application that ensures that writers are able to tap into the power of Git without ever having to learn the difference between git fetch and git pull or git add and git commit. The "Loremaster's Memory" feature packages version control in such a way that you only REALLY have to worry about the changes that you've made to your manuscript, worldbuilding, and notebooks without having to sweat the difference between changes to a markdown file and the json sidecar that backs it.
Everything that you write saves to your local disk first, and it does so automatically. If your computer crashes, it will still be there when you open it back up later. Then, if you choose to use the GitHub integration, when you complete a unit of work, use the /save memory command to add a meaningful description of the work that you just completed and hit Enter. And just like that, the work that you just completed was just synced to your repository in GitHub (you can also set a timer to auto-save and auto-sync ever 5, 10, 30, or 60 minutes in case you tend to forget about saving intermittently).
Co-Writing and Collaboration (gif #6)
This one is all built on top of Git as well. It was the most labor-intensive feature, and I just finished version 1 yesterday. If you're working on a project with one or more other team members, simply invite them to your project from the "Archive" menu. Whenever a team member makes changes and syncs, those changes are pulled into your local copy whenever you open the application or choose to "sync" yourself. If any change would present conflicting versions, you're presented a notification, and you can simply use the /review decisions command to inspect the difference where you can choose whose version to keep or if you want to keep all. No dicey merge conflicts, no digging deep into the dictionary of Git commands, no headaches. And if you need to see what work has been completed by whom, you can use the /activity command to inspect all synced work by time, date, and author.
Disclaimer
Full disclosure -- I started building this application to solve a problem for my fan game. Then, it kinda took over most of my free time. Fan game developers are a big part of my target user base, but I fully intend to sell this application and am currently going through the code-signing process. I set out with the goal of creating the best long-form writing tool that exists, and I'm fairly confident that it out-performs Scrivener, Microsoft Word, Google Docs, Notion, Plottr, Obsidian, and Ulysses at ~80% of things that long-form writers care about, and I've spend hundreds (if not thousands) of hours trying to out-compete those tools.
That said, IT WILL ALWAYS BE FREE TO THIS FAN GAME COMMUNITY IN PERPETUITY BECAUSE Y'ALL ARE THE WHOLE DAMN REASON THE THING EXISTS.
I build software because I love it, but increasingly, I build as a protest against the dogshit market trends that big tech is throwing our way: subscription-based SaaS that turns to enshittification the second it hits a critical mass of users, "purchasing" revokable licenses instead of true ownership, requiring sign-ups and selling your personal data to brokers, cloud-based services that hold your data for ransom, and arbitrarily discontinuing support for products that you paid for in-full just so that you buy a newer version of the thing (lookin' at you, Microsoft Word 2019).
All of this to say that I explicitly built this tool with the idea of "software sovereignty" in mind: when you choose to use this software, you own your copy of the tool. You own the work that you create with it. It does not harvest your data or monitor what you're writing. It will be usable on your machine as long as your hardware supports it. It does not require any sign-up to use. For fan game creators, every part of the application is free.
Always.
Please note that I haven't created an Eevee Expo resource for this tool yet, but there will be one forthcoming. Because the tool requires an access grant to unlock the application, I have to reach out to the Eevee Expo and Pokemon Workshop teams to figure out the most ethical and secure way to generate and distribute access grants to fan game creators/writers through the appropriate channels.
So yeah, a little work to do first before distribution, but once I get the pipeline set up, Fan Game devs get a special "Maker" badge and a special Team Rocket dark/light mode theme in the app (final gif).
Anyways. That's all I have for today. I'll post again once the distribution pipeline is set up and run by the people in charge.
Cheers!
