dogles
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?
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#.
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.
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.
(Not affiliated with Rider, just a big fan)
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 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.
The crux here is that Programmer committed to X work done by the end of the week, and Support is effectively subtracting their time to accomplish X. This is a managerial problem, and not an easy one, because it’s not predictable.
My estimate, if you’re a programmer working 40h/wk on a live product, 8h of coding is a good week. Expect the majority of your time to be spent planning, reviewing, and supporting. If you’re sacrificing one of those to get more concentrated coding time, make sure that is communicated. YMMV.
In any case, if you don’t have managerial support to get engineer resources to fix problems, then it’s not support - it’s therapy. Sometimes that’s the best you can do.
In startups, this aspect can too quickly get shunted off to a QA or CS personnel, and problems get abstracted into incident tickets (that are often ignored in favor of the Next Big Feature). That seems to me to be giving up one of the classic fundamental advantages of a small business: the personal touch.
Proletariat is a Boston-based startup built by game-industry veterans from Harmonix, Turbine, Media Molecule, and Insomniac. We lovingly handcraft engaging tablet-first experiences, focusing on creating great team multiplayer games. Like the original revolution, Proletariat rises up to wrest game development from big industry and return it to the people.
We're currently looking for Senior Engineers who want to build great games for tablet and mobile devices. We are a small team, so you will have the opportunity to work in many different areas: gameplay, user interface, server systems, and internal tools. You will work with our artists, designers, and product managers to create new features that are launched regularly to our playerbase.
You can find more information about our team at http://proletariat.com/team and our current game in development at http://worldzombination.com.
Qualifications:
- 3+ years engineering experience.
- Some game development experience.
- Demonstrable ability to learn and work in multiple programming languages.
- Continues to improve development skills and learn new technologies.
- Self-directed and can work autonomously, but can also ask for help when needed.
- Able to communicate well with other disciplines, including artists, designers, and product management.
- Enjoy playing a wide variety of games.
Bonus:
- Experience with Unity engine.
- Experience with Haxe programming language.
- Mobile development experience.
- Node.js experience.
Proletariat is a well-funded, venture-backed startup that offers attractive salary, benefits, and equity for qualified candidates. Contact [email protected] if you are interested in joining the revolution!
I wrote a blog post that talks about why we chose Haxe here: http://blog.proletariat.com/post/63004824563/choosing-a-deve...
This isn't to say that C++ lacks significant flaws, but I don't think nuance and variety of expression is one of them.