Live data from Hacker News

Godot 4.0 development enters feature freeze ahead of the first beta

godotengine.org

101–110 of 122 posts

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#101

Friends in the industry all say it's a nonstarter that it does not (and will not) have cross platform support, as much as they hate Unity. Godot's official stance on it is that you should hire a team to port it for you lol...

If you're long on the games industry we are probably in the last generation of game console architecture. Everything is going to be Windows or Linux boxes with PC hardware next gen. I could see Nintendo bucking this trend but they have enough IP to be their own island. It might be smart for Godot to punt; it lets them go faster than Unity and catch up

> Everything is going to be Windows or Linux boxes with PC hardware next gen.

Are you sure about this? I mean, as awesome as that would be just look at the mobile market - Android had every chance to be a properly open OS (e.g. AOSP), but instead its a mess of flakey drivers, locked down bootloaders and other anti-user practices that curb our freedoms with our devices.

I foresee that trend mostly remaining as it is in regards to consoles as well (and IoT devices), outside of projects like Steam Deck. But then again, I'm still bummed out that it wasn't possible for me to install Linux on my PS4 and use it as a development box (since updates explicitly fixed any vulnerabilities that would allow for that), because its form factor was great.

Hell, it's probably just a matter of time until PCs and laptops are sold with locked down bootloader and only run Windows or whatever other manufacturer sanctioned/mandated OS would be included.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#102
post #31

Earlier quoted context omitted.

I won’t use the word “serious” but my limited personal experience is that C# feels like the right balance between flexibility and performance. Rust is a joy to write in but I personally find that it asks a lot from you when you just want to ship a game that doesn’t need to be safety rated. C++ is a great choice but it’s C++ and I’m just not good enough to enjoy a language with fewer guardrails. It also has similar ve…

I find it hard to imagine whatever glue language you choose for an engine like Godot would really matter that much. All you’re implementing is the business logic. Even the slowest language can run through basic business logic in the blink of an eye relative to the heavy duty that the Godot systems are doing. Eve Online runs on *python*, for instance. So does Blender. For a glue language, I am highly doubtful that the…

Exactly. The Godot components are very performant, and the glue code doesn't get in the way. And Godot 4 is getting compute shaders, IIRC.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#103
post #60

Godot is effectively not accepting contributions, and masquerades as open source. List comprehension, one of the most sought-after features and requested by dozens of people, is repeatedly undermined by maintainers, because they happen to dislike the syntax. Godot offers nothing similar in terms of processing arrays, so it makes any code involving them ugly and more complex than it needs to be. There was even a pull…

> One person can effectively stall all progress out of spite.

I'm not sure about this one, I can understand why someone might agree with some of the arguments about list comprehension making readability worse, like stated in this comment: https://github.com/godotengine/godot-proposals/issues/2972#i...

  I have to agree with @pycbouh. While a lot of things python does is good, I really don't like list comprehension, especially when it becomes nested.
  
  numbers = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  print([n for sublist in numbers for n in sublist if n % 2 == 0])
  # > [2, 4, 6, 8]
  
  Not very readable, and you save what, 3 lines? Not worth.
Some might enjoy writing code like that, others might dislike it. The current lack of such functionality doesn't hold anyone back that much and therefore doesn't get prioritized. It might get introduced in the future, but when there is still lots of discussion for and against adding it instead of how best to actually implement it, you know that the time has not yet come.

Personally, I enjoy both LINQ in C# and Streams in Java, perhaps more than a one liner. But again, that's a personal preference and the opinions are often split about syntax related questions.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#104

Earlier quoted context omitted.

> I have, which makes me feel confident in stating that it's a language that didn't have to exist If you have, you should be aware of the history of the project and then I am perplexed why you would make this claim. They tried using multiple different languages until finally settled for developing GDScript. It is not a decision they just made willy-nilly but something they decided after using different languages did…

> They tried using multiple different languages until finally settled for developing GDScript. It is not a decision they just made willy-nilly but something they decided after using different languages did not work out as they hoped it would. This is a fair point and it was probably a good fit for their own needs, but I think that the person you're responding to seems to suggest that GDScript and the entire idea behi…

> But when you want to hire developers in the industry and take advantage of the existing C#/C++ knowledge, then using either of those and building the whole engine/documentation around them is probably the better choice.

Programming in C++ is well supported though. This is the main reason I personally would not use C# in Godot much. It is really good general purpose language that will do fine in almost any situation but it will not excel as much on performance critical stuff like C++ does but also does not have the ease of use for quick scripting like GDScript.

