
Unity Engine ToS change makes cloud-based SpatialOS games illegal - MikusR
https://arstechnica.com/gaming/2019/01/unity-engine-tos-change-makes-cloud-based-spatialos-games-illegal/
======
Animats
So right now we know the "what", but not the "why".

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...](https://www.theguardian.com/business/2019/jan/10/british-gaming-
company-improbable-faces-ransom-demands-from-supplier-unity)

~~~
jamie_ca
The "why" is apparently "so we can capture that revenue stream". They just
launched an alpha of a competing service (autoscaling dedicated servers, on
Google's cloud) and apparently want to nix the competition.

[https://unity.com/solutions/real-time-multiplayer/game-
serve...](https://unity.com/solutions/real-time-multiplayer/game-server-
hosting)

~~~
reitzensteinm
And I'd bet every penny I have that it's going to be a massive clusterfuck
that nobody would freely choose to use. Unity has continuously dropped the
ball on multiplayer.

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.

------
ezekg
> You may not directly or indirectly distribute the Unity Software, including
> the runtime portion of the Unity Software (the “Unity Runtime”), or your
> Project Content (if it incorporates the Unity Runtime) by means of 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.

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](https://unity3d.com/legal/terms-of-service/software) (sec
2.4)

~~~
dave_sullivan
I don't know why people are still using unity instead of UE4 except for
historical reasons where users of the engine are hesitant to switch and have
to relearn some things.

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.

~~~
rlp
Well, I've used both extensively, and they are good at different things.
Unreal is far better IF you fit cleanly into one of their templates (first
person, third person, etc). Superior renderer with great built-in post
effects, FAR better multiplayer support, better materials/shader editor.
However, if you try to do something substantially different than they have
imagined, it can get ugly very fast. The C++ used is strange, with all kinds
of weird GC macros strewn about. As a programmer, I hate blueprints. I wish
there was a scripting language alternative. And god help you if you actually
want to modify the engine code substantially, it's a monster (not poorly done,
just sprawling and extremely complex). Look at the nvidia gameworks
integration, it's all these forks of the engine built by random people, it's a
mess.

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.

~~~
wokwokwok
The kind of sad thing to me is that I’ve talked to several people who hold UE4
up as a shining example of “modern C++ done right”.

...but it’s really quite a mess when you look closely.

A successful project and “good code” aren’t necessarily the same thing.

~~~
lasagnaphil
UE4 uses their own C++ containers (such as TArray and TMap), which is very far
from modern C++ (which recommends using STL like a part of the language). And
UE4's macro system has garbage collection support built in, which would upset
the modern C++ folks using shared_ptr and unique_ptr. They don't even like
macros, they prefer using template metaprogramming whenever possible...

------
iandanforth
Tim Sweeney (Founder of Epic Games) reacted strongly to this in a thread on
Twitter.

[https://twitter.com/TimSweeneyEpic/status/108340746025221734...](https://twitter.com/TimSweeneyEpic/status/1083407460252217346)

"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."

~~~
bilbo0s
In fairness, that's easy for a guy sitting on Fortnite to say.

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.)

~~~
wmf
A retroactively-changeable EULA sounds totally radioactive and not doing that
seems more like table stakes than a luxury. But I guess that's what we get
with a game engine specifically aimed at less-professional developers.

~~~
SomeHacker44
IANAL but really, is this enforceable, for code already downloaded, used and
deployed in compliance with the license at that time?

~~~
mroche
According to Crytek, it should be. Their engine license[0] is, if I am reading
it correctly, similar in this respect.

