22 ms·
What Unity Is Getting Wrong
- jimbob45 6y agoWhat's the primary draw of Unity? Valve, Epic, and id learned a long time ago that the real money to be made is in engine licensing rather than actually making games (unless the goal of said game is to show off your engine). What is it that Unity has that these companies have been so unable to replicate? Surely they don't want another player in the scene to compete with their engines.
- dexwiz 6y agoEach of those studios started with a game. There are 10x many more small companies that rolled their own game engine around this time that are now dead, or bought for their engine. The best tools grow first alongside a real product. Building a tool without a target product almost always misses the mark.
- accidentalrebel 6y agoI am curious, which companies were bought because of their game engines?
- jimbob45 6y agohttps://en.m.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp https://en.m.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp Naughty Dog by Sony > In all honesty, the biggest reason we're not using GOAL for next-gen development is because we're now part of Sony. I can only imagine Sony's shock when they purchased Naughty Dog a few years back, hoping to be able to leverage some of our technology across other Sony studios, and then realized that there was no way anyone else would be able to use any of our codebase. Sony wants us to be able to share code with other studios, and this works both ways - both other studios using our code and vice versa. Add this to the difficulty curve of learning a new language for new hires, lack of support from external development tools (we had our own compiler, linker, and debugger, and pretty much had to use Emacs as our IDE), etc, means that there are clearly a lot of other factors involved. Note, however, that these issues aren't really technical problems, they're social ones. — Scott Shumaker
- gfxgirl 6y ago> Building a tool without a target product almost always misses the mark. There is no evidence to back this claim up. There are > 10000 shipping games made with Unity, maybe 100000. And there are many hit games made with it as well. I'm not claiming they are or are not as good "technically" but they shipped, made lots of players happy, made their developers proud and successful so no mark was missed just because Unity started as tool without a real product alongside. If fact I'd argue the opposite, most teams that make their own engines have the worst tools because they have a limited budget and limit time and they've given themselves 3x to 10x the work. Instead of making a game they have to also make a game engine, tools, importers, converters, and tons of libraries.
- ReticentVole 6y agoUnreal requires C++ and runs poorly on mobile devices and Nintendo Switch. Unity uses C# and runs pretty well on weaker devices (dev and client side). It also crashes a lot less. Freelancer Unreal Developers are approximately double the cost and 1/20th as plentiful as Unity developers. And no, you can't develop a complete project in Blueprints: https://blueprintsfromhell.tumblr.com/ https://blueprintsfromhell.tumblr.com/ Unity had no choice but to split into HDRP and URP, because the gulf between next-gen consoles (high-end) and mobile (low-end) is going to become enormous. High-end will be completely dominated by raytracing, replacing traditional lighting, for example. However it looks like Unity have really mismanaged this division and have totally siloed the two teams working on each pipelines. They also require their Asset Store creators to provide more long-term support than they do for their own official Demos: https://forum.unity.com/threads/please-stop-with-your-madness-srp-updates-should-be-syncd-to-unity-releases.869479/ https://forum.unity.com/threads/please-stop-with-your-madnes...
- steveklabnik 6y ago> Unreal requires C++ and runs poorly on mobile devices and Nintendo Switch. Interestingly, as someone who started playing Fortnite on Switch, one of the pros I enjoy listening to has said that he actually would prefer playing on mobile to playing on the Switch, because the mobile version is more streamlined, so it actually performs better even though the hardware is weaker. All I know is that it's way, way nicer on PS4, but I would expect that of course.
- ReticentVole 6y agoIts down to the implementation by the developer. The typical developer will do a much worse job than literally the same company who developed the engine. Look at the crashes and performance problems of Industries of Titan on PC, or the visuals of Mutant Year Zero on Switch for examples from regular devs.
- Mirioron 6y agoMobile and C# are probably the biggest points. Another one is the community. Unity has a very large community which makes getting help easier.
- pjmlp 6y agoTooling, a deep belief that there is more than C and C++ as means to develop games and being able to target low end devices without turning them into frying pans.
- j_4 6y agoI'm a solo indie developer in the late stages of developing a small 2D game for PC and mobile. [1] Unity enables you to double dip on your engine knowledge to work on anything from simple 2D games for WebGL or mobile devices, to large AA productions, yet remains relatively lightweight as a tool, even on the large scale end of things. It uses C# for scripting as the one true way of doing things and not some second class citizen. C# is just incredibly good. It's performant, exactly in the right spot on the rigid-flexible axis, and has fantastic tooling and learning resources. I'm keeping a close eye on Godot and will be trying it for some tiny projects after I'm done with my current game, but it doesn't look like it's quite there yet. [1]: https://store.steampowered.com/app/1142080/Pawnbarian/ https://store.steampowered.com/app/1142080/Pawnbarian/
- Danieru 6y agoUnity has gotten so painful I've sworn off ever taking another Unity project. Since mid last year I am 100% exclusive on Unreal Engine. Unity wants you to think this instability is temporary. It is not. Unity has been unstable since at least 2014 when I first worked with it. Every year there is a new-new thing, "please stop using the old-new thing". Meanwhile those upgrades are always painful, not sometimes painful, but almost always. Back in the Unity 4 to Unity 5 transition the studio I worked at had a contract to port a single game screen from NGUI to UGUI. NGUI being a plugin which used to the de-facto UI framework. UGUI being Unity's inhouse clone. No upgrade path, just a rewrite required. You want to know the juicy fact? Unity has more engineers than Epic. This despite Epic developing both a cutting edge game engine + Fortnite. Unity makes noise about needing price increases and extra revenue sources, yet that high headcount is not showing us as quality for the gamedevs. With Unity you are paying for the "build a bear" of game engines; while Unreal is selling a batteries-included solid foundation.
- SaltyBackendGuy 6y ago> Unity has more engineers than Epic. It's funny. I see it (anecdotally) all the time. More engineers doesn't mean a better product. In fact at my old shop, things (product, quality) really started declining once we 'rapidly' scaled the team. Communication and consistency really suffered from lack of solid processes among other things.
- drawkbox 6y agoI think it comes down to power in the company. Unity was extremely simple and small before, once they got John Riccitiello it become a management/business focused company over engineering leaders in terms of power and direction. Unreal has Tim Sweeney, and old school guy that understands how to make a game engine and has done it over and over. They learned alot from Unity, and are now doing it better than them once they turned towards simplicity over complexity. When Unreal 4 swapped out UnrealScript for C++ it went into overdrive in terms of performance and clean.
- troughway 6y ago
- troughway 6y agoAs I had mentioned in a previous thread that has come up recently with regards to UE5 and being open sourced, one of the greater sins of Unity is that it is mostly closed source. In reading through the blogs of some of their developers, they seem to have a contrived idea that people "shouldn't have to know how it works", which, while it's a noble gesture, is bullshit because by prohibiting reading the implementation you can't know how it works anyway, whether or not you want to. The domain model in Unity is fundamentally broken because it forces you to tie a lot of logic to a Component. People end up embedding all kinds of unrelated bits and pieces of functionality to the Camera because, well, where else are you going to specify it? This is a batshit crazy way to write software. Yet here we are. Lastly, engines are leaky abstractions. Most software is a giant leaky abstraction as bugs and other things tend to creep up from beneath you, and knowing how something works down to the minute details is a huge advantage when it comes to not only debugging, but developing (architecture, style, optimization, whatever).
- pjmlp 6y agoUnity source code is available to anyone that actually wants to have it. It just isn't available in FOSS sense.
- thedirt0115 6y agoThis is correct, they released the source code a couple years ago under a reference license. https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-source-code/ https://blogs.unity3d.com/2018/03/26/releasing-the-unity-c-s... https://github.com/Unity-Technologies/UnityCsReference https://github.com/Unity-Technologies/UnityCsReference
- mpartel 6y agoThe reference source is pretty much useless for anything directly under namespace `UnityEngine`, because it consists mostly of forwards to C++, and the C++ was never released. At least that was the case around 2018. It might be getting better as Unity is migrating away from C++.
- 6y ago
- golergka 6y agoThe are all primarily organizational, not engineering problems. Like many other tech companies, I feel that product managers at Unity are rewarded for launching new shiny features (that quickly fall apart outside the scope of beautiful demos), not maintaining and improving existing ones. But despite that, it still stays a very good choice for many different scenarios, and definetly the best for mobile 2d games. The original design choices are solid. The most important components are in good enough shape. And it stays just in the right place between being too complex and too primitive. So, from a business perspective, when you want to build your match3 or hyper casual title, there's no much of a choice in terms of engine.
- drawkbox 6y agoI have been using Unity since 2008 version 2 before the Unity iPhone even and I have to agree. It is a mess. There has never been a time in Unity where systems aren't changing. APIs should be simple facades to ugly systems underneath, abstracting away the pain, but Unity puts it right in your face. Their editor is pushed over code first solutions. I thought when they went subscription that it would calm down, as before that it was a mad rush to justify you upgrading to the next version. It has only gotten worse. From the dual particle systems (which Shuriken wasn't even code accessible for a time), killing off simple legacy animation APIs, the UI years and years of delay and still not really as good as NGUI in terms of simplicity and mobile performance, the multiplayer systems have never been great they should have just kept RakNet/enet based reliable UDP and been done with it only Photon is worth it, the bulky editor first solutions that really should be code first and then editors that use that and on and on. Compare that with Unreal that is wonderful in terms of networking/replication, solid platform that is C++ first, decent platform support, Unity has more but lots of issues. Unity is what we develop most games on but Unreal starting to become more regular. Unity is caught in a pickle. Unreal is winning high end, Unity wants to be them, but they are leaving their smaller developers that do mobile/2D/simple 3D and making everything overly complex, while Godot is out there taking that space. I'd be worried if I was Unity. They still win on platforms available and they are making good efforts, but right now, and many times in Unity's history, there are so many systems now that it isn't simple for the low end, and high end you'd be amiss to not go with Unreal. This is coming from a Unity developer since 2008 Unity 2, before they even had Unity iPhone, back when it was just WebPlayer (which I miss the simplicity) and Desktop. Unreal is doing high end much better than Unity [1] and Unity is losing what made it hit huge, mobile, web and desktop games and simplicity. At this point Unreal is more simple because the systems work and there aren't these one direction only changes or dual system problems. So much of the Unity API is in flux right now and you never know if they are going to drop them. UI was worked on for YEARS and now they are doing UIComponents and don't even try trusting a Unity networking solution. Back in 2013 Unity was going to go C++ [2] and I wish they had, it was when Apple forced AOT on everyone and they backed off but Unity went into IL2CPP just a year or so before Mono was bought by Microsoft and had AOT baked in. They spent so much time not wanting to pay Mono's license but later it was all moot and not needed fully. Since that time Unity has been a constantly changing beast, and not for the better, painful wholesale updates with little or no benefit, only to see that system disappear soon and on to the next. Unity needs to calm down, lock down API signatures/facades, focus on atomic operations, make simple APIs as abstractions and change the underlying systems when it evolves. They do parallel changes which is good, but the surface changes quite a bit. Unity has become one big leaky abstraction. I have used it almost everyday since 2008 and it would be fine if they made things more simple, but even the transition is painful. Like when they removed their legacy particle system (which had a decent API) and one day just pulled it from a new build, every old game just crashed on open, no warning. They are getting better at that but it should not be like that. I am in the middle of a bunch of NGUI to UnityUI upgrades and that is already going to be replaced with UIComponents ... UI constructs (types, textures, fonts) really don't change that much and they spent years on that UI update. Why are users having to concern themselves with surface changes? A major difference between Unity and Unreal is Unity doesn't build games on their engine, Unreal does. While that sometimes makes Unreal solutions more FPS/BR format and closer to their games, it makes for a solid engine. Another difference is leadership, Unity was extremely simple and small before, once they got John Riccitiello it become a management/business focused company over engineering leaders in terms of power and direction. Unreal has Tim Sweeney, and old school guy that understands how to make a game engine and has done it over and over. They learned alot from Unity, and are now doing it better than them once they turned towards simplicity over complexity. When Unreal 4 swapped out UnrealScript for C++ it went into overdrive in terms of performance and clean. Unity is nice that it is C# as well, but the extra weight of constant changing systems that seem half done and not code first is tiresome. I love Unity, I make a large part of my living from it, I hate to see them not understand that breaking changes constantly, gets a bit old and it essentially offloads technical debt to every user of the system. I am using Unreal more because of some of these issues. People use a market engine to offload the engine team. That engine team should do whatever it takes to make transitions easy, and when difficult there needs to be immense benefits. Some of those are questionable in recent years. The desire for Unity to want to be Unreal is losing the mobile side and web is essentially not even a focus anymore which is more the whole market not Unity's fault. Unity started really as a better Flash, now they want to be Unreal. Right now Unreal is winning that and the Unreal 4 rewrite with C++ backed is really clean. Unity still more simple but with the new DOTS/Rendering Pipelines it is not. Unity, let the engineers/product people lead over the managers, you are losing a good thing. [1] https://www.youtube.com/watch?v=oDQl9gw_fRM https://www.youtube.com/watch?v=oDQl9gw_fRM [2] https://blogs.unity3d.com/2010/07/02/unity-and-ios-4-0-update-iii/ https://blogs.unity3d.com/2010/07/02/unity-and-ios-4-0-updat...
- _bxg1 6y agoI'm so frustrated that Unity and Unreal are the only two real options. And it's all because of console vendors. Unreal is just way too inaccessible, as an individual, non-C++-veteran (used it a bunch in college, but modern C++ looks nothing like what I've seen), non-games-industry-veteran. It's also fairly opinionated towards first person/third person action games. And then Unity is of course a dumpster fire. It's much easier to get started and hack something together with, but you'll be hacking and fighting with the engine for the entire project. Open-source libraries/engines exist, like Godot, but none of them properly support consoles because console APIs are apparently proprietary (??) because the console vendors are apparently stuck in backwards, draconian software practices from 2002. The whole state of indie-accessible tooling is just deeply depressing.
- dgb23 6y agoI'm looking forward of what becomes of the Jai programming language.
- _bxg1 6y agoIt looks well and good, but the point remains that it won't help you build for consoles out of the box.
- m0shen 6y agoIt apparently already builds for Switch: https://www.reddit.com/r/NintendoSwitch/comments/cixsoy/jonathan_blows_jai_game_programming_language_now/ https://www.reddit.com/r/NintendoSwitch/comments/cixsoy/jona...
- _bxg1 6y agoLet me clarify: Unity gives you high-level APIs for things like graphics, audio, input, networking, that work across all supported platforms automatically. There may be some platform-specific quirks, but roughly speaking, you can just click "build for X" and get a working X build. There's a huge gap between compilation and that.
- pjmlp 6y agoLooking at its adoption by Hollywood and TV channels for 3D based animations, Unity is getting lots of stuff right. I guess there is always Godot for those that don't feel the same way.
- busterarm 6y agoAnd yet Unreal has the nascent real-time in-camera VFX market completely locked in.
- pjmlp 6y agoThere is more to Hollywood than those kind of movies, even if that is actually the case, which I very seriously doubt. The winner takes it all is Octane Render.
- lgl 6y agoAgreed, I think Unreal Engine is much more suitable for VFX than Unity. Most people here on hn probably already seen the Mandalorian use of the engine. I have also recently watched this video [0] of an independent film maker using some of it's features for virtual production which I found truly mind boggling. [0] https://youtu.be/cOI-cjdULmk https://youtu.be/cOI-cjdULmk
- busterarm 6y agoClicked expecting a Matt Workman video...was not disappointed :D
- lgl 6y agoI didn't know the guy before this, just came across his video somehow after the recent UE5 demo and was thoroughly impressed by it. That mixed reality camera and lighting demo at the beginning of the video was seriously cool.
- _bxg1 6y agoCan you give specific examples? I've only ever heard of this happening with Unreal.
- DizzyDoo 6y agoI'm a full-time independent game developer who's been using Unity for the last 6 years and sadly Garry's very correct. The render pipeline debacle has been painful to watch, Unity announced that the Universal Render Pipeline (what is still planned to replace the default renderer) was 'production ready' in early 2019, and it was lacking... so much. No ability to use multiple cameras (one for the game, one for the UI, for instance - a common use-case), they've rewritten the post-processing stack multiple times. Having more than one Directional Light was supported only very recently. Some of these have been and are being addressed, but it feels like Unity is in this odd no man's land, grey-area between the old legacy parts of the engine, and the new ones that just aren't ready for prime time, with many glaring gaps in the functionality. You would expect something as straight-forward as SSAO to be available out-of-the-box, it's hardly cutting edge tech, but two (three?) years into URP's development and it's not in the Standard Assets yet. I do sympathise, it must be very difficult to bring an old engine up-to-date, but it's quite infuriating for developers like myself to work and know when to upgrade and when not to.
- lux 6y agoThis has been a cultural problem at Unity for a long time. They introduce half-finished features and then never improve them. A great case in point is their VideoPlayer component which can't open a video without dropping frames because 4 years on it still can't load things asynchronously. Where's the dev assigned to that component been and what have they been doing all this time? People have been complaining for years and there's zero attention to detail.
- vicarrion 6y ago100% agree with this. Everything they’ve done in the last 5 years I’ve been using Unity has felt half baked. You’ll try any number of the things they’ve released recently (networking, 2d animation, and vector graphics are the ones that come to mind for me) and they’ll work fine for their demo case but then fall apart with so many cases that you need to actually ship a game. I think one of the bigger problems with the company is that they’re not actually making games themselves and eating their own dog food.
- dukoid 6y agoPromote engineers for big launches, and you'll get big launches. Lots of them. Fire and forget style launches.
- rocky1138 6y agoThe message about eating their own dog food is spot on. I will say, though, that their new asset addressable system works very well and is quite a sane design. One of the better new things.
- hosh 6y agoI support CI for my team's Unity builds. I don't know much about the engine itself, but I can tell you that the tooling for automating Unity builds really sucks. I had a long list of reasons why, but my impulse blocker cut me out. Oh well. Here's a much smaller list: - You have to jump through many hoops to run Unity in headless mode - I cannot separate out build processes into discrete stages - Linux version is behind. Windows is slow. Macs require you to use specialized cloud (such as MacStadium) - License server is unreliable. It always goes down with a 500 error, every day for most of the evening (California time). That means I cannot easily elastically scale build servers. - WebGL target means running emscripten, which means running a compiler in Python. It is slow. We sped it up by using a really expensive AWS instance size to run it. - We built our own pipeline because Unity Cloud is even slower I think it is like this because: - We're not Unity's core market. We're a team that can afford expertise on CI - Unity doesn't dogfood their own tools and build a game with it. They don't fix the bugs that come from having to build a game. - Unity Cloud probably cheats and uses a special version of the binary that does not talk with their license server. So there is no pressure to fix their license servers, and make it reliable enough to run elastic loads. (They probably don't run it elastically because they use Macs for their build servers) I look enviously on the folks who work with Unreal Engine. I also hear that Defold is now open source. Maybe people can use that instead.
- dak3 6y agoI too support CI for some teams using Unity and the licensing server is a horror show.
- jandrese 6y ago> - License server is unreliable. It always goes down with a 500 error, every day for most of the evening (California time). That means I cannot easily elastically scale build servers. This should be flooding their support center with open tickets. Completely unacceptable. The worst part is that it shouldn't be hard to fix. The longer it goes on the more the Unity folks look like clowns.
- martinpw 6y ago
- adamnemecek 6y agoDOTS is in fact a major step up. It can't be done in engine code the same way you can't handle say oop to functional programming conversion in engine code.
- mpartel 6y agoI'm not so sure that would have been impossible. Nothing fundamental seems to prevent the compiler+runtime from: - laying out instances of the same Component next to each other in memory - Burst.Compiling their Update() functions - adding backwards compatible APIs to do parallel loops etc over multiple components Given the culture of constant rewrites Unity has displayed (and I'm sure they have lots of techdebt to make rewrites feel appealing), its seems far from certain that they explored avenues like this sufficiently. Or maybe they felt their earlier modification of Mono, which kept them on an old version of .NET for so long, was too painful to even consider touching the runtime ever again.
- Mirioron 6y ago>Nothing fundamental seems to prevent the compiler+runtime from: - laying out instances of the same Component next to each other in memory - Burst.Compiling their Update() functions - adding backwards compatible APIs to do parallel loops etc over multiple components And if those Update functions reference other objects and do something with them? If the engine automatically realigns the order in which Update is called on objects then you can't do something like that, you'd run into weird behavior. Or do I somehow misunderstand? From what I understand, the whole point of DOTS is to get people to write code that uncouples the data from what operates on the data. Once they have that they can shuffle these calls around.
- mpartel 6y agoOf course you'd still have restrictions on the code if you want it magically optimized, just as with DOTS. But you're right to be skeptical, this is not something I've thought through that thoroughly :)
- learc83 6y ago> They hid all the hard stuff in c++ so we didn't have to think about it. The more time has gone on, the more bullshit has crept to the forefront. The've gone from hiding the hard stuff to moving more and more stuff into C#. I love that they are moving more and more stuff in C#. It's a good thing. The C# code is available for developers to view and modify, but no one is forcing you to. The problem is that a lot of Unity's early choices that made it so accessible to novice game devs making simple games, made it to inflexible or slow for bigger or more complex projects. If you were building a high performance procedurally generated game, you were already fighting with all of the "easy stuff".
- jayd16 6y agoI agree. Moving things to C# reduces interop overhead and I think it's the right direction. If you don't want to look at engine code, don't. Why does anyone care it's in C# if they're not looking at it anyway?
- hnick 6y ago> Why does anyone care it's in C# if they're not looking at it anyway? Garbage collection probably. Some games have noticeable stutter. But I assume there are ways around that, similar to using Java in HFT.
- skibidi 6y agoA lot of effort goes into making sure allocations are avoided though. You also have DOT's High Performance C# which is a blazing fast subset of C# (Burst Compiler). I like the idea of using a language for everything, then restrict to a subset where performance is critical. You don't have that wall between scripts and (C++) engine code. And as mentioned above, less glue code is appreciated.
- ngold 6y agoThis is going to sound insane. But I am developing a perfectly good putt putt game with unity 2018 lts on a 12 year old laptop with 128 Meg video card. It's slow but builds work great. So far. For learning and small games it works well so far. And has a load of tutorials made recently by youtubers. But it is a bit confusing to work out what to use and what is to old to use code wise.
- swalsh 6y agoIn my brief time trying out Unity (as a non-game-developer) I found the programming paradigm very frustrating. I wanted a more object oriented approach. But what I found was to get things to work in a performant way, you'd end up with very leaky abstractions. At the core, my thinking is it has to do with everyting coming down to handling on a per "tick" basis rather than as an event. Maybe I just did things wrong... but this seemed to be the direction you're guided in. If you do try and build a good quaility event model, the performance was terrible.
- rr_aa 6y agoYou can use the built-in event system to achieve what you were trying to do. Its really straighforward to use
- bullen 6y agoThere are two main reasons to avoid Unity: 1) As your project grows, it becomes unmanageable because the resource pipeline is hidden and you want to be able to improve that. 2) Skin mesh animation, which is the main point of using Unity in the first place, uses a compute shader which means they send all meshes from the CPU to the GPU every frame! On the other hand Unreal takes 5 hours to compile and even Godot takes the same time as Unity ~30 min. The only option is to fold your shirt sleeves up and build your own engine. It's not that hard really.
- andybak 6y ago> Skin mesh animation, which is the main point of using Unity in the first place, That's an odd thing to say. I've never used it personally. Even if it's used in the majority of games saying it's the "main point of using Unity" is overstating things. It's simply one feature out of many that Unity provides. > The only option is to fold your shirt sleeves up and build your own engine. It's not that hard really. Maybe for you. I wouldn't even know where to start. And I wouldn't want to - that's not the level that interests me.
- bullen 6y agoThe only thing that Unity provides that has any chance of saving you time is the skin mesh animation = FBX or Collada to Mech Anim pipeline. If you don't need that you should _never_ even consider using Unity. If you are not interested by the underlying tech of any category of computing, you are not a programmer.
- username90 6y ago> The only thing that Unity provides that has any chance of saving you time is the skin mesh animation Unity has saved me a lot of time and I don't use the skin mesh animation system.
- astroalex 6y ago> If you are not interested by the underlying tech of any category of computing, you are not a programmer. I don't know much about Unity, but this gatekeeping ruins your credibility. It might very well be that writing your own game engine is faster than using Unity, but I actually believe that _less_ now after reading your comment. Your argument seems more pride-based than fact-based. Programmers specialize based on their interests, and that's a _good_ thing. If we didn't have specialization, nothing useful would ever get done. Mistakenly choosing not to leverage prior work in design space[1] can come at a very high cost. [1] Borrowing a term from "Darwin's Dangerous Idea" by Daniel Dennett (https://en.wikipedia.org/wiki/Darwin%27s_Dangerous_Idea https://en.wikipedia.org/wiki/Darwin%27s_Dangerous_Idea)
- jamesu 6y agoI got stuck into a few unity projects recently, and I've been surprised how poorly documented and undiscoverable things can be. Why is the whole rendering pipeline stuff such a mess? I've bumped into far too many unexpected gotchas because a pipeline doesn't support a particular feature, or it renders stuff in such a way which isn't clearly documented. And whats worse is there is no real easy way to debug it since there seem to be no in-built debug tools for rendering. Also their webgl implementation is terrible if your doing anything more advanced. Often I'm scratching my head trying to figure out why something suddenly doesn't work, only to find out for some reason it's still using old resources. And I'm often working around yet more undocumented implementation details like render targets getting their alpha channels wiped somewhere in the spaghetti code rendering pipeline. It strikes me that there is a real big gaping hole in the market for something like unity but which has a flatter, more comprehensible system. I think there is some hope godot will be that, but I don't think its quite there yet for some scenarios (like their webgl implementation being even worse than unity).
- rr_aa 6y agoUnity does have built-in debug tools for rendering, I'm not sure what leads you to affirm the contrary? Or do you consider the exisiting tools to be unsufficient for your needs?
- jamesu 6y agoMy main issue at the moment is they don't work in webgl, where the rendering is sufficiently different enough that it differs from what generally happens when you run in the editor. The built-in "Frame Debug" tool for me is very glitchy and doesn't really give very good information. So 99% of the time for me, it's basically as good as having no tools.
- minitech 6y agoThis blog has a looping, resized background video with a CSS blur filter. For anyone else experiencing performance problems because of it, I recommend reader mode.
- Geee 6y agoI removed the video element from the background. I thought it was some sort of crypto miner.
- samsaga2 6y agoThere is also Amazon Lumberyard. Which is totally free, you only have to pay if you use AWS for multiplayer. It is a fork of CryEngine. It looks really nice.
- corysama 6y agoIt might be good, if... you can manage to install it. https://www.youtube.com/watch?v=j271YAjW5wA https://www.youtube.com/watch?v=j271YAjW5wA tldw: The download and install process can easily take an entire workday. Then there's the plugin system...
- etaioinshrdlu 6y agoIt's UX is ... not great. I couldn't even figure out how to open a project from a folder on disk. Not joking. I really tried.
- Pfhreak 6y agoAs someone who was on a AAA team making a game on Lumberyard, I'd caution against it. The tooling, support, and community just aren't there (and it doesn't seem like Amazon is investing much in making it happen.)
- mpartel 6y agoAs a Unity user emphatically sharing these frustrations, I'd be really curious to hear from long-time Unreal devs whether the grass really is greener on the other side. How's Unreal's - API stability? - Editor stability? (I have some old experiences of it being quite crashy too, and you know, C++ ...) - Backwards compatibility and upgradeability?
- rr_aa 6y agoFor having used both Unity and Unreal, Unreal does crash often. Unreal can also become very frustrating very fast if you are going for anything different than a standard fps or third person game, and I percieve it as being extremely bloated compared to Unity. The force of Unity lies it its modularity and flexibility, in my opinion.
- gentleman11 6y agoI hear that sometimes but what stops people from using unreal with just actors and custom components and pretending it’s unity with c++? Lack of documentation? Does the engine actually get in the way?
- gfxgirl 6y agoI am also curious to know. I have no Unreal experience but some Unity experience. Have only made a few hackathon level games and plugins. Unity seems amazing to me. It's like a game engine editor creation system. Every game needs custom tools and they are relatively trivial to create in Unity from small, just create a struct and get a UI in the inspector, to add a few lines of code and get a custom control for your data, to entire plugins with multi-window UIs etc. And, at least for my use cases I can do this live. I don't need to exit the editor, recompile the editor itself, and then re-run which seems to be the Unreal way? Unreal devs tell me they don't need any tools. They just use what's built in. That makes no sense to me. Every game I've ever worked on (15 shipping AAA games over 30 years) required custom tools unless you wanted to subject your designers to lots of rote data input. I'm sure there are some subset of games where you just fill out a world with 3d objects and use the built in systems as is but that seems like a very limiting subset. What is that experience like in Unreal? I know at least one indie dev what was on Unity, switched to Unreal for one project, and is now switching back to Unity. I know another that was on Unity and switched to Unreal. They haven't shipped yet so not sure what their experience is. Both are small teams, 5 to 10 people. Neither has shipped a hit title.
- haydenlee 6y agoI'd add this the lack of a solid 3rd party developer ecosystem on their Asset Store. The fact that they don't have a subscription model for assets or any support for managing per-seat licenses is ridiculous and is the direct cause of multiple popular assets ending support. It doesn't make sense economically to sell any kind of service on their store.
- sloopy543 6y agoI'll just sit back and eat popcorn as I work with my custom handmade game engine. None of this is a concern for me, and it has been refreshing to work directly with the graphics pipeline and in lower level languages that give me direct control. If something is wrong, it's my own damn fault. For those who want to get away from being totally dependent on third-party frameworks and tools, check out Handmade Hero. It was life-changing for me, the difference between making a game I'm happy with vs. not. I also have a YouTube series discussing how to get setup on a Mac, if that's that platform you're starting with. https://youtu.be/M5l6CvHwWsc https://youtu.be/M5l6CvHwWsc I'm not really sure why more people don't do their own thing. It has been really satisfying for me. Overall, the process of making games is way more rewarding, and I think I'll have something better on the other end of all of this. Plus I'm getting better as a programmer, which helps with other aspects of employment.
- enumjorge 6y agoOnce you know how to do something, it’s easy to forget how much time and effort it took to get there. Making your own engine comes at a cost, and if you’re an artist or new to development, it’s a pretty high barrier of entry. Unity initially presented a good value proposition. You lose some control, but the engine will do a lot for you. Even for experienced devs this meant saving time. And I think Unity got this popular because they largely delivered on that promise. It seems the problem is that they’re butchering the evolution of the platform. Judging by the comments here, if Unity we’re doing a better job of rolling out and documenting changes, and stabilizing the product I think people would be happy choosing it.
- sloopy543 6y agoFor context, it took me about a year of learning in my spare time to get to place where I could do my own cross-platform game engine, and some of that time was spent doing the code for the game itself. What exactly is the expectation here? Would it have taken that much less time to learn the little nuances of Unity that folks here are complaining about? Also for context, my full-time job is demanding, and I have a lot of outdoor hobbies like snowboarding and mountain biking. I bet if I were even more focused, I would have learned it faster. It's not a big deal. You're already expending effort learning Unity/Unreal. It's only a little more effort to do your own thing. You might enjoy it
- fenwick67 6y agoI've been reading Garry's blog for about 15 years, good stuff.
- randtrain34 6y agoGodot Engine https://godotengine.org/ https://godotengine.org/ is much more user-friendly in my experience.
- josephsaade 6y agoJust try doing basic rendering with Unity and you will understand how bloated it is. Try to do some kind of fast line drawing / loading fbx / etc. Anything that a basic engine does pretty good.
- iluvblender 6y agoAt this point, Unity is a WIP engine with a boat load of alpha packages.
- bluescrn 6y agoThe problem is, there's 2 Unitys now, mixed up in one product, in various states of development. There's 'Unity Classic', and 'New Unity'. Almost everybody is using Unity Classic, but Unity is very focused on building 'New Unity' (DOTS/ECS, SRPs, Shader Graph, UI Elements, new input system, etc), which is intended to replace practically all of 'Unity Classic' one system at a time. It should probably have been a separate product, really.
- jokoon 6y agoA great demonstration of how unity is bloated: https://www.youtube.com/watch?v=tInaI3pU19Y https://www.youtube.com/watch?v=tInaI3pU19Y Unity is targeting students and gamedev wannabees. You don't make a game with a framework. Programming is not simple. Same debate of framework vs libraries. I'm even against Godot, which you cannot even use as a rendering library. You end up being too dependent on those platforms and all their assets and plugins. Of course if you intend to make a game that's not too ambitious, if it revolves around the graphics, unity might be ok, but it's just a sophisticated RPG maker 3D. I strongly advise against learning unity or godot. A huge problem is that unity/unreal made it difficult for classic engines/renderers to keep thriving, and it's hard to find a good engine nowadays. There are some, of course, but their community is non-existent, which makes things much harder in open source.
- andarleen 6y agook but can you please recommend some decent alternative engines for xbox development? i am having so many issues with unity i am running out of hair to pull out!
- jokoon 6y agoTurn to c++ maybe if you can. Godot would seem like a wiser solution than unity, too. You can also ask and search in various gamedev communities, on gamedev.stackexchange, reddit, etc, and ask around. I know I'm trying Urho3d that seems like a complete modern engine with everything included, and many samples. It's inspired by many other other engines like Ogre3D and seems to support modern graphics api like vulkan. If you're on 2D, stay on things like SDL or SFML. If you want better effects, I don't really know. I really depends on what you want to do, what are you skills, if you want to release quickly or not, if you have large assets, etc. Do not neglect the tools and libraries you use so that the code you write today will still work on the same libraries in 2 years. If you're indie and you don't have a lot of money, skills or experience, AIM LOW.
- andarleen 6y agoOk, thanks for this! I have the resources for assets, and my game is a Mars Colony Sandbox game like space engineers and empyron galactic, solo dev, still learning tho - but seems like i am making progress. I struggle a lot with memory issues tho i spend loads of time in the profiler, and there are many issues with unity itself. Will read more on the ones you sent.
- Tiktaalik 6y agoLol that Unity ECS ends up in a 'getting wrong' article considering that ECS style programming has been the direction that game development has been moving for a good while now. At some point sooner than later people will be complaining about how they can't do ECS in Unreal.
- gentleman11 6y agoIn February, Unity changed their asset store license retroactively and took away our rights to let our freelancers use our assets. Their support was apparently telling users their freelancers could use their purchased assets only days before the change. It was a massive abuse of the “we can change these terms at any time clause”
- m0guz 6y agoThat reminds me of Unity-Improbable debacle [0] few years ago when Unity changed their TOS without announcement. [0] https://www.gamesindustry.biz/articles/2019-01-10-spatial-os-games-under-threat-as-unity-claims-improbable-has-breached-terms-of-service https://www.gamesindustry.biz/articles/2019-01-10-spatial-os...
- gentleman11 6y agoI’ve never seen a company use their “these terms are whatever we want them to be” clause so aggressively as unity has at least twice now. How are you supposed to trust them as a partner?
- klmadfejno 6y agoI'm a hobbyist game dev. I picked up unity one day and just started making stuff, learning C# on the fly. I'm not great but I can do what I want. I was really interested in Quixel for Unreal so I spent the first half of today trying to learn it. I think I'll be going back to Unity. Unreal did not feel approachable at all. I'll probably keep trying for a couple days... but yeesh.
- animal531 6y agoYou can use Quixel scans and materials in Unity as well.
- zubspace 6y agoI spent so much time figuring out stuff in Unity (physics cough) or implementing stuff I thought were subpar (a remoting stack based on LiteNetLib) that I simply got tired of it. And every new feature adds more complexity on top of an already huge engine, which takes insane amounts of time to keep up with. In anger I drew this comic [1] and really, my relationship with unity kinda broke as soon as they introduced dots and the new rendering pipelines. [1] https://www.zubspace.com/comic/unity-vs-godot https://www.zubspace.com/comic/unity-vs-godot
- georgeecollins 6y agoThis resonated with me: " If you're searching how to do something, the first 5 answers you find are going to be out of date - and they're usually from Unity's own documentation. " Unity seems to be going in too many directions at the same time.
- andarleen 6y agoNo mentioning of the asset store - almost got scammed by the author of a popular terrain shader author. Fortunately Unity issued a refund, but the person has been quite bullish on their forum and is still selling there. As a fee forum admins told me - stay away from the asset store, or at least buy from companies you can hold accountable.
- hashamali 6y agoUnity does miss on a lot of things, but I'd like to point out one of its best qualities: the pricing model. Compared to Unreal, Unity is a steal. Despite Unreal's recent changes to not collect royalties on the first $1m of gross revenue, its license can get quite expensive if you have a successful game. * Unity: $1800 / year, no royalties. (Unity Pro) * Unreal: 5% of gross revenue.
- OmarIsmail 6y agoRecently changed so it only kicks in after $1M in revenue. For the vast majority of game developers Unreal is 100% free now.
- gentleman11 6y agoIf you have a 10 person team and your game makes $10M after roughly 2 years dev, with Unity you spend about $2,036,000 but with unreal you pay $2,500,000, just taking development and licensing costs into account. If unreal gave you 20% more productivity due to being more stable, I think even successful games come out ahead by being able to release sooner (saving money on dev time), or by better sales from having a more stable and visually appealing end result. Unity is costing me days per week right now fighting with flickering terrains or line renderers that throw errors, all stuff that ends up in the ever growing "known issues" list
- hashamali 6y agoCurious how you’re getting $2m? Are you the Enterprise plan?
- diegoperini 6y agoCurious question: I have a few years experience with Unity. When I first grabbed it, I assumed the engine having C# scripting would give me rich tools to make game state serialization (save games, streaming open worlds etc) a relatively easy task, thanks to its reflection capabilities. This turned out not to be the case due to my false expectations, the programming model game objects use and the asset pipeline needing too much plumbing. Official ECS packages made it easier later but they also broke the entire authoring workflow by effectively deprecating `GameObject` in practice. I've never used Unreal Engine but if serialization is a solved problem there, I want to try. Does anyone here have experience with similar use cases? Are there other AAA-ready engines good at this? Giving value types first class support, promoting data oriented design and building the artistic authoring tools around these priorities is what I will appreciate the most. I don't care if the high level scripting language is non-existent, C++ heavy or Brainfuck. That can be circumvented by building muscle memory in a few months.
- pastrami_panda 6y ago> they also broke the entire authoring workflow by effectively deprecating `GameObject` in practice I've not yet worked with ECS, but I've read the docs and remember there was an emphasis on GO -> Entity conversion. So authored GOs can be converted to efficient entities runtime. Is this not the case anymore?
- diegoperini 6y ago> Is this not the case anymore? It is but it has some drawbacks: 1) Play Mode inspection/modification capabilities are harshly reduced. Unity is years behind re-implementing those. 2) Not all subsystems speak ECS yet. Many of them are still essential. 3) There is now a distinction between what you see in Edit and what you get during Play. 4) Serializing ECS is easy but de-serializing is still a pain. You have to keep track of GO's that hasn't finished their async conversion to defer de-serialization. 5) Yes, GO->Entity conversion is async so you need to manually wait for all conversions before your game can start playing.
- carlosdp 6y agoThe multiplayer thing is my biggest gripe. It is unfathomable to me that Unity has seemingly ceded multiplayer functionality to Photon, considering the most valuable games on the planet right now are all multiplayer-first.
- avilay 6y agoWhat do folks here think of Panda3D (https://www.panda3d.org https://www.panda3d.org)? Its just a game engine without any IDE. So the typical workflow would be to build your assets and scene in Blender (or Maya, etc.) and then code up the game mechanics in Python or C++. I am tinkering with it for non-gaming (Reinforcement Learning) use cases and I was curious what game devs think of it.
- Jach 6y agoNow there's a name I haven't heard in a very long time... I'm not in game dev right now, though, so grain of salt and stuff. But I did play around with Panda a long time ago, and thought it was fine for getting some 3D stuff going quickly without dealing with the headaches of OpenGL. Similar to PyGame but for 3D. It's neat that it's still seeing development. Besides the old Pirates of the Caribbean game, which I can't even find mentioned on their site anymore, have there been any commercial games developed with it? I was always under the impression that it was primarily targeted towards CMU students in their game design curriculum. (DigiPen, a school most known for game programming, has in its main degree program students building their own engines from scratch, but there are at least 3 in-house engines that have been developed over the years meant for freshmen and game design students.) I tend to treat the "commercial use" barrier as the key one to initially evaluate "niche" engines. Like, Ogre3D is fairly "niche" too, but it's been used in many commercial games. That says nothing directly about the relative quality, but it does imply some good things if people were willing to risk a business product on it. Personally I'd consider Panda again for a game jam or as you mentioned a non-game-but-3D-needing thing, but where for both I'm also expecting to use Python. But I'd want to check out Python bindings to Ogre and whatever else is out there now these days too. (Godot has been top of my "if I ever want to just make a game and not spend time in the weeds doing things from scratch in a non-mainstream language, use this" tools.)
- stephc_int13 6y agoSmells a lot like a continuous second system syndrome. https://en.wikipedia.org/wiki/Second-system_effect https://en.wikipedia.org/wiki/Second-system_effect
- zelphirkalt 6y agoI once tried using Unity for creating a little game during a game jam of approximately 8h. The team wanted to make a small game, where one could mix ingredients and create magic potions. Initially I suggested we could simply use some JS and make it a web app, specifically, because I anticipated problems, if we relied on some software like Unity, but no, unfortunately the team majority decided they wanted to use Unity. For the Windows users it apparently worked. However, one friend and me, this choice excluded us. Here is why: Unity did start the first time, but then crashed, resulting in some lock file being there, so that I could not start it again. Took a while to figure that one out. After figuring that out, I was able to remove that lock file manually, enabling me to start Unity again. That alone in itself already seems ridiculous. However, I could still not use it, because it kept crashing and not working. So my friend and I could not participate at all. She was running some Mac laptop, where it also had issues. I tried reinstalling multiple times, updating graphics card drivers, switching between proprietary and Nouveau, all kinds of shenanigans, I tried for at least 2 hours to get this stuff working before giving up. Of course I searched online for solutions. None to be found. This was a few years ago, so the situation might have changed, although many comments here lead me to thinking, that it might be just as bad. However, that is why I stay clear of using Unity. What I've seen of Unity makes me think it is a huge bloated thing. I'd rather choose some small 2D game engine and write a lot of code myself than trying to use Unity again. Once bitten ...
- moron4hire 6y agoI've spent the last three years working in Unity. By the time I've learned enough to make honest-to-goodness good quality games with it, I've reimplemented so many things that are supposed to be core features of Unity, that I would have just been better off starting from scratch on my own. So that's what I'm doing now. There is a .NET Standard 2.0 library called Veldrid that gets you open source graphics code. There's another netstandard2 library called NAudio that will get you most of what you need for audio. Xamarinn will get you the platform-specific stuff for user input. Networking can be done with just regular, ol .NET sockets. If you care about VR (which I do), there are C# wrappers around all of the major VR APIs; you'd have to do a lot of platform specific and conditional compilation wrangling to get good VR working on Unity anyway. And you can use a sane build system, with a sane dependency management system. It's just so much better than constantly fighting Unity's stuff that was all designed for demoing at Unite and then never finished.
- lynguist 6y agoYour webpage, in particular the barely visible animated background of it, consumes 100% of GPU on my 2012 Macbook Pro. This is bad website design from an energy point of view.
- overgard 6y agoOverall I love unity, but one thing that drives me insane is how many weird UI quirks they just don't fix, like how incredibly primitive editing arrays in the inspector is (its a nightmare to reorder anything) or dealing with asset imports that take forever. They take these huge projects on, the great rendering features and such, and theyre impressive, but somehow they won't fix small things that are seriously aggravating in day to day use. Also while I do love c#, I think it was the wrong language choice, because you end up having to write code in a really constrained way to get around garbage collection issues. Its getting better, but for games id prefer a non gc language
- codeyperson 6y agoAt a previous job, one of my colleagues didn’t have the best vision. And had to run his computer at a really low resolution to compensate for the tiny text in the UI. There’s an open issue that has been on the Unity website for years asking for font size support in the editor. But it has never been addressed.
- trynewideas 6y agoIt often feels like if Godot hired one really, really good documentation specialist, they could run away with things, especially in the mobile, indie, and lower-spec spaces. Unity's documentation is bad, but unlike Unreal's, it exists.
- dangoljames 6y agoPretty much everything. Godot is where it's at.