I guess it is a matter of the philosophies. Some people really like to use just a single language and then C# is a excellent choice while I think having languages optimized for certain strengths might be a good idea. So for me it is GDScript + C++/Rust/Nim if need be (the later ones also providing some safety on top of performance). Plus the vast majority of hobbyist devs will never run into any limitation with GDScript to begin with.

> That said, GDScript absolutely does not have a large ecosystem around general purpose computing tasks.

You have the whole C/C++ ecosystem of libraries that you can use if need be. Maybe not from GDScript directly but from a GDExtension language binding of your choice. If you are at the point that you can even dare to think about complex multiplayer games, you are a professional and can be safely expected to know how to use C/C++ libraries, mostly.

Though the ecosystem C# brings additionally to the table is also very nice to have, that much I admit.

> That said, you can hire C# developers and C# game developers

Can you, though? Writing a CRUD app in C# is quiete different to writing C# in Unity which is different to C# in Godot.

Maybe I am biased because I enjoy learning programming language but I am genuinely confused about the practice of hiring for specific languages. Maybe there are some developers that refuse to learn anything new, having been much on the other side.

Learning a new language takes days or worst case a week, learning libraries, best practices, switching towards a whole new area like game dev vs backend dev, that takes lots and lots of time. You can't really take a Unity dev and have them be productive in Godot from day one, they still need to learn how the engine works, how it expects them to structure their code and so on.

Anyone that has worked with a scripting language before can learn GDScript in a few hours, that is not a blocker at all. Wrapping you head around nodes and all on the other hand takes some time.

I think hiring for general game dev experience works out much better, as the concepts translate through languages and specific engines.

> Either way, here's hoping that Godot will have a bright future ahead of it, currently still considering using it over Unity due to its open nature, albeit primarily using C# with engine agnostic code libraries. I do hope that C# support doesn't fizzle out, because personally I find it to be a pretty great language with a nice ecosystem around it.

I think they are quiete committed to it at this point. There is obviously vast outside interest in it from all the people coming from Unity. Plus Microsoft has obviously an interest to keep C# in Godot and so will probably keep the money flowing.

That said Godot is not ready for complex 3d games yet with or without C#. It is still far away from Unity. Godot 4 did make big steps but I would expect that will take at least until 4.1 for it to be ready for bigger professional projects. For 2d though it might be best in class and superior to Unity.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#105

Earlier quoted context omitted.

> but to write a serious game you really want C# I haven't followed game development in a long time, but has the industry moved to C#? I thought C# was limited to Unity and everyone else was still using C++?

You're correct, the industry has not moved to C#. Not even close. The biggest player that uses it is Unity, but even they have their own special fork of Mono to get it to play nice. Full Disclosure: I work for a Microsoft/Xbox Studio.

[deleted]

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#106

Earlier quoted context omitted.

> They tried using multiple different languages until finally settled for developing GDScript. It is not a decision they just made willy-nilly but something they decided after using different languages did not work out as they hoped it would. This is a fair point and it was probably a good fit for their own needs, but I think that the person you're responding to seems to suggest that GDScript and the entire idea behi…

> But when you want to hire developers in the industry and take advantage of the existing C#/C++ knowledge, then using either of those and building the whole engine/documentation around them is probably the better choice. Programming in C++ is well supported though. This is the main reason I personally would not use C# in Godot much. It is really good general purpose language that will do fine in almost any situation…

> Programming in C++ is well supported though. This is the main reason I personally would not use C# in Godot much. It is really good general purpose language that will do fine in almost any situation but it will not excel as much on performance critical stuff like C++ does but also does not have the ease of use for quick scripting like GDScript.

This is an excellent point, though it also brings the complexity of C++ as a language to light as well. That's why many use Blueprints in Unreal Engine, just so they wouldn't deal with a powerful language like C++ that has lots of footguns, despite its libraries, interop and other capabilities. So much so, that they tried getting C# support into the engine (as well as a few others over the years).

In a sense, it's a spectrum, with something like C++ on one end, C# somewhere in the middle (reasonably performant and capable, but also with relatively few footguns) and GDScript on the other end, even though the library support isn't as good as, say, Python. Hence, if you need bunches of fancy functionality, you'll probably need to choose between either C++ or C#, not having access to the latter complicating things.

> Can you, though? Writing a CRUD app in C# is quite different to writing C# in Unity which is different to C# in Godot.

The concerns are a bit different, especially when you're racing against the render loop, but I'd argue that it's not all that dissimilar, be it in regards to C# in specific engines or different types of applications.