> 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](https://github.com/CRYTEK/CRYENGINE/blob/release/LICENSE.md)

~~~
SomeHacker44
I wonder what a court has said about this, or if there are laws or regulations
at the federal level about this.

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.

------
hesdeadjim
I’m pretty aghast at this move by Unity. They have made it clear they have a
managed cloud hosting infrastructure in the works, but explicitly blocking
others from providing it as a service strikes me as a “we really need this
revenue and will do anything to protect it” move.

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.

~~~
andrewmcwatters
It basically signals to me they don't give a fuck about you; it's Unity-first,
and you can deal with it. Take it or leave it.

After being burnt by the Source Engine, I'll never use Unity again after
having read this.

~~~
hadrien01
What happened with Source?

~~~
umvi
Valve pretty much abandoned developing everything but Steam. You'll still see
a few token projects come out of Valve, but it seems like they've basically
turned into Steam, Inc.

~~~
kllrnohj
That's not true at all, though? Source has continued to get changes & upgrades
over the years. It has a vulkan backend, the UI system is no longer scaleform
but a web-based system called Panorama, a new physics engine called Rubikon
that replaced the old Havok engine, etc...

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](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.

~~~
m-p-3
Are those updates to the Source engine/SDK available to devs outside of Valve
though?

~~~
kllrnohj
Does that really matter? Source Engine was never really open source and never
really on a continuous update schedule. Anyone with a vested interest in using
source would have obtained a license for it anyway as it's always been non-
free, and that license would presumably have terms for what you do and don't
get access to.

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.

------
lordnacho
This is directly relevant to that Cory Doctorow article from yesterday.

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?

~~~
fijal
There are protections against that in the EU - you can reverse engineer and
otherwise circumvent all the protections for the sake of making things
interoperable.

~~~
lordnacho
Isn't Unity Danish?

~~~
fijal
According to
[https://en.wikipedia.org/wiki/Unity_Technologies](https://en.wikipedia.org/wiki/Unity_Technologies)
they're based in San Francisco these days (but were founded in Denmark).

------
DATACOMMANDER
IANAL, but if you want to include a blanket “we can change these terms at any
time” clause in your TOS, it seems like you should be obligated to specify a
“grandfathering” window, i.e., a length of time during which any licensee will
be allowed to operate under the old terms in the event of a change. Otherwise,
you’re not actually giving reasonable consideration, since you’re accepting
payment in return for what could potentially be a single day (or hour, or
minute) of use of your software. Furthermore, a particular licensee’s window
ought to be proportional to the amount of consideration given by that
licensee, i.e., the number of licenses/renewals purchases by them. How is a
contract conscionable if it allows one party to become dependent on the
other’s services—and to pay them accordingly—while providing for the latter’s
right to suddenly withdraw support?

------
funkaster
Unity's official response: [https://blogs.unity3d.com/2019/01/10/our-response-
to-improba...](https://blogs.unity3d.com/2019/01/10/our-response-to-
improbables-blog-post-and-why-you-can-keep-working-on-your-spatialos-game/)

~~~
fomojola
Reading between the lines, it sounds like they only want the game developer to
be running Unity on the server, not any other third party. Does this create an
opportunity for a professional services outfit to provide maintenance and
support for running cloud servers rented by the game developer? Can I put an
AMI up in the AWS marketplace and charge for it?

~~~
ButlerianHerecy
That's what their PR people say, but that isn't what their terms and
conditions actually do say... "2.4 Streaming and Cloud Gaming Restrictions.
You may not directly or indirectly distribute the Unity Software, including
the runtime portion of the Unity Software (the 'Unity Runtime'), or your
Project Content (if it incorporates the Unity Runtime) by means of 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..."

------
asien
In September and January of last year Unity raised a considerable amount of
cash [0].

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](https://www.crunchbase.com/organization/unity-technologies)

~~~
ivraatiems
What did MongoDB do?

~~~
aboutruby
Probably the licensing change:
[https://en.wikipedia.org/wiki/MongoDB#Licensing](https://en.wikipedia.org/wiki/MongoDB#Licensing)

~~~
nothis
What’s the problem here?

~~~
ac29
It "requires that those making the software publicly available as a service
must make the service's source code available under this license".

~~~
DATACOMMANDER
That change seems to be in line with the FOSS ethos. I imagine that from the
perspective of the FOSS community, using FOSS software in a SaaS product
without releasing the code that drives the service is just a loophole.

~~~
stordoff
IIRC, the uproar was less about the principle, and more about how it is
defined:

> 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...](https://www.mongodb.com/licensing/server-side-public-license/faq)

~~~
Dylan16807
Well.

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.

~~~
stordoff
Exactly - I don't think it's reasonable, but I also don't think it's clear
enough to make a business decision based on it.

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.

------
EamonnMR
This is why I tend to shy away from proprietary tools like Unity-an event like
this is sort of like an asteroid strike, it's improbable but there's no
defense against it and if it happens you are wiped out.

~~~
vkou
Do that, and your game will never ship - because developing your own engine is
a beast of a timesink.

The open source offerings are toys compared to Unity/Unreal.

~~~
AnIdiotOnTheNet
Not necessarily. Many developers still write their own engines, they just
don't usually make high-end graphical AAA type games. Even then it is
possible, as Jonathan Blow proves.

~~~
learc83
Jonathan Blow was a hugely success indie developer prior to creating The
Witness, and it had a multi-million dollar budget.

Also it's a great game, but I wouldn't say it's comparable graphically to a
high end AAA game.

------
Reedx
Improbable's response: [https://improbable.io/company/news/2019/01/10/unity-
blocks-s...](https://improbable.io/company/news/2019/01/10/unity-blocks-
spatialos)

 _" 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.

~~~
Reedx
Unity's response, saying that Improbable is incorrect:
[https://blogs.unity3d.com/2019/01/10/our-response-to-
improba...](https://blogs.unity3d.com/2019/01/10/our-response-to-improbables-
blog-post-and-why-you-can-keep-working-on-your-spatialos-game/)

~~~
ButlerianHerecy
The relevant portion of Unity's EULA which says that they their PR folks are
incorrect "2.4 Streaming and Cloud Gaming Restrictions. You may not directly
or indirectly distribute the Unity Software, including the runtime portion of
the Unity Software (the 'Unity Runtime'), or your Project Content (if it
incorporates the Unity Runtime) by means of 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..."

------
robterrell
Unity's CTO responds: [https://blogs.unity3d.com/2019/01/10/our-response-to-
improba...](https://blogs.unity3d.com/2019/01/10/our-response-to-improbables-
blog-post-and-why-you-can-keep-working-on-your-spatialos-game/)

