News for hackers. Stuff that matters.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by dave_sullivan on Thursday January 10, 2019 @12:53PM (#18876107)
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.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by rlp on Thursday January 10, 2019 @05:12PM (#18878795)
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.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by wokwokwok on Thursday January 10, 2019 @07:21PM (#18879902)
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.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by lasagnaphil on Friday January 11, 2019 @01:08AM (#18881366)
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...
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by failrate on Thursday January 10, 2019 @08:26PM (#18880241)
Re: scripting

Ue4 has the source available, so you definitely can integrate your preferred scripting language.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by rlp on Thursday January 10, 2019 @09:25PM (#18880533)
You're technically right, but that's potentially an enormous task. If we're comparing Unity with Unreal functionality, integrating a scripting language should include editor integration, debugging, etc. I'd rather spend my time actually making a game.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by reificator on Thursday January 10, 2019 @12:59PM (#18876181)
> Unity is not open source

Important to note, neither is Unreal really. It's not a pedantic distinction here either, as it affects how far you can take a project that modifies the core engine.

Not that I'm against Unreal in any way, it's just important to keep in mind.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by dave_sullivan on Thursday January 10, 2019 @01:05PM (#18876253)
Yes, UE4 is not FOSS as per GNU, it is open source in that you can see the code and there's a large community contributing fixes and additions with every new version. I think the distinction is pedantic for most users.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by PhasmaFelis on Thursday January 10, 2019 @01:56PM (#18876769)
"Source-available" seems to be the preferred term for what UE4 is.

> I think the distinction is pedantic for most users.

In a technical discussion, there's no reason not to use the proper terms for things.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by tapoxi on Thursday January 10, 2019 @02:00PM (#18876817)
> I think the distinction is pedantic for most users.

The distinction is that the code you write belongs to Epic. You become an unpaid contractor.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by skybrian on Thursday January 10, 2019 @01:11PM (#18876309)
The Open Source Definition doesn't come from the Free Software Foundation or "GNU". It's a separate organization.[1].

Also the whole point of this story is that license terms do matter, especially if you want to sell games commercially.

[1] https://opensource.org/osd-annotated

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by dave_sullivan on Thursday January 10, 2019 @01:35PM (#18876549)
I think the distinction is pedantic for most users.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by Rychard on Thursday January 10, 2019 @02:13PM (#18876981)
Isn't Unity similar in that regard? (well, as far as viewing the source-code, they don't accept patches to my understanding)

https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s...

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by akx on Thursday January 10, 2019 @04:42PM (#18878525)
That's just the C# code; not the native C++ bits which are the core of the renderer and engine.

UE4 is open to every last bit.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by foota on Thursday January 10, 2019 @04:11PM (#18878221)
No, the amount of unity released is tiny.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by wolf550e on Thursday January 10, 2019 @03:58PM (#18878086)
You're wrong, users of software libraries care whether they're allowed to fork the library or not.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by Dylan16807 on Friday January 11, 2019 @01:20AM (#18881413)
Define fork. You can make your own custom version and share that code with anyone, and use it exactly as freely as the original version.

The reason it's not open source is the royalty clause, not lack of ability to see/edit/modify/fork the code.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by thecatspaw on Thursday January 10, 2019 @01:15PM (#18876347)
Unitys C# code is also visible source
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by dave_sullivan on Thursday January 10, 2019 @01:20PM (#18876395)
I missed that announcement, good for them, too little too late: https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s...
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by erik on Thursday January 10, 2019 @02:39PM (#18877278)
Note that this is just the C# layer. The underlying C++ engine code is still only available under "call us" license terms.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by Mikeb85 on Thursday January 10, 2019 @04:47PM (#18878583)
Shared source isn't open source. You may have access to it, but you don't own it.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by SomeHacker44 on Thursday January 10, 2019 @08:47PM (#18880333)
I just like developing in C# much better than C++.

Especially C#7, and the support of the latest 7.3 in the most recent Unity.

C# is my favorite of the common primarily OOP languages. I would take a LISP any day... See Arcadia.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by sandyhatches on Thursday January 10, 2019 @01:59PM (#18876807)
For a lot of us we started with it, and once you know it, if it meets your needs, switching doesn't make sense.

Does now though [walks into corner growling] :/

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by k__ on Thursday January 10, 2019 @03:07PM (#18877554)
Did so many people use SpatialOS?
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by imtringued on Thursday January 10, 2019 @08:35PM (#18880274)
The new terms are undesirable for any kind of multiplayer game, not just those using SpatialOS.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by aphextron on Thursday January 10, 2019 @05:16PM (#18878840)
>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 had their brief shining moment in the sun from 2015-2017 when they were supporting the growing indie scene on Steam, their VR was lightyears ahead of UE4, and UE4 still hadn't gone free-to-use. But with all that Fortnite money now and their new business model, I've no doubt UE4 is going to be the best possible game engine moving forward.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by andybak on Thursday January 10, 2019 @07:07PM (#18879810)
With a choice between C++ or Blueprints I doubt I'll ever be using Unreal. I might take a look at Godot one day.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by Hydraulix989 on Thursday January 10, 2019 @07:13PM (#18879853)
Unity has a great asset store with a lot of reusable content (art, models, scripts, shaders, sounds) within their walled garden
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by bluescrn on Thursday January 10, 2019 @01:05PM (#18876255)
UE4 focuses on high-end console/PC. For rapid development of mobile games, Unity is basically the only choice.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by maxsilver on Thursday January 10, 2019 @01:46PM (#18876648)
> For rapid development of mobile games, Unity is basically the only choice.

Why? Unreal Engine has targeted iOS + Android phones for 5+ years now, successfully. (Fortnite, PUBG, Dungeon Defenders, Horn, etc).

More mobile developers are experienced with Unity over Unreal today, but that's largely inertia more than anything else.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by bluescrn on Thursday January 10, 2019 @01:55PM (#18876764)
UE4 has always pushed high-end rendering tech hard and not prioritised mobile. There’s little awareness of the current state of its mobile capabilities, with few big UE4 hits on the App Store (and hundreds of Unity success stories including Pokemon Go and Hearthstone)

F2P mobile dev is also very UI heavy, and UI work with Unity/C# is easier than dealing with C++/Unreal.

And Unity has a wealth of ready made plugins that can be quickly integrated into a project for things like IAPs, advertising, analytics, etc. Although maybe UE is catching up in that area by now?

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by SolarNet on Thursday January 10, 2019 @04:35PM (#18878442)
Unreal has a new UI system and designer that feels really really good to use. And has visual blueprint code support.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by nearbuy on Friday January 11, 2019 @01:19AM (#18881405)
Package sizes are pretty big. I think an empty project packages to about 60 MB.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by galacticpony2 on Thursday January 10, 2019 @04:41PM (#18878509)
> Why? Unreal Engine has targeted iOS + Android phones for 5+ years now, successfully. (Fortnite, PUBG, Dungeon Defenders, Horn, etc).

Dungeon Defenders and Horn are not UE4 titles, UE3 isn't available anymore. PUBG and Fortnite only work on higher-end phones. UE4 is going the "easy" route by not supporting older devices. With Unity, you could still target fixed-function hardware up until recently.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by aphextron on Thursday January 10, 2019 @05:19PM (#18878866)
>UE4 focuses on high-end console/PC. For rapid development of mobile games, Unity is basically the only choice.

This is a false dichotomy that came about because Unity was the first major AAA engine that was free to use. UE4 has easily surpassed them at this point. See PUBG Mobile, Fortnite Mobile, etc. There's absolutely nothing like that on mobile using Unity.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by nearbuy on Friday January 11, 2019 @02:13AM (#18881588)
I'm not saying UE4 isn't good, but I have a pretty long list of complaints.

First, their class reference documentation is very poor. The majority of classes and functions have either no description, or a description that basically repeats the function name in sentence form. For example, http://api.unrealengine.com/INT/API/Runtime/CoreUObject/UObj....

UE4 is fairly opinionated about what kind of game you're making. A lot of its core classes, like AActor, AGameMode, etc. are designed with a multiplayer fps in mind. For example, the basic actor class is much heavier than Unity's GameObjects. Every actor gets things like a built-in PointDamage and RadialDamage event so they can be damaged by guns and grenades.

There's a lot of minor issues with API/naming choices. ConvertTransformToRelative() has the Transform and ParentTransforms parameters backwards and instead gives you the ParentTransform relative to Transform. FBox.IsInside() should be named FBox.Contains(). As it stands, "if (MyActorBounds.IsInside(MyContainer)) { }" does the exact opposite of what you'd expect. The sin() and cos() nodes in materials don't take radians, nor degrees by default, but revolutions (so sin(0) == sin(1) == sin(2) == 0), even though the C++ FMath::Sin() function takes radians.

More importantly, we encounter engine bugs and crashes pretty frequently. Just recently, I was unlucky enough to encounter 3 separate bugs with OnAudioPlaybackPercent (it returns wrong values in various circumstances). Atmospheric fog started whiting out the screen after updating engine versions (still investigating this one). We've had tons of issues with child actors either becoming corrupt or losing their default values. I think we encounter some engine issue every week.

My favorite was when deleting a question mark from a comment in C++ caused everyone to be unable to compile. That had us scratching our heads. Any guesses why that would happen? (Hint: it's Unreal's fault.)

"Delete binaries and intermediate folders and recompile" is practically our unofficial office motto due to how often it fixes issues. Which leads me to, compiling C++ is slow. The near instant compile times of Unity are like a breath of fresh air.

Finally, the community and Asset Store for Unity seem much better. I wish we had something like FinalIK for Unreal. The Asset Store has 10x more content than the UE4 Marketplace. We usually look on the Asset Store for stuff like sounds or meshes, but it can be inconvenient, especially if they come with custom materials or code.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by wtracy on Thursday January 10, 2019 @01:01PM (#18876199)
How is UE on mid-range and low-end mobile devices? I have the impression that's in increasing important chunk of Unity's end user base.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by bluescrn on Thursday January 10, 2019 @01:08PM (#18876279)
Unity is huge in mobile gaming. UE4 barely made a dent on mobile until the recent mobile release of Fortnite that is, which requires a fairly high-end device
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by k__ on Thursday January 10, 2019 @03:09PM (#18877572)
Somehow I always had the impression Unity was a heavy C# moloch and Unreal was a fast C++ racecar.

Interesting.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by galacticpony2 on Thursday January 10, 2019 @04:53PM (#18878652)
It's not about the language, C# is generally fine if you know how to work the GC (which admittedly many people don't). The kind of C++ that is used for game code in UE4 isn't exactly "zero-overhead" either and it also uses garbage collection. Plus, on mobile C# in Unity is translated to C++ anyway. My guess is that the difference is negligible in most cases.

What really makes the difference is that Unity has light-weight rendering pipelines available, running on older GPUs. UE4 just ditches those devices.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by ccvannorman on Thursday January 10, 2019 @09:06PM (#18880439)
Can you expand on "knowing how to work with the GC" in Unity? I'm a Unity dev and rarely touch GC other than keeping mindful of the work I'm giving it by size/quantity of objects in my scene/making sure objects are dereferenced/can be collected.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by galacticpony2 on Friday January 11, 2019 @07:19AM (#18883000)
Basically, know what does and doesn't allocate heap memory, don't give the GC more work than it can handle and measure on the target hardware. Do it right at the start of development and consider things like object pooling and the new ECS, if necessary. Understand how your GC works: https://blogs.unity3d.com/2018/11/26/feature-preview-increme...

It's not about performance in 99% of frames, it's about not dropping frames when the GC kicks in and needs more time than your budget accounts for.

Re:Unity Engine ToS change makes cloud-based SpatialOS games... by Mikeb85 on Thursday January 10, 2019 @05:55PM (#18879243)
C# is just the scripting layer in Unity. It's a C++ engine just like Unreal.
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by brianwawok on Thursday January 10, 2019 @12:57PM (#18876159)
Doesn't unity make it "easier" to be cross platform still?
Re:Unity Engine ToS change makes cloud-based SpatialOS games... by galacticpony2 on Thursday January 10, 2019 @04:33PM (#18878432)
> I don't know why people are still using unity instead of UE4

How about not having to use the dumpster fire called C++ for game code? C# is far nicer to use. Also, in Unity code hot-reloads instantly and reliably.

> Meanwhile, UE4 is a really good deal and keeps getting better with every release.

So does Unity. I think people underestimate how much more development effort went into Unity in the last years. UE4 has more fanboys, less actual success. On the other hand, with the Fortnite windfall, maybe UE4 will pick up pace now.

> It's really just a better put together engine all around.

It's still a godawful pile of C++ that takes forever to compile. I'm sure the same is true for Unity's core, but they're moving to a subset of C# that can be compiled more efficiently.