Initial thoughts on the candidates #24
Replies: 7 comments 55 replies
BevyThis one seems quite promising and modern, but also very immature, so waiting for feature parity might take a long time. Right now it doesn't even seem to support VR rendering for example, so if we were to consider using this one, we'd have to likely wait a good while. I think because of that it's not likely one we'd pick. |
GodotPotentially best candidate out of the "bigger" engines with large community support. The backing of community and even bigger companies is a really good plus. Main concern would be separating out the renderer itself and reducing overhead. The feature parity seems close enough that would likely be doable. The biggest plus is that it's a project that will likely keep getting a lot of support and work far into the future. |
RenderideProbably a top contender for a candidate given it's been designed for feature parity and can run majority of Resonite content with it looking nearly the same. This would speed up the phase 3 and 4 considerably and gives a lot of confidence in maintaining our principles of long term content compatibility. My main concerns are currently following: PerformanceFrom what I've seen this is generally lower than Unity based renderer at the moment, so I'd need to understand how this can be improved to at least match the Unity one. Long term maintenance/supportSince this is a custom project, another worry I have is that it would end up abandoned and we'd be relatively stuck with it. However it being open source and community making contributions towards it too alleviates a lot of it. However it's still unlikely to get a lot of movement like the bigger projects do from their broader communities, requiring more involvement from our end. It's not a deal breaker on itself - but would be if it meant that other concerns (like performance) don't get addressed. If we go with this candidate, I'd like us to potentially onboard DoubleStyx to collaborate more closely AI usageGenerative AI was used at some point to assist in development. We don't use generative AI to code Resonite, it's designed and coded by us. However from my understanding once this concern was raised, the code was rewritten by hand, which alleviates that concern, but I'm still worried some people can be uncomfortable - though most of the projects allow some uses, so if we wanted to be 100 % purist about this, we wouldn't have any actual options left. Us adopting this project officially would also let us enforce our principles going forward (or well for our fork of it). |
StrideThis engine being in C# is probably the biggest strength of it, which could integrate better. Smaller compared to Godot, so probably less support, but still some. .NET Foundation is nice in this regard. Feature parity seems kinda... meh? Like would need a fair bit of extra work to bring it up. I don't think the C# part is enough to prefer this over Godot, which seems more mature and has much more weight behind it, so probably unlikely for us to pick this one. |
Ogre NextI understand this candidate the least I think. Seems like limited VR support. Smaller community. Feature parity okayish, but would need more work. I don't think it's interesting choice over Godot / Renderite in particular, I don't see much that would highlight this. |
The ForgeProbably more interesting than Orge, but also kinda mix. A lot of feature parity is missing and would need fair bit of work to bring it up there. The lack of documentation is probably biggest concern. Other one is that we'd have to write a lot of our own systems - which makes sense this being a framework, but also quite a big commitment and we'd need to maintain our own rendering engine going forward. Because of that, I don't think there's much advantage over Renderide, which already does that, but uses more modern underlying frameworks and Rust based instead of C++, which is safer. |
|
This is a higher-order question, I can delete this comment afterwards. One of the pain points I've had with trying at another renderer has been the sheer volume of messages. It's not hard, but it's a lot of fields and types. It feels like many of these renderers would be easy to implement prototype wise, except for IPC and message formatting. Froox, how would you feel if the renderite messages shifted to be schema-first instead of defined in C# first and foremost? Define a json or yaml document of the messages and field types, and have that be the authority for Renderite and any other language. If new fields or messages are added, the dependent codegens can regenerate as needed. Could also be generating a schema off the C# side, but that feels possibly messy (say a command reorders the Write calls in the Pack method vs the field order). There's some out of the box generators like cptnproto and flatbuffers, but most have some rather nasty asides (flatbuffers in C# writes memory backwards for instance). There may be a schema-first one that's out there, but I figure seeing if a non-C# authority is viable is first anyways. |
Uh oh!
There was an error while loading. Please reload this page.
I'm just compiling some initial thoughts on the candidates right now.
This is not a final decision and things can change as more research is done.
I'm just collecting thoughts and starting discussion on each one. If you'd like to contribute to discussion, comment on the appropriate thread!
All reactions