"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."

~~~
ButlerianHerecy
Funny, that isn't what their EULA says "2.4 Streaming and Cloud Gaming
Restrictions. You may not directly or indirectly distribute the Unity
Software, including the runtime portion of the Unity Software (the 'Unity
Runtime'), or your Project Content (if it incorporates the Unity Runtime) by
means of 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..."

------
mattnewport
Forum post on the Unity forums from the Unity CTO:

"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...](https://forum.unity.com/threads/recent-tos-update-blocks-the-use-of-
spatialos-to-make-games-in-unity.610447/page-4#post-4086469)

------
cleansy
The CEO of Unity is the former CEO of Electronic Arts. I do believe that he
might be executing the same business practices on Unity's developers as EA did
on their customers.

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?

~~~
Mikeb85
> Here is a question, even though Unity is incorporated in the US, did anyone
> find the filings with the SEC?

Unity is a private company.

------
hedora
I’m surprised the developers can’t simply reject the changes to the Unity TOS
and keep using an old version of the engine (especially for production games!)

Anyone know why that’s not an option?

~~~
andrewmcwatters
Because Unity's TOS, like many software agreements, stretch retroactively and
proactively across versions.

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.

~~~
throwaway2048
Its highly unlikely that retroactively changing an agreement like that is
actually legal.

~~~
jkaplowitz
A lot of the instincts around one-sided or surprising contract terms come from
consumer protection laws in some countries. Not only is that comparatively
absent from the US legal climate, it often doesn't apply to business to
business relationships (such as between Unity and game development companies)
even where it is present for consumers.

------
tcfunk
I feel like people are missing the mark here, complaining about commercial
game engines.

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.

~~~
wishinghand
No, Spatial was not doing that, they are an integration with Unity. Developers
still needed to install Unity with a license, get the SpatialOS framework
running as their net code, and then write a game.

~~~
tcfunk
I'm not so sure. Maybe I am misunderstanding but the terms prohibit the "use
[of] a managed service running on cloud infrastructure...to install or execute
the Unity Runtime on the cloud or a remote server".

Which leads me to believe they are installing or running the Unity Runtime on
their servers? If not I'd love a better explanation :)

~~~
mattigames
Yes they are running unity runtime on their servers, there is nothing in the
TOS against that, what is illegal is to share any of the data from that
runtime online with other Unity instances. Which has nothing to do with "re-
distributing" Unity has a SAAS.

~~~
tcfunk
Re-distributing was the wrong word to use. But it seems to me that the Unity
Runtime is a part of the stack of their SaaS.

~~~
SolarNet
Yes it is specifically the part of their stack that one distributes to
customers. It's like if the Java runtime or the DirectX runtime wasn't
distributable to cloud machines.

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.

------
DaveSapien
Its stuff like this that make me glad I spread client work over Unity and my
own studios (important) projects on our own engine (c++). I want to be able to
play/port my games in 40+ years. Who knows what else a private company like
Unity will introduce in coming years.

------
wishinghand
Godot is a game engine licensed with the MIT license. Unity just proved that
free != yours.

~~~
thrillgore
Godot is also behind the curve on content pipeline tools. I love it to death,
but I would never be able to convince anyone outside hobbyists to use it
because it has no goddamn FBX support, or an easy ECS framework.

~~~
ignaloidas
Native FBX support is not compatible by license, you are free to make a module
that lets Godot use FBX, just with a FBX compatible license.

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.

~~~
Arwill
Without a stable and widely used model format making a game is impossible. You
can drag&drop FBX into Unity and Unreal, and its mostly ready for use. Having
a broken FBX importer is just a waste of time. You start with a model format,
something works, you build a workflow, a system for producing content en
masse, and then at some point you must consider throwing away the model
format, the workflow and/or the whole engine, because the importer is
unreliable. Or you try to rewrite it yourself, further wasting time. Some
things must be rock-solid, open-source or not.

~~~
ignaloidas
Godot doesn't have any broken importers, yet alone FBX which it doesn't have
completely for legal reasons. Looking at Collada(.dae) Blender has a super
broken exporter, so broken that Godot folks wrote a better one from the
frustration. GLTF2 doesn't have enough support, even though it's a good
format.

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.

~~~
maccard
Sorry but saying "Godot is fine, everything else is broken" isn't really
acceptable. If I were to start a 3D project only to find out that importing
models didn't work in the game engine I chose, I would move on immediately.

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.

------
andrewmcwatters
I sort of find it poetic. If you decide to build on a commercial platform like
Unity's you're subject to the whims of Unity Technologies.

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.

~~~
thexa4
Isn't that always the case with frameworks vs libraries? A database can be
seen as a library but you build your entire game on top of the engine which
makes it like a framework.

------
victorbstan
It’s got to be said. I felt unity’s business model was not very friendly to
devs because you don’t get access to the source code. Unless you have a very
expensive enterprise license. On the other hand, you can get access to unreal
engines source code in github for free. Switch to unreal.

~~~
beerlord
Look on Upwork, Freelancer, or other jobs sites. There are 20x as many Unity
programmers as Unreal.

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.

------
jahewson
SpatialOS streaming Unity seems broadly equivalent to AWS hosting MongoDB.
Especially in that it undermines Unity’s (i.e. Mongo’s) ability to sell a
hosted equivalent product (whether or not that exists yet) and it leverages
some of Unity’s value into rent for Improbable. Now there’s a difference in
that SpatialOS is adding meaningful value - but it’s not necessarily their’s
to take.

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.

~~~
ec109685
AWS isn’t using any of MongoDB’s code — merely emulating the protocol and
behavior.

------
JasonSage
Seems like the best path forward for a current cloud Unity provider would be
to move from managed Unity to one you can deploy yourself. Make it so it’s
trivial to run your own and move the licensed use to the game developer
instead of the cloud service.

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

------
yodon
Twitch streaming is pretty important to most gaming markets. This announcement
sounds like it also has the result of making twitch streaming against the
Unity TOS.

> 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.

~~~
hessproject
> 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

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

------
sandyhatches
Illegal is the wrong word, but still, fuck. My game uses dedicated servers
built on Unity. Seems this applies even to me. Kinda shitty.

~~~
ralph84
Yes, breach of contract is more accurate. The lesson is make sure your product
doesn't depend on clickwrap terms that can be changed at any time.

------
danielvf
Here’s Unity’s response:

[https://blogs.unity3d.com/2019/01/10/our-response-to-
improba...](https://blogs.unity3d.com/2019/01/10/our-response-to-improbables-
blog-post-and-why-you-can-keep-working-on-your-spatialos-game/)

------
atburrow
Here's a discussion on the Unity forum:
[https://forum.unity.com/threads/recent-tos-update-blocks-
the...](https://forum.unity.com/threads/recent-tos-update-blocks-the-use-of-
spatialos-to-make-games-in-unity.610447/)

------
ufo
Could someone please clarify what SpatialOS actually does? Even in the updated
arstechnica link I still don't quite get what is going on and how it breaches
the new terms of service.

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?

~~~
Thaxll
It's a server side framework that integrates with other commercial engines (
Unity / Unreal ), what it does is it allows to have a single big map where
each small chunks of the map are handled by a gameserver.

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.

