• proton_lynx@lemmy.world
    link
    fedilink
    arrow-up
    11
    ·
    1 year ago

    What I don’t like about C# has nothing to do with the language itself, which is pretty good. Is the fact that is made by Microsoft and their tooling SUCKS. I’m having to build .NET projects at work and the dotnet CLI is pure garbage. I wish we had something better instead of using C# but the gamedev industry is pretty invested on it.

    • lordxakio@lemmy.world
      link
      fedilink
      arrow-up
      8
      ·
      edit-2
      1 year ago

      Hi. I am not a game dev, but a c# one. What is it that frustrates you about the dotnet CLI?

      Edit: I use C# for work, not a Microsoft employee who works on c# dev lol

      • proton_lynx@lemmy.world
        link
        fedilink
        arrow-up
        3
        ·
        1 year ago

        Documentation is the worst offender. I remember one time that running dotnet restore and later running another command with --no-restore flag wouldn’t work, but running the last command without the --no-restore flag would. Creating a sane CI/CD pipeline for C# apps is a PITA.

        • Lucky@programming.dev
          link
          fedilink
          arrow-up
          8
          ·
          1 year ago

          I’ve never had an issue with the dotnet CLI, including the commands you’re talking about. Their documentation is a bit scattered at times but for the most part they have examples on everything and walk through most scenarios.

          I’m not a Microsoft employee either, just a c# dev of 10 years.

        • Lmaydev@programming.dev
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 year ago

          I do a lot of work with c# CI/CD and doing what you said absolutely does work.

          Most of my scripts are

          dotnet restore
          dotnet build --no-restore
          dotnet test --no-build
          dotnet publish --no-build
          
    • Sparking@lemm.ee
      link
      fedilink
      English
      arrow-up
      3
      ·
      1 year ago

      This is the major problem with c#. Godot project should target support of .net and mono runtime and THAT’S IT. If you want C# to run on iOS, Microsoft and Apple have to fix it. Let’s not spend 1 billion dollars a year making sure whatever random iOS runtime is supported like unity did. That is the root cause of why they would like to charge I stall fees in the first place.

      • Lmaydev@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        1 year ago

        .net (formally .net core) runs on all major OSs.

        Mono and .net framework are super out of date and shouldn’t be used anymore.

        • Sparking@lemm.ee
          link
          fedilink
          English
          arrow-up
          2
          ·
          1 year ago

          Well whatever - going down the proprietary imementation route for c# the way unity did is a no go for Godot imo.

    • bunnyfc@kbin.social
      link
      fedilink
      arrow-up
      3
      ·
      1 year ago

      Also, the dependency management, idk why but I can just shit each time I’m confronted with different .NET versions.

  • _NoName_@lemmy.ml
    link
    fedilink
    arrow-up
    7
    ·
    edit-2
    1 year ago

    Or, ya know, just learn another language. It’s not a big jump.

    Edit: Godot 4.x is already slated to support a plethora of languages- including C#.

    But even if the devs decided to not support C# for some reason: you’re really going to walk away from a game engine over not being able to use C#?

    • Lemminary@lemmy.world
      link
      fedilink
      arrow-up
      19
      ·
      1 year ago

      Of all the languages I’ve used over the years, C# is one of the best I’ve found recently. I’d rather not.

    • McWolke@lemm.ee
      link
      fedilink
      arrow-up
      18
      ·
      1 year ago

      It’s a single purpose language. Learning it will bring you no benefit other than using Godot.

      Learn c# and you can do basicly anything you want.

      Also gdscript is kinda ugly.

      • ObsidianBlk@lemmy.world
        link
        fedilink
        arrow-up
        8
        ·
        1 year ago

        I disagree. Even if one is new to programming, learning GDScript still teaches one how to program. Loops, conditions, variables, functions… basically all that is programming is still part of GDScript and it would be no more difficult, once learned, to switch from GDScript to any other language as it would to switch from C#, C/C++, Python, etc. That is to say, once you understand how to program, it’s nowhere near as hard to switch languages as initially learning your first one.

        That said, the same could be argued when working with different engines within the same language. C# in Unity, C# in Godot, and C# in ASP.Net applications all have their idiosyncracies that might make the language feel different, even though, at it’s core, it’s the same language. How a library functions can have a drastic effect on how you program a language, and if you change one library for another, even in the same language, you may find you have to alter your programming style.

        Additionally, languages can be ported. GDScript currently only exists in Godot, but nothing is stopping anyone from writing a python-like or nodejs-like runtime interpreter for the language that allows you to use GDScript sans-Godot.

        As for how nice the language looks… that’s subjective. I, honestly, find GDScript to be a very clean looking language (much like I do Python… probably unsurprisingly). C#, on the other hand, I find to be a verbose mess, seeming to take 100 lines of course to accomplish something I can do in 10 in other languages. But, again, that’s subjective

        • Hector_McG@programming.dev
          link
          fedilink
          arrow-up
          2
          ·
          1 year ago

          seeming to take 100 lines of course to accomplish something I can do in 10 in other languages. But, again, that’s subjective

          That’s clearly vast exaggeration, and devalues the rest of your post.

          • ObsidianBlk@lemmy.world
            link
            fedilink
            arrow-up
            2
            ·
            1 year ago

            So… my opinion regarding how I perceived C# and followed that statement up with it being subjective (aka, opinion), in your view, devalues the rest of my post. That’s your hang up?

            Cool beans

        • insomniac_lemon@kbin.social
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          1 year ago

          Personally, I like the idea of using bindings more than using GDscript* in Godot and my preferred language outside of Godot. From what I’ve seen, even if not perfect it’s much less likely to cause confusion having 1 workflow (+some extra context in Godot) rather than 2 (not just syntax, but also technical stuff). Also it’s nice to use code that doesn’t actually depend much on whatever engine/framework you happen to be using it in (particularly an imported file with procedures).

          Though some of my perspective may be that I haven’t really used the language that I want to (mentioned in other comment) aside from a bit of tinkering with Raylib bindings (and a bit with Godot 3.X), so (aside from switching back-and-forth making less sense) I need Godot to learn the language just as much as I need the language to use Godot, all the things that motivate me (starting points for projects) are in various stages of viability particularly with how they relate to each other. Which admittedly is not the type of situation people wanting C# are in (…maybe some are with 4.X C# limitations).

          Well, that and lacking writing/ideas for actual content. For instance I coded a basic adventure book reader (CYOA-type thing) but had no desire to actually write a story (so I didn’t develop it further).

          *= I would not totally be against using GDscript (particularly as the language I want actually isn’t too different syntax-wise) particularly as I gain more experience, but I don’t think it would serve much of a benefit unless it was for a specific calculated reason. As in not my first-step or common use of time. Same with other languages, for instance something like a networking system could be done in any supported language thanks to how Godot handles languages. And that reason for a different language could just be what someone contributing to a project prefers.

      • jack@monero.town
        link
        fedilink
        arrow-up
        1
        ·
        1 year ago

        It takes no time at all to “learn” GDScript if you are a programmer already. It is that simple

    • TheFogan@programming.dev
      link
      fedilink
      English
      arrow-up
      8
      ·
      edit-2
      1 year ago

      Well I mean the biggest thing that would be the ultimate ideal would be anything that can maximize the ability to bring existing unity projects over to godot. IE minimal refactoring needed.

      Big thing is not just getting people to start their new projects, but what about those who have spent 3+ years mastering their game, only to have the rug pulled out from under them when it was 80% of the way to release worthy.

    • insomniac_lemon@kbin.social
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      1 year ago

      I mean people like what they like, also I’d say “learn another language” makes more sense for 3.X where there were a ton of good language options. C# isn’t the only thing up-in-the-air due to 4.0’s binding system change (that will hopefully be worth it), though C# will get priority for an obvious (and understandable) reason while other bindings will need people in the community to create new efforts for each language that still doesn’t have an option.



      I say that as someone waiting on Nim-lang bindings (and 1 person working on them is consistently working on it) for 4.X (the 3.X bindings were listed as production ready here). I mean unless there are other languages that also: 1. are usable outside of Godot 2. Have an easily-readable style 3. Have good performance 4. Have (optional) low-level capability/options/flexibility. (I’ve never actually looked at C# but I don’t think I want that ecosystem/setup)

      Which, from what I’ve seen seems unlikely as most things seem to pick a side when it comes to speed/capability or ease. Maybe there’s an option with some form of compiled Python but that seems to be a technical mess to get through/decide on and even then said option wrecks its compatibility with Python Godot bindings because obviously it’s not interpreted Python anymore.

  • Sparking@lemm.ee
    link
    fedilink
    English
    arrow-up
    4
    ·
    1 year ago

    I’m going to say it (and eat the downvotes): Unity devs have become entitled, and kinda deserve the new Unity pricing structure.

    Supporting more and more devices and functionality of c# on weirder and weirder runtimes. It is a mountain of dev work that Unity is paying for and subsidizing for your game. If there was an open source effort to make a unified c# runtime across all platforms that would be one thing, but it will always be front run by new features releasing to .NET so it will never exist.

    Changing an existing agreement for pricing without any warning is gross. But something had to give eventually. I would have told you that 10 years ago.

    • Lmaydev@programming.dev
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      1 year ago

      .net 7+ is an open source unified runtime.

      Unity just needed to move to .net (previously .net core) to save a tonne of work.

      • Sparking@lemm.ee
        link
        fedilink
        English
        arrow-up
        2
        ·
        1 year ago

        From unity’s perspective it is a bunch of wasted work. Thats the issue - they threw a billion dollars at developing their proprietary c# runtime and not recouping the cost of investment. But they can’t wait around for Microsoft to make moves. And they probably don’t want to open source their runtime either out of fear that a free game engine using it will make the rounds.

        Godot ultimately has the right approach: offer support through universal bindings to it’s underlying archetype and let devs decide what they want in their game’s stack. Everyone wins.

  • Smorty [she/her]
    link
    fedilink
    arrow-up
    2
    ·
    1 year ago

    Why are we using C# I stead of C++ for the in editor language again? Inst C++ more compatible with everything? (I know that GDMatice exists, buts that’s a lot more work to use I feel)

    • kevin3kon@mastodon.social
      link
      fedilink
      arrow-up
      2
      ·
      1 year ago

      @Smorty @mac I have been wondering this non-stop since I found out #godot uses C#!

      I know the idea that C++ is the end-all-be-all is an oversimplification at best, but It’s still a decision I’d like to know more about.

      • Smorty [she/her]
        link
        fedilink
        arrow-up
        2
        ·
        1 year ago

        Godot is mostly written in C++, so it’s such a weird decision to switch languages like that, and expose C# instead of C++ as a game logic programming language. I suppose it was done so that Unity devs would find it more attractive. Unreal uses C++, so yeah, why?

        Also brand bad, so no C# for me, only GDScript and C++ GDNative.

    • Sparking@lemm.ee
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      I get the idea of having flexible options for game devs. Support for systems language for engine internals (C++), hooks for a runtime machien based language (C#), and support for a dynamic scripting language (GDScript) makes sense architecturally. C# is also strategic because XNA to Unity has pretty much cemented its status for game devs. And then GDExtension to provide an api layer for whatever other language under the sun you want to use. It is a very sensible place for Godot to be in.

    • Mac@programming.devOP
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      The main language is GDScript rather than either of them (although the engine itself is coded in C++). C# support was added on since microsoft gave them money to do it

            • Sparking@lemm.ee
              link
              fedilink
              English
              arrow-up
              3
              ·
              1 year ago

              It is in a technicality But the reality is, it will always move at the pace and at the whims microsoft wants it to.

              Thats not necessarily a bad thing honestly. But you can really get i to trouble making it a core dependency for something like a game engine. Unity’s users didn’t care that Microsoft hadn’t posted the runtime to iOS, they expected their games to run on iOS. So Unity did a bunch of dev work that is now kind of a bad investment with .NET 8. This is the core of why they wanted to charge an install fee in the first place.