-
Notifications
You must be signed in to change notification settings - Fork 14
Description
Hello everybody.
TL;DR: I am taking a break from Lighty. I don't know how long it will be. I don't know if that break will ever end. Thank you for your support <3
The long version:
Almost 3 years ago, my friends and I were playing a modpack. There were two known light overlay mods at that time, one that wasn't ported yet, and one that didn't work. I thought to myself "can't be that hard", and with that, Lighty was born on the 31st of July 2022.
I tried to keep Lighty simple. Ever wondered how Carpet Mode came to be? In one of the first iterations of the mod, I really just rendered colored carpets as an overlay (see the image below). And I really liked the idea of the overlay being a little bit thicker. That way, I could see if something could spawn on a higher ledge, and I thought this was very cool. This is how the "Light overlay, with a twist" was born.
Over time, I've added a number mode, a cross mode, because people wanted them. It was a fun little challenge, and I've explored some ways on how to create a good light overlay mod. I've tried to incorporate biome information into the overlay, but that didn't quite work because the client doesn't know the spawn conditions if you're playing on a server, so that never came to be.
Over time, I was curious: Would it be possible to render the overlay over the whole render distance? (Before someone asks, why you'd want to do that: For fun. More on that later.) That got me thinking about optimization. I was able to cobble something together, and indeed, it was possible to create a render distance wide overlay, even if it came with some big performance drawbacks.
Then, Lighty development got really, really slow. Previously I supported even snapshot versions of Minecraft, and now it may take some weeks until I've got Lighty ready for the latest and greatest Minecraft version. What happened? University got more difficult. I prioritized University over Lighty, and I still do. University is more important than mod development.
But also, something else happened. I didn't have fun working on Lighty anymore. If you want to, you can read though this note on my website to find out what went through my head in November 2023.
I maybe want to highlight some of the most important sections, that are still relevant today, and then add some more information which is maybe new.
There’s also another thing: Lighty has become kind of big. Not huge, but the most recent version has 4444 downloads on Modrinth at the time of writing—which is crazy to me. People all over the world are using something I made, something that I could still improve. There are also other people with great ideas that fit Lighty perfectly, and I love the interactions I had with other people that use Lighty—some giving me praise, saying that they love Lighty, some needing help with a problem they encountered, some having great suggestions for additions. For now, I didn’t have a single bad interaction with people using Lighty, which I am very greatful for.
Everything I said back then is still true today. Just with the small difference, that Lighty was downloaded over one million times on Modrinth, and almost two million times on Curseforge. Those are huge numbers. I know that there are many, many people using Lighty. People from all over the world. Way more than there were in November 2023. Which brings us to the next relevant section:
With that many people using Lighty, I just feel weird. On the one hand, it is totally amazing that many people are using it! On the other hand, it kinda makes myself put pressure on me, because I know its quirks and rough edges.
The pressure is quite high. I want to provide something that just works, something that people like to use. I do hear people telling me that they like, or even love Lighty. And that's really nice to hear. Something I created, used by so many people, and they like it. That's very nice. But, in my head, I can only focus on how Lighty isn't perfect. It isn't good enough, there are rough edges everywhere. Some are maybe just some things that only I would notice, and that don't matter to other people, while other things are making Lighty literally unusable.
But over time, the fun of programming slowly faded. Everything felt like work. It seemed like I got nothing done. I abandoned project after project. They just took way too long to implement, were too big in scope, and what started as a fun idea quickly became boring, tedious work.
This is still true. Except the abandoned projects. It's been a very long time since I've done any kind of side project. A lot of development feels like exhausting, tedious work. There is almost no more fun left in Lighty.
I want to now give additional context to my decision, with a timeline.
When 1.21.5 dropped, I had to rewrite all of Lighty's render code. Every single bit. That's how much changed between 1.21.4 and 1.21.5. It was a huge chunk of work. But, eventually, I got it to a state where Lighty worked on my machine! So I released it to the world, only to find out that it was completely and utterly broken on ARM Macs and some other systems. The issue was tracked in #89, if you are curious.
It took not only me, but also some of my best friends, a few weeks to narrow the issue down and figure out that it mostly affected ARM Macs. It then took a couple months until we were able to fix this issue. This issue, I cannot lie, had me thinking about just stopping working on Lighty many times.
But, eventually, with lots of help (thank you all <3), we've fixed it. And I was kinda hooked on Lighty development again. See, all those changes to Minecrafts render code, they weren't that bad. I actually think that those changes are very good! I do like the new render system. And with the release of 1.21.6, I did try to optimize Lighty further.
And I was successful! There was one change in particular, with which the overlay was able to be rendered on the entire render distance (12 chunks), on my laptop, and it was playable. This was huge for me. This was thrilling. No longer was "haha overlay goes brr" a fun little gimmick, that nobody would ever use because of waaaay to big micro-stutters when crossing a chunk border, but I could possibly have a render-distance-wide overlay on all the time! (Why would you want that? Again, because it is fun! More on that later)
I've released this version. A few hours later, I got reports that the overlay doesn't work. We relatively quickly figured out, that it was due to sodium. For those interested, you can look at #97. I do not blame sodium for this, the optimization I implemented relies on the render code internals of Minecraft, which is exactly what sodium rewrites for performance. I wouldn't expect that sodium would support or re-implement the method I was using, so I did revert the optimization, and searched for another way to optimize.
Well, long sub-story short in this already way to long story: I didn't find a way to optimize it, so I had to go back to the way things were before. In all honesty: This was soul crushing to me. All the fun, excitement, everything I felt while figuring out the optimization—gone. I was exhausted. This was, again, just pure work. No fun.
Regardless, I published the fix yesterday.
And today, I wake up to two reports, one on discord, one here on GitHub, where Lighty is now incompatible with Iris (or shaders in general? I haven't investigated further).
And this is it. This is why I'm taking a break. Because I just can't continue on like this, chasing incompatibility (ARM Mac) after incompatibility (sodium) after incompatibility (iris).
I'm not a programmer. That might be shocking to some of you, I know. After all, I program Computers to do stuff, how am I not a programmer? Okay, in that sense, I might be a programmer. But first and foremost, I am an electrical engineer.
You know what I'm certainly not? A graphics programmer. I have no clue about all those things happening in the render code of Minecraft. I slowly puzzled things together. But in truth, I have no understanding, no knowledge about that stuff.
This is why I don't know how to fix the iris/shader incompatibility. I only try some stuff, and if it works, it works, if it doesn't work, I am clueless again. Monke bash head on keyboard. Monke runs program. Monke tries again.
There is no fun in that. What's with all this fun talk? See, I want to say that I work on Lighty first and foremost because it is fun. And it can be fun, see finding the optimization above. But, right now, developing Lighty is more "no fun" than it is "fun". If something isn't fun to do, and you gain nothing else from it, why do it then?
And this is why I need the break. Don't expect me to answer any issues or to answer anything on my Discord for the next few months. Don't expect me to fix the shader issue. I don't know how. I don't want to fix it. Feel free to open a PR if you figure it out. I'll merge it.
I've heard that the next Minecraft update will be the fall update. Maybe I'm back from my break until then. Maybe not.
If you are a programmer, and you want to help improve Lighty, fix some bugs, whatever, feel free to do the open source thing. Fork, create PRs, do whatever you want as along as it is in compliance with the Apache 2.0 license.
I do promise, that I will be back. I just don't know when that will be.
Thank you all for using Lighty. It means a lot to me. I hope you can understand.