-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
C# status and plans towards 3.1 #18364
Comments
Just to clarify, it's already possible to test project exporting. All you need is to compile the export templates and place them in |
Long term which platforms can we expect to support mono exports? |
I believe that eventually the plan is to support ALL platforms, even web (MSIL -> wasm is something that mono and such are working on). With the GodotSharpTools bit & build: don't you mean GodotSharpEditor? I thought that was the one that needed it to build the csproj files and such. |
Platforms: Desktop: Right now, we support the x11, Windows and OSX platforms. I didn't test on Server, UWP and *BSD yet, but they may be working already. Mono does not fully support Haiku yet.
|
For what it's worth, I can definitely tell you that Server loads up
successfully for the purposes of exporting to Windows. Haven't tried to run
actual code on it though.
…On Mon, Apr 23, 2018, 10:47 Ignacio Etcheverry ***@***.***> wrote:
Platforms:
*Desktop:* Right now, we support the x11, Windows and OSX platforms. I
didn't test on Server, UWP, *BSD and Haiku yet, but they may be working
already.
*Mobile:* We will support both Android and iOS. The Android port should
be straightforward. iOS exporting will require the extra step of compiling
the assemblies ahead of time.
*WebAssembly:* There is work to bring the Mono runtime to WebAssembly, so
this should be possible in the future. I'm not sure if embedders can test
it at its current state.
*Consoles:* No idea. All I know is there are ports provided by third
parties.
With the GodotSharpTools bit & build: don't you mean GodotSharpEditor? I
thought that was the one that needed it to build the csproj files and such.
GodotSharpTools is the one that the editor uses for reading/editing with
csproj files, building solutions and executing MonoDevelop.
GodotSharp and GodotSharpEditor are the API assemblies. I will rename
them to GodotAPI and GodotEditorAPI respectively before 3.1 to avoid
confusion.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#18364 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AHu1w6os8QgftKsVEE3aMDufzeSygNMaks5trZUWgaJpZM4Te_7X>
.
|
I'm interest a lot in C#. |
thanks for this info. |
Shall we turn this post into a [Tracker] with a list of to-do items via |
Instead of to-do create new individual issues for each item. |
@DevMagicLord Isn't GDScript compiled to bytecode before packaging? |
So, I tried to do exactly this. It didn't work! I thought I'd report my findings for the record - perhaps it can be of some use for you later @neikeq! My commands were (from a totally clean repository clone at 1113a73): # Build Godot to Generate Glue
scons p=x11 tools=yes module_mono_enabled=yes mono_glue=no -j 32
bin/godot.x11.tools.64.mono --generate-mono-glue modules/mono/glue
# Build Godot w/Mono
scons p=x11 target=release_debug tools=yes module_mono_enabled=yes -j 32
# Generate Export Templates
scons p=x11 target=debug tools=no module_mono_enabled=yes -j 32
scons p=x11 target=release tools=no module_mono_enabled=yes -j 32 I then copied the export templates to I proceeded to open the built editor,
When I ran the exported project, this happened: $ ./test.x86_64
Mono: Initializing module...
ERROR: _initialize_and_check_api_hashes: Mono: Core API hash mismatch!
At: modules/mono/mono_gd/gd_mono.cpp:318.
Mono: Runtime initialized
Mono: INITIALIZED
<Black Screen>
^C There's the error! It is, in fact, the error described in #14584 . My mono version is
|
Yes it matters, Godot supports only 5.4. |
That is only true when you're using the released binaries. When you're compiling yourself you can pretty much use any recent Mono version. |
Yes, that issue is fixed by #18514. Although it shouldn't prevent your game from working, it's just a false warning. You don't need to copy
|
From #19101: Things that I'd expect before I'd consider C# production ready, in order of importance:
To explain the last point: IMO, we need to test C# more widely before calling it production ready. I propose to release 3.1 (or 3.0.3) with working exporting and wait for some (to be determined) time after that, seeing what issues crop up, before calling it that. Because if I was one of the first users to run into export issues because thats a new functionality, and C# as a whole was called production ready, I'd be upset. Opinions? |
That's what beta is for, isn't it? |
Would anyone be opposed to renaming
As someone who uses this function a lot in my code, I would definitely appreciate this change. EDIT: #19231 |
I hate to be the person bringing back the same thing over again but I think the generic GetNode (#16871) is still something that'd be good to address before being production ready (it can be seen as part of the «API should be mostly final» part). |
#18773 is something that I feel also needs doing before we can mark C# as stable. |
Also, not only writing those new docs but maintaining them. |
The class reference description for the generated API is automatically generated from the existing class reference. It's still not translating it from bbcode to xml tags, but that can be easily solved. A problem would be translating the GDScript code examples (inside |
Should EDIT: #20337 |
I've opened some issues to discuss Mono/C# support for the remaining platforms:
|
@neikeq Hmm, I'm not too sure how that's really related to this but we should probably continue this conversation in the PR. |
Another minor issue, I noticed that the Vector Lerp method in Godot is called "LinearInterpolate" rather than the shorter and probably more familiar "Lerp". More familiar to users, since it's called Lerp in Unity. The name "LinearInterpolate" is also inconsistent with the other method "Slerp" which isn't expanded to "SphericalLinearInterpolate". And most importantly, this is inconsistent with the Would anyone be opposed to changing "LinearInterpolate" to "Lerp"? I would also have to change the C++ code to "lerp" in order to be consistent, or I can just change the C# code if that's desired. EDIT: #20371 |
I think your suggestion would make the Godot API itself more consistent since the default floating point math function is also called |
@NathanWarden I believe since c# is unstable breakage should be allowed with 3.1 |
Should |
Maybe a bit offtopic, but as the code of my game is constantly growing, and I prefer C#/Mono for a list of reasons, but haven't used it so far because its non fnished status, perhaps a good idea would be to have a GDScript to C# converter, so that there is a basis that will make refactoring code to C# easier. |
@immccc You are welcome to develop that feature, but I don't think that would be very easy to do, and it would always be imperfect. If you want to switch your code to C# it's best to do it manually. |
@aaronfranke that would be imperfect for sure and the user will have to review and tune each source file, but the amount of tedious work writing file per file as a middle age scribe monk is saved, at least a considerable part :) (or that's the idea) |
For those wondering how you’d even approach a gdscript converter, there was
a guy a few years ago who made a Obj-C to C# converter. The way he did it
was first convert it to TXL, which is an intermediary language made for
this thing, then convert it to C#.
http://razum.si/automagical/about
…On Sat, Aug 25, 2018 at 1:15 AM immccc ***@***.***> wrote:
@aaronfranke <https://github.com/aaronfranke> that would be imperfect for
sure and the user will have to review and tune each source file, but the
amount of tedious work writing file per file as a middle age scribe monk is
saved, at least a considerable part :) (or that's the idea)
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#18364 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/ACRvBzJ4xG-aRijv4Vy5h523AJm3YBSmks5uUQe0gaJpZM4Te_7X>
.
|
Should |
@aaronfranke I say Vector2 makes more sense. As even a polar vector is a vector. |
I hope this is the right issue for that: |
@Byteron This has already been fixed, but it hasn't arrived in a release version yet. In 3.1 and possibly 3.0.7, |
How soon is the bundled Mono coming? |
@aaronfranke only for Dictionary, or for all shadowing classes? |
Only Dictionary and Array for now. Are there any others that cause problems? For one, I know |
There also is Godot.Directory and System.IO.Directory. |
Similar to @Byteron, I had System.IO.File and Godot.File conflict a day or two ago and it took me a minute to figure out what was going on. Can we put those both under Godot.IO to mirror the System namespace? I'd be happy to make this change if it's wanted. :) I could take a look and see if there is any other IO related code we could tuck in there too. |
Issues I think should make 3.1:
|
I'm closing this issue. |
I'm opening this issue to inform other developers interested in the mono module about the current status and the plans towards 3.1.
As you may have notice, I've been quite inactive during the last month and a half. This is related to my studies, and there is nothing that can be done about it. This low activity will sadly continue until June 14, approximately, when I will finally be free once and for all to focus entirely on Godot.
Since I will have very little time to dedicate to Godot during this period of time, I decided to make a list of essential tasks that need to done for the 3.1 milestone, and postpone everything else for future releases. The list is the following:
Export PCK/Zip
(-only) option, and more testing of course.nuget packages(these are Windows-only, need to build msbuild from source) instead of Mono's Microsoft.Build assemblies, and bundle with the Roslyn compilers. This way we can provide a working build environment on all platforms. It will increase the editor size, but I consider it to be necessary.Other developers are free to make contributions to any area. However, keep in mind that I may leave them aside for review after 3.1 is released if I don't consider them essential for this release. Please, let me know if you think I'm forgetting something in the list above.
I'm keeping this issue open for discussion.
The text was updated successfully, but these errors were encountered: