After we published our initial post (at 12.34pm GMT) and then a general reflection about yesterday’s events (at 9.58pm GMT), Unity published a blog post (at 11.11pm GMT). This is our response.
Unity’s response had statements which confuse the understanding of how we got here and, more importantly, need clarification so developers understand their position, Improbable’s position and likely future outcomes.
How did we get here?
Unity confirmed compliance to their original terms of service.
The first information we need to clarify is around our compliance with the Unity license agreement prior to its amendment on 5th December 2018. This is the Unity license agreement section relevant to Improbable before that December 2018 update:
You may not directly or indirectly distribute the Unity Software, including the runtime portion of the Unity Software, or your Project Content (if it incorporates the runtime portion) by means of streaming or broadcasting so that any portion of the Unity Software is primarily executed on or simulated by a server and transmitted over the Internet or other network to end-user devices without a separate license from Unity. This restriction does not prevent end users from remotely accessing your Project Content from an end user device that is running on another end user device. You may not use a third party to directly or indirectly distribute or make available, stream, broadcast (through simulation or otherwise) any portion of the Unity Software unless that third party is authorized by Unity to provide such services.
Improbable’s legal advice (and the industry standard interpretation) is that services such as ours would not breach this clause.
However, during Improbable’s very early commercial discussions with Unity, it was suggested that we might be in breach of Unity’s terms of service. Unity requested detailed technical information to make a judgement. We provided it.
We subsequently received verbal confirmation from Unity at the most senior level that we were not in breach of their terms of service. We regarded this as the end of the matter and proceeded with commercial discussions. Until the recent change, neither we nor Unity had reason to believe there was any issue for developers.
Secondly, Improbable is fortunate to have worked for years with major games studios that have Unity account managers. These managers would need to know that their customers were using both Improbable and Unity. If we were in breach of their terms of service and Unity knew, it would have been important to inform their customers. To our knowledge, this did not happen over that entire time. This reinforces our belief that, at that time, Unity did not consider us in breach.
We consider this section clarification that we have never acted in bad faith or concealed anything concerning service breaches. Moving forward we intend to publicly address only issues relevant to developers.
New Terms of Service:
The new terms make many services non-compliant.
Unity updated their terms of service on the 5th December 2018.
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. Without limiting the foregoing, you may not use a managed service running on cloud infrastructure (a “Managed Service”) or a specific integration of a binary add-on (for example, a plugin or SDK) or source code to be integrated in the Unity Software or Your Project Content incorporating the Unity Runtime (an “SDK Integration”) to install or execute the Unity Runtime on the cloud or a remote server, unless such use of the Managed Service or SDK Integration has been specifically authorized by Unity. Additionally, you may not integrate the Unity Runtime with a Managed Service or SDK Integration and offer that integration to third parties for the purpose of installing or using the Unity Runtime on the cloud or a remote server. For a list of Unity authorized streaming platforms, Managed Services and SDK Integrations, click here. This restriction does not prevent end users from remotely accessing your Project Content from an end user device that is running on another end user device. You may not use a third party to directly or indirectly distribute or make available, stream, broadcast (through simulation or otherwise) any portion of the Unity Software unless that third party is authorized by Unity to provide such services.
As is plainly visible, any managed service like SpatialOS, or user of a managed service, risks being in breach of this license term. As others in the industry have commented, these terms also put other major services at risk of being in breach. Any cloud-based multiplayer solution or cloud-based streaming solution would be a potential breach. Even most cloud provider services would, according to this, be in breach.
When we became aware of the changes, shortly after they were made, we were in intermittent commercial discussions with Unity. As the clause stood it was so sweeping we assumed we had misunderstood or it was in error, and asked for clarification.
What happened this week?
Unity revoked our licenses, we had to inform developers.
We had no other contact from Unity until 9th January. A Unity account manager spoke with a customer using SpatialOS and explained that Improbable was no longer permitted to use Unity. The customer contacted us to express their concern.
Shortly after this, we received a helpdesk notification that our licenses were unusable due to a breach of the terms of service, but without specific details. Bear in mind that our licenses are essential for us to support and operate games.
At this point, we reached out to our day-to-day contacts at Unity. They confirmed that Unity was asserting we were in breach and our license was unusable (i.e. our service must stop).
At this point in time, the situation forced us to make a public statement explaining the situation to users. As Unity was asserting that SpatialOS was in breach and could not run its Unity service, customers were in breach by using our service and we were concerned that inaction on our part would result in liability - not to mention that our users would immediately need to know.
Therefore, we felt it absolutely necessary that we had to post a public notice (because SpatialOS is a platform anyone can download and use) that, as things stood, we could not run games built in SpatialOS on Unity, and to offer support in the event of these games needing to be shut down.
Why were live games at risk?
Unity’s new terms, as read, prevent our service operating with Unity.
Developers run their games on Improbable’s SpatialOS, like a managed cloud platform. They have an interaction with Unity software to use it in their game. We have an interaction with Unity to host and manage instances as part of running a developer’s game.
Unity’s new terms of service, as written, effectively prevent our service from operating. At the point they asserted on 9 Jan that we were in breach, our service could not legally run.
As a consequence live games became at risk and we began to work with developers to understand their options. Fortunately, most games elected to remain up and those that went down chose to come back up quickly once they had received exceptions from Unity.
During this process, Unity did not communicate with us in any formal way.
Are games still at risk?
Unity Games can stay live, but we cannot legally support them.
Thankfully, Unity issued a public statement that legacy developers can still run their SpatialOS games. However, Unity has still not granted any kind of exception to Improbable.
We have interpreted their exception for games to include our services’ physical operation on behalf of those customers (because otherwise it is meaningless) and intend to keep running unless we are prevented. Even then, we will not take down or ask anyone to take down anything unless proper formal legal channels are followed, not announcements or blog posts.
However, Improbable still has all its Unity license and access suspended. We cannot easily fix bugs, improve the service or really support our customers without being in a legal grey area.
Anyone who has ever run a live game knows this is a farcical situation that puts games at risk. Unity has still not clarified this, granted an exception or had a conversation with us, but we hope this will change.
Unity must urgently clarify their terms or unsuspend our licenses.
Currently the lack of clarity in the Terms of Service for Unity - and the ambiguity created by their subsequent statements - places us and developers in a difficult situation. We urgently need clarity in order to move forward. Everyone requires a long term, dependable answer from Unity on what is and is not allowed, in a documented legal form.
More broadly, developers are asking about other services, not just Improbable’s. This urgently needs resolution.
We do not require any direct technical cooperation with an engine provider to offer our services - Crytek, Epic and all other providers clearly allow interoperability without commercial arrangement with cloud platforms. We have no formal technical arrangements there and have not required any with Unity for years.
Our preference would be that Unity simply adopts industry standard practice and allows platforms to host the engine as was the case before the change in Terms of Service. Failing that, Unity must grant Improbable sufficient legal basis to protect its existing customers, or be honest with the community about the situation.
We now hope Unity will seek to engage with us to solve this issue.