IslandzVW / halcyon

InWorldz Halcyon 3d virtual reality world simulator
BSD 3-Clause "New" or "Revised" License
21 stars 26 forks source link

.Net Core #369

Closed zauberparacelsus closed 6 years ago

zauberparacelsus commented 7 years ago

.Net Core is an alternative implementation of the .Net Framework, which is lighter, faster, and cross-platform. Porting Halcyon to it may improve performance and improve cross-platform compatibility somewhat.

kf6kjg commented 7 years ago

Cross platform support is currently functional using Mono, barring PhysX. I can't speak to perf improvements as I've not yet worked with Core.

However attempting to port to Core is not easy: all the libs would need to be ported first, or found on NuGet already ported. Considering that some of the libs are currently required to be older versions, that could prove difficult.

zauberparacelsus commented 7 years ago

From some additional reading, porting may be easier once .Net Standard 2.0 is released, which should be sometime within the next month or two.

As for Mono, it is not a 100% solution for cross-platform compatibility. Speaking from personal experience, Mono tends to be buggier, more unstable, and can be several times slower than .Net.

kf6kjg commented 7 years ago

Interesting about Standard.

Ive not detected anything particularly slow about Mono, but then I've not pushed it hard. Research online seems to indicate that performance isn't clear cut between the two: depending on the code involved on can run faster or slower that the other by a significant margin.

But the only way to verify is to be able to measure current performance, convert and test. As of right now I don't think there's any repeatable performance tests for the Halcyon servers.

appurist commented 6 years ago

As far as I can tell, Standard exists only to provide DLLs/libraries that support either/both Core and .Net 4.x apps. So I think the request to port to Core still exists. I've done some work recently with Core for AIS support and it seems the largest problems for Halcyon on Core is the use of some older third-party components, such as the version of Aquiles we use for Cassandra support for the older version of that we are running on the InWorldz grid, and some other similar third-party libs. There are only a few small code changes so if it's possible for us to build with newer Core-compatible (i.e. Standard) libraries, we'd probably be able to build it to run on .NET Core 2.

kf6kjg commented 6 years ago

I'm including this provisionally in milestone v1.0.0. It might be useful to the PhysX port to go with Core, it might not. If not it can be bumped to a later version.

kf6kjg commented 6 years ago

This issue was moved to HalcyonGrid/halcyon#7