5 ms·
I think one of the hardest-to-replicate advantages of the big engines is ease of cross-platform builds/input/deployment. That was Unity's original killer-app (i
by _bxg1 7y ago
I think one of the hardest-to-replicate advantages of the big engines is ease of cross-platform builds/input/deployment. That was Unity's original killer-app (it's right in the name), and of course Unreal has caught up too. If you write a custom engine and you have any interest in targeting multiple platforms, you have to:
- Either figure out how to transpile the language you're using to the one for each target platform, or find a runtime for it that will run there.
- Write unifying input-handling code across platforms; treating all analog sticks (PC, Playstation, Xbox, Switch, maybe touch screen sticks) the same, treating touch on iOS and Android (and mouse input?) the same, etc.
- Manually hook it up to each platform's SDK that you might want to target; each game console, iOS and Android, the web, etc. Graphics, resource loading, network access, audio.
This can be a massive undertaking, which is why most indie games that don't use a major engine just stay on PC.
Whereas in Unity I can take an existing project, with little to no knowledge of Android development, with zero code changes, and plug in a device and click "build for Android" and have it running flawlessly on-device in 5 minutes. Same for an embedded Web version. Presumably the same for iOS and Xbox and Playstation and Nintendo Switch, though I haven't tried those personally. But that's an enormous differentiator if you have any interest at all in making your game cross-platform down the road. Even Godot, while it supports mobile, doesn't support consoles out of the box.
Edit: Oh, and I forgot to even mention VR support. And cross-VR-platform support.
- chongli 7y agohave it running flawlessly on-device in 5 minutes That's assuming the game is appropriate for a given platform. A mouse-based game with a lot of very small click targets (such as SimCity 2000) would not be playable on a touchscreen. The game would have to be dramatically re-designed to the point where it's a different game entirely. At that point, the advantage of having a "build for Android" button is greatly diminished. If you're only targeting PCs (and I think most Indies are) then a framework like SDL gets you most of the way there to having your game run on Mac/Windows/Linux. It also does so without any of the financial cost of a proprietary engine and keeps things very simple so you can focus on building exactly what your game needs.
- _bxg1 7y ago> At that point, the advantage of having a "build for Android" button is greatly diminished. Not at all. Handling different input styles (mouse vs touch), while not trivial, is a tiny fraction of the other work listed above that goes into targeting multiple platforms. Unity/Unreal let you focus on just that tiny part that actually matters to your game. > If you're only targeting PCs (and I think most Indies are) This is also not remotely true. The current generation of consoles, in particular, have been huge for indies. The majority of the games released on them have been from indies. And if you're taking gamepad input, you don't really even have the input-mode speed bump when it comes to supporting multiple platforms at once. Probably the only concern you'd have to deal with is level-of-detail, but you'd have to do that for PC anyway, and the engines give you tools that assist with it.
- klodolph 7y agoFor sure, but “zero code changes -> flawlessly on-device in 5 minutes” is something that only happens if you have some serious expertise or prior experience with running your Unity apps on mobile devices. At least, in my experience. Even with the new input system (introduced in Unity 2019.1) there are serious considerations you need to make for input, general UX, and the different graphical capabilities (shaders) for mobile devices. A bit of this is also just the fact that with Unity you don’t have to personally deal with the Android NDK, which is the software used as punishment in the fourth circle of hell, if I remember Inferno correctly.
- _bxg1 7y agoI've admittedly only done this with simple projects. But still, for those simple projects, "flawlessly" and "5 minutes" were not exaggerations. Even if a full-sized project ends up revealing some small gaps in the abstraction, it's still miles better than the alternative.
- klodolph 7y agoOk, well, for the small projects I worked on, “flawless” was “not even close” and “5 minutes” was “surely you must be joking”. I think this is more of an indictment of the Android NDK than anything else.
- jrockway 7y agoI play a Unity game; Hearthstone. The number of engine-related bugs shocks me. My favorite is how the game completely locks up at the start of every match. Sounds stop playing, the UI freezes... it looks like the game has crashed. (I believe it's writing a ton of text to a log file, which is unfortunately part of their public API now because of deck trackers that read those files. Maybe it's also reading assets; I've never profiled it.) What amazes me is how consistent the behavior is across all platforms. It locks up on Windows, and it locks up on my iPad. Write once, run anywhere! Of course, I don't think it would be worth writing your own game engine to work around that one bug, but at some point, one wonders how many oddities it takes to justify a rewrite. People still play the game despite this one bug that's existed (I hear) since launch, so I guess it was a good cost/benefit decision to use Unity. But for a game studio that prides themselves on polish, that particular bug makes me die a little inside every time it happens.
- _bxg1 7y agoWhy would you assume that bug is caused by Unity? If anything, the fact that it doesn't happen in literally every other Unity game should tell you it's specific to Hearthstone. And the fact that Hearthstone has a single codebase across platforms means that if Blizzard ever fixes it, it'll be fixed on all platforms.
- a1369209993 7y ago> What amazes me is how consistent the behavior is across all platforms. It locks up on Windows, and it locks up on my iPad. Write once, run anywhere! The joke from the java days was "Write once, crash anywhere!", although I suppose "Write once, freeze anywhere!" was more common unless you ran out of memory.