fix: Rollback breaking changes made to the pixel format public API#3037
fix: Rollback breaking changes made to the pixel format public API#3037Eideren wants to merge 3 commits intostride3d:masterfrom
Conversation
|
Yes, there are more breaking changes. Some time ago, we discussed if this PR (and others of the same kind) would more appropriately merge into a I can create upgraders to ease the pain, but I'm not very knowledgeable in how the upgraders work. Any idea where to start looking? |
|
@Ethereal77 Makes sense, I would rather we leave it as a last resort for syntax though, the editor does not handle loading uncompilable projects well enough right now. And for non-programming people, this breaking change makes a project effectively unusable. Syntax changes are unfortunately not really handled well afair, have a look at how |
If this is a breaking change so big to create that kind of friction, I propose what I already proposed (and some people agreed on), to create a separate branch for "future Stride", where all these kind of changes can go (like, for example, the cross-platform editor, the OpenGL deprecation, the new D3D12-only editor, the new shader compilation pipeline, etc.) Even though I understand what difficulties can imply these syntax changes, I think it would be a pitty to leave out some of these. C# 14's "Extension everything" in particular can be very valuable to modernize the codebase and allow some very interesting things. Edit: On a second thought, maybe instead of an upgrader, this could be an analyzer? You've seen that the change basically is removing a
Get what I'm about to say not as if they are less worthy than "programming people", but just as my opinion as someone that has been following gamedev topics since before editor-engines (like Unity), and based on the context that currently Stride requires far more coding understanding than other engines: I can't talk for non-programming people, but I think Stride may not be the best engine for people that do not want to touch and understand the underlying code. Ideally, everything should just work forever without problems, but retrocompatibility usually imposes a very hard limit to evolution in complex projects, and in a game engine, which is a very complex project and one that needs to be always at the very edge of efficiency, it does more so. Having said that, the best advice I can give to non-programming people that want to create a complex project touching little code with Stride is to stick to a version that works for them and not moving versions (or at least, only minor revisions, bug fixes, etc.)
Correct me if I'm wrong, but upgraders and renamers are not just for assets? (I mean, asset names/types, serialized properties, type changes and conversions, etc.) Anyway, sorry for the wall of text. 😁 |
|
I also would rather we break users project if we have some critical issue that needs to be addressed, method calls being swapped into properties with the same functionality is not that. I'm also not saying that we shouldn't use extension everything, just that we can only use it in case where we wouldn't introduce a breaking change.
Almost no games are made solo, the editor is supposed to be for non-programmers to work with programmers, and we've had terrible adoption specifically because we have thousands of things breaking all the time, let's not add one more thing.
I totally get that, I wouldn't want to have my work undone either, you've done some incredible work for the engine, I very much respect and am glad of the many weeks of work you put into these changes. I think that's just the limitation of how we're organized, we barely have the time to review, actually getting into those kinds of conversations seems very unlikely. |
I agree with this half-way. In my opinion, having new features implemented in the future with "extension everything" while we still have things using the old syntax is kind of inelegant, and I foresee questions by users regarding this.
Well, of course not. But in this projects not made solo, the responsibility to know the syntax changes (in scripts) fall precisely in the programmers, no? Anyway, I understand that there will be cases of artists or designers that would want to edit scripts themselves and feel confused about syntax errors where previously there were none.
If that's the case, I'll see if it is possible to craft something that removes the
I appreciate that. Thank you. Anyway, you decide if you merge the rollback now (if urgent), or wait until a (possible?) upgrader can be done. |
|
Let's leave this as is for now until after you've looked into whether an upgrader would be feasible. An alternative option would be to change the nomenclature of those properties and mark the extension methods as obsolete. |
|
I have been trying different things. What is your opinion on a "two-stage obsoletion" strategy? Let me explain:
What do you think? |
|
Yep, sounds good to me |
|
Leaving this as a draft while Ethereal takes care of the above, will close it as soon as his opens. |
PR Details
Users shouldn't have to fix syntactic issues when upgrading versions, rolling back related changes.
Feel free to setup an upgrader if you want to keep your changes in @Ethereal77 and I'll close this PR.
Also, are there any other breaking changes in the public API @Ethereal77 ?
Related Issue
Types of changes
Checklist