{"action":"created","issue":{"url":"https://api.github.com/repos/godotengine/godot/issues/5081","repository_url":"https://api.github.com/repos/godotengine/godot","labels_url":"https://api.github.com/repos/godotengine/godot/issues/5081/labels{/name}","comments_url":"https://api.github.com/repos/godotengine/godot/issues/5081/comments","events_url":"https://api.github.com/repos/godotengine/godot/issues/5081/events","html_url":"https://github.com/godotengine/godot/issues/5081","id":158854095,"number":5081,"title":"C# as scripting language","user":{"login":"paper-pauper","id":6094089,"avatar_url":"https://avatars.githubusercontent.com/u/6094089?v=3","gravatar_id":"","url":"https://api.github.com/users/paper-pauper","html_url":"https://github.com/paper-pauper","followers_url":"https://api.github.com/users/paper-pauper/followers","following_url":"https://api.github.com/users/paper-pauper/following{/other_user}","gists_url":"https://api.github.com/users/paper-pauper/gists{/gist_id}","starred_url":"https://api.github.com/users/paper-pauper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/paper-pauper/subscriptions","organizations_url":"https://api.github.com/users/paper-pauper/orgs","repos_url":"https://api.github.com/users/paper-pauper/repos","events_url":"https://api.github.com/users/paper-pauper/events{/privacy}","received_events_url":"https://api.github.com/users/paper-pauper/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/godotengine/godot/labels/discussion","name":"discussion","color":"ee77ee"},{"url":"https://api.github.com/repos/godotengine/godot/labels/feature%20proposal","name":"feature proposal","color":"1144ff"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":46,"created_at":"2016-06-07T07:09:27Z","updated_at":"2016-06-12T11:35:57Z","closed_at":null,"body":"I could not find any other issue mentioning this, so I suppose most discussion about it happened over IRC.\r\n\r\nIn #5049 we discussed some things about scripting, and some said the Godot team is considering C#.\r\n\r\nC# is a great language with many features, but I personally think that considering Java 8 is a much better language than Java 6, has a better runtime across many platforms and a better JIT and GC than the CLR (unless things changed in the last year), Java could possibly be a better candidate.\r\n\r\nUnity might use C#, however Godot never set out to be a Unity ripoff. Java is much more popular than C#, according to [this site](http://www.tiobe.com/tiobe_index?page=index) and job postings, and there are many game developers (especially on Android) who use Java.\r\n\r\nAdditionally, many of the features that C# offers compared to Java are not much important if the purpose is scripting, as most scripting in games is imperative and (at worst) object-oriented (and many of the advantages C# offers are related to functional programming, which Java 8 supports decently anyway). Just take a look at your average Unity script, even a more complex one like [this](http://wiki.unity3d.com/index.php/MeleeWeaponTrail): there's not much there that can't be done in Java straight away!\r\n\r\nThe JVM also offers a good amount of other languages - Kotlin, for examples, which has many features like nullable types, pattern matching and operator overloading. There's also Ceylon, which is in many ways a better C# (and compiles directly to JavaScript). Supporting those would not require any more work than adding a JAR dependency. Java also has a larger amount of libraries.\r\n\r\nAnd if performance is the main concern and a runtime like the CLR and JVM is too heavy, those can be done away with and C++ could be used directly via LLVM, so that a JIT can be used, avoiding expensive recompilations. This solution is best kept along with GDScript, so that novices (or people who don't need extra performance) can use that instead (and avoid segfaults). The latest standard of C++ has very clean syntax, so I don't think verbosity should be a problem. \r\n\r\nC++ is the solution I would like the best, because it would bring the fastest performance (zero overhead, can't be said for any other language), it would not need any extensive changes (as Godot can already be used from C++, and is written in C++ itself), it would have the more consistent support across platforms and it would make it possible to use Godot for very large projects (such as AAA games - there's a reason most studios use Unreal and not Unity). Additionally, keeping GDScript would let those people who don't need extra performance an easier way to write scripts than Java or C# (both very verbose languages) would be.\r\n\r\n**tl;dr:** I think C++ (or worse, Java 8) makes a better choice than C# for scripting in Godot.\r\n\r\nAny opinions?\r\n\r\nEdit: I see the \"feature proposal\" tag (which is correct) but I want to make it clear that **I'm not proposing C# support in Godot**, I'm merely reporting and commenting on some of the things I've heard around."},"comment":{"url":"https://api.github.com/repos/godotengine/godot/issues/comments/225427815","html_url":"https://github.com/godotengine/godot/issues/5081#issuecomment-225427815","issue_url":"https://api.github.com/repos/godotengine/godot/issues/5081","id":225427815,"user":{"login":"neikeq","id":7718100,"avatar_url":"https://avatars.githubusercontent.com/u/7718100?v=3","gravatar_id":"","url":"https://api.github.com/users/neikeq","html_url":"https://github.com/neikeq","followers_url":"https://api.github.com/users/neikeq/followers","following_url":"https://api.github.com/users/neikeq/following{/other_user}","gists_url":"https://api.github.com/users/neikeq/gists{/gist_id}","starred_url":"https://api.github.com/users/neikeq/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/neikeq/subscriptions","organizations_url":"https://api.github.com/users/neikeq/orgs","repos_url":"https://api.github.com/users/neikeq/repos","events_url":"https://api.github.com/users/neikeq/events{/privacy}","received_events_url":"https://api.github.com/users/neikeq/received_events","type":"User","site_admin":false},"created_at":"2016-06-12T11:35:57Z","updated_at":"2016-06-12T11:35:57Z","body":"> Maybe I could help with that? I've been using Unity for several years and know the thing quite well compared to any other engine - I'd be a good lab rat for this guide.\r\n\r\n@StraToN made a post in the facebook group asking for this kind of help. Contact him (I am not sure anyone else is working on that too)."}}
{"actor":{"display_login":"neikeq"}}