Redot-Engine / redot-engine

Redot Engine – Multi-platform 2D and 3D game engine
https://redotengine.org/
MIT License
4.83k stars 221 forks source link

GDScript makes Redot dependent on the choices of the Godot project. #172

Closed AppliedBees closed 1 month ago

AppliedBees commented 1 month ago

Tested versions

all

System information

n/a

Issue description

Redot still uses GDScript, which is maintained by the Godot Foundation. Any modifications to the standard is going to be reflected in documentation and tutorials about GDScript. Redot needs to at least fork the scripting language too.

Steps to reproduce

n/a

Minimal reproduction project (MRP)

n/a

apofex commented 1 month ago

There is some truth in this. But for a while, the project must provide backward compatibility to attract developers.

AppliedBees commented 1 month ago

The later this is done, the later it is to change.

After all, people will come if an engine is great, not because it is similar to what they want to leave.

CoreTaxxe commented 1 month ago

GDScript should be kept for as long as possible. Instead if needed an optional superset should be created that implements all the features not compatible with the current GDScript implementation over time.

Making it easy for beginners to find learning resources and help online is a must for community growth. Godot did struggle a lot with that and renaming GDScript to something else would completely kill any resource/help someone unaware of the name change could get. And I figure its going to be a lot of people.

Elmapul commented 1 month ago

Don't throw the baby out with the bathwater

dreamycloud commented 1 month ago

Try to think outside the scope of Godot, successful open-source projects are those that are good for everyone, not just for those who already have prior experience

do-sieg commented 1 month ago

Think about people who already started a project and would think about moving it to Redot. A lot of them use GDScript.

I'll be honest guys. I'm ready to contribute in some form or another, but if there's no support for GDScript, there's no point for me to stay here.

And I'm not the only one with an advanced project in GDScript.

Don't forget this fork still has to prove itself and may die in a few weeks for what we know. You want to bring as many users as possible, not the opposite.

Comdfsfsfas commented 1 month ago

I don’t think GDScript should be replaced before Redot makes its mark in the game engine circle. GDScript is a good language, and there are many GDScript tutorials on the market, which will allow everyone to learn Redot better.

mrjustaguy commented 1 month ago

One of the main selling points of Godot is GDScript, Removing it would greatly disadvantage Redot's adoption and would be an idiotic move, that'd be done entirely for political reasons instead of functional reasons. Main selling point of Redot is avoiding being political, something it's so far failing at miserably imo, but whatever.

pmatyja commented 1 month ago

This only my personal opinion but GDscript was/is a mistake from the very beginning that Godot made. I understand it's purpose and reasoning behind it but making your own programming language is a massive effort that resources that could be spend on other development. Not to mention that this language its dynamicly typed making is only viable for small/medium projects. You can already see madness hapening by Godot addding specialized types for better performance "Dictionary<int, ...>" simialr what JS is doing with Int32Array and stuff. This would/ could be avoided using static typed language.

If anything Visual Scripting + any static typed language would make the most sense. If we would like to attract people and make engine stable and crash free then C# makes the most sense. Even Capcom in it's RE engine uses C++ only for engine and C# for gameplay.

Additonally I would also express that Web export for C# is also equally important. Since a lot of Unity users could jump in and use Redot for GameJams and therefor adapt new engine in the future.

Sorry to all GDscript users but this language should not be supoorted. I never used it and never will. It's too basic/slow for serious projecs. Again my personal opinion.

AppliedBees commented 1 month ago

Guys i think this is spam. Doesn't seem genuine content. I can reopen if is valid.

So just to explain this issue. GDScript doesn't need to be forked. GDScript is a module part of Godot engine and is already forked with the entire sourcecode.

The heck. I'm being genuine here.

If all you're doing is just reskinning Godot, then that's all people will think of you: a reskin. There's no actual project here. That's why I believe the scripting language should branch.

And, regardless of what you think of me, there's a genuine conversation going on here. If you keep this closed, it's just censorship of your community.

Comdfsfsfas commented 1 month ago

This only my personal opinion but GDscript was/is a mistake from the very beginning that Godot made. I understand it's purpose and reasoning behind it but making your own programming language is a massive effort that resources that could be spend on other development. Not to mention that this language its dynamicly typed making is only viable for small/medium projects. You can already see madness hapening by Godot addding specialized types for better performance "Dictionary<int, ...>" simialr what JS is doing with Int32Array and stuff. This would/ could be avoided using static typed language.

