Software/Device Development and Design

Unity3D vs. Linux Developers: Profit is Fine, But Ignorance is Better?

A little background:

Unity3D has quickly become one of the most significant game engines and development tools in the world, fueled in no small part by being insanely cross-platform. But somewhat contradictory to their belief in cross-platform, their actual developer toolset only works on Windows and Mac, with what's become a rather noteworthy disinterest in supporting Linux-based developers. This, despite the fact that the #1 voted feature request on their own feature request board, by a wide margin, has long been a Linux-based editor. Naturally, this has been quite controversial with many predictable arguments on both sides.

As a side note, I can personally attest that Wine is not a suitable long-term solution here. I do use Unity under Wine, and I can get work done with it, but there are definite problems (which I'll have to save for a separate post).

With that background out of the way, the rest of this post is mainly in response to this:

"Now, let's be honest, of those 9,175 votes, how many of them would actually be developers who would buy [Unity3D Pro] and develop on Linux? Answer: probably far less than the actual number of votes on it."
    - liamdawe @ Gaming on Linux: Unity Confirms They Have No Plans For A Linux Editor

Let's do a little basic gradeschool arithmetic:

In the time since that original post, the votes have increased to 16535.

Up to 10 votes are allowed per user, so let's be maximally conservative and pretend that everyone voting on it used all 10 votes (I didn't, but let's pretend I did). So that's 1653 people.

As for the number of people who would actually buy the Pro version: First, let's make the questionable assumption that the people who have already voted are the only ones who would actually buy it. Second, would you say 10% qualifies as "far less" than the number of people? Hmm, yea, I'd say 10% qualifies as "far less" than 100%. So that makes 165 buyers of Pro.

Let's completely ignore the fact that using Pro for two of the most popular platforms (Android and iOS) carries an additional per platform cost equal to that of the basic "Pro" itself.

There are two pricing options: Flat $1500 until the next major release (at which point an upgrade free is required), or monthly fees that total $1800 every two years ($75 * 24) which is roughly in the general ballpark of the lifespan of each major release. So let's go with the lesser: $1500, and completely ignore upgrade frees.

Unity also profits off their Asset store, even from non-Pro users, and soon they will also offer other value-extras to non-Pro users (hosted build servers and analytic tools). Let's completely ignore all of that.

That makes an estimated minimum baseline of 165 * $1500 == $247,500. Nearly a quarter million dollars US just for a conservative baseline estimate on Linux developers alone. (Don't forget, software developers are much more likely to be Linux users than average computer users are, it is arguably a programmer's OS after all.)

Oh, but wait, there's costs:

Unity Editor is built primarily on what? Unity Engine and Mono. Both of those already run on Linux, with full support. And most of Unity's C++ code (yes, it has C++ code) is in the engine (again, already fully supported on Linux), not the editor. And Unity Editor already runs on one Posix system: Mac.

Additionally, what most people who have never done cross platform development (I have) don't realize is that unless you're doing things really, really, REALLY badly, the vast majority of even a natively compiled (let alone CLR/Mono) program is completely OS-independent.

There's also the well-known developer's rule of "0, 1, infinity" (if you don't know it, look it up). Applied to cross-platform development, it means that adding your first extra platform (already done - Mac) costs far more than adding your second, third or fourth extra platform. (Ok, yes, I'm aware that "0, 1, infinity" technically refers more to not imposing arbitrary hard numeric limits, but the practical reasons behind that are rooted in exactly the same principle I'm applying here.)

All that combines to mean that the real costs (as opposed to imaginary scenarios by peanut gallery members who know exactly nothing about real-world cross-platform development) of creating and supporting a Linux editor is minimal.

There is money on the table, and Unity is throwing it away. They are giving that money, userbase and mindshare to their #1 competitor: Epic, a company who has historically been somewhat MS-centric and yet has already become vastly more friendly to Linux developers than Unity.

Read more


Mobile "Me Too" Fashion

Let me tell you a little story.

Microsoft once had a visual style, Aero, that was widely hailed as "good looking". Then Microsoft switched to Metro which was atrociously hideous in both touch-based and "traditional" desktop modes, and a fairly major flop for the company.

Then Apple came along, decided "I must imitate Microsoft's horrible new visual style!" And iOS 7 was born.

Then Google said, "Yes, me too! I have to imitate Microsoft's horrible looking new visual style as well, lest I be the only one left behind in old-fashioned 'good-looking land'". Thus arose Android L.

Now they all look horrid because Silicon Valley can't pull their trendster, hipster, Portlanian heads out the ass of "me too" fashion industry mentality.

Read more


Google Pulls a Microsoft, Pisses All Over Standards

This one page alone (discovered while searching for why my POP access to Gmail[1] is borderline broken) is sufficient proof that the dumbfucks working at Google have their heads completely up their retard asses, and are hard at work mimicking Microsoft's widely-ridiculed practice of pissing all over standards just for the fuck of pissing all over standards:

https://support.google.com/mail/answer/47948?hl=en

So Google expects people to use a non-standard convention in order to make what I'll call "Google POP3" behave like NORMAL FUCK STANDARD POP3?! Except even that still isn't normal POP3 behavior (unconditionally ignores anything beyond 30 days old whether it's been downloaded or not, and retrieves outgoing messages as if they had been incoming).

And yet, the motherfuckers over at Google have the nerve to pretend to be better than Microsoft? Fuck the whole lot of them. For fuck's sake, it's no secret that many of them came from Microsoft in the first place, so it shouldn't surprise anyone that they are the new Microsoft.

[1] "Uhh, if you hate Gmail so much, why do you use it?" Normally I don't, I run my own mail server. But anytime you do that, you still need an administrative contact address that's separate from your own server and domain. Otherwise, if you hit any registrar or hosting snags (and don't think you won't), then your "official" contact address goes right down with the ship, and now you're really in trouble. "Why not Hotmail or Yahoo Mail?" Uhh, would you use Hotmail or Yahoo without anyone pressing a gun to your head?

Read more


Unity3D Supports All .NET/CLR/Mono Languages

I've noticed there's a very common belief in the community that Unity3D can be used with exactly three languages: C#, JavaScript and Boo. (Well, plus C++ if you count Unity's "native plugins" - but there are various issues with that.)

That myth needs to be dispelled.

Yes, Unity only claims to support those specific languages, but the fact is, Unity knows nearly jack about any of them. It knows how to invoke their compilers, but that's about it. What Unity does know however, is Mono. Mono is what Unity uses for scripting, not C#, not JavaScript, not Boo.

Mono, of course, is an alternate implementation of .NET's CLR and libraries. As such, Mono, and therefore Unity3D, will happily run software written in any CLR/.NET/Mono-based language. Such as F# or VB.NET or Nemerle. Personally, I use Nemerle for my Unity work.

So how do you do it? Two steps:

1. Compile your code to a .NET assembly using any compiler for any .NET/CLR/Mono language you dang well choose.

2. Put the resulting DLL into your Unity project's Assets folder.

Simple.

And thanks to the metadata embedded into .NET assemblies, even your public fields will still show up, fully editable as ever, in the Unity editor.

Just because the Create Asset menu only shows C#, JavaScript and Boo doesn't mean that's all you can use. My car stereo lacks a button for "Play Duran Duran" and yet their Rio disc works just fine. Amazing!

On a related note: People, just because Unity automatically launches MonoDevelop when you tell it to edit your code, doesn't mean you actually have to use MonoDevelop to edit your code. Don't like MonoDevelop? Fine. Use something else. Pretty simple solution, huh? (Don't know how? Then I suggest starting with this. You may think I'm joking, but you'd be surprised how many professional programmers don't know how to use a computer.) Personally, I use Programmer's Notepad 2 for code editing, but there are plenty of choices out there.

Read more


MTP, MSC and Google iOS

If you work at either Google or Microsoft and you have had any hand in MTP or the demise of Android's MSC, then you deserve to die. Fuck you and go to hell.

And to all those employed by Google and Microsoft: Quit trying to be Apple, you worthless goddamn subhuman shits.

Read more


Mozilla Doesn't Know What They're Doing

I could go on forever with examples, but I'm going to limit myself to just one for now: How freaking hard is it to unfuck "Save Image As"? Mozilla's been screwing that up in various ways for about five years. Here's a fun instance of Mozilla's complete uselessness.

And of course, in my case the broken "Save Image As" is yet another new previously undiscovered incarnation:

On FF22:

Error: NS_ERROR_INVALID_POINTER: Component returned failure code: 0x80004003 (NS_ERROR_INVALID_POINTER) [nsIIOService.newFileURI] Source File: chrome://global/content/contentAreaUtils.js Line: 771

Read more