Unity Comes to Linux: Experimental Build Now Available
blogs.unity3d.com
blogs.unity3d.com
see: https://unity.ubuntu.com/about/
Though there is a certain appreciable irony in having two totally different things named unity.
The Unity3D game engine announcement is awesome and they've been really changing the face of game dev.
There are a lot of products in tech, and a huge number of name collisions. Context (such as the fact that the linked domain is unity3d) saves us all from having to add caveats and clarifications to every mention. Just as I can talk about Microsoft Windows without noting that I'm not talking about panes of glass.
Granted it was never popular, and it definitively isn't now, but still.
But there's something that has been bothering me for a while about games for Linux compiled with the Unity SDK.
Does anybody know what kind of dependencies a game written with the Unity SDK has? I'm pretty clueless about that stuff but I'd still like to know what it would take to get a game running on a minimal Linux install (like a naked Arch or Gentoo). Ubuntu obviously comes well equipped for the task but I don't really care about that.
So where do the graphics come from? Does it need some special libraries apart from OpenGL? Where do fonts come from? How does it interface with hardware, i.e. does it need X, or does it come with its own drivers for keyboard, mouse, gamepad?
I fear that it is necessary to install half of Ubuntu to get the games running but - as I said - I don't really know anything about that.
Between those two, I've probably sunk whole weeks of my lifetime. If someone were to make a game that combined the two into some kind of orbital city builder, I'd be set.
linux-gate libdl libpthread librt libGLU libGL libX11 libXcursor libstdc++ libm libgcc_s libc libnvidia-tls libnvidia-glcore libXext libxcb libXrender libXfixes libXau libXdmcp
I know that steam has some 32Bit dependencies even on a 64Bit OS. I thought it might have only been the steam client's dependency. Unless you're using a 32Bit OS, it seems that Steam, or maybe even Unity3D, enforces the use of those 32Bit libs.
I wonder why.
Edit: I seems that you removed the references to lib32 and i386.
Unity should solve that now. Maybe.
To answer a few specifics with out getting too ragey:
To get real usable 3d you need to be running the proprietary drivers. The opensource ones at least a year or so ago when I was paying close attention were uniformly too slow and supported such a limited subset of the specs that the were usually pointless.
The take away for me was to always assume that the user system is completely dumb and to ship EVERYTHING. We ended up packaging the kitchen sink to get rid of the majority of the "I installed this on <nightly build of obscure distro> and it says it can't find libc" issues.
The performance of radeonsi isn't terrible (though that's partly because the proprietary AMD driver sets the bar kind of low), though still generally slower than the proprietary one. There are some experimental instruction scheduling changes in an LLVM branch that appear to give better performance than the proprietary drivers for at least some benchmarks.
On the Nvidia side it's pretty much proprietary or bust though. Featurewise it tends to be in good shape (at least in comparison to the other open source drivers anyway), but there's no support for changing the GPU clock so performance is terrible.
And then people wonder why so few devs support Linux.
And it's not like Linux doesn't come in versions, and it's not like a change in versions doesn't have similar compatibility concerns as it does in Windows. (Honestly, I think it's worse on Linux -- it is a lot easier to run the same version of, say, MySQL on consecutive releases of Windows than it is on RHEL/CentOS.)
So post-XP, where Windows NT ate DOS-based Windows, you have Windows progressing version to version -- Vista, 7, 8, 10. You can see the same progression in Linux OSes -- Debian goes Etch, Lenny, Squeeze, Wheezy, Jessie over a similar timeframe. But at the same time, Fedora runs from version 6 around Vista's launch to version 23 due out in a few months from now. So, like Windows, you have a concern with making an application run on both, say, Squeeze and Wheezy. But you also have an additional problem where you need to make it work on Beefy Miracle. For most software Linux users come into contact with, developers will write software for one, maybe two distros or so, and each distro ports the software over, essentially. So every open-source project is essentially forked by each distro. It's not a model conducive to closed-source software. Which... there are plenty of people who are openly happy about this, as they would rather encourage open-source software over closed source, so it's not like this is strictly an accident or a mistake. But if you want to ask why games don't get Linux ports, or get Linux ports that involve running the Windows version in a Wine wrapper, that's a big part of the answer.
What will happen if Google will provide installers for all their services instead of publishing them on the web, if Android developers will do same instead of publishing in PlayMarket? How much support they will need to cover all hardware and software?
There is no problem with supporting of whole Linux, on all OS'es and HW if you understanding it. Opensource developers are doing that for free.
To support 3 major versions of Windows in at least two localizations and in few flavors (home, pro, server, etc.) with different set of software installed, which may affect installation process, you need farm of Windows machines and extensive testing. It looks like that to test various Linux distributions you need a lot more hardware and time resources, because there is so many of them.
In reality, to support a linux distribution, you need to install distribution in a virtual machine, install your application manually (on your side, not at client side, so you can skip all bells and whistles), package result, then publish result into your own repository. So to support 10 major distributions, I need 10 virtual images and about 10 days. Feel the difference.
PS. Sorry, my English is not perfect. I cannot even talk in English.
The problem is that basically you are always aiming at a moving target of system configuration when you release. Do you bet that your users have mechanical disks or SSD? If you aim for the latter you can make different choices. Windows as an operating system moves pretty slowly compared to the broader linux ecosystem, your percent users running a particular version of say DirectX is easy to guess, and easy to predict.
The problem when you move to linux is that the landscape is shifting rapidly. Everything from the kernel to libraries to what Distro is hot this week change nightly.OT steal mikepavone's example; In the last few years how many new families of windows video card drivers have come out? How much change have we seen in their capabilities? On linux the answer is, frankly, impressive.
This is great for linux, but it makes it hard to reach out to the smaller percent of the small percent of users who are having an issue and fix their issues.
The result is that at release you can just let that windows binary sit there and maybe fix a few bugs that crop up in your code. Your linux binary is more of a surfing act where things are great, then you are slowing down, and something breaks, and the whole tower comes down.
Fundamentally, it's why things like Unity are popular. The fewer people on a team, the less time you have deal with things like compatibility issues.
This is why you use Steam Runtime and don't worry about that. It's does work even outside of Steam:
https://www.reddit.com/r/gamedev/comments/26pck1/selfcontain...
This could be a good use case for Docker containers. I remember they showed Quake running on Docker at a convention so it should be possible.
Or are there multiple game engines called Unity (on top of the existing confusion between the game engine and the Ubuntu thing)?
EDIT: I think the announcement is about Linux support in the SDK, not the actual software developed with Unity?
This is great news and I hop they will support it.
It is nice that "linux support" is a bullet point that companies feel is worth having, but it isn't a significant enough part of their market for them to make it work without glaring issues, often.
Hopefully though now that their main product is expected to work 100% correctly on Linux, that this will lead to fixes in their Linux compiler.
It does technically support it. It's just that for some mysterious reason, it's turned off by default. Games that explicitly turn it on, or let you change it in the settings (in my small library that's only MouseCraft and JazzPunk) run fine.
Everything else maxes out my CPU. As a laptop user, this does not make me happy.
It's been about 2 years since my last attempt at Linux for my main desktop OS... about time for another go at it. Been my HTPC OS for almost a year and a half (since switching to xbmc/kodi for most playback anyways).
I jumped over to Fedora and have been pleasantly surprised to find out that SLI, multi monitor, and sleep work flawlessly. Zero problems so far.
It was always that I got a laptop or computer running Windows, after a year and a half or so I managed to crud it up badly, even while keeping everything as clean to the best of my abilities, it just got slower and slower, meaning to install Linux as a dual boot, until something breaks and I actually do it.
Next computer will just start out with Linux, though.
I think we all know the future of this then.
$ gdebi unity-editor-5.1.0f3+2015082501_amd64.deb
...
Requires the installation of the following packages: lib32gcc1 lib32stdc++6 libc6-i386Unreal Engine is somewhat harder to use, but it's graphics engine is a bit closer to the cutting edge - it's the go-to engine for AAA devs these days. Unity's main user base (for people who use it to make games - some use it for academic ends, or for tech demos) tends to be the indie game scene.
They do the same job, but differ in the technical aspects and ease-of-use, and business model (though both are aiming to lower the barriers to making games), and they tend to cater to different segments of the market.
I am pretty dedicated to releasing for SteamOS as a main target platform, and have been trying to untether from windows. I have a few friends are love unity and want me to join projects but my main complaint has always been that there was no linux editor. Looks like I will have to test out the this unity test build.
I'm an Arch Linux guy. I strongly dislike both Ubuntu and Canonical, on technical, political and ethical grounds. But I get it.
And you know, a huge part of the problem is that "we", as the Linux community, have no direct interest in pushing compatibility between distributions. It takes a lot of effort, a lot of political reach, and the distros will just run with their own thing a few months later anyway, nullifying the efforts.
Besides... have you seen what happens when people are actually successful at pushing compatibility? Have you seen the shit people throw at Lennart/RH for Systemd? Why would anyone ever want to play that game?
Anyway, not to detract from the topic - it's fantastic news. Unity3d is huge in the game development world and this is a big win.
No, say that Unity comes to Ubuntu.
Gone are the days when distros decided if something worked or didn't. Thanks to things like SystemD this will continue down that road (Ducks). Also hoping we finally do package management in a elegant modern way soon and not like we are right now.
How? systemd touches a completely different layer. The main thing that might prevent ELF interoperability across distributions is if the distro has some esoterically configured binutils/glibc toolchain and the provided application is a dynamically linked binary blob.
Before SystemD we had init scripts in our thousands of packages. Each package system would have different init systems and procedures. This is one of the big reasons why things were not inter-operational between distros. This is why Arch and Debian among others distros jumped off their old init systems and adopted SystemD.
They're completely orthogonal tools.
And no, it was hardly a "big reason" why distros weren't interoperable. Initscripts were rarely supplied by upstream vendors and frequently written downstream. Then many other people didn't use them at all, but wrote runscripts for some flavor of daemontools in about 4 lines or something.
The main reason has always boiled down to the toolchain. One proposed way to get around it was fat ELF binaries, but that effort got metaphorically curbstomped by the Linux community. Universal package managers aren't supported for political/branding reasons.
In any event, systemd doesn't help with this.
Never said integration saying packages have scripts to init themselves and that was different based on your distro.
Don't know why you feel the need to correct a point that distros are becoming more and more alike and that systemd is one of the elements that has helped this? Anywaysssss SystemD is the standard now for most of Linux and I am hoping for MORE standardization.
(To be pedantic, there is no "standardization" so to speak of. It's more like an informal fiat than anything.)
And if you question this you are simply an ignorant infidel that will see the light in due time, they just need to spread the gospel more fervently (or should i say forcefully?).
The general lack of compatibility between distributions usually leads software publishers to packaging and testing only one or two versions of their software. The community will then try to repackage it for other distributions. When the apps are not 100% open-source, it usually leads to huge delays for updates and broken packages after a while.
One difference is that as an ISV you don't have a lot of control on the way the system is setup, you have to start with assumptions and then work from there. -> Your job is to make your software work on fragile systems.
When you are dealing with managing systems at scale, hopefully you know exactly what you're dealing with. You don't have to make assumptions, you _control_ what components are on each box. -> Your job is to make your systems run broken apps :)
However, the incompatibilities come from how these tools are configured: there are numerous ways of interfacing/configuring X.org, syslog, networking and wireless tools, etc. Generally each distribution comes up with its "own true way" of doing it. This introduces a lot a pain for anyone trying to come up with a generic way of working with underlying subsystems. It's not impossible but it takes a lot of effort, is very fragile and needs an ongoing maintenance to keep up with the changes introduced by the distributions.
My point is that systemd exposes a set of capabilities and known interfaces you can rely on being there. This is far from being enough but it still an improvement in my eyes.
Linux software is compatible with any GNU/Linux distribution (and even some non-GNU Linux distributions). It's only a matter of having the right libraries and environment installed. That might be easier when things standardize on things like systemd, but for most software, such implementation details rarely matter.
Let's not bait with systemd, that's a different issue.
Package manager interoperability is certainly a political issue. A lot of distributions are identified by their PM infrastructure, so adopting a universal one like Nix or Guix would mean losing their identity. Conflict of interest, quite clearly.
We might end up with, GNOME-based distros at least, running a NIH version of Nix called xdg-app, however.
What truly affects companies wanting to release and support their software on multiple distributions is the lack of universal fat-apps. And yes, xdg-app is the way to go - sadly, only GNOME has been leading that front and cross-desktop talks have stopped.
The XDG mailing list is dead. Sending an email there is equivalent to pissing in a violin.
Meh, I'm pretty jaded. But I totally do think systemd is a clear example of what happens when a group tries to push for less NIH and more standardization. Tools get replaced and people get upset.
The Linux community has rejected fat apps (primarily fat ELF binaries) many times, so that's not out of the ordinary.
I find the idea of systemd being less NIH to be quite baffling, though. Just look at its ad-hoc LISTEN_FDs protocol rather than adopting something well designed like UCSPI.
Heck, a RPM is pretty much a fancy tar.gz at first glance (and a DEB a bit more elaborate).
I swear i wonder of far up the devops exhaust channel the Linux userspace thinking has gone these days...
the editor will run on most ‘modern’ 64-bit Linux distributions
The fact that it's only supported on one distro doesn't mean it hasn't come to the others. It has, but in an unsupported way. Anyone who uses a Linux desktop running anything besides Ubuntu should be quite used to that.
http://download.unity3d.com/download_unity/unity-editor-inst...
They even provide a distro agnostic installer. Sure, it would be better if they provided RPMs and a bit more "official support", but it's not practical to promise and support it working on every distro.
1) Deb
2) RPM
3) Tarball
Though OpenSUSE Build Service is the most under used Linux technology period. Build on it and send out packages to whatever distro you want. https://build.opensuse.org/
On a related note, it's currently not working on Arch/Manjaro/Void Linux http://forum.unity3d.com/threads/service-not-available.35033...
But anyway, they are probably doing this because Valve supports Ubuntu, and Valve is doing it because Ubuntu comes with GPU drivers out of the box (contrary to Debian, where you must apt-get them).
A Debian installer with support for non-free software would go a long way towards changing all that. (Or even better, a deb-multimedia installer.)
Actually they're advertising Linux as SteamOS these days which is essentially Debian.
Go fork another distro and shut up. Perhaps a new window manager? Steve Jobs took a bankrupt company and turned it into the world's most profitable company in less time.
I'll take that over zero linux support anyday. Usually it's pretty easy to make these things run by yourself too. ldd the binary, fetch the missing libraries and/or grab the ubuntu packages set the library path and you're done.
Let Linux take the desktop and THEN we can start forking over minute details.
It's unreasonable to ask them to support all kinds of Linux distributions; it all depends on how well it actually 'will work'. E.g. Blizzard's Hearthstone does not officially support Linux (despite using Unity, btw.); also it doesn't support graphics chipsets as old as Intel GM45 (Intel's integrated graphics circa 2008; gen.4; last Core2). Yet I've been able to run this game on Ubuntu on my ThinkPad X200 reasonably well since beta and it's only getting better with time. Part of it are improvements from Wine and Mesa 3D (I didn't believe I will get performance improvements for the 5+ year-old hardware, but it happened last year: mesa 9.3(?) brought a solid improvement to 3D including Ubuntu desktop experience[sic!]) but also I believe Blizzard is actually fixing Linux-related glitches, even though the game is not officially supported. This could be better than some companies 'supporting' Linux by doing a half-assed port and forgetting about it.
Because MS has basically cockblocked all attempts at getting something other than Windows preinstalled on store shelf hardware.
and it's only good multiplayer if you can't cheat.
that means every dumb game system rush to try to run as root. as you can see with steam.
then after they have that excuse they also use that new power to enforce DRM. as you can see with steam.
and cheaters continue to cheat. but now you have malware.
running games in Linux is easy. heck you've done it on windows, you can make it on Linux with better docs and apis. the problem with Linux gaming is catering to users that don't have their heads up their buts. that is the real problem, and nobody sees the monetary incentive.
that said, true Linux gaming holy grail will be achieved when you can run a windows vm with full 3d support. period.
You are tragically misinformed:
user@host:~$ find ~/.local/share/Steam/ -perm -4000
user@host:~$ find ~/.local/share/Steam/ -user root
user@host:~$ find /bin -perm -4000
/bin/ping6
/bin/ping
/bin/su
/bin/fusermount
/bin/ntfs-3g
/bin/umount
/bin/mount
user@host:~$ find /bin -user root | wc -l
201
user@host:~$ ps aux | grep -i steam | grep root | wc -l
0It's often compared alongside the Unreal editor, which I unfortunately haven't taken for a spin yet.
Unreal is far more mature as a platform and you can do a lot more with it. (The code of the internals sucks a bit though).