If anything Visual Scripting + any static typed language would make the most sense. If we would like to attract people and make engine stable and crash free then C# makes the most sense. Even Capcom in it's RE engine uses C++ only for engine and C# for gameplay.

Additonally I would also express that Web export for C# is also equally important. Since a lot of Unity users could jump in and use Redot for GameJams and therefor adapt new engine in the future.

Sorry to all GDscript users but this language should not be supoorted. I never used and never will. It's too basic/slow for serious projecs. Again my personal opinion.

However, GDScript is very attractive to some people who are starting to develop games from scratch, because its learning cost is lower than that of languages ​​​​such as c# and c++. GDScript is also mainly built for those who are new to game development. Currently, GDScript is left to Redot to attract game developers. A plus point for noobs.

But it is undeniable that GDScript also has many shortcomings, so we should first encourage everyone to use the GDScript+C# model or transition from GDScript to C# model to develop games.

First use the two main languages ​​GDScript and C#, and then depending on the development situation, we will see whether we should focus on C# or develop both together.

In short, I still say the same thing: don’t give up GDScript until Redot makes its mark in the game engine world.

pmatyja commented 1 month ago

This only my personal opinion but GDscript was/is a mistake from the very beginning that Godot made. I understand it's purpose and reasoning behind it but making your own programming language is a massive effort that resources that could be spend on other development. Not to mention that this language its dynamicly typed making is only viable for small/medium projects. You can already see madness hapening by Godot addding specialized types for better performance "Dictionary<int, ...>" simialr what JS is doing with Int32Array and stuff. This would/ could be avoided using static typed language. If anything Visual Scripting + any static typed language would make the most sense. If we would like to attract people and make engine stable and crash free then C# makes the most sense. Even Capcom in it's RE engine uses C++ only for engine and C# for gameplay. Additonally I would also express that Web export for C# is also equally important. Since a lot of Unity users could jump in and use Redot for GameJams and therefor adapt new engine in the future. Sorry to all GDscript users but this language should not be supoorted. I never used and never will. It's too basic/slow for serious projecs. Again my personal opinion.

However, GDScript is very attractive to some people who are starting to develop games from scratch, because its learning cost is lower than that of languages ​​​​such as c# and c++. GDScript is also mainly built for those who are new to game development. Currently, GDScript is left to Redot to attract game developers. A plus point for noobs.

But it is undeniable that GDScript also has many shortcomings, so we should first encourage everyone to use the GDScript+C# model or transition from GDScript to C# model to develop games.

First use the two main languages ​​GDScript and C#, and then depending on the development situation, we will see whether we should focus on C# or develop both together.

In short, I still say the same thing: don’t give up GDScript until Redot makes its mark in the game engine world.

Gdscript is even less noob friendly than Visual Scripting. Not to mention that each node could be backed by C# code which could be generated by C# generators and that would benefit from any optimization that are avialable for it.

This is why I belive that Visual Scripting is a way better alternative for any new user. Plus having good Node Graph clasess would be used for any other features or systems like Behaviour Trees, Dialogs or custom solutions for any dev. Similar what Unity provides.

do-sieg commented 1 month ago

