-
Notifications
You must be signed in to change notification settings - Fork 61
Description
Hi everybody! Now that Notan 0.13.x is out, maybe it’s time to think about the next steps.
For those who don’t know, Notan started as a side project around 5 and a half years ago. It grew slowly over time, shaped by both personal interest and community feedback.
I'm going to be very straightforward about my status. Half a year ago, I took a "leave of absence" from my job to work on personal stuff while trying to create games (commercial projects) using Rust. During that time, I started working on an improved version of Notan (using wgpu, faster compilation, better API, potentially better platform support, etc...). But it has diverged so much that I’m not sure if I can reconcile the two projects anymore.
Making games is my main goal. I’m putting in both time and money to make that happen. That means Notan isn’t my priority right now. And if I’m not using it actively, working on it starts to cost me quite a bit, especially now while I’m still figuring things out.
What options do I see?
- Just leave Notan as it is
- Add more admins to the project
- Reconcile with my current needs
Just leave Notan as it is
This would mean no more work on it, unless some bugs show up. It’ll remain usable, but eventually, it might break or start causing inconveniences due to outdated dependencies.
For example, Notan's winit is two versions behind, and while there are a lot of nice improvements in the newer versions, updating at this point is pretty hard.
Add more admins to the project
So at least someone else can handle minor updates or maintain the repo while I focus on my other work.
Reconcile with rkit
This would be the ideal option, but there’s still a lot of experimentation going on on my side. For example:
-
Inner crates use a global API, see this example:
https://github.com/Nazariglez/rkit/blob/main/examples/draw_rectangle.rs#L13 -
The app wrapper uses Bevy ECS to manage resources, see:
https://github.com/Nazariglez/rkit/blob/main/examples/app_ecs_bunnymark.rs
In theory, this could be used similarly to how we use Notan today, but instead of passing &mut MyState into the update function, you’d use ResMut<MyState>.
That said, I’m still figuring out which approach fits me best. The global API is great for fast iteration and prototyping. But when building bigger games with lots of resources and parallelization, a custom API inside the ECS makes more sense (at least for my needs).
Important:
- If we go this route, it’s very likely that the next version of Notan will come with breaking changes. There the 1.x version.
- Also, just a heads up,
rkitis not a Notan replacement. It's a personal experiment that fits my current needs, so I wouldn’t recommend using it.
So... what’s changed?
The APIs and general workflow are similar to Notan, but there are a lot of added, missing, or changed pieces. Some highlights:
On the upside:
- WebGPU support
- Probably mobile support soon™
- Faster compilation (no more glsl-to-spirv steps)
- Better 2D API and post-processing support
- A more thoughtful and performant design overall
- Etc...
On the downside:
- No
lazy_loop - No
eguisupport - No file dropping
- No 2D masking
- Probably a few other things I’m forgetting
The downsides are mostly because I’m not currently using those features in my own work, so I haven’t prioritized them yet.
Final thoughts
And that’s where we are. I honestly don’t know yet what I’ll do, or what the community would prefer. I’m really open to discussing any of these options, hearing your thoughts, and seeing where things could go from here.
I hope you understand my situation. Right now, I don’t have the energy or time to fully commit to maintaining Notan as I did before, so whatever we decide, it will likely take some time.
Thanks for reading, and thanks for sticking around all this time.