------
tzs
Consider a traditional MMORPG architecture, using a third party engine rather
than an in-house engine. The engine ran on the player's computer, and the game
company bought one engine license per copy of the game sold.

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?

~~~
dwild
You need an unity engine license per copy of the game? Do you have a source
for that?

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?

------
peterept
I run a multiplayer VR team platform where we run a copy of Unity3d on the
linux cloud server and load the the same Unity Asset Bundle on the server as
the clients ("The current world"). I chose this method because:

(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. :-(

------
holtalanm
If I was using Unity, I would be immediately looking at other alternatives.
This kind of thing just screams shady business that doesn't care about their
customers in the least.

------
marcinzm
I'm not familiar with Unity so I have a few questions which aren't clear to
me.

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?

------
tomc1985
Hey look, yet another software rental provider fucking over its customers!

Y'all did this to computing, folks. Should have stuck with perpetual
licensing...

------
Mikeb85
Improbable is very well funded, what are the odds they could take Unity to
court over this? 500m raised is no small amount, I'm sure their investors want
to protect it.

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.

------
CosmicBagel
Does anyone know of any cases where this new clause was used to shut down
existing games using the unity runtime in their servers? This ToS change has
been around for about a month so I figured that there might have been previous
activity.

~~~
CosmicBagel
They cleared up this concern in their blog post:
[https://blogs.unity3d.com/2019/01/10/our-response-to-
improba...](https://blogs.unity3d.com/2019/01/10/our-response-to-improbables-
blog-post-and-why-you-can-keep-working-on-your-spatialos-game/)

------
wink
This is also an interesting angle:
[https://twitter.com/antumbral/status/1083587536310611968](https://twitter.com/antumbral/status/1083587536310611968)

------
jayd16
So what does the TOS change mean exactly? At first glance it sounds like they
want a lince see for every instance of the editor running. This doesn't apply
to build code deployed on servers does it?

------
mr_puzzled
Just curious, how does the godot engine compare to Unity and UE4? Is it
suitable for AAA studios or are there any major pieces missing?

~~~
suby
It is not ready imo. Someone correct me if I am wrong about any of this.

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.

~~~
ignaloidas
Oh, come on, how many compute-intensive things you need to do in a game
scripting language? GDscript is fast enough for scripting, C++ is there for
the compute-intensive tasks you might do (though most of them are already
implemented by the engine).

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.

~~~
suby
Performance is a feature. If you want your game to have as large a playerbase
as possible, it needs to perform well even on bad hardware.

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.

~~~
ignaloidas
GDscript was created to better integrate with Godot's internals, there is a
whole section in their FAQ why they didn't use another language[0]

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...](http://docs.godotengine.org/en/3.0/about/faq.html#gdscript-
why-use-a-custom-scripting-language-instead-of-my-language-of-choice)

------
honkycat
Stuff like this is exactly why I stay away from Unity and stick with Unreal.

------
holtalanm
damn. I was looking forward to playing Worlds Adrift someday. Hopefully they
can get this resolved.

~~~
Gaelan
Worlds Adrift says they're still up for now.

~~~
holtalanm
that remains to be seen for how long. if they are operating against the Unity
ToS, I would expect it to be down soon as a result.

Like I said, I really hope they get this fixed, because that game looked good.

------
bitwize
This is why I write my own damn engines.

~~~
baldfat
I think using Open Sourced Engines is the proper response to this. Why
reinvent the wheel unless you have your own use case.

~~~
Thaxll
Open source engine suck big time, and I'm not even talking about the tooling
part which is an even bigger problem, video game engine are usually not
something you can do well on your own without large resources.

~~~
baldfat
Godot and Phaser are not "Suck Big Time" engines. It depends what you are
making, but again there is no reason why we must be stuck with closed source
engines.

~~~
Thaxll
Not to offend anyone, but those are toys engine. Godot is probably the most
advanced and it's nowhere in term of what proprietary engines can do. I mean
look at their showcase:
[https://godotengine.org/showcase](https://godotengine.org/showcase)

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.

~~~
nortiero
Urho3D is a competent engine
[https://urho3d.github.io](https://urho3d.github.io), and fast. Godot has a
pretty home page.

------
eropple
This article is pretty awful. Ars Technica's is better:

[https://arstechnica.com/gaming/2019/01/unity-engine-tos-
chan...](https://arstechnica.com/gaming/2019/01/unity-engine-tos-change-makes-
cloud-based-spatialos-games-illegal/)

~~~
pro_zac
Thank you! Actually explains what Spatial OS is, why it is used, and what
changed in Unity’s ToS that affects it.

