Unity Engine ToS change makes cloud-based SpatialOS games illegal
arstechnica.com
arstechnica.com
What Improbable really has, or claims to have, is a way to scale massively multiplayer games where everyone is in the same world. They have a back end which is basically a synching system for small data elements between computers in a data center. Think of it as being like the way a shared memory multiprocessor synchs its memory system. Some data items belong to a single CPU, and that CPU has read/write access to it. Anybody else can read, but they get updated if the data changes. Who has write ownership can change based on demand. Improbable has a downloadable demo if you want to play with this.
The game use of this is as a solution to the "region crossing" problem in Second Life. The big Second Life world is divided into squares 256m on a side, each managed by a separate process. The processes talk to each other, and objects can move across region boundaries. The system used is ad-hoc and fails frequently. If you drive around Second Life, about twice an hour you'll have serious trouble at a region crossing and may have to relog.
Improbable raised $500M, the largest investment ever made in a European tech startup.[1] They put 150 developers on the problem. They claim to have a solution. It's set up as a pay per use service. You pay for data storage, you pay for network traffic, and it has to run on Google's cloud. They don't publish prices, but at least one developer dumped them for cost reasons.
This is going to be like physics engines. In the 1990s it was really hard, and physics engines required heavy research into nonlinear differential equation solvers and fast collision detection. I used to work on that. There were startups with unicorn dreams - Mathengine, Havok. Now, everybody does it, and multiple open source libraries are available. Mathengine is gone, and Havok had a down round, downsized, replaced the management, and was sold twice. Physics is routine middleware now.
Right now, though, Improbable has the only system for this. Until someone else figures it out. This event pushed Improbable to open source their API code with the MIT license. That means anyone can now see how to talk to the back end, and start thinking about how to replace their back end. Progress marches on.
(Hm. What if you wrote a back end which, instead of needing multiple "cloud" machines, ran on a single huge Amazon AWS instance, like the one with 128 CPUs. That's an easier problem than coordinating it over the network. You might not be able to support a planet sized world, but you could support large islands you have to teleport between.)
[1] https://www.theguardian.com/business/2019/jan/10/british-gam...
What they're shipping right now is the latter.
What they're selling to investors is the former. Planet scale.
https://unity.com/solutions/real-time-multiplayer/game-serve...
Apparently the Unity executives agree with this, otherwise they wouldn't be trying to strong arm competition away instead of competing on a playing field that's already skewed in their favor.
You can get really big systems these days; scaling up before scaling out really helps with coordination problems. But scaling up your servers also makes redundancy and data retention harder. And, when you end up running single (or paired) systems that are the biggest you can get, economics are often lined up against you -- motherboards and processors for 4-socket systems cost way more than for 2-socket systems, and they're updated at a slower pace. If you can make a system to allow seamlessly transitioning region boundaries across server nodes, that should work fine with a single node server, but also enable you to use less expensive nodes; and in cloudy situations, could enable ramping capacity to match usage in real time.
Eve online has similar division per solar system, last time I played you had to wait up to 30 minutes to cross during massive rush hour, with some cross points being outright disabled when node reached its limit.
Naive mind who never worked in the field would say the most obvious step is following video codec world and moving to dynamic variable block size segmentation (quadtree). Compact sparse regions together, keep dividing the busy ones to manageable levels of load.
These terms are incredibly vague. Makes it sound like you cannot run your own dedicated server for multiplayer without being in breach of the new terms. If Unity forces their new multiplayer hosted service on their users, I (and I foresee many others) will immediately start transitioning to Unreal.
Ref: https://unity3d.com/legal/terms-of-service/software (sec 2.4)
There are other providers that do this that are allowed to: https://unity3d.com/legal/terms-of-service/software/authoriz...
Here is the overview provided by one of Unity's streaming partners Genvid [0]
"Genvid provides an easy to use SDK, with a C interface, which can be used to automatically capture your game content (audio and video), encode it properly (e.g. H264), and to stream it to a service (e.g. YouTube). It also provides routines to send additional game data to spectators (e.g. scores, player profiles, chances of success, etc.), as well as hooks to receive commands coming from them."
In contrast, Spatial OS provides a back-end to a game delivered using Unity:
"SpatialOS is a cloud-based computational platform that lets you use many servers and engines to power a single world. The platform coordinates a swarm of micro-services called workers, which overlap and dynamically reorganize to power a huge, seamless world. The platform also lets you handle a huge number of concurrent players across different devices in one world"
[0] https://www.genvidtech.com/doc/SDK-1.19.0/quicktour/overview...
I'm planning on releasing something like this, with Unity clients on the roadmap. I've no plans to run headless Unity instances on servers, however. Would Unity make my system "illegal?"
Those terms seem absolutely insane to me, and I'd never develop on a platform with them.
I'm sure this isn't intended to stop you from running your game's central multiplayer server. It's just to make sure you pay an appropriate licensing fee for Unity.
I'm surprised to hear that's a scalable model and the terms do seem to read more broadly than that, but it's reassuring that it could be something other than a baldly monopolistic power play.
Can you give a source for that? As far as I know the runtime of Unity has no paid license.
After all, you can distribute the runtime to customers. You can run the editor as a developer.
How many license-seats should you purchase to run a headless server? How many customers are being licensed to use that server?
By continuing to buy UE you're just digging yourself a deeper hole for when things inevitably turn sour (as they just did for Unity).
Successful releases using open-source engines are rare.
For the overwhelmingly majority, they are much better off just using one of the big game engines, even after paying them.
Unity is not open source, it does not come with batteries included (so you end up buying a bunch of poorly maintained unity assets/plugins to do stuff that UE4 does out of the box), and I think they're struggling as a company more than people realize (having raised large investment rounds and now seeking ways to monetize to an extent that would justify such investment). The best thing Unity has going for it is its dedicated user base.
Meanwhile, UE4 is a really good deal and keeps getting better with every release. It's really just a better put together engine all around.
Important to note, neither is Unreal really. It's not a pedantic distinction here either, as it affects how far you can take a project that modifies the core engine.
Not that I'm against Unreal in any way, it's just important to keep in mind.
Also the whole point of this story is that license terms do matter, especially if you want to sell games commercially.
> I think the distinction is pedantic for most users.
In a technical discussion, there's no reason not to use the proper terms for things.
The distinction is that the code you write belongs to Epic. You become an unpaid contractor.
https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s...
UE4 is open to every last bit.
The reason it's not open source is the royalty clause, not lack of ability to see/edit/modify/fork the code.
Interesting.
What really makes the difference is that Unity has light-weight rendering pipelines available, running on older GPUs. UE4 just ditches those devices.
It's not about performance in 99% of frames, it's about not dropping frames when the GC kicks in and needs more time than your budget accounts for.
Why? Unreal Engine has targeted iOS + Android phones for 5+ years now, successfully. (Fortnite, PUBG, Dungeon Defenders, Horn, etc).
More mobile developers are experienced with Unity over Unreal today, but that's largely inertia more than anything else.
F2P mobile dev is also very UI heavy, and UI work with Unity/C# is easier than dealing with C++/Unreal.
And Unity has a wealth of ready made plugins that can be quickly integrated into a project for things like IAPs, advertising, analytics, etc. Although maybe UE is catching up in that area by now?
Dungeon Defenders and Horn are not UE4 titles, UE3 isn't available anymore. PUBG and Fortnite only work on higher-end phones. UE4 is going the "easy" route by not supporting older devices. With Unity, you could still target fixed-function hardware up until recently.
This is a false dichotomy that came about because Unity was the first major AAA engine that was free to use. UE4 has easily surpassed them at this point. See PUBG Mobile, Fortnite Mobile, etc. There's absolutely nothing like that on mobile using Unity.
Does now though [walks into corner growling] :/
How about not having to use the dumpster fire called C++ for game code? C# is far nicer to use. Also, in Unity code hot-reloads instantly and reliably.
> Meanwhile, UE4 is a really good deal and keeps getting better with every release.
So does Unity. I think people underestimate how much more development effort went into Unity in the last years. UE4 has more fanboys, less actual success. On the other hand, with the Fortnite windfall, maybe UE4 will pick up pace now.
> It's really just a better put together engine all around.
It's still a godawful pile of C++ that takes forever to compile. I'm sure the same is true for Unity's core, but they're moving to a subset of C# that can be compiled more efficiently.
Unity shines in its flexibility, easy scripting, and fast workflow. I can whip up a script in C# very quickly that does exactly what I want. With that scripting, I can have a lot of control how the engine and rendering and post effects work, much more than Unreal. Prefab workflow makes much more sense than anything in Unreal blueprints. Mecanim is not as fully featured in some ways as Unreal's animation system, but with the Humanoid skeleton, animations can be used easily on different models. With Unreal, you need to use retargeting, which is painful and can have serious problems if the models are even slightly different in size.
...but it’s really quite a mess when you look closely.
A successful project and “good code” aren’t necessarily the same thing.
Ue4 has the source available, so you definitely can integrate your preferred scripting language.
Unity had their brief shining moment in the sun from 2015-2017 when they were supporting the growing indie scene on Steam, their VR was lightyears ahead of UE4, and UE4 still hadn't gone free-to-use. But with all that Fortnite money now and their new business model, I've no doubt UE4 is going to be the best possible game engine moving forward.
Especially C#7, and the support of the latest 7.3 in the most recent Unity.
C# is my favorite of the common primarily OOP languages. I would take a LISP any day... See Arcadia.
First, their class reference documentation is very poor. The majority of classes and functions have either no description, or a description that basically repeats the function name in sentence form. For example, http://api.unrealengine.com/INT/API/Runtime/CoreUObject/UObj....
UE4 is fairly opinionated about what kind of game you're making. A lot of its core classes, like AActor, AGameMode, etc. are designed with a multiplayer fps in mind. For example, the basic actor class is much heavier than Unity's GameObjects. Every actor gets things like a built-in PointDamage and RadialDamage event so they can be damaged by guns and grenades.
There's a lot of minor issues with API/naming choices. ConvertTransformToRelative() has the Transform and ParentTransforms parameters backwards and instead gives you the ParentTransform relative to Transform. FBox.IsInside() should be named FBox.Contains(). As it stands, "if (MyActorBounds.IsInside(MyContainer)) { }" does the exact opposite of what you'd expect. The sin() and cos() nodes in materials don't take radians, nor degrees by default, but revolutions (so sin(0) == sin(1) == sin(2) == 0), even though the C++ FMath::Sin() function takes radians.
More importantly, we encounter engine bugs and crashes pretty frequently. Just recently, I was unlucky enough to encounter 3 separate bugs with OnAudioPlaybackPercent (it returns wrong values in various circumstances). Atmospheric fog started whiting out the screen after updating engine versions (still investigating this one). We've had tons of issues with child actors either becoming corrupt or losing their default values. I think we encounter some engine issue every week.
My favorite was when deleting a question mark from a comment in C++ caused everyone to be unable to compile. That had us scratching our heads. Any guesses why that would happen? (Hint: it's Unreal's fault.)
"Delete binaries and intermediate folders and recompile" is practically our unofficial office motto due to how often it fixes issues. Which leads me to, compiling C++ is slow. The near instant compile times of Unity are like a breath of fresh air.
Finally, the community and Asset Store for Unity seem much better. I wish we had something like FinalIK for Unreal. The Asset Store has 10x more content than the UE4 Marketplace. We usually look on the Asset Store for stuff like sounds or meshes, but it can be inconvenient, especially if they come with custom materials or code.
[edit: derp meant this in response to a different comment but I think it still stands. Weird/possibly terrible move by Unity but I don’t know if UE4 is a realistic alternative for a lot of places. Surface level they seem similar but there are so many differences]
I prefer Unity over Unreal for a ton of reasons, but unreal has had animation retargeting since the early days.
https://docs.unrealengine.com/en-us/Engine/Animation/Animati...
Blueprints are actually really cool for what they are and have a bunch of interesting debugging considerations, such as being able to see the flow of "code" visually.
Either way it's not something I'd trust enough to use for a commercial project, so I definitely wouldn't say UE supports C#.
This is mentioned on the linked site:
"You will need source access to Unreal Engine on GitHub to get access to the MonoUE fork".
I wouldn't go around telling people UE4 supports C# based on this.
https://twitter.com/TimSweeneyEpic/status/108340746025221734...
Not only that but he points out that they intentionally made Unreal Engine's TOS "perpetual" specifically so they can't change it to do something like Unity has done here.
On top of that, Unreal Engine sourcecode is available to all Engine users on Github unlike Unity.
https://twitter.com/TimSweeneyEpic/status/108340746025221734...
"We specifically make the UE4 EULA apply perpetually so that when you obtain a version under a given EULA, you can stay on that version and operate under that EULA forever if you choose."
That said, I do agree with his point. Unity should consider making these new TOS provisions apply from today forward instead of making them apply to everything. (That probably won't happen, because it would kneecap their upcoming cloud offerings, but I think ideally that's how it should work.)
> By doing so, you, the Licensee, agree to all terms and conditions of this Agreement or in the accompanying documentation. You should read this Agreement carefully before the Start Date. If you do not agree with the terms and conditions set forth in this Agreement you are not authorized to use the CRYENGINE.
> You agree to check www.cryengine.com periodically for new information and terms that govern your use of CRYENGINE. Crytek may modify this Agreement at any time. Crytek will inform you about revisions to this Agreement by email and/or by a notice on our home page and/or during log in. Revisions to terms affecting existing CRYENGINE shall be effective thirty (30) days after posting at www.cryengine.com If you do not agree with the new terms your only remedy is to stop using CRYENGINE.
...
> If your register your Game later than June 30, 2018 then this current Agreement shall apply (no matter which CRYENGINE version you use);
...
[0] https://github.com/CRYTEK/CRYENGINE/blob/release/LICENSE.md
I always thought a contract had to include "a meeting of the minds," and I cannot see how that is possible if one party can change their mind for any reason at any time without any discussion or renewed agreement.
PlayFab is unmentioned but they will also be affected by this move as they offer a dedicated server hosting service among their offerings.
Even more frustrating is that Unity’s offering is not even in beta yet. Details have been sparse, though I expect to hear more at GDC this year.
After being burnt by the Source Engine, I'll never use Unity again after having read this.
They aren't putting out many new games, although they did just release Artifact a couple months ago. But DOTA 2 & CSGO continue to get updates, changes, and improvements. CSGO for example has an entirely new, machine-learning based anti-cheat system called VacNet: https://www.youtube.com/watch?v=ObhK8lUfIlc
They have tons of talks on GDC of all sorts of really cool stuff they are doing that's related to Source 2 and has nothing to do with Steam.
But you can apparently hack around with Source 2 by using The Lab's Robot Repair (Source 2) as a mod base and use the Hammer 2 tools from DOTA 2. So... technically yes, you could play with it. Just maybe not easily, and maybe not entirely intentionally.
In real world inventions someone could make a compatible piece and users could just buy it and plug it in. Say you have a clever new attachment for a vacuum cleaner.
In cyberspace you can make things incompatible by law, and it's very effective to police.
So what should you be allowed to do this with?
It seems like VCs want their growth number up and Unity has a very clear plan to run their engine in the cloud to create artificial growth by being the sole vendor of Unity Multiplayer Hosting.
This is the shadiest move I’ve seen in the Industry, even worst than MongoDB.
[0]https://www.crunchbase.com/organization/unity-technologies
> If you make the functionality of the Program or a modified version available to third parties as a service, you must make the Service Source Code available via network download to everyone at no charge [...] Making the functionality of the Program or modified version available to third parties as a service includes, without limitation, enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network, offering a service the value of which entirely or primarily derives from the value of the Program or modified version
If I make a generic website that uses Mongo as a database, does that constitute making Mongo available as a service? It's clearly interacting with the functionality through a computer network, and could be said to derive its value primarily from the value of Mongo. That's clearly not the intention[1], but I would not be confident making that claim solely based on the licence text (and the FAQ is not incorporated as part of the licence).
There's also some debate about whether it meets Section 9 of the Open Source Definition ("License Must Not Restrict Other Software").
[1] https://www.mongodb.com/licensing/server-side-public-license...
No reasonable person would ever say that your website derives its value primarily from the database engine.
But lawsuits aren't forced to be reasonable.
I would also find it difficult to argue that it's _not_ "enabling third parties to interact with the functionality of the Program or modified version remotely through a computer network" (given how broad it is), which is the first example given.
It's a shame really because they did the whole onboarding really well, you could literally get it up and running in a couple of minutes and it was extremely easy to use for developers.
Unity allows streaming for approved partners with the correct liscences, but apparently negotiations with spatial broke down. Since unity didn't comment on why, all we can do is speculate.
The open source offerings are toys compared to Unity/Unreal.
Also it's a great game, but I wouldn't say it's comparable graphically to a high end AAA game.
"Worryingly, this change occurred during an open commercial negotiation with the company to find a way to do more together."
So they had an ongoing negotiation and Unity just went ahead and made the change? Yikes.
Also kudos to Improbable for setting up an emergency fund for partners affected by this.
"If a game developer runs a Unity-based game server on their own servers or generic cloud instances (like GCP, AWS or Azure), they are covered by our EULA."
"We are preparing a blog post because there is a lot of mis-information but the short summary is that using Unity as a game developer or game studio in a generic cloud (GCP, AWS, Azure) or on your own servers is perfectly legal."
https://forum.unity.com/threads/recent-tos-update-blocks-the...
The first time I saw their CEO choice I thought that this can't be good for the dev community around Unity.
Here is a question, even though Unity is incorporated in the US, did anyone find the filings with the SEC? Or is it not required for and Inc to publish them?
Unity is a private company.
Basically, if you can't go buy a company's stock, they probably don't have public filings with the SEC.
Anyone know why that’s not an option?
If you use Unity, you agree to Unity Technologies terms, and their discretion to change them, without notice. It's literally in the terms. It's not so much software as it is software as a service.
If you don't agree with the new terms, you must immediately stop using the product.
The illusory promise doctrine is very seldomly used which means there's a lot of uncertainty about whether or not it would even work. And that's if the dispute gets into the courts in the first place. Which courts it gets into is another big deal; some T&Cs put requirements that the choice of forum for disputes is a favourable one for them, or they force arbitration to be the primary dispute resolution mechanic.
That said, the illusory promise doctrine CAN and HAS demolished these type of T&Cs in the past. Sometimes they even blow up other contractor favouring terms as they go (like the aforementioned choice of forum/arbitration clauses, etc.) But why are people still putting this language into their agreements? Well...
Even if the court doesn't like that segment of the contract and they sever it, there are other ways for the contractor to indicate that the bargain they've arrived at shouldn't be disturbed - including pointing towards continued performance and a lack of notice from others, so even if you correctly note that the contract is busted, the court might say you tacitly agreed to the changed terms and they're read back in, anyways.
Civilian systems have a different strategy for dealing with these types of contracts, calling them contracts of adhesion. They aren't the product of a negotiation, so they treat them will less lenience and deference.
Common law countries often adopt this style of protection through Consumer protection laws or other similar vehicles where the rules of contract are changed to fix different types of contracts.
Basically, it's very complicated - this is just my top-of-mind snapshot on some of the issues, and that complexity creates cost, and that cost prevents oversight.
Its bad law though, if companies can be held ransom to T&Cs they never agreed to. Especially as it seems no notice was given, what happens if a company never got the new T&Cs?
SpatialOS was basically re-distributing Unity under a SaaS model. Unity is in the right here.
Edit: Have heard some pretty good points about the ambiguous wording of the ToS (such as theoretically making the distribution of a Unity-made game through a storefront illegal). It will be interesting to see if this ToS change sticks.
Which leads me to believe they are installing or running the Unity Runtime on their servers? If not I'd love a better explanation :)
If I write a licensed Unity app and run it on SpatialOS, well, that's now no longer allowed.
Unity had a pretty clear model as providing a software stack that one pays for using, primarily containing a bunch of proprietary tools for creating applications for their runtime. And then one could package that runtime and their application and give it to whoever one wanted (as long as they followed the revenue share part of the contract).
So yes it's part of the stack. but it's the part of the stack that people are meant to redistribute with their game.
It's like atlas vs ark, not like unreal vs unity
From Ars https://arstechnica.com/gaming/2019/01/unity-engine-tos-chan...
> The newly updated clause 2.4 of the Terms of Service now specifically excludes "managed service[s] running on cloud infrastructure" which "install or execute the Unity Runtime on the cloud or a remote server."
And no, I am not talking about the Asset Library.
Traditional ECS doesn't fit with Godot's philosophy, but you can make behaviors into nodes and just add these nodes as a child for ECS-like behavior. Honestly, I find Godot's way more natural and extendable.
[0] https://willnationsdev.wordpress.com/2018/04/05/godots-node-...
The problem is that everyone is just sitting and using proprietary FBX format and don't work towards new open standards like Collada or GLTF2.
In all honesty (without knowing the specifics of what is broken, I've only ever worked on FBX importers), if Godot want to be taken seriously then they need to be able to import without plugins, warts and all.
It sucks, but game engines are by far one of the riskiest investments I've seen across technical subfields.
You have all of this engine-specific knowledge, and all of a sudden moving engines is near impossible. Tons of common things across major game engines, but in practice it's not so easy to move here or there.
It's not like a database, where maybe some data type quirks are a bit different, and hopefully you can just change the underlying implementation behind your DB abstraction. Change a connector or something of the sort.
With game engines, you'd have to reexport models from sources, textures might be treated a bit differently, map formats might have to be scrapped all together or converted using some at-the-moment nonexistent scene converter. There's a lot involved.
C++ is overkill for most tasks. C# is just an easier and safer language to use.
For a small studio, using Unity can be the difference between finding a game programmer or not. Plus there is a much bigger community in case your programmer gets stuck, and more useful assets available on the store.
Ultimately this is Unity’s platform and they control it and its future direction. I suspect that more value can be delivered to both parties if they reach an agreement - SpatialOS is really cool! What we’re seeing here is presumably a strong negotiation tactic from Unity - they want to continue to own the relationship with their own customers - hopefully we’ll see some kind of agreement in the future.
EDIT: after reading the actual terms it seems like even game developers can’t do this without violating terms. Unity really wants this to be something they wholly own. Yikes
> You may not [distribute Unity or your Unity Project Content via] streaming or broadcasting so that any portion of the Unity Software is primarily executed on or simulated by the cloud or a remote server and transmitted over the Internet or other network to end user devices without a separate license or authorization from Unity.
I could be wrong, but the "is primarily executed on" bit sounds to me like it is more aimed at preventing creation of a service like geforce now or playstation now where a user plays the game but it is streamed from the remote system where it is actually running
https://blogs.unity3d.com/2019/01/10/our-response-to-improba...
Are the game clients used by the players running Unity? Is the server running Unity? How is SpatialOS's setup different from other multiplayer games?
For the player it's transparent, you can have huge world with inter connected game server, instead of having one map with 32 players on it.
If one were to build an MMORPG with SpatialOS instead of following the tradition approach, how does that change the number of copies of the game engine you need to license?
It sounds like the engine runs in the cloud, so do they only need one copy per person who is actually online at the time, or even only one per currently occupied region of the game world, or is it still one per copy of the game sold?
I can't find any reference to that on their website, they even answer "Yes" in the FAQ on the "Do I own the content I create?" which what you mentions would make it essentially false. How does free game made on Unity works?
Not that unity charges per copy in the first place.
(1) it followed the Unity3d documented approach using UNET server and client architecture (2) it meant we get to simulate the entire scene on the server (physics, meshes, networked objects, etc)
We boot the instances on demand when a team wants to meet in VR.
Sounds like Unity's new T&C's means this architecture is dead in the water.. unless Authorized by Unity3d. :-(
Why is SpatialOS running Unity code in the cloud? Presumably a Unity client can talk to an arbitrary server backend over standard network protocols, right? Was it simply easier to write the backend in the same SDK as the frontend? Does Unity provide a networking layer that works better with both sides running Unity SDK?
Y'all did this to computing, folks. Should have stuck with perpetual licensing...
It seems like a Google/Java situation all over, where Improbable are building something to interact with Unity's API, and Unity is using a quasi-legal TOS to try stopping them.
Their custom scripting language is extremely slow to the point where I wouldn't consider using it.
You can use C#, but if you download the c# version you get a warning on startup which states that this version isnt production ready.
You can use C++, but I found the workflow here awkward, plus they just introduced it with 3.0. They are about to launch 3.1 but this includes breaking changes to the way you use c++, so if you were using it and wanted to upgrade you'd have to rewrite a portion of your code.
C# on the other hand, is to attract Unity users that are too lazy to put in 30 minutes to go through GDscript's concepts. It's OK that it's there, but personally I found C# one of the least enjoyable languages to program in.
I strongly suspect that most people will write their entire game in an engines default language. Especially in this case where the much advertised best alternative (C#) gives you a warning on startup about not being production ready.
Yes, C# is probably integrated due to its success in Unity, but it's a sane choice. I would argue more so than GDScript. C# has better performance, tooling, support, not to mention an existing userbase of people who already know (and I'm sure many of whom like) the language.
Ignoring C#, they cannot be breaking their API for writing native code. I'm not sure if it was a one time thing, or if it will continue going into future releases, but they absolutely need to have stability if they want people to use their engine long term.
Warnings for C# are there because it's new, and there is not enough resources to support it better. Also C# is not that easy to integrate as it doesn't have most data structures used in game development, so your own have to be made. In the end it changes so drastically that you might just call it a new language.
[0] http://docs.godotengine.org/en/3.0/about/faq.html#gdscript-w...
What's missing in Godot?
Like I said, I really hope they get this fixed, because that game looked good.
"Bossa has been informed by Unity that Worlds Adrift should not be affected by the situation between Improbable and Unity. Thus, Worlds Adrift remains live as normal."
The game engine world is really different from what you usually read on HN like libraries, frameworks, DBs, languages ect ... it's a closed world where everyone built something custom.
What have you released on your own damn engines and where can I clone them?
https://arstechnica.com/gaming/2019/01/unity-engine-tos-chan...