GDScript is a super friendly language. I'm a senior dev and have been using it for years. It's frustrating only for its missing features, a problem that has been becoming less and less relevant with Godot 4. Removing it will leave a lot of beginners out (half of them would switch to C# anyway for the same reasons you did).

We should not actively remove features. If they die naturally due to a lack of interest, may it be. But let's not throw it willingly for personal opinions when it's used by a huge part of the community.

SonomSoft commented 1 month ago

Once you know one language, the others fall like dominos. They are all pretty much the same. Maybe it's because I am The Tech lead. Use whatever language you like it's all the same to me.

AnderJohnny commented 1 month ago

Maybe this is an opportunity to introduce a better programming language in view of GDscript itself's poor features and community that cannot compete with mainstream languages. I think Redot should be natively compatible with GDscript and another mainstream language (such as Python which is similar to GDscript)

SwissCore92 commented 1 month ago

Maybe this is an opportunity to introduce a better programming language in view of GDscript itself's poor features and community that cannot compete with mainstream languages. I think Redot should be natively compatible with GDscript and another mainstream language (such as Python which is similar to GDscript)

I dont think redot should add python support. There is no need for another dynamic typed language. Like you said, gdscript is similar to python, so python users have no problem using that. Gdscript is at least "semi typesave" . And maintaining support for multible languages needs resources that could be used developing the engine.

git2013vb commented 1 month ago

I want to add my experience. I start to use godot since 3beta. now I'm still to 4.2.2 (why not 4.3 you ask? because my project is quite complex and I start to have crash. I star to use GDSCript to learn the game engine, then, because I was a beginner my code base result like a "spaghetti code". So I decided to choose the only other supported language , even is was not my preferred one:C#. After a while, maybe because I'm not so great in C#, I start to see my project running slow. After a while I find out the culprit: GC. In the meantime GDScript introduced the static typing as way to improve performance and to improve the code legibility. So I decided to set aside C# and convert my entire project into GDScrtipt again. The project star again to run fast as I expected. I agree GDScript lack tons of feature, so much that I use vscode. But I don't want to use C# for develop games. In my opinion any language that have GC is not the right one for game development. My project is a multiplayer game: client with authoritative server. I use database (sqlite) and so far I'm quite happy with GDScript. It lack some feature but I know Godot have plan to add some: export dictionary. I suggest before decide to throw away something to have a substitution already ready ta people like. What godot need is to be more clear for what it can do and in which way. a lot of things are not documented at all. So priority: fix bugs and update ALL the documentation. Then let people choose which language want to use for scripting. I do not suggest C++ because now (2024) we have much better alternatives ( I'm not referring to rust even if I like it a bit) but I was thinking to zig for example. For example. I use debian 11 as operating system. Not windows because I like my privacy the most. So my mindset is to optimize rather to "add latest new" in my things. I will use this fork if: there will be GDScript, the most important bugs will be fixed and the documentation will get some improvement. Otherwise Ill keep going wit the main stream. This is how I stand :) Have fun. I keep and eye open to this fork.

AnderJohnny commented 1 month ago

Maybe this is an opportunity to introduce a better programming language in view of GDscript itself's poor features and community that cannot compete with mainstream languages. I think Redot should be natively compatible with GDscript and another mainstream language (such as Python which is similar to GDscript)

I dont think redot should add python support. There is no need for another dynamic typed language. Like you said, gdscript is similar to python, so python users have no problem using that. Gdscript is at least "semi typesave" . And maintaining support for multible languages needs resources that could be used developing the engine.

Yes, thanks for the correction. According to the current overall situation, how to maintain and develop the engine's own functions through existing resources is the first issue that needs to be considered. Multi-language support maybe needed after the community is stabilized.

SeleDreams commented 1 month ago

Gdscript has always been a module in godot. As such it could simply be an optional feature

craftablescience commented 1 month ago

GDScript is a woke language that lets variables change types at runtime. Redot should only allow languages with static typing to prevent users of the engine from encountering trans-type variables.

gravelgolem commented 1 month ago

I like GDScript being kept as it is a useful tool to attract new developers, like myself. It was a big reason I started using Godot, and kept using it. I'd be inclined to keep it, as it makes Redot accessible, and that is key to building support. I'd keep it until you can implement something else that is equally accessible or build tutorials for the alternative methods for Redot that are easily accessible.

NegInfinity commented 1 month ago

Gdscript is even less noob friendly than Visual Scripting. Not to mention

Just make it optional, if it isn't optional already. Whoever doesn't need it will turn it off, if no one needs it, it will die. Same applies to visual scripting. People do not stay "noobs" forever, so the engine shouldn't only target "noobs".

Efra-EMX commented 1 month ago

I'm speaking as someone who's working on a potato laptop:

  1. GDScript does not need to be compiled, and it can hot reload in the middle of gameplay, which means it's a massive time-saver and better for debugging. For C#, I have to wait for it to compile everytime I want to run the game. While this usually takes less than a minute, it is still holding me back from working efficiently.
  2. GDScript is supported in the built-in script editor. This means that I don't have to open a separate script editor for it. Switching back-and-forth inbetween windows can really hurt my workflow.
  3. Adding to point no. 2, the built-in script editor has various QoL features like dragging nodes/files to the editor to insert their path quickly, ctrl+click on any function or variable to take you to the proper documentation, ctrl+shift+E for quick math evaluation, etc. If C# can be supported in the built-in script editor, it will be wonderful

TL;DR

  1. GDScript has better workflow, at the cost of some game performance and feature limitations.
  2. C# has more features and faster performance for the game, but less efficient workflow.
DJKero commented 1 month ago

I believe that GDScript won't go away in the project but regardless I'll give my opinion. I don't understand why people have this attitude towards the language to be honest, for a beginner friendly, dynamic typed scripting language it's pretty good.

As @git2013vb said with the introduction of optional static typing and other features the language improved dramatically. Regardless of the discourse around it from developers I believe that if we had actual data we might be surprised on how many new developers it brought to the engine that maybe would've left if the main language was C# or something else.

As a developer interested in low level coding I understand the point of view of the experienced devs, but we can't disregard the possibility of it actually being a big contributor to the success of the engine in terms of popularity. Yes, the language can be improved, and it probably will, but I believe it's an integral part of the engine. And probably should be.

From my own experience, the language does its job. Most importantly, the language is a really good fit for the chaotic nature of game prototyping and game development and depending on the project it can be the only language, the main language (with parts that need optimization or missing language features done in C#/GDExtension/C++ Module/Other bindings) or just being glue code.

You can also completely ignore it and use whatever you want, so... That's it.

C-Higgins commented 1 month ago

It's not in the cards to remove gdscript at the moment. However, we should divert all resources away from it. Upstream will maintain it. Godot has a terrible reputation for being a toy engine; you can easily start, but it's impossible to finish, because the entire experience is catered to beginners learning to code, while real developers languish and can't ship their game.

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

What do the game devs need?

If Redot focuses on any one of these pain points, it would immediately become the preferred branch for people who know what they're doing. Newbies will learn whatever they need to learn. A giant userbase, 98% of whom are doing tutorials, isn't what we should strive for. A smaller userbase that actually puts games on Steam and proves that this engine is a real tool is what we (and Godot) need.

DJKero commented 1 month ago

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

I agree that GDScript should be maintained by upstream. However, I heavily disagree on the C# front.

If we're going to start talking about superiority then we're kinda derailing from the topic, BUT if we're going to, then any programming language with Garbage Collection should be automatically disqualified for being the a first class citizen. C# has a Garbage Collector.

Then we should be talking about:

heavymetalmixer commented 1 month ago

Not to mention that this language its dynamicly typed making is only viable for small/medium projects. . .

You can force static typing inside GDScripting by how you declare objects and function paramaters. Unlike hints in Python GDscript does force the type in the object and the code becomes faster. Btw, there's a way to make Godot/Redot give you errors if you don't use static typing: Screenshot_20241004_152148

NegInfinity commented 1 month ago

I don't understand why people have this attitude towards the language to be honest

//Opinion

It is a non-standard language that exists only in godot. Meaning your GDscript skills won't give yesterday's "noob" a job. That doesn't cater to non-beginner. Similar problem happens with visual scripting systems. They are non-standard and only exist in corresponding engines.

Standard scripting language solutions are lua, javascript, python. Several games use C# for scripting, but this is more of a hack, as the language is quite verbose, and, for example, function cannot exist at top level. Type system is a huge plus, but then there's lacking control over deallocation which becomes a pain point in unity. I've also seen Ruby being used for scripts in rpgmaker.

Ideal solution would be to use a language that is fairly standard and used elsewhere, but doesn't lock you into a specific platform. So skills used in the engine would remain useful outside of it. Could be a dialect. Something from TIOBE top 20, perhaps?

Anyway, just some thoughts.

git2013vb commented 1 month ago

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

I agree that GDScript should be maintained by upstream. However, I heavily disagree on the C# front.

If we're going to start talking about superiority then we're kinda derailing from the topic, BUT if we're going to, then any programming language with Garbage Collection should be automatically disqualified for being the a first class citizen. C# has a Garbage Collector.

Then we should be talking about:

* C++

* Zig

* Odin

* Jai

* Or any other alternatives

As Mentioned before nowadays we have some languages that are fast (compiling/running/footprint) as C++ if not better, and they help developer in memory management. I ruled out C++ and similar for this simple reason. Not because is not well known. I used C++ too in '80.. But today using it again for any reasons will be a "crime" :). We are not forced to live in the past :). Learn something new - time allowed - don't ruin everyone brain. On the contrary.

mrjustaguy commented 1 month ago

It's not in the cards to remove gdscript at the moment. However, we should divert all resources away from it. Upstream will maintain it. Godot has a terrible reputation for being a toy engine; you can easily start, but it's impossible to finish, because the entire experience is catered to beginners learning to code, while real developers languish and can't ship their game.

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

What do the game devs need?

  • First class language support for C#
  • Working physics (Jolt)
  • Few to no bugs
  • Web exports in C#
  • Console ports

If Redot focuses on any one of these pain points, it would immediately become the preferred branch for people who know what they're doing. Newbies will learn whatever they need to learn. A giant userbase, 98% of whom are doing tutorials, isn't what we should strive for. A smaller userbase that actually puts games on Steam and proves that this engine is a real tool is what we (and Godot) need.

It's absolutely not impossible to finish serious games with just GDScript, and have them perform well.. There are plenty of successful games made with Godot that just use GDScript.

1) C# is actually quite a lousy programming language for Game Dev IMO 2) Physics is functional, it's just a hot mess, and yea Jolt is likely a better alternative, though that seems it's in the cards that it may become The Physics engine of Godot, and work is being put into that - https://github.com/godotengine/godot-proposals/issues/7308#issuecomment-2283373911 3) Few to no bugs is never a thing with any engine, and sometimes the bugs are really just user misusing things 4) Most people don't export to web, but rather to Desktop, Console or Mobile, so this problem is a niche within a niche, though it'd be nice to have for the hardcore C# users 5) W4 Games, as well as some others are working on Console Port support for Godot, however they cannot be Made Open Source, Redot cannot help you here, it's the Console manufacturers that put these restrictions.

MachinistJohn commented 1 month ago

Use D-lang and lua

DJKero commented 1 month ago

As Mentioned before nowadays we have some languages that are fast (compiling/running/footprint) as C++ if not better, and they help developer in memory management. I ruled out C++ and similar for this simple reason. Not because is not well known. I used C++ too in '80.. But today using it again for any reasons will be a "crime" :). We are not forced to live in the past :). Learn something new - time allowed - don't ruin everyone brain. On the contrary.

Yeah I included it mostly for the sake of completeness and because its the language of the engine. But I'd prefer one of the others.

hiddentraveler commented 1 month ago

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

I agree that GDScript should be maintained by upstream. However, I heavily disagree on the C# front.

If we're going to start talking about superiority then we're kinda derailing from the topic, BUT if we're going to, then any programming language with Garbage Collection should be automatically disqualified for being the a first class citizen. C# has a Garbage Collector.

Then we should be talking about:

* C++

* Zig

* Odin

* Jai

* Or any other alternatives

Personally I think if we are not going with c/c++ then zig is the better choice. It plays really well with c/c++ .

CaCTuCaTu4ECKuu commented 1 month ago

First - GDScript must stay while it's in Godot. Event if politic behind Godot is retarded I believe Redot must be bare minimum fully compatible with Godot and as bonus have it's own features on top. Breaking things is easy and there is zero point of making something different just for sake of it

Second - I must admin that C# as my main lovely strongly typed language seems harder to work when you writing little script here and there. Scripting languages are there not for nothing and as engine script language it has integrations with engine and improving it

So to sum Redot must be Godot+ in terms of capabilities and fully compatible, passing all the tests. Ideally every commit from Godot repo should be here as well. But regarding of scripting language I dont know, I'm definitely okay with GDScript and dont even see a problend of it's name staying same, saying that Redot depending on GDScipt for godot choices, but this whole project is a fork. At least until project is mature enough issued suggestion is destructive

RadenTheFolf commented 1 month ago

I for one would fully support just renaming the language for now and leaving the implementation alone. Say rename it to rdscript and allow it to load and parse both .gd and .rd files so it stays backwards compatible yet allows the ability to branch off in the future. Nothing changes in terms of what the user sees and expects.

Tutorials remain valid and to the users it's like nothings even happened. only thing would be new projects use the .rd extension instead of .gd but I can't see it being too much of a hindrance unless just changing a file extension makes people scared like it's a completely new language

pmatyja commented 1 month ago

There are far more better choices than GDscript. Especially that there are insustry languages that users then can transfer knowledge to. Lua or even JavaScript are far more better. Adding optional types to GDscript is a bad idea because if you need performance you should pick C# or even C++ if you need maxium bare metal.

Using and then exposing well known language like Lua or JavaScript could add modding support to the engine for free. No to mention that JavaScript runs for free on web and Lua has an excellent JIT compiler.

But all and all scripting language should be just that, a scripting language. No optional types, no typed alternatives, nothing too complex. When user becomes more proficient, then it should reach for more better equipted languages.

CaCTuCaTu4ECKuu commented 1 month ago

I agree with you in that and lua or js was my first thoughts as well, but i actually somekind agree with creating own language which is tightly integrated with engine, I think it's just not there yet, gdscript pretty easy and I don't see problem aside from performance that can be improved with time But still removing it would harm everyone who already invested in it and who will use godot while looking at redot and thinking if only they support gdscript I would change rails. That's exactly my point. There is no way realistically in foresight future that godot will become inferior and less attractive to people and redot to succeed need an auditory that accepts it existence

CaCTuCaTu4ECKuu commented 1 month ago

Say rename it to rdscript and allow it to load and parse both .gd and .rd files so it stays backwards compatible yet allows the ability to branch off in the future. Nothing changes in terms of what the user sees and expects.

Renaming would only confuse everyone unless there are enough difference and when it's existence questionable to begin with best way is just dont touch it and merge commits, let godot team do heavy lifting it doest harm if you don't want to use it - don't

darkhog commented 1 month ago

Try to think outside the scope of Godot, successful open-source projects are those that are good for everyone, not just for those who already have prior experience

Yeah, and for those new people the vast amount of GDScript tutorials already written would be greatly helpful, don't you think? If we change the language, we'd have to build brand new base of tutorials and documentation, which is a lot of work that might not pay off. Instead we should leverage what's already there so that we can EEE Godot properly.

CaCTuCaTu4ECKuu commented 1 month ago

I think its important to keep in mind that though people in charge of godot are toxic i don't remember anything like LGBT code, you definitely can come up with something, but when its a big and complex system like game engine there are rules and standards so in the end if bug fixed or feature released it should be accepted (that is if related to engine) Child is not responsible for their parents :)

Reffined commented 1 month ago

Both engines need to pivot from this, but Redot can differentiate by doing it first. This engine could become a serious contender against Unity, but it needs to want to become that. That would entail ignoring everything to do with gdscript, the internal editor, GDphysics, and all the proprietary nonsense that will never be used by serious developers. There is a limited dev budget; it must be spent wisely.

I agree that GDScript should be maintained by upstream. However, I heavily disagree on the C# front. If we're going to start talking about superiority then we're kinda derailing from the topic, BUT if we're going to, then any programming language with Garbage Collection should be automatically disqualified for being the a first class citizen. C# has a Garbage Collector. Then we should be talking about:

* C++

* Zig

* Odin

* Jai

* Or any other alternatives

Personally I think if we are not going with c/c++ then zig is the better choice. It plays really well with c/c++ .

i would love to use zig for game dev i used to be a unity game dev working with several small indie companies but i have been doing back end with Go for a while now and ever since i started using go and got used to the simplicity it's really hard to deal with all the C# and dotnet feature creep , zig in my opinion hits that exact sweat spot despite being fast and manually managed it feels fluid and the syntax is intuitive (love the generic and comptime implementations) even more so than Go and since zig is relatively new just like Rodot is , i think if it is chosen the two projects can benefit and influence each other a lot

DJKero commented 1 month ago

There are far more better choices than GDscript. Especially that there are insustry languages that users then can transfer knowledge to.

It seems like you're far too removed of reality, there are a ton of people that come JUST to make games, and GDScript is well suited for them. They probably aren't going to make games that need more optimization than what GDScript can provide for them. And you're talking as if learning a new programming language was such a monumental task. Its not.

Using and then exposing well known language like Lua or JavaScript could add modding support to the engine for free. No to mention that JavaScript runs for free on web and Lua has an excellent JIT compiler.

You can already extend the engine with addons/plugins, C++ modules and GDExtensions! Adding yet another scripting language officially is not a good idea at all.

But all and all scripting language should be just that, a scripting language. No optional types, no typed alternatives, nothing too complex. When user becomes more proficient, then it should reach for more better equipted languages.

GDScript type system makes a lot of sense in the world of game prototyping and early/mid development. I understand not liking dynamic typing, I don't like it much too. But you're totally missing the point with the type system. The idea is to allow for rapid iteration while the game design is unstable and being able to use the same language to refactor and optimize things if needed.

If you want to make everything in GDScript, you can. If you want to make a prototype in GDScript and then pivot as needed, you can. If you want to make everything in another language from the start, you can.

Godot gives you this flexibility, don't try to come and approach the community from a sense of technical superiority because I believe we're not down for that here.

Edit: I think it's obvious but just in case, I'm a programmer and I love low level and technical stuff. But we're not all equally interested in programming, GDScript is just a tool for gamedev and it just works for most of the people that try it without prejudice, in one way or another.

jlitewski commented 1 month ago

I agree we should keep GDScript the way it is and let Godot maintain it. It's a valuable tool that will greatly hinder the engine if it's changed, especially noobs coming over from Godot. If they try to do a thing in the engine and they can't with GDScript in Redot, they'll just go back to Godot to do the thing, not learn another way to do it specifically for us.

I also agree that C# needs a lot of love. I'm down for the idea of Redot targeting C# and improving that aspect of the engine. It'll help people coming from Unity for easier transitions, and with C# being a more "standard" language, it'll make Redot itself seem more mature.

GDScript has flaws, we all know that, but we can't just chuck it because fuck Godot. If we find better ways to do things with GDScript, we should push those changes upstream so all of the Godot communities can use it, and just keep our C# improvements to ourselves for the time being. I wouldn't mind having Redot become C# first and GDScript second

zaftnotameni commented 1 month ago

just so you know where I'm coming from: I think inventing languages is a terrible idea, and gdscript is an extremely amateur example of that and was a terrible mistake.

However, removing it now would be project suicide - would alienate the vast majority of the godot community that could potentially move over to redot, I'm strongly in favor of keeping it as is.

Personally I'd just focus our efforts in other areas and just let gdscript improvements be driven by the godot project - but keep the language for the foreseeable future.

Roy5691 commented 1 month ago

The wealth of pre-existing GDScript tutorials coupled with the user friendly attractiveness of Godot/Redot to new game development people makes it imperative that GDScript is kept in Redot.

I can't back up what I'm going to say with hard data but I am sure that the majority of game developers using Godot are hobbyists (like myself) who will probably never finish and release an AA or AAA commercial game (like I won't) and this is the majority of the Godot users. I'm not insulting anyone: I am literally describing myself.

I understand that there are game developers using Godot/Redot who are capable of such game development, and Redot should facilitate their skills and ambitions, but not to the detriment of the bulk of the "market" which I believe is proud hobbyists.

As it stands (and someone else mentioned above) using GDScript is optional if developers want to use a different language for whatever reason, so I don't see the problem. Renaming GDScript isn't necessary either.

RadenTheFolf commented 1 month ago

As we plan on maintaining compatibility as long as possible GDScript will remain an integral part of the engine. There are no plans to do any form of renaming of GDScript or the addition of new languages into the engine itself at this time

KawaiiSelbst commented 4 days ago

Sorry for the necroposting, I just wanted to add my 2 cents.

First of all, I would like to ask those who advocate replacing GDScript with something else, are they ready to spend their time on this? Or do they have someone who is willing to do it? Or are they ready to sponsor someone to work full time on the development and implementation of a new language?

Leave GDScript alone, in any case, mostly upstream resources are spent on its development, and it does not burden the Redot developers in any way.

I also want to say that I can only sympathize with those who say that they do not use GDScript at all, because it is an excellent tool for scripting, even if you write mechanics in C# or any other language. The engine always leaves you or your designer the opportunity to call your high-performance functions written in your baremetal, from a compact GDScript runtime.

I would also like to note that the GC in C# does not prevent it from running at speeds similar to C++ in the right hands, while being more memory safe. You just don’t need to test the garbage collector’s strength, stopping altogether to think about the fact that a million objects that you created in runtime and threw away in the next frame need to be deleted by someone =)

darkhog commented 4 days ago

Agreed for the most part, but want to add this: You can force GC to run when you know it's convenient, because player is e.g. messing with the option screen or whatever (i.e. small freeze related to GC won't make player game over) by calling System.GC.Collect().

KawaiiSelbst commented 1 day ago

@darkhog In fact, you should not unnecessarily force GC to work, because it can lead to hitting and accumulation of short-lived/temporary objects in the list of the 2nd generation of objects, which GC checks only when cleaning of the first two generations did not give enough memory. Which can be considered as a behavior similar to memory leak, although in case of real memory shortage, unnecessary objects from the 2nd generation will be checked and removed.

Also, the garbage collector should not cause any noticeable pauses, because by default it runs in a separate thread in desktop mode