4 ms·
I don't know much about C#. It certainly looks more popular in gamedev circles. When I played with this new java api. I wasn't worried about the FFI cost. It s
by maksut 2y ago
I don't know much about C#. It certainly looks more popular in gamedev circles.
When I played with this new java api. I wasn't worried about the FFI cost. It seemed fast enough to me. My toy application was performing about 0.77x of pure C equivalent. I think Java's memory model and heavy heap use might hurt more. Hopefully Java will catch up when it gets value objects with Project Valhalla. Next decade or so :)
- neonsunset 2y agoGenuine curiosity - what would be your motivation to use Java over C# here aside from familiarity (which is perfectly understandable)? The latter takes heavy focus on making sure to provide features like structs and pointers with little to no friction, you can even AOT compile it and statically link SDL2 into a single executable. In improbable case you may want to try it out, then all it needs is - SDK from https://dot.net/download https://dot.net/download (or package manager of your choice if you are on Linux e.g. `sudo apt-get install dotnet-sdk-8.0`, !do not! use Homebrew if you are on macOS however, use .pkg installer) - C# extension for VS Code (DevKit is not needed) - SDL2 abstraction: https://github.com/dotnet/Silk.NET https://github.com/dotnet/Silk.NET (there are all sorts of alternate bindings depending on your preferences)
- lazide 2y agoNot the original poster, but most folks have little choice what ecosystem they’re using. And once you have enough momentum, switching isn’t usually worth it. (As someone who has done Perl, C, Java, C#, Kotlin, JS, and Python professionally - god help me. Maybe a million lines of code all in now?)
- neonsunset 2y agoFair enough
- spullara 2y agoJava now has <1ms max pause time garbage collectors with TB heaps. If you are writing a game GC matters a lot.
- neonsunset 2y agoInteresting! What games did you write code for?
- stoperaticless 2y agoNot the op, but at some point I did choose between the two paths/jobs assuming I will get more proficient in only one of them each year (which is true, I stayed junior in C#). Why I chose Java boils down to two reasons: - runs on linux (I know there is some version of c# that eventually opened up, but I kind of expect it to have lot of conditions for being cross platform, I assume that standard c# code is not crossplatform due to some reason (e.g. Com usage might be standard way of doing stuff), which would make finding crossplatform answers tedious) - whole ecosystem is more open source and more involved parties (which I interpreted as abit less controlled by the corporate overlord, so if corporate overlord went rogue, greater chance that language would survive somehow) Never needed to call into C though..
- neonsunset 2y agoNeither point is true today FWIW. Neither point was ever true in the last ~10 years when it comes to gamedev (or where you want to use SDL) where Java was and continues to be a much weaker choice.
- kaba0 2y agoJava’s ecosystem is just vastly bigger. In many categories, Java has multiple open-source offerings vs .NET’s single, proprietary one that is often just a bad copy of one of the former libraries.
- 5e92cb50239222b 2y agoDespite what some fanatics may claim, operating systems other than Windows are still second class citizens (saying this after five years of doing .NET development almost exclusively on Linux), especially for dev, and operating systems other than the big three are not supported at all. So no BSDs (even FreeBSD) or Solaris if you ever need it. Since the open .NET is pretty young, and they still have trouble with community perception due to their past actions, finding high quality FOSS libraries may pose a problem depending on what you're doing. Pretty much everything from MS is open and high quality, but they don't provide everything under the sun. And with Java you always have alternative runtimes in case this Oracle deal goes sideways for any reason. So you're all good, don't worry about it.
- maksut 2y agoIt was a learning exercise. Just playing around with clojure, raylib and this new api. I know all these can also be done with C# with some pros & cons. I wasn't advocating java for gamedev. Just pointing that, this new api is a nice addition. And I am glad that jvm ecosystem is improving. To be fair, if I was starting a game project I wouldn't stay in Java/C# level. Depending on the project, something like C, C++, zig might be more practical. Ironically I believe they would be easier for iterating ideas and deploy into different platforms (mobile, wasm etc.).
- neonsunset 2y agoA little bit sad* but understandable, thank you. *C/C++ tooling and verbosity pains, what PL dev progress is for? C# feels more modern than some of the "modern" alternatives but eh.