History
Updated a day agoHistory
I would like to use this page to sort of look back and give context to the creation of LCGoldScrapMod, as some very extreme changes have taken place throughout the project, and it was not even a mod made by an experienced modder to begin with. Having said that, I'm just kind of going to wing this lol.
The Idea
To start with, I did not know how to code and/or create games before I started working on the mod. I had only touched tiny bits and pieces of Unity, and tried to stay away from C#, so I can't stress enough that I didn't know what I was doing when I first planned on making this mod. As a matter of fact, my first mod used CustomSounds, and I still managed to mess it up (here you can see that the first ever change to that mod was me having to fix the freaking folder structure, of all things).
But! I wanted to change that with LCGoldScrapMod. I wanted to get more hands-on experience in C#, so I tried the first generic idea that came to mind: creating golden versions of vanilla items. All it needed was a gold texture, the basegame models, and a BepInEx plugin to pull it all together. However, I would have simply decompiled the models, added them into the game using the other "easy" CustomSounds-like mod LethalLib and its pre-made Unity Template, and put them on Thunderstore. But from this page on the modding wiki I learned that that is a less than bad idea (which, looking back on it, I really should've guessed earlier...). So, I had to find a way to load these models through code, legally.
The Test Release
One month and a LOT of online searches later, I combined a few solutions to try to access the game's assets without breaking the law: reading them from HarmonyPatches and then saving them locally. Since I knew HarmonyLib from my first two mods, the best solution I was aware of was to Postfix every single item's Start functionality, and see if it was the model I was looking for.
If it was, I would save these models and sounds. Literally. I used XML to save the massive, massive blobs of data that created the 3D models and sound effects. Needless to say, this slowed the game down every time it saved. And on top of that, if a gold scrap item spawned of which the assets hadn't been found or loaded through save data, I would despawn it.
Again, needless to say, the Test Release (v0.9.0) was not very performant. But I wanted this 2-month project out the door, so I could get additional feedback as well, so I posted it.
The Full Release
Now, in game development there is a term called "smoke and mirrors". I don't know what it means. But I think the fact that people didn't see through the abhorrent performance is similar to what that term means. So, for the Full Release of the mod (v1.0.0), I decided to roll with it, as I did not have any alternatives.
But I did have one point of improvement: finding more valuable scrap is nice, but there's nothing more valuable to spend it on. So, for the full release I decided to add something to spend your newly hard-earned cash on: new store items. This took on the first version of the Gold Store, sporting nothing more than Gold Nuggets, Gold Suits, and the Golden Throne. These were last-minute additions, so I didn't intend for them to be game-changing, but I did want them to incentivize people to take collecting gold scrap a bit more seriously. In v1.1.0, I would make the Gold Store a bit more accessible by adding the Bronze- and Silver Suit, cheaper alternatives.
The Items List
Fast-forward to v1.3.0 (which apparently was only uhhh a week later, time didn't fly I guess), and a new version of the mod dropped that also dropped the biggest hurdle so far: the save data. Turns out there is already a list of all items in the game's code, that I could access to read their models and sounds and everything from, so I didn't have to wait for them to expose themselves using HarmonyPatches.
This brought along a bit of communication about how the mod would now work, but was overall a net positive, as it would not lag the game every time it tried saving the items. This also meant items wouldn't despawn anymore if their asset hadn't been found, since I would already know that after reading the Items List once when you load into the game.
The Independence
However, gold scrap still wasn't appearing that much. I wasn't being despawned anymore, but some levels seemed to spawn no gold scrap at all. Thinking it weird, I looked at the spawn rates of gold scrap in each level, but instead found out gold scrap... wasn't even registered in half the levels, despite me following the LethalLib documentation as best I thought I did.
So, v1.4.0 dropped something else: the dependency on LethalLib. Knowing that there was an Items List, and now knowing where to see all scrap that could spawn in a level, the mod would now access those pieces of data and add gold scrap to them by itself. This helped the mod stand out a bit, but was generally more of a "under-the-hood" change than one you would see when playing the game. Aside from the fact that... gold scrap actually spawned now.
The Customization
A month later or so, v1.6.0 would release. This update added something people justifiably asked for when playing with the mod: compatibility with modded levels and configurable options. The mod already had a few config options, but only to use meme sound effects.
This update added the ability you to alter how much you wanted gold scrap to appear, on what levels, and how much you would like it to be worth. It was now also possible for gold scrap to appear on moons added through other mods, alongside some options of how rare you would like the gold scrap to be and how much the modded level should cost before gold can spawn there.
These settings are independent from the other configurable options to change rarity and appearance, as I quite honestly also see this mod as "my experience". I didn't just make it for myself, but also like a little standalone game with intended emotional experiences and gameplay scenarios and a scaling difficulty. Something that would become more apparent over half a year later...
The Expansion Update
v2.0.0 was a massive undertaking, adding 20 new gold scrap items and 15 new store items, and it was fully intended to challenge myself to learn Unity this time around. v1 was made only in C#, using LethalLib's Unity template without really thinking about it. But v2 would be all about new experiences from new items with new functionality.
The first month of development was spent on refactoring all the code from v1, getting rid of more redundant data and functionality that really didn't need to be there, as well as planning and designing the new scrap items that would appear in the levels. The next month was spent on just making this new gold scrap. These scrap items were my first experiments with making new items, with the Golden Girl being the first item to be made, as her functionality is pretty simple, all things considered.
Then, somewhere at the end of September I would start on the new Gold Store items. These ended up taking 3 whole months to develop, and to try to maintain my sanity, I even started documenting my progress to reflect on where I was and how it was going.
And these items were meant to take my design and programming skills up another level, designing new items very purposefully for people to have specific gameplay interactions with, or with functionality I deemed impossible to create at first. But the progress on these items went very well, with the Golden Glove being the perfect way to finish it off.
So, v2.0.0 released halfway through December, and aside from a few bugfixes, that's where LCGoldScrapMod's history ends. For now...