Personally, with a few key differences in mind, there isn't that much difference between developing local CRUD apps, doing web development, or even game development - those key differences in the case of game development being more focus on linear algebra and performance, and utilizing other abstractions (for example the whole scene graph concept and traversing it, which honestly is not that dissimilar from something like Pinia stores, which might be an interesting comparison).

Between different engines, you have the whole component system of Unity, which I think is a better fit for my personal headspace, but then again having everything be nodes in Godot is also great, especially since dealing with prefabs is no longer quite as awkward, even though you cannot attach multiple scripts to a single node, which is inconvenient.

In comparison, writing any kind of piece of software in Rust would be a wildly different experience from doing the same in C#, due to how different the language concepts (e.g. borrow checker) are. Similarly, I'd personally say the same about C++ and C# (the whole approach to memory management, even with smart pointers) and C# and GDScript (the gradual typing in particular).

> Learning a new language takes days or worst case a week, learning libraries, best practices, switching towards a whole new area like game dev vs backend dev, that takes lots and lots of time.

I'd suggest that learning a new language can take anywhere from a few months to close to multiple years, depending on the language and what you intend to do in it, especially when coupled with particular stacks/frameworks/engines. Just look at how much C++ software there is out there and how much of it is full of memory management related bugs. Sure, you might knock something together after a weekend with a book or two, but getting to truly know the ins and outs of a language, as well as some of the more popular design patterns (at least in the context of that language) will probably take way more than a week.

I do fully agree with your points about different engines having plenty of specifics, but would like to offer the suggestion that transferring from C# in Unity to C# in Godot will be a comparatively easy process, versus learning GDScript and not being able to use any of your in house non game engine specific libraries for development. Something like maths for splines, some back end logic for handling inventories, levelling up, dialogue trees, quest systems etc. Of course, in practice many end up being tied to a particular engine because nobody cares about portability - much like ORMs in practice rarely allow for painfree migration across different DBs.

> That said Godot is not ready for complex 3d games yet with or without C#.

With this, I can agree. It's nice to think about the future of the game engine, though. Somehow Godot seems to have gotten way more traction than the likes of Stride (which was great), NeoAxis, or even something like jMonkeyEngine. Not sure what their magic sauce was, but I hope they have a bright future ahead of them.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#107

My blunt review of Godot after using it for about 3 weeks, it's the community's Unity. But it's just not there yet, things which take seconds in Unity take minutes in Godot. Or are just impossible. It's not done yet, it's going to probably be done in either late 2023 or 2024. Godot 4 needs to come out, and they need to add mono. I've never been more frustrated with a programming language before I found Godot script,…

> Why not use Python, why, why not use? I don't know, haxe. Neither Python nor Haxe (presumably) have built-in types for vectors, quaternions, and matrices. Quite nice convenience features. Though I'd rather write in a lot of other languages than GDscript.

Python also doesn't have builtin types for linear algebra, hence NumPy.

So it isn't as if they couldn't add the support.

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#108

Earlier quoted context omitted.

Boxing is taking a Value Type (struct, int, enum, etc) and converting it to an Object. So Objects aren’t boxed.

Apparently we have different definitions of boxing. To me, and I've always used it (and seen it used) like this, a boxed value is a value that's stored on the heap and passed as a pointer. Maybe C# has a different definition?

No, from the C# docs[1] - Boxing is the process of converting a value type to the type object or to any interface type implemented by this value type

[1] https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#109
post #84
post #81

Earlier quoted context omitted.

What's so special about games that makes it not useful? Python has it and it's bread and butter, and Godot language is basically a gimped, less expressive, and less useful knockoff of python

> gimped, less expressive That's the point. Lots of what Python does isn't required in a game engine and is slow. It's basically visual scripting but quicker to produce, the whole thing is C++ underneath.

So basically instead of

   number_list = [ x for x in range(20) if x % 2 == 0]
   print(number_list)
one gets to write something like this,

    auto number_list = std::views::iota(0, 20) | std::views::filter([](const int n) {return n % 2 == 0; });
    for(int num: number_list)
        std::cout 

Re: Godot 4.0 development enters feature freeze ahead of the first beta

#110

Earlier quoted context omitted.

Apparently we have different definitions of boxing. To me, and I've always used it (and seen it used) like this, a boxed value is a value that's stored on the heap and passed as a pointer. Maybe C# has a different definition?

No, from the C# docs[1] - Boxing is the process of converting a value type to the type object or to any interface type implemented by this value type [1] https://docs.microsoft.com/en-us/dotnet/csharp/programming-g...

Right, so then in C# a boxed value is an object as far as I can tell.
Post reply on HN