7 ms·
Really interesting! The small studios (or one-man armies) are the ones using custom stuff because they have to do it all anyways, no biggie having to do a litt
by phn 6y ago
Really interesting!
The small studios (or one-man armies) are the ones using custom stuff because they have to do it all anyways, no biggie having to do a little leg work to import stuff.
When you're a bigger studio, having to coordinate and support multiple teams with different workflows, the engine and the tools it provides play a much bigger role. The studios with such scale either build something that works for them, or use some existing one provided by others.
- s9w 6y agoI think the biggest reason for the custom code in the small teams is that they make 2D games. A 2D engine barely deserves the name and it's usually more hassle adapt to a 3rd party engine and its limitations than just write it yourself.
- jfkebwjsbx 6y ago> A 2D engine barely deserves the name If you say so. The vast majority of programmers would have no clue where to start if you put them up to the task. A game engine is much more than a renderer, which is the only easier part in 2D versus 3D.
- s9w 6y agoSure there's a place for these engines. They abstract away graphics layers and bring convenience. But if you are a (semi-?) professional game dev, that's not a major hurdle. I have a toy game in play around in my free time and started with SDL like so many. You can create windows and draw bitmaps really easily. But sooner rather than later you discover limits (bugs, performance limitations, less than ideal APIs) and see that just writing OpenGL code yourself is actually easier and more flexible. Many people go down that road. edit: Concerning your edit about "more than a renderer": Yeah that other stuff is annoying and many still use SDL, SFML or whatever for that. See Factorio and many many others who do the rendering themselves and offload the other crap. I do that myself too.
- onion2k 6y agoThey abstract away graphics layers and bring convenience. And bring physics, input, asset loading, networking, systems, scripting, etc.
- s9w 6y agoThat depends on the engine. The big guys do. But the pure 2D engines do not. And again the point I was trying to make was about graphics. Most if not all do not roll out their own code for input management, window creation, Networking and so on. But 2D graphics is relatively easy to DIY.
- onion2k 6y agoBut the pure 2D engines do not. I've never seen a 2D game engine that doesn't give you at least graphics, physics, and input.
- s9w 6y agoNot sure we're talking about the same thing then. SDL, glfw, SFML, Monogame.. I don't think any of them contain physics code.
- deleted 6y ago[deleted]
- meheleventyone 6y agoMost of those are libraries/frameworks rather than engines though. A fuzzy distinction I know but most of these are something you might build an engine of top of to avoid some of the cross-platform drudge.
- versteegen 6y agoGLFW, SFML, and SDL absolutely aren't game engines, I don't think it's fuzzy at all. They're libraries for graphics, audio, and other useful APIs. Monogame I'm not familiar with, but since I can't tell by skimming the wikipedia article, I'd call it fuzzy.
- emsy 6y agoI'd argue most programmers would have a harder time writing reliable audio code from scratch than the rendering part.
- singron 6y agoAnimation is also a lot harder in 3D. A decent 3D engine will probably need fully featured skeletal animation: blending and interpolation, translate+scale+rotate, inverse kinematics, etc. A 2D sprite-based game might be able to get away with a much simpler animation system and still look great. E.g. sprite flip-books and really basic translation will get very far for a lot of game styles. Even if you want rotations, you probably don't even need to learn about quaternions since 2d rotations are so much simpler and you might not need to do interpolation/blending. A lot of other parts can be more complicated as well. E.g. testing navigability is difficult in 3D since it's not always clear what you are able to jump on to/fall off of/squeeze through. Relatively common bugs in 3D games are falling out the bottom of the map, escaping out the side, or getting stuck, but they almost never happen in 2D games. Controlling the camera requires a lot more thought in a 3D game. In a 2D game, a fixed camera or a camera that rigidly follows a character is often sufficient. In 3D, the field of view is awkwardly shaped in world-space, and obstructions are more likely and you may need a way to deal with them (e.g. manual camera controls, detecting obstructions and making them transparent, or moving the camera to avoid them). I guess a lot of this comes down to being able to design a 2d game that requires a very simple engine while even seemingly basic 3d games seem to need tons of features to be palatable.
- jfkebwjsbx 6y agoAnimations in 2D are not always flip-books and, when they are, the artist's job is harder and requires a lot of man-hours. That is why a game like Age of Empires 2 looks so good even in 2020. Quaternions are not hard, they are just a tool to deal with 3D rotations. On the other hand, 2D rotations have other set of challenges. For instance, sprites that are naively rotated look very bad. Other rendering shenanigans happen in 2D, too: arbitrary scaling, for instance, is trivial in 3D games, while a nightmare in 2D. There is no general algorithm to do so properly, and some people suggest NNs to have a good-looking solution, similar to NVIDIA's DLSS. Camera is not easy in 2D either. There are tons of ways to make cameras for different kinds of games, with different tweaks. There are entire articles written on this out there. Obstructions also happen in 2D for some kinds of perspective and different games provide different solutions. Not everything 2D is an 80's platformer. For sure, you can make trivial games in 2D easily, but that does not mean they will be good, polished games. Same way making trivial 3D games is easy yet not good enough.
- phn 6y agoEven for 2D games, if you have a dedicated art team, or a level designer team separate from a programming team, having an engine interface that allows each of these participants to do their own stuff without having to edit code is a massive boost in productivity.
- GaryNumanVevo 6y ago2d is just 3d minus the y dimention