One thing that wasn't mentioned: (realtime) multiplayer. What's the story here for Unity these days?
There's still a lot required in Unreal to implement things like bullet or projectile latency-correction unfortunately, but the base infrastructure they provide here is huge. Last I used Unity, there was essentially nothing. There were some third-party things but nothing you'd ever want to use in a shipping multiplayer game that isn't turn-based.
Has anyone actually shipped a multiplayer (not turn-based) game with Unity that doesn't regret the decision?
I'm aware of some fighting games in Unity. These are real-time games but by convention they derive game states from sequences of input states from the players and use time travel to amend entire estimated game states (rather than e.g. estimated positions of individual objects). These games still face some unnecessary trouble imposed by Unity: it's not possible to handle all inputs and networking on a thread that's entirely separate from the thread that does rendering.
The networking in Unity is still terrible. Unreal is of course better but still not good enough out of the box. When Riot developed Valorant they had to rewrite the networking code to be more like Quake and Source.
short answer: yes. If you stay within their uclass/uproperty framework, you have garbage collection, guaranteed initialization of class members, type reflection, etc.
Rare issues come up like:
```
int* Element = &Array[0];
Array.Add(0);
*Element = 3; // could be access violation or memory-stomp if array was resized
```
Which can be addressed somewhat by code style policies.
Their garbage collector is also slightly weird in that it most things are deleted when there are no more references to it (as expected) but Actors can be deleted explicitly, in which case all references to them are set to null. This makes a lot of sense for a game engine actually, just perhaps unexpected from a language like C#.
C# remains a plus for a lot of game code, but not as much as you might imagine. C++ usage in Unreal is really a small restricted subset of C++. For typical gameplay code, you play within their rules for uclasses/ustructs/etc and it feels pretty much like any other managed GC language. Meanwhile, for places where it matters, "raw" C++ is of course always available.
Re: iteration time, Live++ [1] integration has matured a lot in UE5. That means compiling most code changes without having to restart the editor (or even in-editor game session). Again, not much different than Unity here, though both can break and require editor restarts for certain types of changes.
To double-down on OP, by far the biggest advantage Unreal has for professional development (aka anything you want to ship) is full source code. I've worked in both but can't imagine going back to a black-box engine. Unity/Unreal are both MASSIVE codebases ported across every modern platform imaginable and guess what: there a plenty of bugs in both. I can't imagine going back to an engine where I can't A) see what it is doing and B) fix issues without waiting weeks/months for a patch.
> Re: iteration time, Live++ [1] integration has matured a lot in UE5. That means compiling most code changes without having to restart the editor (or even in-editor game session). Again, not much different than Unity here, though both can break and require editor restarts for certain types of changes.
A week of doing things in unreal engine 5 C++ has resulted in more editor restarts than years of doing things in unity. They are not really comparable. And this is from someone who have written a a few hundred thousand lines of C++ at Google and no professional experience with C#, getting to a productive state in unreal engine C++ as a solo developer is a huge slog compared to unity.
If you do most things in blueprints then unreal might be fine, but for an experienced programmers blueprints feels extremely slow and clunky to work with. I want to write code.
Launching the editor from visual studio makes the code and compile workflow quicker. On our project we take map ids from the command line. Thus I can set my visual studio to open a specific map when I hit run. Compined with a powerful cpu and optimized include what you use header usage the iteration time is compatible to a large unity project.
Unreal has a ton of hidden magic most people only learn from other people. Which is fine if you are working at a studio with other more experienced devs. Not great if like me you started as a hobbiest.
Just want to +1 that Rider for Unreal [1] is GREAT. It's also totally useable for non-Unreal C++ projects. Things like code inspection (e.g. goto definition/find usage/etc) and refactoring are actually fast, unlike Visual Studio. I've got a few quibbles about low-level (think asm) debugging, but I've pretty much moved exclusively to Rider at this point.
The Unreal-specific stuff is nice as well: being able to see what blueprints override a uproperty or implement an event is a huge time saver for AAA-scale codebases.
I think the bigger problem (which the example conveniently sidesteps) is that smart contracts don’t involve people. They involve _wallets_. I can have as many wallets as I want. Unless there is some external (centralized, trusted) unique identity mechanism, there’s no way to ensure the vote isn’t rigged. It also means that I could make a smart contract where I’m on all sides of the contract (e.g. say I’m trying to pump the market value of park-improvement projects…).
Outside of “a few neighbors who all know/trust each other and the public key for each other’s wallets” example, this all falls apart.
The two most popular engines (Unity and Unreal) both have a GC for “front end” gameplay code. The trade-offs are real: manual resource management would be incredibly complex for large modern games (think open world, multiplayer), but GC spikes are a common issue in both engines.
The places where you generally don’t want a GC are with low level engine code, like the renderer - code that might execute hundreds or thousands of times a frame, where things like data locality become paramount. GC does you zero favors there.
You believe so...with what evidence? You’re pointing at a system that has well-documented, overwhelming evidence of systematic corruption, lawlessness, and oppression, both in recent history and modern day. A “few bad apples” sort of defense is infuriating at this point, because it seems so willfully ignorant. We have the highest incarceration rate in the world - doesn’t that give you pause?
I find it odd that you’re responding (multiple times, copied and pasted) about an article documenting a _pattern_ of injustice and corruption, bemoaning anti-government bias. How is this relevant at all? If you’re arguing the pattern doesn’t actually exist, citations are needed. Otherwise I think this is pretty clear reporting that the courts are not “working well”.
I’d go as far as say that for the lower class, the difference the modern court system makes is negligible. Whether you want justice or mercy, you better bring cash.
There was no old court system. The old system was life was harsh and brutal and there were entire classes above you that could treat you as literal property to be disposed of as they pleased without repercussion.
This is not necessarily related to the medication. ADD often represents as hyperfocus, to the detriment of the things you should be focusing on. https://en.m.wikipedia.org/wiki/Hyperfocus
There's still a lot required in Unreal to implement things like bullet or projectile latency-correction unfortunately, but the base infrastructure they provide here is huge. Last I used Unity, there was essentially nothing. There were some third-party things but nothing you'd ever want to use in a shipping multiplayer game that isn't turn-based.
Has anyone actually shipped a multiplayer (not turn-based) game with Unity that doesn't regret the decision?