Stride3D - Won't Run on Android or iOS

We are porting an existing commercial product from .NET 4.5 to .NET Standard 2.0, and converting 2D graphics into 3D view ports, and are looking for a 3D engine that will provide us a way to show our 3D content. Our primary user platforms are Android and iOS, in context of Xamarin Forms. I see that at least one of Stride’s examples runs in UWP, but won’t compile for Android nor iOS.

Lacking Android and iOS support is a show-stopper for us. Our current choice is UrhoSharp, which does compile and run on WPF, UWP, Android, and iOS cleanly, per our requirements. If Stride/Xenko, would demonstrate that it will run on Android/iOS using 95% shared code, then it would be a candidate for us to consider.

Since our entire project already consists of 300K SLOCs of C#, we do prefer a C# engine, like Stride3D. However, in its current state, it doesn’t appear to be an option for us.

===
Using the latest Stride beta (4.0.0.1-beta02-0926), I’ve tried several of the sample new projects and none work on Android or iOS. For example, I tried CSharpBeginner sample, and it runs fine for Windows and UWP, but for Android, it yields 83 compiler errors, that look the ones I’ve shown below. I also tried the First Person Shooter example.

If we use Stride, it would be in a code-first style. We simply need it for our presentation layer, not our application layer.

We’re using Visual Studio 2019 on Windows 10 with all of the Stride required SDK/workloads installed.

===== Compiler Errors ===========

10 of these:
[StrideTexLibrary] Image size different than expected.

1 of these:
[AssetCompiler] Unhandled exception. Exception: Could not find asset Textures/gum01_gls for bundle default CSharpBeginner2.Android

10 of these:
[AssetCompiler] Exception in command [UI/btn_normal] Stride.Assets.Textures.TextureConvertParameters: System.InvalidOperationException: Image size different than expected.

20 of these:
[AssetCompiler] BuildStep [UI/btn_normal] Stride.Assets.Textures.TextureConvertParameters failed. CSharpBeginner2.Android

===
If we compile for iOS – the error count is 166, and has many of the same errors shown above.

Continuing the saga - we then tried the UI samples, which compiled, but as they started to run on Android, it produced this error:

TypeInitializationException: … Stride.Core.IO.VirtualFileSystem threw an exception.

And crashes at startup right after this.

https://doc.xenko.com/latest/en/manual/platforms/ios.html

Yuuki, thank you for this link. We have everything set up correctly, and it even deploys to our iPhone simulator, but at startup, throws a fatal “type initialization” exception, then crashes. Does this work for others? (latest release, not previous releases, which may work)

Can you paste a detailed log, please?

Thank you.

Where do I find the log you want? What details do you want?

Check this, I hope you find this helpful.

https://docs.microsoft.com/en-us/visualstudio/ide/how-to-view-save-and-configure-build-log-files?view=vs-2019

As far as I know, you can’t run on a simulator. You have to use an actual device.

Why is that? We’re using UrhoSharp now, and it runs in iOS simulator just fine. If Stride3D won’t run on the simulators, that’s very bad for development.

I just compiled and ran it again, and the UIParticles sample project now throws a FileNotFound exception that looks like this:

Could not find file “/Users/brianknox/Library/Developer/CoreSimulator/Devices/74023F98-91F0-4128-9E70-710EAF778600/data/Containers/Bundle/Application/FD662B16-6638-4FDF-BA20-5ED86A79B534/UIParticlesiOS.app/data/db/index”

iOS and Android are not much used and thus not actively tested, so I am not surprised it is currently broken.
It’s probably just little bit of work to put it in working shape again.

Without iOS/Android support, we’re unable to use Stride3D. There is a whole .NET Xamarin/mobile community out there without a great solution. UrhoSharp is what we’re using now, but would like to switch to something that has not been abandoned, and preferably is a .NET solution where we can actually debug it. The UrhoSharp has some bugs but is difficult to debug because it’s wrapped C++.

@xen2 what do you think about us setting up a continuous integration and basic test build for every platform target. I can help.

It won’t magically fix the problems, but it could help us understand when they occur… because there are obviously too many targets for everyone to check even a few of them on checkin. It could run all the platform tests automatically for every pull request and at least let us know what broke.

It might also make sense to have some metadata displayed on a release in the launcher about what platforms targets passed some basic test for each release, so people could choose a release that meets their needs. (and specific releases could have the goal of making mobile work, for example)

Multiple CI Services on a GitHub Pull Request

1 Like

I would love to see that. In order for Stride3D to be taken seriously as a production-capable product, IMO, it needs to have this type of infrastructure. The need for 3D on Android/iOS continues to grow, and ATM, for .NET, as I said, it’s slim pickings. There is room for Stride3D to be gain a big market share, if they simply ensure that Stride3D always works for Xamarin/mobile on UWP/iOS/Android, along with it’s Xamarin Forms Surface plugin (so that you can add a “StrideSurface” from inside XAML, and have it “just work”). UrhoSharp has this now; and that’s why we’re using it; it was working “out of box” for us. However, this project hasn’t been maintained for 16 months.

There is another project coming along, a derivative of UrhoSharp, called RbfxSharp, which may be released soon. At least for Rbfxsharp, there is a small active community. I’m not sure how Stride3D would stack up.

2 Likes