Show HN: Unity 3D in Docker
github.com
github.com
Speaking as a 10 year customer of Unity, I can’t wait for Three.js, gltf, and a couple other components to get just a bit more solid so I can drop my dependence on Unity. Three or four years ago it would have been inconceivable for me to say something like that, as I was a long term hardcore fanboy.
It’s just not the same company or solid development experience it once was.
It only a suitable replacement for those not requiring more than what OpenGL ES 3.0 offers.
I work with many of the people involved in the Web GPU effort, and I'm sure they'd be surprised to hear that they aren't actually working on what they're working on!
This is just silly.
If you're talking about matching every single feature in every API ever, of course no API can do that; no "native" API does that either. There are always gaps around the edges where some API has features others don't (e.g. conservative rasterization support is spotty). But general feature parity with the new generation of APIs is the target. I'm going to the W3C Web GPU meeting next week to talk about just that…
Looking forward to the outcome of W3C Web GPU meeting.
Here's an example game made in it: Tanx, https://tanx.io. And here's a lightmap-heavy scene for eye candy: https://playcanv.as/p/txPePQvy/
I would accept pull requests for Linux and Windows package support.
You can also avoid hard coding any install paths using unity-path: https://github.com/zettaforge/unity-path
I would accept PRs there too to professionalise documentation (emotional appeal was an experiment that brutally failed) or help with marketing.
Both these tools could be useful for customisation of this Docker image. They are thoroughly tested with full coverage :)
I adapted this to run Godot Engine: https://github.com/TeddyDD/godot-docker-vnc It's not useful I think since Godot has headless server you can use for CI but it was fun anyway.
Much of the process is explained in this post https://medium.com/@tonywangcn/how-to-build-docker-cluster-w...
I have a containerized set of headless unity processes that take a map selection from a variety of public and private sources plus user data and compile it into a detailed modeled environments to be later served in WebGL, mobile, desktop, and 3D printed. Doing it in the users client would involve a lot of memory management and storage on sometimes restrictive devices, also unity can hand things off to numpy/scipy, ffmpeg, etc easier on my server than it can your phone or desktop.
There is also a huge push from Nvidia[1] specifically and others to build new tools for remote GPU use taking the load off of thinner and thinner clients doing more and more things. OSX High Sierra offers remote GPU usage in Metal2. Connecting all these vector processors will frequently be for data ETL, but rendering that data is going to fall onto tools like Unity a lot, which will also be sharing in the role of assembly and iteration.
With the new new embedded machine learning chipsets in every new gizmo, tools like Unity and Unreal are about to be ubiquitous doing all sorts of heavy lifting. There isn't quite a written playbook for what's going on, but it's pretty crazy and exciting. Almost like it was 1996 internet again.
[1] https://devblogs.nvidia.com/parallelforall/goai-open-gpu-acc...
https://github.com/nenadg/docker-unity3d/blob/master/Dockerf...
We use Unity3D + Docker for CI and automated builds, which has massively decreased the number of "builds on my machine" issues (which Unity3d is very prone to)
*You will only have to assign pool of ip addresses for your services, since it's fixed in this example.
Reference: https://medium.com/@tonywangcn/how-to-build-docker-cluster-w...
I haven't tried this specific thing with video games needing live input, but you can run headless on AWS GPUs and dump those frames to an AWS Lambda process[1] to do the conversion and only have to manage the input. In this situation the only thing you are running is the game and not all the other bullshit that an operating system has to deal with in a remote desktop situation. All you would have to manage is the sync from the controller over a socket.
Another nice feature would be being able to save your gameplay and maybe edit it later for broadcast if you wanted.