Greetings Forge community, and welcome to the ninth edition of our Stars of the VTT Galaxy series. This regular interview series is meant to shine a light on the already bright stars that make up our community of Bazaar Creators.
This month, we were fortunate enough to interview TheRipper93 during his seven- hour bus ride in the middle of his vacation. TheRipper is an incredible and prolific module developer, currently maintaining over 40 software modules for Foundry VTT. Some of them are simple, such as a revived module that displays initiative similarly to Larian Studio’s Divinity series. Some of them are ambitious beyond belief, like 3D Canvas, which adds full 3D map support to Foundry VTT.
If you use Foundry VTT modules for long enough, you’ll probably install and use one of his modules at least once. It is no wonder then that he has made a career in Foundry VTT development since 2020. We are proud to present our interview with TheRipper below.
Our sky consists of many stars. Each of them illuminating our planet. As you can guess, the stars are you. Yes, it's you, the great content creators who, in your own unique way, shine on our worlds. Thank you for being part of our heavenly sky and weaving the fabric of our Community.
Let's meet today's star.
Introduce yourself. For those who don’t know what you do, what would you describe yourself as doing for a living?
TheRipper: Heyo! I’m TheRipper93 and I’m a module developer for Foundry VTT. I make both free and premium content via Patreon. I was formerly a cook, but now I do module development full-time, thanks to the amazing support from the community!
What’s one random fact about you?
TheRipper: I guess… to the contrary of what many might think, I had zero formal or hobbyist training in programming before doing module development.
That’s interesting! Stemming from that answer, what’s your history as a developer? How did you end up becoming one?
TheRipper: Well, in my high school years, I used to toy with dark basic and game maker. Somewhere buried in the deep are a couple of games I made. That said, it was all visual blocks, with very little to no coding.
I kinda left behind that passion for more than 10 years and found it again during the pandemic by toying with Foundry VTT. I kinda went from there. Little known fact, before starting development on my own modules, the first thing I did was help grape_juice rewrite and update the isometric module for v8.
I remember that module! It had a really cool showcase adventure.
TheRipper: Yes, I think that was what hooked me into the more canvas-oriented, and complex modules in the beginning.
That said... Before modules, my gateway drug was MidiQOL macros.
And how did you end up getting into developing modules for Foundry VTT?
TheRipper: Well, after what I learned with the isometric module, I had a pretty good chunk of canvas-oriented knowledge, so I started making modules.
Generally, there are 2 reasons why I make modules:
1. It’s something I personally need/want in my games.
2. I like the challenge.
What led you to create a Patreon as a third-party module developer for Foundry VTT?
TheRipper: Hmm, I think initially it was kind of “as a joke”. What I mean is, that I was making free modules and a lot of other developers had similar donation channels, so I was like “might as well”.
With time, I started offering some exclusive modules to Patreon subscribers, and before I knew it, I was somehow making a living out of it.
Nothing about it was intentional. I guess it was the right place, the right time. At the same time, with COVID and other economic issues in Italy, being a cook started becoming harder and harder (terrible shifts for pocket change), so I think I got quite lucky. A lot of people in my former trade moved to other lines of work as well.
You state on your Patreon that you took a lower-paying job to become a full-time Foundry VTT module developer. Would you say that this has been a good personal decision?
TheRipper: Yes, it definitely did. I moved to a part-time position to have more time for development, and it definitely paid off. I mean, my finances are pretty public so you can easily see that I make a decent living out of Patreon (although the numbers you see are before taxes).
The next question is from KaKaRoTo. Here it is: “a”.😊
For readers unaware, this was an inside joke within the developer community that began with requests for TheRipper to include more detailed notes about updates to his modules. He responded to the request with “a”.
TheRipper: Heh heh. That has become quite the meme.
So, it’s really simple. I don’t have formal developer training, and I work alone. I also have a pretty good memory so I don’t really use the commit messages. What I do is I use the commit button of VS Code basically as a “Save to cloud” button. So a lot of times I will commit like 1 line change or something stupid multiple times a day.
Generally, if it’s a team project, I will use better commits, and I’ve also started writing change logs on my projects recently. So that’s an improvement, heh heh.
But yes, I have many bad practices that I suggest everyone avoid. Do as I say, not as I do. The code is of good quality though, albeit with 0 comments.
Let’s say TheRipper is deciding to pick up yet another development project for Foundry VTT. How does that happen? How do you end up creating yet another module?
TheRipper: Well, at this point I have more than 40 projects, so I try to avoid picking up more, but as I say this, I’m in the process of releasing a new premium module. Generally speaking, it’s either some random idea, something I saw in a video game, or something a user suggested on my server.
For example, projects such as Argon came from playing Solasta. The module is basically a 1:1 copy of the game’s HUD.
Also, at times I’ll make my own version of modules that have been abandoned. For example, Carousel Combat Tracker - so, spiritual successors, let’s say.
Foundry VTT is a rapidly evolving platform. How do you stay updated on the latest changes and ensure your modules remain compatible and up-to-date?
TheRipper: Well, since I do this full-time, it's not really that much of an issue.
Usually, whenever a new prototype drops, I’ll do a quick round of my 40 modules to see if there is anything obviously broken. If there is, I do a quick check and see if it's some prototype bug, or something else.
I have most of the code in my head for all my projects, so if I see something specific changed in the change log, I can remember which modules used that specific thing, and update it/remove it/fix it.
Generally, I'll do the actual update of the modules once the stable version drops. From the update, it takes me usually ½ day to update all modules. Except for 3D Canvas, which takes a week or so on its own (or less).
I used to have updates ready right when stable dropped in the past, but I've learned that it's just way more extra work for 0 gain, as basically, no users will update the day the stable drops.
What is your favorite currently-maintained module that you develop?
TheRipper: That has to be 3D Canvas. The size of the code base for the module is around the size of all the code bases of the other modules I have combined.
I just love working with 3D, and as a project it had me learn a ton of stuff.
Your 3D canvas module is one of the more ambitious modules you’ve worked on. What did that look like in development? What kind of challenges and issues did you face in creating it?
TheRipper: So, for starters… In the beginning, I had no clue how to use a 3D library. The module actually started as something completely different called “Levels - 3D Preview”. Its goal was to visualize a map made with levels in 3D. It kind of went from there piece by piece - if you were to examine the code base, you can easily see what was written at the start and what is more recent, which is pretty neat.
The biggest challenge has for sure been learning the 3D side of things. From working with the formats to understanding what eats at performance, what are the limitations, and how the rendering pipeline works. It was all very challenging and very fun.
In terms of the integration with the Foundry VTT back end, I don’t think that was the hard part, except maybe the fog of war. It was mostly parsing the 2D data in a 3D environment, but I want to say that was the most boring/trial and error part. Then, outside of that, in terms of challenge, a ton of performance optimization.
Running 3D in a browser is more expensive than a dedicated application (such as using Unreal Engine/Unity Game Engine). But it has massive benefits because it’s running on the web.
For sure. Joining is a lot easier, for one.
TheRipper: Yes, no downloads. And it integrates seamlessly with Foundry VTT. You could not do that with a dedicated application.
These days, there are a lot of 3D VTTs available. But none of them (that I know of) is actually good for playing the game. For most, you need a separate VTT application because they have too basic or nonexistent system support. If you find one that has good enough system support, it’s gonna be D&D 5e. So if you play something else, you don’t have many options.
In the world of module development, compatibility with other popular modules is very important. How do you handle potential conflicts or integration challenges with other modules?
TheRipper: In general, I attempt to make modules that will have no such conflicts to begin with. To this day, I think my only module that needs integration is Levels, so I’ll speak about that.
If a developer needs to patch Levels’ functions to make the two modules work together, I’ll generally change Levels’ code to more easily accommodate the usage of the developer (this actually happened recently).
Otherwise, if needed, I’ll help out the developer in integrating Levels’ APIs into their module.
Generally, the more you patch Foundry core code, the more likely you will have this kind of inter-module conflict. Unless it’s strictly necessary, I avoid any patching. Considering the sheer amount of my projects, I collected very few incompatibilities/conflicts over time by following these guidelines.
Do you have any small module you've made in particular that you’d recommend people check out? Something not as grand as 3D Canvas or Levels, but still helpful?
TheRipper: Well, I do have many, but one of my recent releases, Carousel Combat Tracker, I think it’s pretty cool, both visually and functionally. And if you don’t want to dig into the configuration, it’s plug-and-play.
In the same vein, Splatter is also pretty cool!
The first auto-converts files you upload to webp/ogg/webm. The second lets you do quick drawings on the canvas by holding a key they fade out after 15 seconds or so.
I'm sorry, I have so many that picking one is hard.
Do you have the opportunity/time to play games by yourself? If so, what game systems do you play? We think it’s unnecessary to ask what VTT do you use?!😊
TheRipper: Yep, I DM for two campaigns (three, sometimes). I mainly play D&D 5e nowadays, but I play/played Call of Cthulhu, Sine Requie, and some others. I plan to run a Crucible game (upcoming official Foundry VTT system) once it’s finished.
What features or what kind of improvement would you like to see further developed in Foundry VTT?
TheRipper: I’ll be honest, I’m pretty happy with the feature set.
I think a more solid and stable API for long-term module support is very important to have. A lot of developers are hobbyists, and often can’t keep up with the updates. But I think Foundry VTT is already moving in this direction.
Also, I would like to see core Levels support. It looked pretty close when I was developing Levels, but it never arrived.
Do you have anything you want to say to the greater TTRPG/VTT community?
TheRipper: Well, if you want a feature, you can do it! Anyone can learn and play with the Foundry VTT platform.
Also, I want to give big thanks to all the community that helped me at the beginning of my journey and still helps me to this day!
I live in the Foundry VTT bubble, so I don’t have much to say to the wider community.😅
What advice would you give to aspiring module developers looking to start creating their own modules for Foundry VTT?
TheRipper: Start simple and learn the basics of development alongside your module journey. There are a lot of community members ready to help you out if you get stuck. If you can, a great way to start can be reviving a module you like that has been abandoned.
What are your plans for the future in general?
TheRipper: I don’t have big plans, to be honest. Keep doing what I’m doing until I can, I guess. 😅
I am considering getting a formal education in development though. Since I’m not sure that I’ll be able to do this in the long run, it would be nice to have to pivot into other coding jobs if necessary.
Alright, that’s it from us at The Forge.
Thank you so much for lending us your time!
TheRipper: Cheers, it’s been a pleasure! It made my seven-hour bus ride a bit more bearable.😊