Introducing: Threadspun
My newest development project.
Threadspun Dev
To create original, fun, and rewarding games.
This is something I’ve been putting together for about a year now on and off, as well as working on the first project for this initiative as will be detailed further down.
With College looming on the horizon,
I’ve found it quite difficult to keep myself composed and on-track with just one project. Late 2024, as I was sending out my first wave of college applications, I figured I needed something to put on a resume to make myself look more appealing to the college admissions boards. That something ended up being In Pursuit of Paradise, my only published game on Itch. It was lackluster, buggy, relied on purchased code, but it was mine nonetheless and an important stepping stone to becoming a better and more original developer. It had little to no reception. It plays as a little dungeon-crawling rogue-like with mouse-based swinging controls and took six months of my free time to develop. When I didn’t get accepted to the universities I aspired to, due to my own over-ambition in my application process, I decided to take a gap year in my home town and focus on creating new things and finding new opportunities.
After In Pursuit of Paradise, I decided my next best move to make some quick cash was to start selling music packs for use in video games, allowing developers a drag-and-drop solution. However, this was short-lived. I never reached a single sale despite putting another six months into this project. At the end of the day, the one thing I gained out of it was a newfound sense around music theory I didn’t have before. You can see some of these tracks here.
Finally, I tried one last thing. I wanted to make clones of popular mobile games, but make them ad-optional and rely entirely on donations. I got to the end of completing two separate games. One named “Bullet Hole”, where you collect bullets from a pre-generated level in a Hole.io sort of fashion. Once completed, Bullet Hole became corrupted due to a Unity Update and found itself in an unsalvageable state. The second, named “Color Bounce", was an obvious copy of Color Switch. Color Bounce was entirely ready for publication, but publishing a game to the app stores is not as easy as it seems. Every export to Android devices ended in corruption, so Android was off the table. I got further into publishing to the Apple store, but as it turns out, they aren’t too happy about donation-only ad-optional games as it damages their revenue. Even after the Epic Games vs Apple lawsuit, getting donations without Apple taking an exorbitant cut was almost impossible. Then, every attempt to get the game approved was struck down for one odd reason or another: incorrect language when referring to donations, making ads optional / incentivizing ad viewership, and more. On top of this, apple required use of an out-of date software on an apple machine to publish to apple products, as well as a 100$ payment per year to keep the app published. At some point I decided that it was no longer worthwhile to continue pursuing app development.
Eventually, I found myself unsure of my next steps and where to go. Everything I had created I failed to be proud of. For almost a year, I was stuck in a creative slog of starting new projects and abandoning them the week after. I got a job at a local failing restaurant and stayed relatively still up until the start of 2026, waiting for the new college year to open applications in August.
But then,
with 2026 beginning a new chapter, my father and I had a long discussion about game development and how fun it was to code the very messy and entirely broken Error 401 together. My dad was always more of an art person than I was, and I was more entangled in the Unity universe than he was. So we came up with a new arrangement, creating a new game with more organization and experience than either of us had attempted previously. As a personal spiritual successor to In Pursuit of Paradise, we began work on a new card-based dungeon rogue-lite.
The idea is simple, the player draws a card, then the house draws a card. Each card has a unique effect on how the dungeon generates, the enemies behave, and the player interacts with its environment. The first hurdle was the dungeon generation system, which took a solid two months to iron out to a playable state. Then, combat and boss battles. Finally, the lobby and card system. All is completed now, and the game has officially entered its closed alpha phase. He will be publishing under the name of Mastermind Interactive, at least as of right now. I will be publishing under the name Threadspun Studios. (Calling it a studio is a stretch. It’s one desk with a lot of wrappers and cans on it).
For the dungeon,
In Pursuit of Paradise used a pre-made purchased dungeon generator from the unity asset store. It was buggy, old, and didn’t quite fit my vision for the kind of dungeons I wanted for this new project. The dungeon generation system itself is fairly simple. The dungeon is made up of individual rooms with loading zones between each, in a Legend of Zelda format. Each room, however, is entirely randomly generated. It starts with a single room segment, which has spawning points for enemies, obstacles, treasures, and other room segments. The room segment spawning points are in each cardinal direction from the room segment itself. Then, the system simply picks spawn points to generate new room segments and therefore new room spawn points for however large the room is supposed to be. After that, the room segments had to decide whether they were adjacent to another. If so, they would delete the wall segment separating them creating a large open room with outside walls. The room generation script relies on a number of preset algorithms to generate each segment. Some rooms may be grand halls, others, small corridors.
Obstacles and treasures were easy, simply picking an aforementioned obstacle or treasure spawn point and spawning the number of each that the dungeon desired. (Of course, this is all modifiable via the house’s dungeon cards).
The last obstacle was the door generation system. I chose a rather complex method to finding out where the player should enter and exit from each room in a way that made sense and allowed for the player to routinely accurately predict where they were to enter and exit a level despite not seeing either door ahead of time.
Simply put,
understanding the door generation system is a walk in the park. Follow along with my terrible MS paint walk through above for a clearer picture. Keep in mind that the left-right doors were scrapped and the dungeons generate entrances on lower walls and exits on higher walls now. The logic remains the same.
First, we want the algorithm to prioritize selecting hallway-like areas for the entrance. My reasoning here was to create an experience where a player may walk through a tight corridor that eventually opens up into a large, expansive room. The corners check how many floors it borders to determine if its an inside corner or an outside corner. The inside corners are useless for our purposes, and are thus discarded. Each corner segment in the room then decides where and how many wall segments surround itself. This is is re-used in the logic that assigns each corner sprite dynamically depending on where the corners lie in relation to the greater room.
Next, the dungeon sorts each corner segment by its number of adjacent corners. If multiple corner segments have the same rank, the dungeon will select the furthest down and left corner of the bunch. This will be our anchor as to where to place the entrance door. The dungeon gets a list of every right-facing wall in the scene, and then selects the one closest to the chosen corner. This leaves us with our entrance door, routinely in lower-left hallways and corridors.
Lastly, and rather much more intuitively, the exit door selects the furthest left-facing wall in the dungeon. This way the exit door is easy to find simply by walking in the opposite direction from where the entrance spawned.
During this time,
a lot of progress had been made on the art side of things via my father’s half of the project. As it is his artwork and my website, I don’t feel at liberty to share his work. He decided on a comic-style dark gilded aesthetic to begin with. The player is a shadowed cloak with removable hands for swinging. The rooms are floating platforms above an empty, stormy abyss. He designed the lobby as a dying pub where the bartender hosts a quiet, card-based dungeon game for his patrons. There is a shop to rip card packs and purchase cards. There is a statistics menu where you can see your run history. But most importantly, there is a bathroom.
Over the months, the pub and the dungeon world art has gone through a number of changes and alterations in order to make it fit perfectly into this gloomy world. The palette selected was AfterImage’s wonderful Nanner Pancakes.
Next,
I began work on the card system for the game. It was and is my only interaction with SQL and databases. The system is admittedly terribly disorganized, following only few of the many rules for keeping SQL looking pretty and functioning well. But it does function, in part due to echo17’s SimpleSQL. (As opposed to the dungeon generation system earlier, I was perfectly okay with outsourcing the setup for SQL management). Unity’s scriptable objects might be a strong solution for things such as items or inventories (which is what I used for In Pursuit of Paradise), but it becomes ever increasingly difficult to handle when the object count reaches the hundred mark. A database to store card information in was the obvious choice. It also handles save data well, too. It took around two months, but eventually I had the card system worked out.
To keep things interesting, the game features a “wildcard” system. There are dungeon cards in the later parts of the game that the house will not reveal to the player until a percentage of the dungeon has been completed. You may complete half of a normal dungeon, but then at the half-way mark the dungeon may gain the “Giant’s Toe Fungus” card, which makes enemies both larger and slower. Of course, all cards that effect enemies also effect the protector of the dungeon, the final boss before the exit portal.
We’ve reached the modern state of the game. The dungeon generates, enemies attack, and cards influence the world. (I’ve left out the enemy logic as it is a fairly straight-forward state machine system). It’s been an insane seven months of development, breaks, and progress. Originally, when I set the scope of the project, I figured it would take only four months to complete. Within the first four months, the only thing completed was the dungeon system. It’s definitely a lesson on scale and expectation.
As of recent, I’ve taken up the responsibility of drawing up the art for the over one hundred card in the game, which itself has taken a majority of the last couple of months of development. Some samples of my finer pieces (if they can be called fine) are below, as well as descriptions of each one’s effect on the game world. You will notice there are considerably less dungeon cards for the time being. This is to reduce scope creep for the first builds of the game.
Player Cards
Provides a player advantage.
Blunt Force Trauma
Hit enemies are paralyzed for a number of seconds, depending on the card’s rarity.
Broken Bottle
A low damage bleeding weapon with a fast speed.
Capture Cube
Allows the player to capture, tame, and release enemies.
Eyeball Dice
A consumable that has a 50% chance to increase all stats by 10% or decrease all stats for 30% for a number of seconds reliant on the card’s rarity.
Fleshy Lance
A weapon that builds damage as the player runs faster.
Great Armor
Decreases the amount of damage a player takes on each hit.
Nice Perfume
Decreases the number of enemies in each room.
Pill Box
Gives the player extra health, like a heart container from The Legend of Zelda.
Time Cherries
A consumable that slows down time for a number of seconds depending on the card’s rarity.
Vampire Tooth
Lets the player steal health from an enemy for each attack.
Dungeon Cards
Makes the dungeon more difficult to progress.
Disorganized Warden
More obstacles will spawn in the way of the player per room.
Dungeon
The dungeon is larger. This is part of a four card set that increases the length of the dungeon: Crypt, Dungeon, Catacombs, Labyrinth.
Enigma Cards
A rare type of dungeon card that severely impacts the flow of the game.
Barkeep’s Eye
Every 20-30 seconds, the barkeep’s eye will float past and damage the player if it detects them moving.
As we near the end of Alpha,
and as college approaches in just 34 days, I’ve had a lot of time to reflect on the past seven months and what they have meant to me. Something I’ve had to come to terms with is the inevitable failure of any given project I set my sights on. But that’s simply the way things are in today’s market. You never truly know what success you will find until you’ve reached it. That might sound sad or even pessimistic, but it reframes this project with a lot of love and sincerity. I am not developing for the sake of making it out rich, famous, or even any better off than I was seven months ago. I am developing this game for the sake of developing it, for the sake of having something I can say I had a hand in creating. I feel like that is something I’ve always craved.
I’m terrified of moving over two hours away, terrified of leaving behind friends and family and the town I’ve lived in for over a decade now, but it’s all a part of a more important growth. Just as this game has taught me new things about my skills and about myself. Otherwise, I would never have began drawing again to work on card art and unlocking a new skill set that’s been lost in me for years, or have gotten better in developing procedural worlds that change from your input and action. I cannot tell what the future has in store for me or for this game, but it feels overwhelmingly positive.
There may be a world in which I am the only person to read this, or the only ones who do are friends and family who remember to check an old website I made as a portfolio. There may be a world where people look back at this and reminisce on where something larger began to take root. For either I am happy.
This is a love letter to an art I know I may never master, and a market I know I may never break into.