My first third party integration!


Using yWriter, I started feeling really frustrated with my experience using word processing tools in game engines. They’re often shipped with expansive functionality, but very little in terms of an accessible user interface in the vein of a dedicated word processor. I really love the modular focus and variable application of yWriter7 for writing game narrative. In the past, I’ve tried tools like Twine, but even that was clearly designed as a tool for prototyping, not something easily implemented as a direct interface for comprehensive word processing. The more I analyzed my frustration, the more I realized that most software will always prioritize its intended function. As expansive as game engines are, their primary function is to make a game playable and ship it. That’s what they exist to do. The organization and accessible processing of something like yWriter or Scrivener, as suitable as I think those systems are for game narratives, isn’t something that would be worth the development time for a company like Epic or Unity. And when you step back and think about it, that makes sense—no one is picking up Unreal Engine because they want a word processor.

So, this weekend, I decided to see if I could construct a simple parser for the yW7 file type, which is structured as an XML file. GDScript has a built-in parsing function for XML, but because of my rather novice understanding of the language, it was actually easier to manually parse the data by looking for the appropriate headers. I ended up writing a custom parsing script to translate the project file, and honestly, this felt like a groundbreaking feat for me. Typically, if I want something to function as an intermediary between two software products, I use someone else’s tools—whether that means sifting through or unpacking files for modding, or importing things into Blender. I’ve never been the person to develop my own integration tool purely for efficiency reasons. And I think that’s partially because there’s already such a rich and wondrous community of developers making all the tools I could possibly want.

But making the decision to build this tool, rather than looking for one or assuming I couldn't, was actually a direct result of my experience at the beginning of this project when I was making the laptop functionality. I find it hard to trust that the code I write will follow the protocol laid out before it, but that’s literally what code does. I know this, logically. But for some reason—possibly because of my ADHD and other executive functioning issues—data feels so abstract sometimes that I can understand what I want it to do, but I can’t always see how to initiate the chain reaction. Writing this parser forced me to trust the process in a way I haven’t before. It wasn’t about reinventing the wheel or making something overcomplicated—it was about breaking down the problem into something I could actually work with.

And of course, as I was working on this yWriter parser, I started adding more and more functionality because I couldn’t help myself. I realized that my favorite way to write narrative is to literally write a book—it’s what I did last year when planning out Bloom, and I really fell in love with the freedom of writing dialogue and mise-en-scène together. As I got more detailed with the parser, I started separating the dialogue, character data, and scene data into their own arrays, which I can then compile for the dialogue manager and the narration manager to load from the same file. This means that I can write the entire story in yWriter7 and have minimal manual input into Floppy/Write.

It’s funny how simple the logic can be behind opening a door into an entirely new world of productivity. Something as base-level as reading a string within a string can open the floodgates for so many other executions. I guess that’s really what clicked for me—understanding that the process isn’t as mysterious as it feels sometimes, and that I can build these bridges between tools myself. It makes me wonder what other third-party tools I could integrate into Godot now that I’ve actually done it once. The abstraction that used to make things feel impossible is starting to feel like potential instead.

Get Floppy/Write

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.